Loading isis/src/qisis/apps/ipce/IpceMainWindow.cpp +81 −75 Original line number Diff line number Diff line Loading @@ -95,11 +95,14 @@ namespace Isis { m_directory = new Directory(this); connect(m_directory, SIGNAL( newWidgetAvailable(QWidget *) ), this, SLOT( addView(QWidget *) ) ); connect(m_directory, SIGNAL(viewClosed(QWidget *)), this, SLOT(removeView(QWidget *))); connect(m_directory, SIGNAL(viewClosed(QWidget *)), this, SLOT(removeView(QWidget *))); connect(m_directory, SIGNAL( directoryCleaned() ), this, SLOT( removeAllViews() ) ); connect(m_directory->project(), SIGNAL(projectLoaded(Project *)), this, SLOT(readSettings(Project *))); connect(m_directory->project(), SIGNAL(projectSaved(Project *)), this, SLOT(writeSettings(Project *))); connect(m_directory, SIGNAL( newWarning() ), this, SLOT( raiseWarningTab() ) ); } Loading Loading @@ -161,16 +164,14 @@ namespace Isis { statusBar()->addWidget(progressBar); } // Read default app settings. NOTE: This must be completed before initializing actions in order // to read the recent projects from the config file. readSettings(m_directory->project() ); initializeActions(); createMenus(); createToolBars(); // setTabbedViewMode(); // centralWidget->setTabsMovable(true); // centralWidget->setTabsClosable(true); // Read default app settings readSettings(m_directory->project() ); QStringList args = QCoreApplication::arguments(); if (args.count() == 2) { Loading Loading @@ -207,11 +208,24 @@ namespace Isis { // Connections for cleanup in both directions to make sure both views and docks are cleaned up connect(newWidget, SIGNAL(destroyed(QObject *)), dock, SLOT(deleteLater())); connect(dock, SIGNAL(destroyed(QObject *)), newWidget, SLOT(deleteLater())); // The list of dock widgets needs cleanup as each view is destroyed connect(dock, SIGNAL(destroyed(QObject *)), this, SLOT(cleanupViewDockList(QObject *))); // Save view docks for cleanup during a project close m_viewDocks.append(dock); } void IpceMainWindow::cleanupViewDockList(QObject *obj) { QDockWidget *dock = static_cast<QDockWidget *>(obj); if (dock) { m_viewDocks.removeAll(dock); } } /** * @description This slot is connected from Directory::viewClosed(QWidget *) signal. It will * close the given view and delete the view. This was written to handle Loading @@ -231,22 +245,13 @@ namespace Isis { */ void IpceMainWindow::removeAllViews() { setWindowTitle("ipce"); // qDebug()<<"IpceMainWindow::removeAllViews directory footprint count = "<<m_directory->footprint2DViews().count(); // qDebug()<<" directory cube disp count = "<<m_directory->cubeDnViews().count(); // Find all children of IpceMainWindow and close QList<QDockWidget *> dockedWidgets = findChildren<QDockWidget *>(); // qDebug()<<" # docks before removal = "<<dockedWidgets.count(); foreach (QDockWidget *dock, m_viewDocks) { if (dock) { removeDockWidget(dock); m_viewDocks.removeAll(dock); delete dock; } QList<QDockWidget *> dockedWidgets2 = findChildren<QDockWidget *>(); // qDebug()<<" any docks left"<<dockedWidgets2.count(); // qDebug()<<"IpceMainWindow::removeAllViews directory footprint count = "<<m_directory->footprint2DViews().count(); // qDebug()<<" directory cube disp count = "<<m_directory->cubeDnViews().count(); } m_viewDocks.clear(); } Loading Loading @@ -539,7 +544,7 @@ namespace Isis { * @history 2017-10-17 Tyler Wilson Added a [recent projects] group for the saving and * restoring of recently opened projects. References #4492. */ void IpceMainWindow::writeSettings(const Project *project) const { void IpceMainWindow::writeSettings(Project *project) { // Ensure that we are not using a NULL pointer if (!project) { Loading Loading @@ -656,28 +661,21 @@ namespace Isis { QString msg = "Cannot read settings with a NULL Project pointer."; throw IException(IException::Programmer, msg, _FILEINFO_); } if (project->name() == "Project") { setWindowTitle("ipce"); } else { setWindowTitle( project->name() ); QString projName = project->name(); setWindowTitle(projName ); } QString appName = QApplication::applicationName(); QSettings settings( FileName("$HOME/.Isis/" + appName + "/" + appName + "_" + project->name() + ".config") .expanded(), QSettings::NativeFormat); setGeometry(settings.value("geometry").value<QRect>()); restoreState(settings.value("windowState").toByteArray()); // General settings if (project->name() == "Project") { setWindowTitle("ipce"); QStringList projectNameList; QStringList projectPathList; settings.beginGroup("recent_projects"); QStringList keys = settings.allKeys(); QRegExp underscore("%%%%%"); foreach (QString key, keys) { Loading @@ -691,7 +689,6 @@ namespace Isis { settings.endGroup(); QStringList projectPathReverseList; for (int i = projectPathList.count()-1;i>=0;i--) { projectPathReverseList.append(projectPathList[i]); } Loading @@ -709,19 +706,28 @@ namespace Isis { break; } m_directory->setRecentProjectsList(projectPathListTruncated); m_directory->updateRecentProjects(); m_maxThreadCount = settings.value("maxThreadCount", m_maxThreadCount).toInt(); applyMaxThreadCount(); } // Project specific settings else { setWindowTitle( project->name() ); if (settings.contains("geometry")) { setGeometry(settings.value("geometry").value<QRect>()); } if (settings.contains("windowState")) { restoreState(settings.value("windowState").toByteArray()); } // The geom/state isn't enough for main windows to correctly remember // their position and size, so let's restore those on top of // the geom and state. if (!settings.value("pos").toPoint().isNull()) if (!settings.value("pos").toPoint().isNull()) { move(settings.value("pos").toPoint()); m_maxThreadCount = settings.value("maxThreadCount", m_maxThreadCount).toInt(); applyMaxThreadCount(); } } } Loading isis/src/qisis/apps/ipce/IpceMainWindow.h +6 −1 Original line number Diff line number Diff line Loading @@ -137,6 +137,10 @@ namespace Isis { * for cleanup because there is no way to get the dock from the view. * Cleanup connections are made for the views and the docks to ensure * that cleanup happens for both. Fixes #5433. * @history 2018-06-13 Tracie Sucharski - Fixed cleanup of views and QDockWidgets. * @history 2018-06-15 Tracie Sucharski - Fixed break to recent projects. The readSettings * must be called before initializeActions to get the recent projects * from the config file. * */ class IpceMainWindow : public QMainWindow { Loading @@ -152,6 +156,7 @@ namespace Isis { void removeAllViews(); void readSettings(Project *); void writeSettings(Project *project); protected: void closeEvent(QCloseEvent *event); Loading @@ -164,6 +169,7 @@ namespace Isis { void tabAllViews(); void raiseWarningTab(); void cleanupViewDockList(QObject *obj); private: Q_DISABLE_COPY(IpceMainWindow); Loading @@ -173,7 +179,6 @@ namespace Isis { void createMenus(); void createToolBars(); void writeSettings(const Project *project) const; private: /** Loading isis/src/qisis/objs/ControlPointEditWidget/ControlPointEditWidget.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -219,8 +219,6 @@ namespace Isis { saveMeasureLayout->insertStretch(-1); m_cnetFileNameLabel = new QLabel("Control Network: " + m_cnetFileName); m_cnetFileNameLabel->setToolTip("Name of opened control network file."); m_cnetFileNameLabel->setWhatsThis("Name of opened control network file."); m_templateFileNameLabel = new QLabel("Template File: " + m_measureEditor->templateFileName()); Loading Loading @@ -589,7 +587,11 @@ namespace Isis { m_controlNet = control->controlNet(); m_cnetFileName = control->fileName(); m_cnetFileNameLabel->setText("Control Network: " + m_cnetFileName); QStringList cnetDirs = m_cnetFileName.split('/'); QString strippedCnetFilename = cnetDirs.value(cnetDirs.length() -1); m_cnetFileNameLabel->setText("Control Network: " + strippedCnetFilename); m_cnetFileNameLabel->setToolTip(m_cnetFileName); m_cnetFileNameLabel->setWhatsThis(m_cnetFileName); setWindowTitle("Control Point Editor- Control Network File: " + m_cnetFileName); emit newControlNetwork(m_controlNet); Loading isis/src/qisis/objs/ControlPointEditWidget/ControlPointEditWidget.h +2 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,8 @@ namespace Isis { * Fixes #5399. * @history 2018-05-02 Tracie Sucharski - Colorize save buttons properly when creating new * control point and loading a different control point. * @history 2018-06-11 Summer Stapleton - Stripped path from displayed filename of Control * Network and set the tooltip to the full path for easier access. */ class ControlPointEditWidget : public QWidget { Q_OBJECT Loading isis/src/qisis/objs/CubeDnView/CubeDnView.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -200,7 +200,7 @@ namespace Isis { tools->append(new HistogramTool(this)); tools->append(new StatisticsTool(this)); tools->append(new StereoTool(this)); tools->append(new HelpTool(this)); //tools->append(new HelpTool(this)); tools->append(new TrackTool(statusBar())); Loading @@ -211,7 +211,7 @@ namespace Isis { m_viewMenu = menuBar()->addMenu("&View"); m_optionsMenu = menuBar()->addMenu("&Options"); m_windowMenu = menuBar()->addMenu("&Window"); m_helpMenu = menuBar()->addMenu("&Help"); //m_helpMenu = menuBar()->addMenu("&Help"); for (int i = 0; i < tools->count(); i++) { Tool *tool = (*tools)[i]; Loading Loading
isis/src/qisis/apps/ipce/IpceMainWindow.cpp +81 −75 Original line number Diff line number Diff line Loading @@ -95,11 +95,14 @@ namespace Isis { m_directory = new Directory(this); connect(m_directory, SIGNAL( newWidgetAvailable(QWidget *) ), this, SLOT( addView(QWidget *) ) ); connect(m_directory, SIGNAL(viewClosed(QWidget *)), this, SLOT(removeView(QWidget *))); connect(m_directory, SIGNAL(viewClosed(QWidget *)), this, SLOT(removeView(QWidget *))); connect(m_directory, SIGNAL( directoryCleaned() ), this, SLOT( removeAllViews() ) ); connect(m_directory->project(), SIGNAL(projectLoaded(Project *)), this, SLOT(readSettings(Project *))); connect(m_directory->project(), SIGNAL(projectSaved(Project *)), this, SLOT(writeSettings(Project *))); connect(m_directory, SIGNAL( newWarning() ), this, SLOT( raiseWarningTab() ) ); } Loading Loading @@ -161,16 +164,14 @@ namespace Isis { statusBar()->addWidget(progressBar); } // Read default app settings. NOTE: This must be completed before initializing actions in order // to read the recent projects from the config file. readSettings(m_directory->project() ); initializeActions(); createMenus(); createToolBars(); // setTabbedViewMode(); // centralWidget->setTabsMovable(true); // centralWidget->setTabsClosable(true); // Read default app settings readSettings(m_directory->project() ); QStringList args = QCoreApplication::arguments(); if (args.count() == 2) { Loading Loading @@ -207,11 +208,24 @@ namespace Isis { // Connections for cleanup in both directions to make sure both views and docks are cleaned up connect(newWidget, SIGNAL(destroyed(QObject *)), dock, SLOT(deleteLater())); connect(dock, SIGNAL(destroyed(QObject *)), newWidget, SLOT(deleteLater())); // The list of dock widgets needs cleanup as each view is destroyed connect(dock, SIGNAL(destroyed(QObject *)), this, SLOT(cleanupViewDockList(QObject *))); // Save view docks for cleanup during a project close m_viewDocks.append(dock); } void IpceMainWindow::cleanupViewDockList(QObject *obj) { QDockWidget *dock = static_cast<QDockWidget *>(obj); if (dock) { m_viewDocks.removeAll(dock); } } /** * @description This slot is connected from Directory::viewClosed(QWidget *) signal. It will * close the given view and delete the view. This was written to handle Loading @@ -231,22 +245,13 @@ namespace Isis { */ void IpceMainWindow::removeAllViews() { setWindowTitle("ipce"); // qDebug()<<"IpceMainWindow::removeAllViews directory footprint count = "<<m_directory->footprint2DViews().count(); // qDebug()<<" directory cube disp count = "<<m_directory->cubeDnViews().count(); // Find all children of IpceMainWindow and close QList<QDockWidget *> dockedWidgets = findChildren<QDockWidget *>(); // qDebug()<<" # docks before removal = "<<dockedWidgets.count(); foreach (QDockWidget *dock, m_viewDocks) { if (dock) { removeDockWidget(dock); m_viewDocks.removeAll(dock); delete dock; } QList<QDockWidget *> dockedWidgets2 = findChildren<QDockWidget *>(); // qDebug()<<" any docks left"<<dockedWidgets2.count(); // qDebug()<<"IpceMainWindow::removeAllViews directory footprint count = "<<m_directory->footprint2DViews().count(); // qDebug()<<" directory cube disp count = "<<m_directory->cubeDnViews().count(); } m_viewDocks.clear(); } Loading Loading @@ -539,7 +544,7 @@ namespace Isis { * @history 2017-10-17 Tyler Wilson Added a [recent projects] group for the saving and * restoring of recently opened projects. References #4492. */ void IpceMainWindow::writeSettings(const Project *project) const { void IpceMainWindow::writeSettings(Project *project) { // Ensure that we are not using a NULL pointer if (!project) { Loading Loading @@ -656,28 +661,21 @@ namespace Isis { QString msg = "Cannot read settings with a NULL Project pointer."; throw IException(IException::Programmer, msg, _FILEINFO_); } if (project->name() == "Project") { setWindowTitle("ipce"); } else { setWindowTitle( project->name() ); QString projName = project->name(); setWindowTitle(projName ); } QString appName = QApplication::applicationName(); QSettings settings( FileName("$HOME/.Isis/" + appName + "/" + appName + "_" + project->name() + ".config") .expanded(), QSettings::NativeFormat); setGeometry(settings.value("geometry").value<QRect>()); restoreState(settings.value("windowState").toByteArray()); // General settings if (project->name() == "Project") { setWindowTitle("ipce"); QStringList projectNameList; QStringList projectPathList; settings.beginGroup("recent_projects"); QStringList keys = settings.allKeys(); QRegExp underscore("%%%%%"); foreach (QString key, keys) { Loading @@ -691,7 +689,6 @@ namespace Isis { settings.endGroup(); QStringList projectPathReverseList; for (int i = projectPathList.count()-1;i>=0;i--) { projectPathReverseList.append(projectPathList[i]); } Loading @@ -709,19 +706,28 @@ namespace Isis { break; } m_directory->setRecentProjectsList(projectPathListTruncated); m_directory->updateRecentProjects(); m_maxThreadCount = settings.value("maxThreadCount", m_maxThreadCount).toInt(); applyMaxThreadCount(); } // Project specific settings else { setWindowTitle( project->name() ); if (settings.contains("geometry")) { setGeometry(settings.value("geometry").value<QRect>()); } if (settings.contains("windowState")) { restoreState(settings.value("windowState").toByteArray()); } // The geom/state isn't enough for main windows to correctly remember // their position and size, so let's restore those on top of // the geom and state. if (!settings.value("pos").toPoint().isNull()) if (!settings.value("pos").toPoint().isNull()) { move(settings.value("pos").toPoint()); m_maxThreadCount = settings.value("maxThreadCount", m_maxThreadCount).toInt(); applyMaxThreadCount(); } } } Loading
isis/src/qisis/apps/ipce/IpceMainWindow.h +6 −1 Original line number Diff line number Diff line Loading @@ -137,6 +137,10 @@ namespace Isis { * for cleanup because there is no way to get the dock from the view. * Cleanup connections are made for the views and the docks to ensure * that cleanup happens for both. Fixes #5433. * @history 2018-06-13 Tracie Sucharski - Fixed cleanup of views and QDockWidgets. * @history 2018-06-15 Tracie Sucharski - Fixed break to recent projects. The readSettings * must be called before initializeActions to get the recent projects * from the config file. * */ class IpceMainWindow : public QMainWindow { Loading @@ -152,6 +156,7 @@ namespace Isis { void removeAllViews(); void readSettings(Project *); void writeSettings(Project *project); protected: void closeEvent(QCloseEvent *event); Loading @@ -164,6 +169,7 @@ namespace Isis { void tabAllViews(); void raiseWarningTab(); void cleanupViewDockList(QObject *obj); private: Q_DISABLE_COPY(IpceMainWindow); Loading @@ -173,7 +179,6 @@ namespace Isis { void createMenus(); void createToolBars(); void writeSettings(const Project *project) const; private: /** Loading
isis/src/qisis/objs/ControlPointEditWidget/ControlPointEditWidget.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -219,8 +219,6 @@ namespace Isis { saveMeasureLayout->insertStretch(-1); m_cnetFileNameLabel = new QLabel("Control Network: " + m_cnetFileName); m_cnetFileNameLabel->setToolTip("Name of opened control network file."); m_cnetFileNameLabel->setWhatsThis("Name of opened control network file."); m_templateFileNameLabel = new QLabel("Template File: " + m_measureEditor->templateFileName()); Loading Loading @@ -589,7 +587,11 @@ namespace Isis { m_controlNet = control->controlNet(); m_cnetFileName = control->fileName(); m_cnetFileNameLabel->setText("Control Network: " + m_cnetFileName); QStringList cnetDirs = m_cnetFileName.split('/'); QString strippedCnetFilename = cnetDirs.value(cnetDirs.length() -1); m_cnetFileNameLabel->setText("Control Network: " + strippedCnetFilename); m_cnetFileNameLabel->setToolTip(m_cnetFileName); m_cnetFileNameLabel->setWhatsThis(m_cnetFileName); setWindowTitle("Control Point Editor- Control Network File: " + m_cnetFileName); emit newControlNetwork(m_controlNet); Loading
isis/src/qisis/objs/ControlPointEditWidget/ControlPointEditWidget.h +2 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,8 @@ namespace Isis { * Fixes #5399. * @history 2018-05-02 Tracie Sucharski - Colorize save buttons properly when creating new * control point and loading a different control point. * @history 2018-06-11 Summer Stapleton - Stripped path from displayed filename of Control * Network and set the tooltip to the full path for easier access. */ class ControlPointEditWidget : public QWidget { Q_OBJECT Loading
isis/src/qisis/objs/CubeDnView/CubeDnView.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -200,7 +200,7 @@ namespace Isis { tools->append(new HistogramTool(this)); tools->append(new StatisticsTool(this)); tools->append(new StereoTool(this)); tools->append(new HelpTool(this)); //tools->append(new HelpTool(this)); tools->append(new TrackTool(statusBar())); Loading @@ -211,7 +211,7 @@ namespace Isis { m_viewMenu = menuBar()->addMenu("&View"); m_optionsMenu = menuBar()->addMenu("&Options"); m_windowMenu = menuBar()->addMenu("&Window"); m_helpMenu = menuBar()->addMenu("&Help"); //m_helpMenu = menuBar()->addMenu("&Help"); for (int i = 0; i < tools->count(); i++) { Tool *tool = (*tools)[i]; Loading