Jump to content

TheHellTower

Members
  • Posts

    26
  • Joined

  • Last visited

Posts posted by TheHellTower

  1. 11 hours ago, Dreikblack said:

    Just redraw() did not worked for me either. "textfield->SetText(textfield->GetText());" with redraw made a field to change text style.

    Other style, TEXTFIELD_READONLY, works with no calling a redraw or changes of text.

    Style is just an int basically. In Draw() method Widget checks which one is applied and changes accordingly to it.

    You can see how some of widgets works here - https://github.com/Leadwerks/UltraEngine/tree/main/Source/Classes/GUI

    Yeah thanks !

  2. 2 minutes ago, Josh said:

    Okay, well it's my fault, mostly... 😄

    200.gif

    In Ultra Engine I got a lot more strict with which members are public and private, and "style" is not meant to be changed once the widget is created. With text fields the style is pretty simple but some other widgets change dramatically in appearance and behavior depending on the style settings they were created with.

    A simple hack is to call Widget->Redraw() after you change the style, and in this case it will probably be fine.

    For a forward-compatible solution I would create two text fields and hide and show them based on the current setting. You can get and set the precise text selection position and length so they will match seamlessly when you switch between them.

    Yeah I see and I think it's a bad thing to make it private, I wanted to make a kind of "Hide sensitive info" checkbox it's a kind of "stream" protection we will say to avoid any leak of important data.

    But thanks for this solution too ;)

  3. Hello, so I seen in UAK the text field styles are not updating automatically we need to modify the text, if there is any other element that has this style update issue take it in count as element for the next update if you plan this one.

    So I suggest for Ultra Engine to rework the styling system to automatically apply the new styles.

    It would be better !

    Video showing the problem: https://i.imgur.com/mVCFOgP.mp4

  4. 2 minutes ago, reepblue said:

    Hopefully there can be a window function that does this cross platform. This is useful to ensure a window is shown on top after a splash window.

    That would be nice yeah but then it would be better if you can pass a boolean to set it top most or no, but I personally prefer when splash are top most I don't think it's really important for software form itself.

    The "Vectronic" topic doesn't exist anymore in your signature !

  5. Final:

    if (THTtmcb->GetState() == WIDGETSTATE_SELECTED) {
    	SetWindowPos(window->GetHandle(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    } else if(THTtmcb->GetState() == WIDGETSTATE_UNSELECTED) {
    	SetWindowPos(window->GetHandle(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    }

     

    • Like 1
  6. 2 minutes ago, Josh said:

    I think Window::Activate() will select the window and bring it to the top.

    Well the problem is I don't want to bring it to the top with a loop but I want to make it top most until I uncheck the checkbox

  7. Hello,

    I can't find out how to make my window top most, does anyone know how to make the window top most if a checkbox is selected ?

    Because the code see if it's selected or no but I can't find any element to make it top most.

    Regards.

  8. 1 minute ago, Josh said:

    You can still use it just for a GUI application, without initializing graphics or requiring drivers. The executables are a little bit bigger than UAK, but still pretty small, around 6 mb when UPX compression is used.

    Perfect ! The final output size doesn't really matter for me as long as it work but yeah probably some users would like it to be optimized as much as possible and the smallest possible but it's not really that simple so it's perfect already -_-

  9. 4 minutes ago, Josh said:

    Well, right now it's an SDK. A visual editor is in development, and once that is out I think will mark the point where it will no longer be considered "early access":
    https://www.ultraengine.com/community/blogs/entry/2801-ultra-engine-sdk-early-access-now-available/?tab=comments#comment-15305

    I don't have an expected release date, but it's coming along pretty quickly.

    Okay perfect, will Ultra Engine only be for games or will I be able to make a program GUI with it ? Since it will be the only updated I'm interested in it

  10. Hello, I seen that tabs are very basic, so I thought about something !

    For example let's say we start with "Tab 1" and "Tab 2", would it be possible to make a kind of tab template and add a managing system around it ?

    I will try to explain better:

    A "+" to add a new tab and a close button to remove it ! With title that would be logical so for example if default set title is "Tab" the second would be "Tab 2" or something like this

     

    Hopefully it is a great idea for you !

    • Like 1
    • Upvote 1
  11. 2 minutes ago, Josh said:

    UAK was released about 1.5 years ago when I finished the GUI system but had not finished the full 3D engine yet, so I released what I had for GUI application development. Now that the full engine is released I decided to make UAK free.

    Ultra Engine is currently in "early access" so there's no big demos of what it can do, but what it does offer is extremely good performance. You can try the benchmarks here if you like:
    https://github.com/UltraEngine/Benchmarks

    Yeah I like UAK's style and I'm glad I discovered it you did a amazing work ! So UAK is for C++ and Ultra Engine for .Net ? If yes sadly I will not be able to take it as I want to release a free access product without having to care too much about security since you can decompile .Net apps

  12. 2 minutes ago, Josh said:

    Well, UAK is free but Ultra Engine is not free:
    https://www.ultraengine.com/community/store/category/1-software/

    UAK is also compiled for Linux and Mac, but Ultra Engine does not yet support these platforms (although it is planned to in the future).

    Also, UAK has a 64 and 32-bit build for Windows, but Ultra Engine is 64-bit only.

    Oh okay I see basically UAK is a kind of free version of Ultra Engine if I get it correctly !

    Yeah for the moment I will not buy it, it's just for a small project in free access I can't really take this right now but why not later, is there any place where I can see detailed demo of Ultra Engine ?

  13. Hello, I think you should add a "Mark as Answer" option so it would add something around the message to make it "more" visible than others and why not preview it under the thread question with the possibility to click on it to go directly to the message place :P

    • Like 1
    • Upvote 1
  14. 5 minutes ago, Josh said:

    Here you go. :D

    You were calling Hidden() instead of Hide/Show().

    #include "UltraEngine.h"
    
    using namespace UltraEngine;
    
    int main(int argc, const char* argv[])
    {
        auto displays = GetDisplays();
    
        auto window = CreateWindow("Joked", 0, 0, 800, 600, displays[0], WINDOW_TITLEBAR | WINDOW_CENTER);
    
        auto ui = CreateInterface(window);
    
        auto sz = ui->root->GetSize();
    
    
        auto tabber = CreateTabber(10, 10, sz.x - 20, sz.y - 20, ui->root);
        tabber->AddItem("Main", true);
        tabber->AddItem("Settings");
    
        std::array<std::shared_ptr<Widget>, 3> panels;
        sz = tabber->ClientSize();
        panels[0] = CreatePanel(0, 0, sz.x, sz.y, tabber);
        panels[0]->SetColor(54.0 / 255.0, 57.0 / 255.0, 63.0 / 255.0, 1);
    
    
        panels[1] = CreatePanel(0, 0, sz.x, sz.y, tabber);
    
        panels[1]->SetColor(0.1, 0.15, 0.1, 1);
    
        panels[1]->Hide();
    
        auto textfield = CreateTextField(20, 20, 300, 32, panels[0], TEXTFIELD_DEFAULT);
        textfield->SetText("Here is some text!");
        textfield->SelectText(0, textfield->text.size());
    
    
        //auto scriptEditing = CreateTextField(20, 20, 400,40, ui->root);
    
        while (true)
        {
            const Event ev = WaitEvent();
            switch (ev.id)
            {
            case EVENT_WIDGETACTION:
                Print("Item " + String(ev.data) + " action");
                break;
            case EVENT_WIDGETSELECT:
                if (ev.source == tabber)
                {
                    for (int n = 0; n < tabber->items.size(); ++n)
                    {
                        n == ev.data ? panels[n]->Show() : panels[n]->Hide();
                    }
                }
                break;
                break;
            case EVENT_QUIT:
            case EVENT_WINDOWCLOSE:
                return 0;
                break;
            default: break;
            }
        }
        return 0;
    }

    Thanks haha the tab example was not up to date so I did guess it was the good call

×
×
  • Create New...