From 3bcbcd45e76676b54bedd11ca4d6178b6de582fa Mon Sep 17 00:00:00 2001 From: dfighter1985 Date: Thu, 22 Nov 2012 21:22:28 +0100 Subject: [PATCH] MODIFIED: #1471 Exiting OVQT will now work again properly. --HG-- branch : gsoc2012-gui-editor --- .../src/plugins/core/main_window.cpp | 5 ++- .../src/plugins/core/main_window.h | 2 +- .../src/plugins/gui_editor/CMakeLists.txt | 1 + .../gui_editor/gui_editor_core_listener.cpp | 28 +++++++++++++ .../gui_editor/gui_editor_core_listener.h | 41 +++++++++++++++++++ .../plugins/gui_editor/gui_editor_plugin.cpp | 8 +++- .../plugins/gui_editor/gui_editor_window.cpp | 8 ++-- .../plugins/gui_editor/gui_editor_window.h | 2 +- 8 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_core_listener.cpp create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_core_listener.h diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.cpp index 2247274a6..a90e67bc0 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.cpp @@ -176,11 +176,12 @@ void MainWindow::saveAll() { } -void MainWindow::close() +void MainWindow::closeDocument() { m_contextManager->currentContext()->close(); } + void MainWindow::cut() { } @@ -297,7 +298,7 @@ void MainWindow::createActions() m_closeAction = new QAction(tr("Close"), this); m_closeAction->setShortcut(QKeySequence::Close); menuManager()->registerAction(m_closeAction, Constants::CLOSE); - connect(m_closeAction, SIGNAL(triggered()), this, SLOT(close())); + connect(m_closeAction, SIGNAL(triggered()), this, SLOT(closeDocument())); m_closeAction->setEnabled(false); m_exitAction = new QAction(tr("E&xit"), this); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.h index 11bfd22b6..d258a5eba 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.h @@ -71,7 +71,7 @@ private Q_SLOTS: void save(); void saveAs(); void saveAll(); - void close(); + void closeDocument(); void cut(); void copy(); void paste(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/CMakeLists.txt index d8a8a094f..c2c74038b 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/CMakeLists.txt @@ -45,6 +45,7 @@ SET(OVQT_PLUGIN_GUI_EDITOR_HDR gui_editor_plugin.h gui_editor_window.h gui_editor_context.h + gui_editor_core_listener.h widget_properties.h widget_hierarchy.h link_list.h diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_core_listener.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_core_listener.cpp new file mode 100644 index 000000000..bbe6cd720 --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_core_listener.cpp @@ -0,0 +1,28 @@ +// Object Viewer Qt GUI Editor plugin +// Copyright (C) 2010 Winch Gate Property Limited +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +#include "gui_editor_core_listener.h" +#include "gui_editor_window.h" + +namespace GUIEditor +{ + bool GUIEditorCoreListener::closeMainWindow() const + { + return mainWindow->close(); + } +} + + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_core_listener.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_core_listener.h new file mode 100644 index 000000000..550495e11 --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_core_listener.h @@ -0,0 +1,41 @@ +// Object Viewer Qt GUI Editor plugin +// Copyright (C) 2010 Winch Gate Property Limited +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + + +#ifndef GUI_EDITOR_CORE_LISTENER_H +#define GUI_EDITOR_CORE_LISTENER_H + +#include "../core/icore_listener.h" + +namespace GUIEditor +{ + class GUIEditorWindow; + + class GUIEditorCoreListener : public Core::ICoreListener + { + Q_OBJECT + public: + GUIEditorCoreListener( GUIEditorWindow *mainWindow, QObject *parent = NULL ){ this->mainWindow = mainWindow; } + ~GUIEditorCoreListener(){} + bool closeMainWindow() const; + + private: + GUIEditorWindow *mainWindow; + }; +} + +#endif + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_plugin.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_plugin.cpp index d135dde9a..2fbaa0f13 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_plugin.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_plugin.cpp @@ -17,6 +17,7 @@ #include "gui_editor_plugin.h" #include "gui_editor_window.h" #include "gui_editor_context.h" +#include "gui_editor_core_listener.h" #include "../core/icore.h" #include "../core/core_constants.h" @@ -42,7 +43,12 @@ namespace GUIEditor { Q_UNUSED(errorString); m_plugMan = pluginManager; - addAutoReleasedObject(new GUIEditorContext(this)); + GUIEditorContext *context = new GUIEditorContext( this ); + GUIEditorWindow *window = static_cast< GUIEditorWindow* >( context->widget() ); + + addAutoReleasedObject( context ); + addAutoReleasedObject( new GUIEditorCoreListener( window, this ) ); + return true; } diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_window.cpp index 17325676a..99ade3b18 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_window.cpp @@ -249,17 +249,17 @@ namespace GUIEditor } - void GUIEditorWindow::close() + bool GUIEditorWindow::close() { if( currentProject.isEmpty() ) - return; + return false; QMessageBox::StandardButton reply = QMessageBox::question( this, tr( "Closing project" ), tr( "Are you sure you want to close this project?" ), QMessageBox::Yes | QMessageBox::No ); if( reply != QMessageBox::Yes ) - return; + return false; projectFiles.clearAll(); projectWindow->clear(); @@ -271,6 +271,8 @@ namespace GUIEditor currentProject = ""; currentProjectFile = ""; projectParser.clear(); + + return true; } void GUIEditorWindow::onProjectFilesChanged() diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_window.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_window.h index 8f927e979..d4327d3d9 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_window.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/gui_editor/gui_editor_window.h @@ -54,7 +54,7 @@ public Q_SLOTS: void newDocument(); void save(); void saveAs(); - void close(); + bool close(); private Q_SLOTS: void onProjectFilesChanged();