src/main.cpp

changeset 278
304386ff96a4
parent 274
1331aba5d36b
child 279
cd70c845563a
equal deleted inserted replaced
277:3406191af523 278:304386ff96a4
170 qApp->installTranslator(translator); 170 qApp->installTranslator(translator);
171 } 171 }
172 } 172 }
173 } 173 }
174 174
175 ModelData* findModelData(DocumentManager* documents, ModelId modelId) 175 static ModelData* findModelData(const DocumentManager* documents, ModelId modelId)
176 { 176 {
177 return documents->findPayload<ModelData>(modelId); 177 return documents->findPayload<ModelData>(modelId);
178 } 178 }
179 179
180 static ModelSubWindow* currentModelSubWindow(Ui_MainWindow* ui) 180 static ModelSubWindow* currentModelSubWindow(Ui_MainWindow* ui)
181 { 181 {
182 auto* w = ui->mdiArea->activeSubWindow(); 182 auto* w = ui->mdiArea->activeSubWindow();
183 return qobject_cast<ModelSubWindow*>(w); 183 return qobject_cast<ModelSubWindow*>(w);
184 } 184 }
185 185
186 static ModelData* currentModelData(Ui_MainWindow* ui, DocumentManager* documents) 186 static ModelData* currentModelData(Ui_MainWindow* ui, const DocumentManager* documents)
187 { 187 {
188 if (auto* const activeSubWindow = currentModelSubWindow(ui)) { 188 if (auto* const activeSubWindow = currentModelSubWindow(ui)) {
189 return findModelData(documents, activeSubWindow->modelId); 189 return findModelData(documents, activeSubWindow->modelId);
190 } 190 }
191 else { 191 else {
331 }; 331 };
332 for (int i = 0; i < countof(editingModesInfo); ++i) { 332 for (int i = 0; i < countof(editingModesInfo); ++i) {
333 const auto& editingModeInfo = editingModesInfo[i]; 333 const auto& editingModeInfo = editingModesInfo[i];
334 QAction* action = new QAction{editingModeInfo.name, parent}; 334 QAction* action = new QAction{editingModeInfo.name, parent};
335 action->setCheckable(true); 335 action->setCheckable(true);
336 action->setChecked(i == 0); 336 action->setEnabled(false);
337 action->setData(static_cast<EditingMode>(i)); 337 action->setData(static_cast<EditingMode>(i));
338 action->setToolTip(editingModeInfo.tooltip); 338 action->setToolTip(editingModeInfo.tooltip);
339 action->setIcon(QPixmap{editingModeInfo.icon}); 339 action->setIcon(QPixmap{editingModeInfo.icon});
340 ui->editingModesToolBar->addAction(action); 340 ui->editingModesToolBar->addAction(action);
341 QWidget* widget = editingModeInfo.widget; 341 QWidget* widget = editingModeInfo.widget;
668 renderPreferences.style = data.payload; 668 renderPreferences.style = data.payload;
669 saveSettings(); 669 saveSettings();
670 updateRenderPreferences(&ui, &renderPreferences, &documents); 670 updateRenderPreferences(&ui, &renderPreferences, &documents);
671 }); 671 });
672 } 672 }
673 const auto checkEditingModeAction = [&ui](EditingMode mode) { 673 const auto checkEditingModeAction = [&ui, &documents](EditingMode mode) {
674 const bool hasDocument = currentModelData(&ui, &documents) != nullptr;
674 for (QAction* action : ui.editingModesToolBar->actions()) { 675 for (QAction* action : ui.editingModesToolBar->actions()) {
675 action->setChecked(action->data().value<EditingMode>() == mode); 676 action->setEnabled(hasDocument);
677 action->setChecked(hasDocument and action->data().value<EditingMode>() == mode);
676 } 678 }
677 }; 679 };
678 initializeTools(&ui, &toolWidgets, &mainWindow); 680 initializeTools(&ui, &toolWidgets, &mainWindow);
679 for (QAction* action : ui.editingModesToolBar->actions()) { 681 for (QAction* action : ui.editingModesToolBar->actions()) {
680 QObject::connect(action, &QAction::triggered, [&, action]{ 682 QObject::connect(action, &QAction::triggered, [&, action]{

mercurial