void MainWindow::updateFileMenu() { fileMenu->clear(); fileMenu->addAction(openAct); fileMenu->addAction(saveAct); fileMenu->addSeparator(); fileMenu->addAction(closeAct); fileMenu->addAction(closeAllAct); fileMenu->addAction(separatorAct); separatorAct->setVisible(tabWidget->count() > 0); for (int i = 0; i < tabWidget->count(); ++i) { ChildWidget *child = qobject_cast<ChildWidget *> (tabWidget->widget(i)); QString text; if (i < 9) { text = tr("&%1 %2").arg(i + 1).arg(child->userFriendlyCurrentFile()); } else { text = tr("%1 %2").arg(i + 1) .arg(child->userFriendlyCurrentFile()); } QAction *action = fileMenu->addAction(text); action->setCheckable(true); action ->setChecked(child == activeChild()); connect(action, SIGNAL(triggered()), windowMapper, SLOT(map())); windowMapper->setMapping(action, i); } fileMenu->addSeparator(); fileMenu->addAction(exitAct); }
void MainWindow::addChild(const QString& imageFileName) { if (!imageFileName.isEmpty()) { QString canonicalImageFileName = QFileInfo(imageFileName).canonicalFilePath(); for (int i = 0; i < tabWidget->count(); ++i) { ChildWidget* child = qobject_cast<ChildWidget*> (tabWidget->widget(i)); if (canonicalImageFileName == child->canonicalImageFileName()) { tabWidget->setCurrentIndex(i); return; } } ChildWidget* child = new ChildWidget(this); if (child->loadImage(imageFileName)) { statusBar()->showMessage(tr("File loaded"), 2000); tabWidget->setCurrentIndex(tabWidget->addTab(child, child->userFriendlyCurrentFile())); tabWidget->setTabToolTip(tabWidget->currentIndex(), imageFileName); connect(child, SIGNAL(boxChanged()), this, SLOT(updateCommandActions())); connect(child, SIGNAL(modifiedChanged()), this, SLOT(updateTabTitle())); connect(child, SIGNAL(modifiedChanged()), this, SLOT(updateSaveAction())); connect(child, SIGNAL(zoomRatioChanged(qreal)), this, SLOT(zoomRatioChanged(qreal))); connect(child, SIGNAL(statusBarMessage(QString)), this, SLOT(statusBarMessage(QString))); connect(child, SIGNAL(drawRectangleChoosen()), this, SLOT(updateCommandActions())); child->setZoomStatus(); // save path of open image file QSettings settings(QSettings::IniFormat, QSettings::UserScope, SETTING_ORGANIZATION, SETTING_APPLICATION); QString filePath = QFileInfo(imageFileName).absolutePath(); settings.setValue("last_path", filePath); QStringList files = settings.value("recentFileList").toStringList(); files.removeAll(imageFileName); files.prepend(imageFileName); while (files.size() > MaxRecentFiles) files.removeLast(); settings.setValue("recentFileList", files); foreach(QWidget * widget, QApplication::topLevelWidgets()) { MainWindow* mainWin = qobject_cast<MainWindow*>(widget); if (mainWin) mainWin->updateRecentFileActions(); }
void MainWindow::addChild(const QString &imageFileName) { if (!imageFileName.isEmpty()) { QString canonicalImageFileName = QFileInfo(imageFileName).canonicalFilePath(); for (int i = 0; i < tabWidget->count(); ++i) { ChildWidget *child = qobject_cast<ChildWidget *> (tabWidget->widget(i)); if (canonicalImageFileName == child->canonicalImageFileName()) { tabWidget->setCurrentIndex(i); return; } } ChildWidget *child = new ChildWidget; if (child->loadImage(imageFileName)) { statusBar()->showMessage(tr("File loaded"), 2000); tabWidget->setCurrentIndex(tabWidget->addTab(child, child->userFriendlyCurrentFile())); connect(child, SIGNAL(boxChanged()), this, SLOT(updateCommandActions())); connect(child, SIGNAL(modifiedChanged()), this, SLOT(updateTabTitle())); connect(child, SIGNAL(modifiedChanged()), this, SLOT(updateSaveAction())); } else { child->close(); } } }