refactor: invert the last engine-to-UI dependencies

- NodeFactory's menu creation moves to UI-side widget/menu/factorymenu
  (the factory only exposes its node library read-only now)
- DiskManager's cache-settings dialog is created through a registered
  std::function handler (registered by Core at startup)
- OlivePluginInstance creates progress UIs through a
  PluginProgressReporter interface (Null fallback headless) and queries
  the active viewer through a provider callback, both registered by Core
- factory.h, diskmanager and pluginSupport no longer reference any
  widget//dialog//panel//window headers or classes
This commit is contained in:
2026-07-20 02:05:01 +08:00
parent bff06e00e5
commit 026ff94b5e
21 changed files with 630 additions and 179 deletions
+3 -3
View File
@@ -27,8 +27,8 @@
#include <QResizeEvent>
#include <QVariant>
#include "node/factory.h"
#include "ui/icons/icons.h"
#include "widget/menu/factorymenu.h"
#include "widget/menu/menu.h"
#include "widget/menu/menushared.h"
@@ -206,7 +206,7 @@ void Toolbar::add_button_clicked()
void Toolbar::transition_button_clicked()
{
Menu *m = NodeFactory::create_menu(this, false, Node::k_category_transition);
Menu *m = create_node_menu(this, false, Node::k_category_transition);
connect(m, &QMenu::triggered, this, &Toolbar::transition_menu_item_triggered);
@@ -217,7 +217,7 @@ void Toolbar::transition_button_clicked()
void Toolbar::transition_menu_item_triggered(QAction *a)
{
emit selected_transition_changed(NodeFactory::GetIDFromMenuAction(a));
emit selected_transition_changed(get_node_id_from_menu_action(a));
}
}