Jump to content

UAK Notify and refresh


aiaf
 Share

Go to solution Solved by Josh,

Recommended Posts

                    for(int i=sgen->GetInitial().size()-1; i<12; i++) {
                        left_stack_items[i]->Hide();                     
                    }

                    for(int i=0; i< sgen->GetInitial().size(); i++) {
                        left_stack_items[i]->SetText(sgen->GetInitial()[i]);
                        if(left_stack_items[i]->Hidden()) {
                            left_stack_items[i]->Show();
                        }
                    }

                    Notify("Win!");

https://www.ultraengine.com/learn/CPP/Notify

I click a button i modify some widgets in gui then i call notify.

The gui does not get refreshed , there is a way to make my code above Notify to take effect ?

I notice when the Notify is open , the button that triggerd this is in selected mode with blue rectangle on it.

 

Im on ubuntu didnt try on windows.

I made this with Leadwerks/UAK:

Structura Stacky Desktop Edition

Website:

Binary Station

Link to comment
Share on other sites

button->SetText("updated");
Notify("Button updated");

Button text only updates after you press ok, but its called first.

And in my original case i didnt see the last state of the game because of this.

 

I did my thing in another way using widgets

#include "UltraEngine.h"

using namespace UltraEngine;

int main(int argc, const char* argv[])
{
    //Get the displays
    auto displays = GetDisplays();

    //Create a window
    auto window = CreateWindow("ZKonquest", 0, 0, 800, 600, displays[0]);

    //Create User Interface
    auto ui = CreateInterface(window);

    //Create widget
    auto sz = ui->root->ClientSize();
    auto tabber = CreateTabber(10, 10, sz.x - 20, sz.y - 20, ui->root);
    tabber->AddItem("Main", true);
    tabber->AddItem("Item 2");
    tabber->AddItem("Item 3");

    array<shared_ptr<Widget>, 3> panels;
    sz = tabber->ClientSize();
    panels[0] = CreatePanel(0, 0, sz.x, sz.y, tabber);
    panels[1] = CreatePanel(0, 0, sz.x, sz.y, tabber);
    panels[2] = CreatePanel(0, 0, sz.x, sz.y, tabber);


    panels[1]->Hide();
    panels[2]->Hide();

    auto button = CreateButton("Button", 0, 0, 120, 30, panels[0]);
    
    float scale = displays[0]->scale;    
    window->SetShape(0,0,470 * scale, 600 * scale);
    ui->SetScale(scale);

    while (true)
    {
        const Event ev = WaitEvent();
        switch (ev.id)
        {
        case EVENT_WIDGETACTION:
            if (ev.source == button)
            {
                button->SetText("updated");
                Notify("Button updated");
            }
            break;
        case EVENT_WIDGETSELECT:
            if (ev.source == tabber)
            {
                for (int n = 0; n < tabber->items.size(); ++n)
                {
                    if (n == ev.data)
                    {
                        panels[n]->Show();                        
                    }
                    else
                    {
                        panels[n]->Hide();
                    }
                }
            }
            break;
        case EVENT_WINDOWCLOSE:
            return 0;
            break;
        }
    }
    return 0;
}

 

I made this with Leadwerks/UAK:

Structura Stacky Desktop Edition

Website:

Binary Station

Link to comment
Share on other sites

  • Josh locked this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...