diff --git a/res/layouts/process.xml b/res/layouts/process.xml new file mode 100644 index 00000000..ccf631d8 --- /dev/null +++ b/res/layouts/process.xml @@ -0,0 +1,4 @@ + + + + diff --git a/res/layouts/process.xml.lua b/res/layouts/process.xml.lua new file mode 100644 index 00000000..44e640e8 --- /dev/null +++ b/res/layouts/process.xml.lua @@ -0,0 +1,10 @@ +function on_progress(done, total) + local progress = done / total + document.progress_label.text = string.format( + "%s/%s (%s%%)", done, total, math.floor(progress*100) + ) +end + +function on_open(title) + document.title_label.text = title +end diff --git a/src/engine.cpp b/src/engine.cpp index 3fbd1ed6..b6985ac2 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -227,11 +227,7 @@ void Engine::loadAssets() { } } } - if (assets) { - assets->extend(*new_assets); - } else { - assets.reset(new_assets.release()); - } + assets.reset(new_assets.release()); } void Engine::loadContent() { diff --git a/src/frontend/UiDocument.h b/src/frontend/UiDocument.h index b71a1747..57d0b8c2 100644 --- a/src/frontend/UiDocument.h +++ b/src/frontend/UiDocument.h @@ -16,6 +16,7 @@ namespace gui { struct uidocscript { bool onopen : 1; + bool onprogress : 1; bool onclose : 1; }; diff --git a/src/frontend/menu.cpp b/src/frontend/menu.cpp index b5dea9ca..7c957601 100644 --- a/src/frontend/menu.cpp +++ b/src/frontend/menu.cpp @@ -49,7 +49,7 @@ void menus::create_menus(Engine* engine) { }); } -void menus::show(Engine* engine, const std::string& name, std::vector> args) { +UiDocument* menus::show(Engine* engine, const std::string& name, std::vector> args) { auto menu = engine->getGUI()->getMenu(); auto file = engine->getResPaths()->find("layouts/"+name+".xml"); auto fullname = "core:layouts/"+name; @@ -59,35 +59,23 @@ void menus::show(Engine* engine, const std::string& name, std::vectoraddPage(name, document->getRoot()); menu->setPage(name); + return document; } void menus::show_process_panel(Engine* engine, std::shared_ptr task, std::wstring text) { - auto menu = engine->getGUI()->getMenu(); - auto panel = std::dynamic_pointer_cast(guiutil::create( - "