37 enum class Stage { Structure = 0, Judgments = 1, Analysis = 2, Researcher = 3 };
39 explicit MainWindow(QWidget* parent =
nullptr);
48 void setStage(Stage stage);
51 void closeEvent(QCloseEvent* event)
override;
59 void updateBreadcrumb();
60 void onNetworkPathChosen(
int index);
61 void onScopeChosen(
int index);
62 void onManageParticipants();
63 void onCollectJudgments();
65 void onCreateGoogleForm();
66 void onImportGoogleFormResults();
67 void onOpenLinkedGoogleForm();
68 void refreshLinkedFormUi();
69 void onExportJudgmentTemplates(
const QString& participantId = QString());
70 void onImportJudgmentTemplates(
bool preferCsv =
false);
71 void onDocumentSelectionChanged(
const QString& cluster,
const QString& node);
72 void onJudgmentNodeSelected(
const QString& parent,
73 const QString& destCluster,
75 void onJudgmentClusterSelected(
const QString& parent);
76 void onNodeActivated(
const QString& name);
77 void openRecentFile();
78 void clearRecentFiles();
79 void rebuildRecentMenu();
80 void rebuildSampleMenu();
81 void openSampleFile();
87 [[nodiscard]]
bool maybeSave();
88 [[nodiscard]]
bool openPath(
const QString& path);
89 [[nodiscard]]
bool openSamplePath(
const QString& path);
90 void rememberRecentFile(
const QString& path);
91 void syncRecentShortcutActions();
92 [[nodiscard]] QStringList loadExistingRecentFiles();
93 void buildStagePages();
94 [[nodiscard]]
static QString samplesDirectory();
95 [[nodiscard]]
static QString sampleDisplayName(
const QString& fileName);
97 static constexpr int kMaxRecentFiles = 10;
98 static constexpr int kRecentShortcutCount = 9;
101 Stage stage_ = Stage::Structure;
103 QStackedWidget* stages_ =
nullptr;
104 QButtonGroup* stageButtons_ =
nullptr;
105 QWidget* breadcrumbBar_ =
nullptr;
106 QHBoxLayout* breadcrumbLay_ =
nullptr;
107 QComboBox* networkPathCombo_ =
nullptr;
108 QComboBox* scopeCombo_ =
nullptr;
109 QAction* connectModeAction_ =
nullptr;
110 QButtonGroup* structureModeButtons_ =
nullptr;
111 QMenu* recentMenu_ =
nullptr;
112 QMenu* sampleMenu_ =
nullptr;
113 QList<QAction*> recentShortcutActions_;
114 QActionGroup* stageActionGroup_ =
nullptr;
115 QAction* stageStructureAction_ =
nullptr;
116 QAction* stageJudgmentsAction_ =
nullptr;
117 QAction* stageAnalysisAction_ =
nullptr;
118 QAction* stageResearcherAction_ =
nullptr;
127 SessionPanel* sessionPanel_ =
nullptr;
128 GoogleOAuth* googleOAuth_ =
nullptr;
129 QAction* openLinkedFormAction_ =
nullptr;
130 QAction* importGoogleFormAction_ =
nullptr;
131 QStackedWidget* judgmentCenter_ =
nullptr;
134 ResearcherPanel* researcher_ =
nullptr;
Owns the root anpcpp::AnpNetwork, undo stack, file path, and dirty flag.
Definition document.hpp:71
Property inspector for the selected network, cluster, or node.
Definition inspector_panel.hpp:27
Vertical judgment config dock: Compare, Wrt, Other, Method, Status.
Definition judgment_nav_panel.hpp:22
Primary window: stages Structure / Judgments / Analysis / Researcher.
Definition mainwindow.hpp:34
bool openDocument(const QString &path)
Loads a model from path (same as File → Open for a known path).
Visual editor for clusters, nodes, and connections.
Definition network_canvas.hpp:31