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
@@ -24,8 +24,8 @@
#include <QMessageBox>
#include "node/block/clip/clip.h"
#include "node/factory.h"
#include "node/nodeundo.h"
#include "widget/menu/factorymenu.h"
namespace olive
{
@@ -147,7 +147,7 @@ void NodeParamViewContext::add_effect_button_clicked()
}
Menu *m =
NodeFactory::create_menu(this, false, Node::k_category_unknown, flag);
create_node_menu(this, false, Node::k_category_unknown, flag);
connect(m, &Menu::triggered, this,
&NodeParamViewContext::add_effect_menu_item_triggered);
m->exec(QCursor::pos());
@@ -156,7 +156,7 @@ void NodeParamViewContext::add_effect_button_clicked()
void NodeParamViewContext::add_effect_menu_item_triggered(QAction *a)
{
Node *n = NodeFactory::CreateFromMenuAction(a);
Node *n = create_node_from_menu_action(a);
if (n) {
NodeInput new_node_input = n->get_effect_input();