From 18c1da85028c35a770aeacf3fe0e813ab849edee Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 18 Mar 2016 04:39:32 +0100 Subject: [PATCH] refs #619, allow to open file load / save dialog from view --- src/blackgui/views/viewbase.cpp | 20 +++++++++++++++----- src/blackgui/views/viewbase.h | 6 ++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index 9d287b628..f2fb2de84 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -141,6 +141,16 @@ namespace BlackGui return CGuiUtility::mainApplicationWindow(); } + CStatusMessage CViewBaseNonTemplate::showFileLoadDialog() + { + return this->ps_loadJson(); + } + + CStatusMessage CViewBaseNonTemplate::showFileSaveDialog() const + { + return this->ps_saveJson(); + } + void CViewBaseNonTemplate::setCustomMenu(IMenuDelegate *menu, bool nestPreviousMenu) { if (menu && nestPreviousMenu) @@ -232,8 +242,8 @@ namespace BlackGui // load/save items = menu.actions().size(); - if (m_menus.testFlag(MenuLoad)) { menu.addAction(CIcons::disk16(), "Load from file", this, SLOT(ps_loadJson())); } - if (m_menus.testFlag(MenuSave) && !isEmpty()) { menu.addAction(CIcons::disk16(), "Save data in file", this, SLOT(ps_saveJson()), CShortcut::keySaveViews()); } + if (m_menus.testFlag(MenuLoad)) { menu.addAction(CIcons::disk16(), "Load from file", this, &CViewBaseNonTemplate::ps_loadJson); } + if (m_menus.testFlag(MenuSave) && !isEmpty()) { menu.addAction(CIcons::disk16(), "Save data in file", this, &CViewBaseNonTemplate::ps_saveJson, CShortcut::keySaveViews()); } if (menu.actions().size() > items) { menu.addSeparator(); } // resizing @@ -362,10 +372,10 @@ namespace BlackGui QString CViewBaseNonTemplate::getDefaultFilename() const { // some logic to find a useful default name - QStringList pathes(QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation)); + const QStringList pathes(QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation)); QString name; - if (getDockWidgetInfoArea()) { name = getDockWidgetInfoArea()->windowTitle(); } - else if (!windowTitle().isEmpty()) { name = windowType(); } + if (this->getDockWidgetInfoArea()) { name = this->getDockWidgetInfoArea()->windowTitle(); } + else if (!windowTitle().isEmpty()) { name = this->windowType(); } else { name = this->metaObject()->className(); } name += ".json"; diff --git a/src/blackgui/views/viewbase.h b/src/blackgui/views/viewbase.h index 0d7dd2681..ee10b3959 100644 --- a/src/blackgui/views/viewbase.h +++ b/src/blackgui/views/viewbase.h @@ -197,6 +197,12 @@ namespace BlackGui //! Main application window widget if any QWidget *mainApplicationWindowWidget() const; + //! Show file load dialog + BlackMisc::CStatusMessage showFileLoadDialog(); + + //! Show file save dialog + BlackMisc::CStatusMessage showFileSaveDialog() const; + signals: //! Ask for new data from currently loaded data void requestUpdate();