From 1721bc51d2f1d21da12cb5b24ca01134dcb7b491 Mon Sep 17 00:00:00 2001 From: dnk-88 Date: Wed, 25 May 2011 21:22:10 +0300 Subject: [PATCH 1/6] Added: #1301 Added initial basic shell of Landscape editor plugin. --- .../src/plugins/CMakeLists.txt | 1 + .../plugins/landscape_editor/CMakeLists.txt | 48 +++++++ .../icons/ic_nel_landscape_item.png | Bin 0 -> 56924 bytes .../icons/ic_nel_landscape_settings.png | Bin 0 -> 30656 bytes .../icons/ic_nel_world_editor.png | Bin 0 -> 44031 bytes .../landscape_editor/icons/ic_nel_zone.png | Bin 0 -> 47312 bytes .../landscape_editor/icons/ic_nel_zonel.png | Bin 0 -> 57867 bytes .../landscape_editor/landscape_editor.qrc | 9 ++ .../landscape_editor_constants.h | 37 ++++++ .../landscape_editor_global.h | 30 +++++ .../landscape_editor_plugin.cpp | 118 ++++++++++++++++++ .../landscape_editor_plugin.h | 103 +++++++++++++++ .../landscape_editor_window.cpp | 65 ++++++++++ .../landscape_editor_window.h | 49 ++++++++ .../landscape_editor_window.ui | 43 +++++++ 15 files changed, 503 insertions(+) create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_landscape_item.png create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_landscape_settings.png create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_world_editor.png create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_zone.png create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_zonel.png create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor.qrc create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_constants.h create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_global.h create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.cpp create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.h create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.ui diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/CMakeLists.txt index d5a792acd..7da567023 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/CMakeLists.txt @@ -1,6 +1,7 @@ ADD_SUBDIRECTORY(core) ADD_SUBDIRECTORY(example) ADD_SUBDIRECTORY(ovqt_sheet_builder) +ADD_SUBDIRECTORY(landscape_editor) ADD_SUBDIRECTORY(log) ADD_SUBDIRECTORY(disp_sheet_id) ADD_SUBDIRECTORY(object_viewer) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt new file mode 100644 index 000000000..3b6a61c5e --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/CMakeLists.txt @@ -0,0 +1,48 @@ +INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${LIBXML2_INCLUDE_DIR} + ${QT_INCLUDES}) + +FILE(GLOB SRC *.cpp *.h) + +SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.h + ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_manager.h + ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_spec.h) + +SET(OVQT_PLUGIN_LANDSCAPE_EDITOR_HDR landscape_editor_plugin.h + landscape_editor_window.h +) + +SET(OVQT_PLUGIN_LANDSCAPE_EDITOR_UIS landscape_editor_window.ui +) + +SET(OVQT_PLUGIN_LANDSCAPE_EDITOR_RCS landscape_editor.qrc) + +SET(QT_USE_QTGUI TRUE) +SET(QT_USE_QTOPENGL TRUE) + +QT4_ADD_RESOURCES(OVQT_PLUGIN_LANDSCAPE_EDITOR_RC_SRCS ${OVQT_PLUGIN_LANDSCAPE_EDITOR_RCS}) +QT4_WRAP_CPP(OVQT_PLUGIN_LANDSCAPE_EDITOR_MOC_SRC ${OVQT_PLUGIN_LANDSCAPE_EDITOR_HDR}) +QT4_WRAP_UI(OVQT_PLUGIN_LANDSCAPE_EDITOR_UI_HDRS ${OVQT_PLUGIN_LANDSCAPE_EDITOR_UIS}) + +SOURCE_GROUP(QtResources FILES ${OVQT_PLUGIN_LANDSCAPE_EDITOR_UIS}) +SOURCE_GROUP(QtGeneratedUiHdr FILES ${OVQT_PLUGIN_LANDSCAPE_EDITOR_UI_HDRS}) +SOURCE_GROUP(QtGeneratedMocQrcSrc FILES ${OVQT_PLUGIN_LANDSCAPE_EDITOR_MOC_SRC} OVQT_PLUGIN_LANDSCAPE_EDITOR_RC_SRCS) +SOURCE_GROUP("Landscape Editor Plugin" FILES ${SRC}) +SOURCE_GROUP("OVQT Extension System" FILES ${OVQT_EXT_SYS_SRC}) + +ADD_LIBRARY(ovqt_plugin_landscape_editor MODULE ${SRC} + ${OVQT_PLUGIN_LANDSCAPE_EDITOR_MOC_SRC} + ${OVQT_EXT_SYS_SRC} + ${OVQT_PLUGIN_LANDSCAPE_EDITOR_UI_HDRS} + ${OVQT_PLUGIN_LANDSCAPE_EDITOR_RC_SRCS}) + +TARGET_LINK_LIBRARIES(ovqt_plugin_landscape_editor ovqt_plugin_core nelmisc nel3d ${QT_LIBRARIES} ${QT_QTOPENGL_LIBRARY}) + +NL_DEFAULT_PROPS(ovqt_plugin_landscape_editor "NeL, Tools, 3D: Object Viewer Qt Plugin: Landscape Editor") +NL_ADD_RUNTIME_FLAGS(ovqt_plugin_landscape_editor) +NL_ADD_LIB_SUFFIX(ovqt_plugin_landscape_editor) + +ADD_DEFINITIONS(-DLANDSCAPE_EDITOR_LIBRARY ${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS}) + +INSTALL(TARGETS ovqt_plugin_landscape_editor LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_landscape_item.png b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_landscape_item.png new file mode 100644 index 0000000000000000000000000000000000000000..7a51400b39aec9a48b23f573cd091693466b80ce GIT binary patch literal 56924 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 literal 0 HcmV?d00001 diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_landscape_settings.png b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_landscape_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..4197f7f974481968f968fd3e9267a5fd7b84d4db GIT binary patch literal 30656 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 literal 0 HcmV?d00001 diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_world_editor.png b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_world_editor.png new file mode 100644 index 0000000000000000000000000000000000000000..d41f64e2fa43da9d64f9b528cc173593d4a94c59 GIT binary patch literal 44031 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 GHST}F+s82g literal 0 HcmV?d00001 diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_zone.png b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_zone.png new file mode 100644 index 0000000000000000000000000000000000000000..73be2752843040e6e3c0736b03eb3990210a9dc8 GIT binary patch literal 47312 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 b!8cqqH?6*Ah8^bs;iq%o@Lq*FD)RpT^Q{UA literal 0 HcmV?d00001 diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_zonel.png b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/icons/ic_nel_zonel.png new file mode 100644 index 0000000000000000000000000000000000000000..40f75828b8f40646b66b9bb2e0fc8e831b629b64 GIT binary patch literal 57867 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 ZK*BeDhjmq-TLANCc+FJ5;;K{B{{a=o&Qt&Z literal 0 HcmV?d00001 diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor.qrc b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor.qrc new file mode 100644 index 000000000..5dba9074b --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor.qrc @@ -0,0 +1,9 @@ + + + icons/ic_nel_landscape_item.png + icons/ic_nel_landscape_settings.png + icons/ic_nel_world_editor.png + icons/ic_nel_zone.png + icons/ic_nel_zonel.png + + diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_constants.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_constants.h new file mode 100644 index 000000000..52775f4c4 --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_constants.h @@ -0,0 +1,37 @@ +// Object Viewer Qt - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// Copyright (C) 2011 Dzmitry Kamiahin +// +// 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 LANDSCAPE_EDITOR_CONSTANTS_H +#define LANDSCAPE_EDITOR_CONSTANTS_H + +namespace LandscapeEditor +{ +namespace Constants +{ +const char * const LANDSCAPE_EDITOR_PLUGIN = "LandscapeEditor"; + +//settings +const char * const LANDSCAPE_EDITOR_SECTION = "LandscapeEditor"; + +//resources +const char * const ICON_LANDSCAPE_ITEM = ":/icons/ic_nel_landscape_item.png"; + + +} // namespace Constants +} // namespace LandscapeEditor + +#endif // LANDSCAPE_EDITOR_CONSTANTS_H diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_global.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_global.h new file mode 100644 index 000000000..167c8e24f --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_global.h @@ -0,0 +1,30 @@ +// Object Viewer Qt - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// Copyright (C) 2011 Dzmitry Kamiahin +// Parts by Nokia Corporation (qt-info@nokia.com) Copyright (C) 2009. +// +// 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 LANDSCAPE_EDITOR_GLOBAL_H +#define LANDSCAPE_EDITOR_GLOBAL_H + +#include + +#if defined(LANDSCAPE_EDITOR_LIBRARY) +# define LANDSCAPE_EDITOR_EXPORT Q_DECL_EXPORT +#else +# define LANDSCAPE_EDITOR_EXPORT Q_DECL_IMPORT +#endif + +#endif // LANDSCAPE_EDITOR_GLOBAL_H diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.cpp new file mode 100644 index 000000000..2c51a5d68 --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.cpp @@ -0,0 +1,118 @@ +// Object Viewer Qt - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// Copyright (C) 2011 Dzmitry Kamiahin +// +// 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 . + +// Project includes +#include "landscape_editor_plugin.h" +#include "landscape_editor_window.h" + +#include "../core/icore.h" +#include "../core/core_constants.h" + +// NeL includes +#include "nel/misc/debug.h" + +// Qt includes +#include + +namespace LandscapeEditor +{ + +LandscapeEditorPlugin::~LandscapeEditorPlugin() +{ + Q_FOREACH(QObject *obj, m_autoReleaseObjects) + { + m_plugMan->removeObject(obj); + } + qDeleteAll(m_autoReleaseObjects); + m_autoReleaseObjects.clear(); +} + +bool LandscapeEditorPlugin::initialize(ExtensionSystem::IPluginManager *pluginManager, QString *errorString) +{ + Q_UNUSED(errorString); + m_plugMan = pluginManager; + + addAutoReleasedObject(new LandscapeEditorContext(this)); + return true; +} + +void LandscapeEditorPlugin::extensionsInitialized() +{ +} + +void LandscapeEditorPlugin::shutdown() +{ +} + +void LandscapeEditorPlugin::setNelContext(NLMISC::INelContext *nelContext) +{ +#ifdef NL_OS_WINDOWS + // Ensure that a context doesn't exist yet. + // This only applies to platforms without PIC, e.g. Windows. + nlassert(!NLMISC::INelContext::isContextInitialised()); +#endif // NL_OS_WINDOWS + m_libContext = new NLMISC::CLibraryContext(*nelContext); +} + +QString LandscapeEditorPlugin::name() const +{ + return tr("LandscapeEditor"); +} + +QString LandscapeEditorPlugin::version() const +{ + return "0.0.1"; +} + +QString LandscapeEditorPlugin::vendor() const +{ + return "GSoC2011_dnk-88"; +} + +QString LandscapeEditorPlugin::description() const +{ + return "Landscape editor ovqt plugin."; +} + +QStringList LandscapeEditorPlugin::dependencies() const +{ + QStringList list; + list.append(Core::Constants::OVQT_CORE_PLUGIN); + return list; +} + +void LandscapeEditorPlugin::addAutoReleasedObject(QObject *obj) +{ + m_plugMan->addObject(obj); + m_autoReleaseObjects.prepend(obj); +} + +LandscapeEditorContext::LandscapeEditorContext(QObject *parent) + : IContext(parent), + m_landEditorWindow(0) +{ + m_landEditorWindow = new LandscapeEditorWindow(); +} + +QWidget *LandscapeEditorContext::widget() +{ + return m_landEditorWindow; +} + +} + +Q_EXPORT_PLUGIN(LandscapeEditor::LandscapeEditorPlugin) \ No newline at end of file diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h new file mode 100644 index 000000000..3b7df3777 --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h @@ -0,0 +1,103 @@ +// Object Viewer Qt - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// Copyright (C) 2011 Dzmitry Kamiahin +// +// 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 LANDSCAPE_EDITOR_PLUGIN_H +#define LANDSCAPE_EDITOR_PLUGIN_H + +// Project includes +#include "landscape_editor_constants.h" +#include "../../extension_system/iplugin.h" +#include "../core/icontext.h" + +// NeL includes +#include "nel/misc/app_context.h" + +// Qt includes +#include +#include + +namespace NLMISC +{ +class CLibraryContext; +} + +namespace ExtensionSystem +{ +class IPluginSpec; +} + +namespace LandscapeEditor +{ +class LandscapeEditorWindow; + +class LandscapeEditorPlugin : public QObject, public ExtensionSystem::IPlugin +{ + Q_OBJECT + Q_INTERFACES(ExtensionSystem::IPlugin) +public: + + virtual ~LandscapeEditorPlugin(); + + bool initialize(ExtensionSystem::IPluginManager *pluginManager, QString *errorString); + void extensionsInitialized(); + void shutdown(); + + void setNelContext(NLMISC::INelContext *nelContext); + + QString name() const; + QString version() const; + QString vendor() const; + QString description() const; + QStringList dependencies() const; + + void addAutoReleasedObject(QObject *obj); + +protected: + NLMISC::CLibraryContext *m_libContext; + +private: + ExtensionSystem::IPluginManager *m_plugMan; + QList m_autoReleaseObjects; +}; + +class LandscapeEditorContext: public Core::IContext +{ + Q_OBJECT +public: + LandscapeEditorContext(QObject *parent = 0); + virtual ~LandscapeEditorContext() {} + + virtual QString id() const + { + return QLatin1String("LandscapeEditorContext"); + } + virtual QString trName() const + { + return tr("LandscapeEditor"); + } + virtual QIcon icon() const + { + return QIcon(); + } + virtual QWidget *widget(); + + LandscapeEditorWindow *m_landEditorWindow; +}; + +} // namespace LandscapeEditor + +#endif // LANDSCAPE_EDITOR_PLUGIN_H diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp new file mode 100644 index 000000000..1588f6252 --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp @@ -0,0 +1,65 @@ +// Object Viewer Qt - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// Copyright (C) 2011 Dzmitry Kamiahin +// +// 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 . + +// Project includes +#include "landscape_editor_window.h" +#include "landscape_editor_constants.h" + +#include "../core/icore.h" +#include "../core/imenu_manager.h" +#include "../core/core_constants.h" + +// Qt includes +#include + +namespace LandscapeEditor +{ + +LandscapeEditorWindow::LandscapeEditorWindow(QWidget *parent) + : QMainWindow(parent) +{ + m_ui.setupUi(this); + createMenus(); +// readSettings(); +} + +LandscapeEditorWindow::~LandscapeEditorWindow() +{ +// writeSettings(); +} + +void LandscapeEditorWindow::createMenus() +{ + Core::IMenuManager *menuManager = Core::ICore::instance()->menuManager(); +} + +void LandscapeEditorWindow::readSettings() +{ + QSettings *settings = Core::ICore::instance()->settings(); + settings->beginGroup(Constants::LANDSCAPE_EDITOR_SECTION); + settings->endGroup(); +} + +void LandscapeEditorWindow::writeSettings() +{ + QSettings *settings = Core::ICore::instance()->settings(); + settings->beginGroup(Constants::LANDSCAPE_EDITOR_SECTION); + settings->endGroup(); + settings->sync(); +} + +} /* namespace LandscapeEditor */ diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.h new file mode 100644 index 000000000..0af41961f --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.h @@ -0,0 +1,49 @@ +// Object Viewer Qt - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// Copyright (C) 2011 Dzmitry Kamiahin +// +// 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 LANDSCAPE_EDITOR_WINDOW_H +#define LANDSCAPE_EDITOR_WINDOW_H + +#include "ui_landscape_editor_window.h" + +// Qt includes + +namespace LandscapeEditor +{ + +class LandscapeEditorWindow: public QMainWindow +{ + Q_OBJECT + +public: + LandscapeEditorWindow(QWidget *parent = 0); + ~LandscapeEditorWindow(); + +Q_SIGNALS: +public Q_SLOTS: +private Q_SLOTS: +private: + void createMenus(); + void readSettings(); + void writeSettings(); + + Ui::LandscapeEditorWindow m_ui; +}; /* class LandscapeEditorWindow */ + +} /* namespace LandscapeEditor */ + +#endif // LANDSCAPE_EDITOR_WINDOW_H diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.ui b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.ui new file mode 100644 index 000000000..5d9606ddf --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.ui @@ -0,0 +1,43 @@ + + + LandscapeEditorWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + :/icons/ic_nel_landscape_item.png:/icons/ic_nel_landscape_item.png + + + + + + + + + + + toolBar + + + TopToolBarArea + + + false + + + + + + + + From 1f52dfb05aa783ac30f3798e35d8ce98c012d656 Mon Sep 17 00:00:00 2001 From: dnk-88 Date: Thu, 26 May 2011 15:35:04 +0300 Subject: [PATCH 2/6] Added: #1303 Added initial context manager. --- .../src/plugins/core/CMakeLists.txt | 7 +- .../src/plugins/core/context_manager.cpp | 101 ++++++++++++++++++ .../src/plugins/core/context_manager.h | 67 ++++++++++++ .../src/plugins/core/core.cpp | 6 ++ .../object_viewer_qt/src/plugins/core/core.h | 1 + .../src/plugins/core/icontext.h | 10 ++ .../object_viewer_qt/src/plugins/core/icore.h | 2 + .../src/plugins/core/main_window.cpp | 11 +- .../src/plugins/core/main_window.h | 3 + 9 files changed, 205 insertions(+), 3 deletions(-) create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp create mode 100644 code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt index 06095790b..3140f02fb 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/CMakeLists.txt @@ -18,15 +18,18 @@ SET(OVQT_CORE_PLUGIN_HDR core.h main_window.h menu_manager.h + context_manager.h settings_dialog.h search_paths_settings_page.h general_settings_page.h - plugin_view_dialog.h) + plugin_view_dialog.h +) SET(OVQT_CORE_PLUGIN_UIS settings_dialog.ui plugin_view_dialog.ui general_settings_page.ui - search_paths_settings_page.ui) + search_paths_settings_page.ui +) SET(OVQT_CORE_PLUGIN_RCS core.qrc) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp new file mode 100644 index 000000000..5e3d2864c --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp @@ -0,0 +1,101 @@ +// Object Viewer Qt - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// Copyright (C) 2011 Dzmitry Kamiahin +// +// 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 . + +// Project includes +#include "context_manager.h" +#include "icontext.h" + +// NeL includes +#include + +// Qt includes +#include + +namespace Core +{ + +struct ContextManagerPrivate +{ + explicit ContextManagerPrivate(QTabWidget *tabWidget); + QTabWidget *m_tabWidget; + QVector m_contexts; + int m_oldCurrent; +}; + +ContextManagerPrivate::ContextManagerPrivate(QTabWidget *tabWidget) + : m_tabWidget(tabWidget), + m_oldCurrent(-1) +{ +} + +ContextManager::ContextManager(QTabWidget *tabWidget) + : d(new ContextManagerPrivate(tabWidget)) +{ +} + +ContextManager::~ContextManager() +{ + delete d; +} + +Core::IContext* ContextManager::currentContext() const +{ + int currentIndex = d->m_tabWidget->currentIndex(); + if (currentIndex < 0) + return 0; + return d->m_contexts.at(currentIndex); +} + +Core::IContext* ContextManager::context(const QString &id) const +{ + const int index = indexOf(id); + if (index >= 0) + return d->m_contexts.at(index); + return 0; +} + +void ContextManager::activateContext(const QString &id) +{ + const int index = indexOf(id); + if (index >= 0) + d->m_tabWidget->setCurrentIndex(index); +} + +void ContextManager::addContextObject(IContext *context) +{ +} + +void ContextManager::removeContextObject(IContext *context) +{ +} + +void ContextManager::currentTabChanged(int index) +{ +} + +int ContextManager::indexOf(const QString &id) const +{ + for (int i = 0; i < d->m_contexts.count(); ++i) + { + if (d->m_contexts.at(i)->id() == id) + return i; + } + nlwarning(QString("Warning, no such context: %1").arg(id).toStdString().c_str()); + return -1; +} + +} /* namespace Core */ \ No newline at end of file diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h new file mode 100644 index 000000000..c0d4a2209 --- /dev/null +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h @@ -0,0 +1,67 @@ +// Object Viewer Qt - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// Copyright (C) 2011 Dzmitry Kamiahin +// +// 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 CONTEXT_MANAGER_H +#define CONTEXT_MANAGER_H + +// Project includes +#include "core_global.h" + +// Qt includes +#include + +QT_BEGIN_NAMESPACE +class QTabWidget; +QT_END_NAMESPACE + +namespace Core +{ +class IContext; +struct ContextManagerPrivate; + +class CORE_EXPORT ContextManager : public QObject +{ + Q_OBJECT + +public: + explicit ContextManager(QTabWidget *tabWidget); + virtual ~ContextManager(); + + Core::IContext* currentContext() const; + Core::IContext* context(const QString &id) const; + +Q_SIGNALS: + // the default argument '=0' is important for connects without the oldContext argument. + void currentContextChanged(Core::IContext *context, Core::IContext *oldContext = 0); + +public Q_SLOTS: + void activateContext(const QString &id); + +private Q_SLOTS: + void addContextObject(IContext *context); + void removeContextObject(IContext *context); + void currentTabChanged(int index); + +private: + int indexOf(const QString &id) const; + + ContextManagerPrivate *d; +}; + +} // namespace Core + +#endif // CONTEXT_MANAGER_H diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.cpp index 6c681f15a..fa61b5700 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.cpp @@ -18,6 +18,7 @@ #include "core.h" #include "imenu_manager.h" +#include "context_manager.h" #include "main_window.h" #include "../../extension_system/iplugin_manager.h" @@ -54,6 +55,11 @@ IMenuManager *CoreImpl::menuManager() const return m_mainWindow->menuManager(); } +ContextManager *CoreImpl::contextManager() const +{ + return m_mainWindow->contextManager(); +} + QSettings *CoreImpl::settings() const { return m_mainWindow->settings(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.h index d3b25b918..2613a06a5 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.h @@ -38,6 +38,7 @@ public: QWidget *parent = 0); virtual IMenuManager *menuManager() const; + virtual ContextManager *contextManager() const; virtual QSettings *settings() const; virtual QMainWindow *mainWindow() const; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h index 776246d8d..c012b5a0c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h @@ -56,6 +56,16 @@ public: /// The widget will be destroyed by the widget hierarchy when the main window closes virtual QWidget *widget() = 0; + + virtual bool open() + { + return false; + } + + virtual bool help() + { + return false; + } }; } // namespace Core diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icore.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icore.h index 71f075973..13b22bfa5 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icore.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icore.h @@ -36,6 +36,7 @@ class IPluginManager; namespace Core { class IMenuManager; +class ContextManager; class CORE_EXPORT ICore : public QObject { @@ -52,6 +53,7 @@ public: QWidget *parent = 0) = 0; virtual IMenuManager *menuManager() const = 0; + virtual ContextManager *contextManager() const = 0; virtual QSettings *settings() const = 0; virtual QMainWindow *mainWindow() const = 0; 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 e048aa80b..4d7ffc35e 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 @@ -20,6 +20,7 @@ #include "icontext.h" #include "icore_listener.h" #include "menu_manager.h" +#include "context_manager.h" #include "core.h" #include "core_constants.h" #include "settings_dialog.h" @@ -38,6 +39,7 @@ MainWindow::MainWindow(ExtensionSystem::IPluginManager *pluginManager, QWidget * : QMainWindow(parent), m_pluginManager(0), m_menuManager(0), + m_contextManager(0), m_coreImpl(0), m_lastDir("."), m_settings(0) @@ -59,10 +61,12 @@ MainWindow::MainWindow(ExtensionSystem::IPluginManager *pluginManager, QWidget * m_tabWidget = new QTabWidget(this); m_tabWidget->setTabPosition(QTabWidget::South); - m_tabWidget->setMovable(true); + m_tabWidget->setMovable(false); m_tabWidget->setDocumentMode(true); setCentralWidget(m_tabWidget); + m_contextManager = new ContextManager(m_tabWidget); + setDockNestingEnabled(true); m_originalPalette = QApplication::palette(); @@ -109,6 +113,11 @@ IMenuManager *MainWindow::menuManager() const return m_menuManager; } +ContextManager *MainWindow::contextManager() const +{ + return m_contextManager; +} + QSettings *MainWindow::settings() const { return m_settings; 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 4cc24e5eb..61ebddf30 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 @@ -35,6 +35,7 @@ class CorePlugin; class IContext; class IMenuManager; class MenuManager; +class ContextManager; class CoreImpl; class MainWindow : public QMainWindow @@ -49,6 +50,7 @@ public: void extensionsInitialized(); IMenuManager *menuManager() const; + ContextManager *contextManager() const; QSettings *settings() const; ExtensionSystem::IPluginManager *pluginManager() const; @@ -80,6 +82,7 @@ private: ExtensionSystem::IPluginManager *m_pluginManager; ExtensionSystem::CPluginView *m_pluginView; MenuManager *m_menuManager; + ContextManager *m_contextManager; CoreImpl *m_coreImpl; QPalette m_originalPalette; From 03475c59b202029492a266dc7f84d5d9892fe7f5 Mon Sep 17 00:00:00 2001 From: dnk-88 Date: Thu, 26 May 2011 17:03:49 +0300 Subject: [PATCH 3/6] Changed: #1303 Completed work on the context manager. --- .../src/plugins/core/context_manager.cpp | 55 +++++++++++++++++-- .../src/plugins/core/context_manager.h | 6 +- .../src/plugins/core/main_window.cpp | 27 +-------- .../src/plugins/core/main_window.h | 3 - .../landscape_editor_plugin.h | 2 +- .../landscape_editor_window.cpp | 7 ++- 6 files changed, 62 insertions(+), 38 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp index 5e3d2864c..b0a13aee6 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp @@ -24,27 +24,36 @@ // Qt includes #include +#include namespace Core { struct ContextManagerPrivate { - explicit ContextManagerPrivate(QTabWidget *tabWidget); + explicit ContextManagerPrivate(ExtensionSystem::IPluginManager *pluginManager, QTabWidget *tabWidget); + ExtensionSystem::IPluginManager *m_pluginManager; QTabWidget *m_tabWidget; QVector m_contexts; int m_oldCurrent; }; -ContextManagerPrivate::ContextManagerPrivate(QTabWidget *tabWidget) - : m_tabWidget(tabWidget), +ContextManagerPrivate::ContextManagerPrivate(ExtensionSystem::IPluginManager *pluginManager, QTabWidget *tabWidget) + : m_pluginManager(pluginManager), + m_tabWidget(tabWidget), m_oldCurrent(-1) { } -ContextManager::ContextManager(QTabWidget *tabWidget) - : d(new ContextManagerPrivate(tabWidget)) +ContextManager::ContextManager(ExtensionSystem::IPluginManager *pluginManager, QTabWidget *tabWidget) + : d(new ContextManagerPrivate(pluginManager, tabWidget)) { + QObject::connect(d->m_pluginManager, SIGNAL(objectAdded(QObject *)), + this, SLOT(objectAdded(QObject *))); + QObject::connect(d->m_pluginManager, SIGNAL(aboutToRemoveObject(QObject *)), + this, SLOT(aboutToRemoveObject(QObject *))); + + QObject::connect(d->m_tabWidget, SIGNAL(currentChanged(int)), this, SLOT(currentTabChanged(int))); } ContextManager::~ContextManager() @@ -75,16 +84,52 @@ void ContextManager::activateContext(const QString &id) d->m_tabWidget->setCurrentIndex(index); } +void ContextManager::objectAdded(QObject *obj) +{ + IContext *context = qobject_cast(obj); + if (context) + addContextObject(context); +} + +void ContextManager::aboutToRemoveObject(QObject *obj) +{ + IContext *context = qobject_cast(obj); + if (context) + removeContextObject(context); +} + void ContextManager::addContextObject(IContext *context) { + d->m_contexts.push_back(context); + + QWidget *tabWidget = new QWidget(d->m_tabWidget); + d->m_tabWidget->addTab(tabWidget, context->icon(), context->trName()); + QGridLayout *gridLayout = new QGridLayout(tabWidget); + gridLayout->setObjectName(QString::fromUtf8("gridLayout_") + context->id()); + gridLayout->setContentsMargins(0, 0, 0, 0); + gridLayout->addWidget(context->widget(), 0, 0, 1, 1); } void ContextManager::removeContextObject(IContext *context) { + const int index = indexOf(context->id()); + QWidget *widget = d->m_tabWidget->widget(index); + d->m_tabWidget->removeTab(index); + d->m_contexts.remove(index); + delete widget; } void ContextManager::currentTabChanged(int index) { + if (index >= 0) + { + IContext *context = d->m_contexts.at(index); + IContext *oldContext = 0; + if (d->m_oldCurrent >= 0) + oldContext = d->m_contexts.at(d->m_oldCurrent); + d->m_oldCurrent = index; + Q_EMIT currentContextChanged(context, oldContext); + } } int ContextManager::indexOf(const QString &id) const diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h index c0d4a2209..5264617a3 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h @@ -21,6 +21,8 @@ // Project includes #include "core_global.h" +#include "../../extension_system/iplugin_manager.h" + // Qt includes #include @@ -38,7 +40,7 @@ class CORE_EXPORT ContextManager : public QObject Q_OBJECT public: - explicit ContextManager(QTabWidget *tabWidget); + explicit ContextManager(ExtensionSystem::IPluginManager *pluginManager, QTabWidget *tabWidget); virtual ~ContextManager(); Core::IContext* currentContext() const; @@ -52,6 +54,8 @@ public Q_SLOTS: void activateContext(const QString &id); private Q_SLOTS: + void objectAdded(QObject *obj); + void aboutToRemoveObject(QObject *obj); void addContextObject(IContext *context); void removeContextObject(IContext *context); void currentTabChanged(int index); 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 4d7ffc35e..a4bc542b2 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 @@ -65,7 +65,7 @@ MainWindow::MainWindow(ExtensionSystem::IPluginManager *pluginManager, QWidget * m_tabWidget->setDocumentMode(true); setCentralWidget(m_tabWidget); - m_contextManager = new ContextManager(m_tabWidget); + m_contextManager = new ContextManager(m_pluginManager, m_tabWidget); setDockNestingEnabled(true); m_originalPalette = QApplication::palette(); @@ -96,14 +96,6 @@ bool MainWindow::initialize(QString *errorString) void MainWindow::extensionsInitialized() { - QList listContexts = m_pluginManager->getObjects(); - - Q_FOREACH(IContext *context, listContexts) - { - addContextObject(context); - } - - connect(m_pluginManager, SIGNAL(objectAdded(QObject *)), this, SLOT(checkObject(QObject *))); readSettings(); show(); } @@ -132,13 +124,6 @@ void MainWindow::open() { } -void MainWindow::checkObject(QObject *obj) -{ - IContext *context = qobject_cast(obj); - if (context) - addContextObject(context); -} - bool MainWindow::showOptionsDialog(const QString &group, const QString &page, QWidget *parent) @@ -177,16 +162,6 @@ void MainWindow::closeEvent(QCloseEvent *event) event->accept(); } -void MainWindow::addContextObject(IContext *context) -{ - QWidget *tabWidget = new QWidget(m_tabWidget); - m_tabWidget->addTab(tabWidget, context->icon(), context->trName()); - QGridLayout *gridLayout = new QGridLayout(tabWidget); - gridLayout->setObjectName(QString::fromUtf8("gridLayout_") + context->id()); - gridLayout->setContentsMargins(0, 0, 0, 0); - gridLayout->addWidget(context->widget(), 0, 0, 1, 1); -} - void MainWindow::createActions() { m_openAction = new QAction(tr("&Open..."), 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 61ebddf30..8c4a4aafe 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 @@ -62,15 +62,12 @@ public Q_SLOTS: private Q_SLOTS: void open(); - void checkObject(QObject *obj); void about(); protected: virtual void closeEvent(QCloseEvent *event); private: - void addContextObject(IContext *appPage); - void createActions(); void createMenus(); void createStatusBar(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h index 3b7df3777..bd5040843 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h @@ -87,7 +87,7 @@ public: } virtual QString trName() const { - return tr("LandscapeEditor"); + return tr("Landscape Editor"); } virtual QIcon icon() const { diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp index 1588f6252..ef4f81a1c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp @@ -23,6 +23,9 @@ #include "../core/imenu_manager.h" #include "../core/core_constants.h" +// NeL includes +#include + // Qt includes #include @@ -34,12 +37,12 @@ LandscapeEditorWindow::LandscapeEditorWindow(QWidget *parent) { m_ui.setupUi(this); createMenus(); -// readSettings(); + readSettings(); } LandscapeEditorWindow::~LandscapeEditorWindow() { -// writeSettings(); + writeSettings(); } void LandscapeEditorWindow::createMenus() From 9f204828e767c275ce5b9a654a63c4b50c7b4b90 Mon Sep 17 00:00:00 2001 From: dnk-88 Date: Thu, 26 May 2011 17:28:10 +0300 Subject: [PATCH 4/6] Changed: #1303 Fix typos in comments/code --- .../src/plugins/core/context_manager.cpp | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp index b0a13aee6..23d544593 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp @@ -49,9 +49,9 @@ ContextManager::ContextManager(ExtensionSystem::IPluginManager *pluginManager, Q : d(new ContextManagerPrivate(pluginManager, tabWidget)) { QObject::connect(d->m_pluginManager, SIGNAL(objectAdded(QObject *)), - this, SLOT(objectAdded(QObject *))); + this, SLOT(objectAdded(QObject *))); QObject::connect(d->m_pluginManager, SIGNAL(aboutToRemoveObject(QObject *)), - this, SLOT(aboutToRemoveObject(QObject *))); + this, SLOT(aboutToRemoveObject(QObject *))); QObject::connect(d->m_tabWidget, SIGNAL(currentChanged(int)), this, SLOT(currentTabChanged(int))); } @@ -86,15 +86,15 @@ void ContextManager::activateContext(const QString &id) void ContextManager::objectAdded(QObject *obj) { - IContext *context = qobject_cast(obj); - if (context) + IContext *context = qobject_cast(obj); + if (context) addContextObject(context); } void ContextManager::aboutToRemoveObject(QObject *obj) { - IContext *context = qobject_cast(obj); - if (context) + IContext *context = qobject_cast(obj); + if (context) removeContextObject(context); } @@ -102,11 +102,11 @@ void ContextManager::addContextObject(IContext *context) { d->m_contexts.push_back(context); - QWidget *tabWidget = new QWidget(d->m_tabWidget); - d->m_tabWidget->addTab(tabWidget, context->icon(), context->trName()); - QGridLayout *gridLayout = new QGridLayout(tabWidget); - gridLayout->setObjectName(QString::fromUtf8("gridLayout_") + context->id()); - gridLayout->setContentsMargins(0, 0, 0, 0); + QWidget *tabWidget = new QWidget(d->m_tabWidget); + d->m_tabWidget->addTab(tabWidget, context->icon(), context->trName()); + QGridLayout *gridLayout = new QGridLayout(tabWidget); + gridLayout->setObjectName(QString::fromUtf8("gridLayout_") + context->id()); + gridLayout->setContentsMargins(0, 0, 0, 0); gridLayout->addWidget(context->widget(), 0, 0, 1, 1); } @@ -121,15 +121,15 @@ void ContextManager::removeContextObject(IContext *context) void ContextManager::currentTabChanged(int index) { - if (index >= 0) + if (index >= 0) { IContext *context = d->m_contexts.at(index); - IContext *oldContext = 0; - if (d->m_oldCurrent >= 0) - oldContext = d->m_contexts.at(d->m_oldCurrent); - d->m_oldCurrent = index; - Q_EMIT currentContextChanged(context, oldContext); - } + IContext *oldContext = 0; + if (d->m_oldCurrent >= 0) + oldContext = d->m_contexts.at(d->m_oldCurrent); + d->m_oldCurrent = index; + Q_EMIT currentContextChanged(context, oldContext); + } } int ContextManager::indexOf(const QString &id) const From fbbdb15ad2a10b2cf2d027efa7d3ebc416033c3b Mon Sep 17 00:00:00 2001 From: dnk-88 Date: Fri, 27 May 2011 17:06:30 +0300 Subject: [PATCH 5/6] Changed: #1303 Each context must have its own file open dialog, which will be called when the context is active. The beginning of work on adding undo/redo. --- .../src/plugins/core/context_manager.cpp | 21 ++++++++++--------- .../src/plugins/core/context_manager.h | 9 ++++---- .../plugins/core/general_settings_page.cpp | 5 +++++ .../src/plugins/core/general_settings_page.h | 1 + .../src/plugins/core/icontext.h | 10 +-------- .../src/plugins/core/ioptions_page.h | 3 +++ .../src/plugins/core/main_window.cpp | 10 +++++++-- .../src/plugins/core/main_window.h | 2 ++ .../core/search_paths_settings_page.cpp | 5 +++++ .../plugins/core/search_paths_settings_page.h | 1 + .../plugins/example/example_settings_page.cpp | 5 +++++ .../plugins/example/example_settings_page.h | 1 + .../src/plugins/example/plugin1.h | 4 ++++ .../landscape_editor_plugin.h | 5 +++++ .../object_viewer/graphics_settings_page.cpp | 5 +++++ .../object_viewer/graphics_settings_page.h | 1 + .../src/plugins/object_viewer/main_window.cpp | 4 ++-- .../src/plugins/object_viewer/main_window.h | 4 +++- .../object_viewer/object_viewer_plugin.cpp | 5 +++++ .../object_viewer/object_viewer_plugin.h | 5 +++++ .../object_viewer/sound_settings_page.cpp | 5 +++++ .../object_viewer/sound_settings_page.h | 1 + .../object_viewer/vegetable_settings_page.cpp | 5 +++++ .../object_viewer/vegetable_settings_page.h | 1 + 24 files changed, 89 insertions(+), 29 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp index 23d544593..23dbe02f4 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp @@ -18,6 +18,7 @@ // Project includes #include "context_manager.h" #include "icontext.h" +#include "main_window.h" // NeL includes #include @@ -31,26 +32,26 @@ namespace Core struct ContextManagerPrivate { - explicit ContextManagerPrivate(ExtensionSystem::IPluginManager *pluginManager, QTabWidget *tabWidget); - ExtensionSystem::IPluginManager *m_pluginManager; + explicit ContextManagerPrivate(Core::MainWindow *mainWindow, QTabWidget *tabWidget); + Core::MainWindow *m_mainWindow; QTabWidget *m_tabWidget; QVector m_contexts; int m_oldCurrent; }; -ContextManagerPrivate::ContextManagerPrivate(ExtensionSystem::IPluginManager *pluginManager, QTabWidget *tabWidget) - : m_pluginManager(pluginManager), +ContextManagerPrivate::ContextManagerPrivate(Core::MainWindow *mainWindow, QTabWidget *tabWidget) + : m_mainWindow(mainWindow), m_tabWidget(tabWidget), m_oldCurrent(-1) { } -ContextManager::ContextManager(ExtensionSystem::IPluginManager *pluginManager, QTabWidget *tabWidget) - : d(new ContextManagerPrivate(pluginManager, tabWidget)) +ContextManager::ContextManager(Core::MainWindow *mainWindow, QTabWidget *tabWidget) + : d(new ContextManagerPrivate(mainWindow, tabWidget)) { - QObject::connect(d->m_pluginManager, SIGNAL(objectAdded(QObject *)), + QObject::connect(d->m_mainWindow->pluginManager(), SIGNAL(objectAdded(QObject *)), this, SLOT(objectAdded(QObject *))); - QObject::connect(d->m_pluginManager, SIGNAL(aboutToRemoveObject(QObject *)), + QObject::connect(d->m_mainWindow->pluginManager(), SIGNAL(aboutToRemoveObject(QObject *)), this, SLOT(aboutToRemoveObject(QObject *))); QObject::connect(d->m_tabWidget, SIGNAL(currentChanged(int)), this, SLOT(currentTabChanged(int))); @@ -61,7 +62,7 @@ ContextManager::~ContextManager() delete d; } -Core::IContext* ContextManager::currentContext() const +Core::IContext *ContextManager::currentContext() const { int currentIndex = d->m_tabWidget->currentIndex(); if (currentIndex < 0) @@ -69,7 +70,7 @@ Core::IContext* ContextManager::currentContext() const return d->m_contexts.at(currentIndex); } -Core::IContext* ContextManager::context(const QString &id) const +Core::IContext *ContextManager::context(const QString &id) const { const int index = indexOf(id); if (index >= 0) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h index 5264617a3..7a3658fff 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.h @@ -21,8 +21,6 @@ // Project includes #include "core_global.h" -#include "../../extension_system/iplugin_manager.h" - // Qt includes #include @@ -33,6 +31,7 @@ QT_END_NAMESPACE namespace Core { class IContext; +class MainWindow; struct ContextManagerPrivate; class CORE_EXPORT ContextManager : public QObject @@ -40,11 +39,11 @@ class CORE_EXPORT ContextManager : public QObject Q_OBJECT public: - explicit ContextManager(ExtensionSystem::IPluginManager *pluginManager, QTabWidget *tabWidget); + explicit ContextManager(Core::MainWindow *mainWindow, QTabWidget *tabWidget); virtual ~ContextManager(); - Core::IContext* currentContext() const; - Core::IContext* context(const QString &id) const; + Core::IContext *currentContext() const; + Core::IContext *context(const QString &id) const; Q_SIGNALS: // the default argument '=0' is important for connects without the oldContext argument. diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.cpp index 47bf4026a..51da80f67 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.cpp @@ -65,6 +65,11 @@ QString GeneralSettingsPage::trCategory() const return tr(Constants::SETTINGS_TR_CATEGORY_GENERAL); } +QIcon GeneralSettingsPage::categoryIcon() const +{ + return QIcon(); +} + void GeneralSettingsPage::applyGeneralSettings() { QSettings *settings = Core::ICore::instance()->settings(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.h index 2f73f8715..2fbcb842a 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/general_settings_page.h @@ -44,6 +44,7 @@ public: QString trName() const; QString category() const; QString trCategory() const; + QIcon categoryIcon() const; QWidget *createPage(QWidget *parent); void apply(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h index c012b5a0c..c6784dafe 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h @@ -57,15 +57,7 @@ public: /// The widget will be destroyed by the widget hierarchy when the main window closes virtual QWidget *widget() = 0; - virtual bool open() - { - return false; - } - - virtual bool help() - { - return false; - } + virtual void open() = 0; }; } // namespace Core diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/ioptions_page.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/ioptions_page.h index 74692833a..4d9ed6fda 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/ioptions_page.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/ioptions_page.h @@ -27,6 +27,7 @@ QT_BEGIN_NAMESPACE class QWidget; +class QIcon; QT_END_NAMESPACE namespace Core @@ -56,6 +57,8 @@ public: /// trCategory() is the translated category virtual QString trCategory() const = 0; + virtual QIcon categoryIcon() const = 0; + /// createPage() is called to retrieve the widget to show in the preferences dialog /// The widget will be destroyed by the widget hierarchy when the dialog closes virtual QWidget *createPage(QWidget *parent) = 0; 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 a4bc542b2..1c8850508 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 @@ -42,6 +42,7 @@ MainWindow::MainWindow(ExtensionSystem::IPluginManager *pluginManager, QWidget * m_contextManager(0), m_coreImpl(0), m_lastDir("."), + m_undoGroup(0), m_settings(0) { QCoreApplication::setApplicationName(QLatin1String("ObjectViewerQt")); @@ -65,10 +66,11 @@ MainWindow::MainWindow(ExtensionSystem::IPluginManager *pluginManager, QWidget * m_tabWidget->setDocumentMode(true); setCentralWidget(m_tabWidget); - m_contextManager = new ContextManager(m_pluginManager, m_tabWidget); + m_contextManager = new ContextManager(this, m_tabWidget); setDockNestingEnabled(true); m_originalPalette = QApplication::palette(); + m_undoGroup = new QUndoGroup(this); createDialogs(); createActions(); @@ -122,6 +124,7 @@ ExtensionSystem::IPluginManager *MainWindow::pluginManager() const void MainWindow::open() { + m_contextManager->currentContext()->open(); } bool MainWindow::showOptionsDialog(const QString &group, @@ -212,11 +215,14 @@ void MainWindow::createMenus() { m_fileMenu = menuBar()->addMenu(tr("&File")); menuManager()->registerMenu(m_fileMenu, Constants::M_FILE); -// m_fileMenu->addAction(m_openAction); + m_fileMenu->addAction(m_openAction); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_exitAction); m_editMenu = menuBar()->addMenu(tr("&Edit")); + m_editMenu->addAction(m_undoGroup->createUndoAction(this)); + m_editMenu->addAction(m_undoGroup->createRedoAction(this)); + m_editMenu->addSeparator(); menuManager()->registerMenu(m_editMenu, Constants::M_EDIT); m_viewMenu = menuBar()->addMenu(tr("&View")); 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 8c4a4aafe..cd34098a7 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 @@ -26,6 +26,7 @@ // Qt includes #include +#include #include namespace Core @@ -85,6 +86,7 @@ private: QPalette m_originalPalette; QString m_lastDir; + QUndoGroup *m_undoGroup; QSettings *m_settings; QTimer *m_mainTimer; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/search_paths_settings_page.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/search_paths_settings_page.cpp index 94ebec8d1..336f5ad48 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/search_paths_settings_page.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/search_paths_settings_page.cpp @@ -63,6 +63,11 @@ QString CSearchPathsSettingsPage::trCategory() const return tr(Constants::SETTINGS_TR_CATEGORY_GENERAL); } +QIcon CSearchPathsSettingsPage::categoryIcon() const +{ + return QIcon(); +} + QWidget *CSearchPathsSettingsPage::createPage(QWidget *parent) { m_page = new QWidget(parent); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/search_paths_settings_page.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/search_paths_settings_page.h index 90eab513a..6ceaf88bf 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/search_paths_settings_page.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/search_paths_settings_page.h @@ -44,6 +44,7 @@ public: QString trName() const; QString category() const; QString trCategory() const; + QIcon categoryIcon() const; QWidget *createPage(QWidget *parent); void apply(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/example_settings_page.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/example_settings_page.cpp index 0cb885163..50e7c9db5 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/example_settings_page.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/example_settings_page.cpp @@ -53,6 +53,11 @@ QString CExampleSettingsPage::trCategory() const return tr("General"); } +QIcon CExampleSettingsPage::categoryIcon() const +{ + return QIcon(); +} + QWidget *CExampleSettingsPage::createPage(QWidget *parent) { _currentPage = new QWidget(parent); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/example_settings_page.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/example_settings_page.h index 64dd940f8..3475f843f 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/example_settings_page.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/example_settings_page.h @@ -43,6 +43,7 @@ public: virtual QString trName() const; virtual QString category() const; virtual QString trCategory() const; + QIcon categoryIcon() const; virtual QWidget *createPage(QWidget *parent); virtual void apply(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/plugin1.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/plugin1.h index d3be3bc38..f9d5c2d9d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/plugin1.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/plugin1.h @@ -86,6 +86,10 @@ public: return m_simpleViewer; } + virtual void open() + { + } + CSimpleViewer *m_simpleViewer; }; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h index bd5040843..20db2eb15 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h @@ -93,6 +93,11 @@ public: { return QIcon(); } + + virtual void open() + { + } + virtual QWidget *widget(); LandscapeEditorWindow *m_landEditorWindow; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/graphics_settings_page.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/graphics_settings_page.cpp index eabb67f3d..6c2736895 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/graphics_settings_page.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/graphics_settings_page.cpp @@ -58,6 +58,11 @@ QString GraphicsSettingsPage::trCategory() const return tr("Object Viewer"); } +QIcon GraphicsSettingsPage::categoryIcon() const +{ + return QIcon(); +} + QWidget *GraphicsSettingsPage::createPage(QWidget *parent) { m_page = new QWidget(parent); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/graphics_settings_page.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/graphics_settings_page.h index e1402939f..74df1b140 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/graphics_settings_page.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/graphics_settings_page.h @@ -42,6 +42,7 @@ public: virtual QString trName() const; virtual QString category() const; virtual QString trCategory() const; + QIcon categoryIcon() const; virtual QWidget *createPage(QWidget *parent); virtual void apply(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.cpp index 6e183d913..d9b732521 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.cpp @@ -272,8 +272,8 @@ void CMainWindow::createMenus() // add actions in file menu QMenu *fileMenu = menuManager->menu(Core::Constants::M_FILE); QAction *exitAction = menuManager->action(Core::Constants::EXIT); - fileMenu->insertAction(exitAction, _openAction); - fileMenu->insertSeparator(exitAction); + //fileMenu->insertAction(exitAction, _openAction); + //fileMenu->insertSeparator(exitAction); // register actions for view menu menuManager->registerAction(_setBackColorAction, "ObjectViewer.View.SetBackgroundColor"); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.h index 52b3dc8d5..6da360901 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.h @@ -72,10 +72,12 @@ public: return _SkeletonTreeModel; } -private Q_SLOTS: +public Q_SLOTS: void open(); void resetScene(); void reloadTextures(); + +private Q_SLOTS: void updateStatusBar(); void updateRender(); void setInterval(int value); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.cpp index b48eb82cc..193ad8fac 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.cpp @@ -89,6 +89,11 @@ void ObjectViewerPlugin::addAutoReleasedObject(QObject *obj) _autoReleaseObjects.prepend(obj); } +void CObjectViewerContext::open() +{ + Modules::mainWin().open(); +} + QWidget *CObjectViewerContext::widget() { return &Modules::mainWin(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.h index dae298fce..e7f9b8197 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.h @@ -66,14 +66,19 @@ public: { return QLatin1String("ObjectViewer"); } + virtual QString trName() const { return tr("Object Viewer"); } + virtual QIcon icon() const { return QIcon(); } + + virtual void open(); + virtual QWidget *widget(); }; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/sound_settings_page.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/sound_settings_page.cpp index 4c677f4bf..1bceeb80b 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/sound_settings_page.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/sound_settings_page.cpp @@ -56,6 +56,11 @@ QString SoundSettingsPage::trCategory() const return tr("Object Viewer"); } +QIcon SoundSettingsPage::categoryIcon() const +{ + return QIcon(); +} + QWidget *SoundSettingsPage::createPage(QWidget *parent) { m_page = new QWidget(parent); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/sound_settings_page.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/sound_settings_page.h index c27a82e1f..0e5361f54 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/sound_settings_page.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/sound_settings_page.h @@ -44,6 +44,7 @@ public: virtual QString trName() const; virtual QString category() const; virtual QString trCategory() const; + QIcon categoryIcon() const; virtual QWidget *createPage(QWidget *parent); virtual void apply(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/vegetable_settings_page.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/vegetable_settings_page.cpp index f794e0b73..aa15b312f 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/vegetable_settings_page.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/vegetable_settings_page.cpp @@ -59,6 +59,11 @@ QString VegetableSettingsPage::trCategory() const return tr("Object Viewer"); } +QIcon VegetableSettingsPage::categoryIcon() const +{ + return QIcon(); +} + QWidget *VegetableSettingsPage::createPage(QWidget *parent) { m_page = new QWidget(parent); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/vegetable_settings_page.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/vegetable_settings_page.h index bf49e2d2c..b66d070ba 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/vegetable_settings_page.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/vegetable_settings_page.h @@ -43,6 +43,7 @@ public: virtual QString trName() const; virtual QString category() const; virtual QString trCategory() const; + QIcon categoryIcon() const; virtual QWidget *createPage(QWidget *parent); virtual void apply(); From d7ce82b4bf4ecfb60b42289c4f8a3040cdde8431 Mon Sep 17 00:00:00 2001 From: dnk-88 Date: Fri, 27 May 2011 19:21:16 +0300 Subject: [PATCH 6/6] Changed: #1303 Added undo/redo framework in core plugin. --- .../src/plugins/core/context_manager.cpp | 3 +++ .../src/plugins/core/icontext.h | 3 +++ .../src/plugins/core/main_window.cpp | 18 +++++++++++++ .../src/plugins/core/main_window.h | 4 +++ .../src/plugins/example/plugin1.h | 5 ++++ .../src/plugins/example/simple_viewer.cpp | 2 ++ .../src/plugins/example/simple_viewer.h | 4 ++- .../landscape_editor_plugin.cpp | 10 ++++++++ .../landscape_editor_plugin.h | 6 ++--- .../landscape_editor_window.cpp | 25 +++++++++++++++++++ .../landscape_editor_window.h | 7 ++++++ .../src/plugins/object_viewer/main_window.cpp | 1 + .../src/plugins/object_viewer/main_window.h | 7 ++++++ .../src/plugins/object_viewer/modules.cpp | 2 +- .../object_viewer/object_viewer_plugin.cpp | 9 +++++-- .../object_viewer/object_viewer_plugin.h | 2 ++ 16 files changed, 101 insertions(+), 7 deletions(-) diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp index 23dbe02f4..68e28429d 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/context_manager.cpp @@ -102,6 +102,7 @@ void ContextManager::aboutToRemoveObject(QObject *obj) void ContextManager::addContextObject(IContext *context) { d->m_contexts.push_back(context); + d->m_mainWindow->addContextObject(context); QWidget *tabWidget = new QWidget(d->m_tabWidget); d->m_tabWidget->addTab(tabWidget, context->icon(), context->trName()); @@ -113,6 +114,8 @@ void ContextManager::addContextObject(IContext *context) void ContextManager::removeContextObject(IContext *context) { + d->m_mainWindow->removeContextObject(context); + const int index = indexOf(context->id()); QWidget *widget = d->m_tabWidget->widget(index); d->m_tabWidget->removeTab(index); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h index c6784dafe..8af601418 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icontext.h @@ -28,6 +28,7 @@ QT_BEGIN_NAMESPACE class QWidget; +class QUndoStack; QT_END_NAMESPACE namespace Core @@ -57,6 +58,8 @@ public: /// The widget will be destroyed by the widget hierarchy when the main window closes virtual QWidget *widget() = 0; + virtual QUndoStack *undoStack() = 0; + virtual void open() = 0; }; 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 1c8850508..55d6d4579 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 @@ -99,6 +99,9 @@ bool MainWindow::initialize(QString *errorString) void MainWindow::extensionsInitialized() { readSettings(); + connect(m_contextManager, SIGNAL(currentContextChanged(Core::IContext*)), + this, SLOT(updateContext(Core::IContext*))); + updateContext(m_contextManager->currentContext()); show(); } @@ -122,6 +125,16 @@ ExtensionSystem::IPluginManager *MainWindow::pluginManager() const return m_pluginManager; } +void MainWindow::addContextObject(IContext *context) +{ + m_undoGroup->addStack(context->undoStack()); +} + +void MainWindow::removeContextObject(IContext *context) +{ + m_undoGroup->removeStack(context->undoStack()); +} + void MainWindow::open() { m_contextManager->currentContext()->open(); @@ -148,6 +161,11 @@ void MainWindow::about() "

Ryzom Core team

Compiled on %1 %2").arg(__DATE__).arg(__TIME__)); } +void MainWindow::updateContext(Core::IContext *context) +{ + m_undoGroup->setActiveStack(context->undoStack()); +} + void MainWindow::closeEvent(QCloseEvent *event) { QList listeners = m_pluginManager->getObjects(); 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 cd34098a7..74ec08957 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 @@ -56,6 +56,9 @@ public: ExtensionSystem::IPluginManager *pluginManager() const; + void addContextObject(IContext *context); + void removeContextObject(IContext *context); + public Q_SLOTS: bool showOptionsDialog(const QString &group = QString(), const QString &page = QString(), @@ -64,6 +67,7 @@ public Q_SLOTS: private Q_SLOTS: void open(); void about(); + void updateContext(Core::IContext *context); protected: virtual void closeEvent(QCloseEvent *event); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/plugin1.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/plugin1.h index f9d5c2d9d..5077ff59e 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/plugin1.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/plugin1.h @@ -86,6 +86,11 @@ public: return m_simpleViewer; } + virtual QUndoStack *undoStack() + { + return m_simpleViewer->m_undoStack; + } + virtual void open() { } diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/simple_viewer.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/simple_viewer.cpp index e128710c4..1f6df9117 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/simple_viewer.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/simple_viewer.cpp @@ -37,6 +37,8 @@ CSimpleViewer::CSimpleViewer(QWidget *parent) gridLayout->setContentsMargins(0, 0, 0, 0); NLQT::QNLWidget *_nelWidget = new NLQT::QNLWidget(this); gridLayout->addWidget(_nelWidget, 0, 0, 1, 1); + + m_undoStack = new QUndoStack(this); } bool CCoreListener::closeMainWindow() const diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/simple_viewer.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/simple_viewer.h index bbff7e9e0..14b782c22 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/example/simple_viewer.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/example/simple_viewer.h @@ -25,7 +25,7 @@ // Qt includes #include - +#include class QWidget; namespace Plugin @@ -37,6 +37,8 @@ class CSimpleViewer : public QWidget public: CSimpleViewer(QWidget *parent = 0); virtual ~CSimpleViewer() {} + + QUndoStack *m_undoStack; }; class CCoreListener : public Core::ICoreListener diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.cpp index 2c51a5d68..ac7782343 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.cpp @@ -108,6 +108,16 @@ LandscapeEditorContext::LandscapeEditorContext(QObject *parent) m_landEditorWindow = new LandscapeEditorWindow(); } +QUndoStack *LandscapeEditorContext::undoStack() +{ + return m_landEditorWindow->undoStack(); +} + +void LandscapeEditorContext::open() +{ + m_landEditorWindow->open(); +} + QWidget *LandscapeEditorContext::widget() { return m_landEditorWindow; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h index 20db2eb15..67a3172ee 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_plugin.h @@ -94,9 +94,9 @@ public: return QIcon(); } - virtual void open() - { - } + virtual void open(); + + virtual QUndoStack *undoStack(); virtual QWidget *widget(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp index ef4f81a1c..4b075adfc 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.cpp @@ -28,14 +28,19 @@ // Qt includes #include +#include namespace LandscapeEditor { +QString _lastDir; LandscapeEditorWindow::LandscapeEditorWindow(QWidget *parent) : QMainWindow(parent) { m_ui.setupUi(this); + + m_undoStack = new QUndoStack(this); + createMenus(); readSettings(); } @@ -45,6 +50,26 @@ LandscapeEditorWindow::~LandscapeEditorWindow() writeSettings(); } +QUndoStack *LandscapeEditorWindow::undoStack() const +{ + return m_undoStack; +} + +void LandscapeEditorWindow::open() +{ + QStringList fileNames = QFileDialog::getOpenFileNames(this, + tr("Open NeL Ligo land file"), _lastDir, + tr("All NeL Ligo land files (*.land)")); + + setCursor(Qt::WaitCursor); + if (!fileNames.isEmpty()) + { + QStringList list = fileNames; + _lastDir = QFileInfo(list.front()).absolutePath(); + } + setCursor(Qt::ArrowCursor); +} + void LandscapeEditorWindow::createMenus() { Core::IMenuManager *menuManager = Core::ICore::instance()->menuManager(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.h index 0af41961f..cc17e6cbc 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/landscape_editor/landscape_editor_window.h @@ -18,9 +18,11 @@ #ifndef LANDSCAPE_EDITOR_WINDOW_H #define LANDSCAPE_EDITOR_WINDOW_H +// Project includes #include "ui_landscape_editor_window.h" // Qt includes +#include namespace LandscapeEditor { @@ -33,14 +35,19 @@ public: LandscapeEditorWindow(QWidget *parent = 0); ~LandscapeEditorWindow(); + QUndoStack *undoStack() const; + Q_SIGNALS: public Q_SLOTS: + void open(); + private Q_SLOTS: private: void createMenus(); void readSettings(); void writeSettings(); + QUndoStack *m_undoStack; Ui::LandscapeEditorWindow m_ui; }; /* class LandscapeEditorWindow */ diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.cpp index d9b732521..dd8a4bb1e 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.cpp @@ -89,6 +89,7 @@ CMainWindow::CMainWindow(QWidget *parent) _isSoundInitialized = true; } + _undoStack = new QUndoStack(this); _SkeletonTreeModel = new CSkeletonTreeModel(this); createDialogs(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.h index 6da360901..5a392c191 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/main_window.h @@ -25,6 +25,7 @@ // Qt includes #include #include +#include // NeL includes #include @@ -72,6 +73,11 @@ public: return _SkeletonTreeModel; } + QUndoStack *getUndoStack() const + { + return _undoStack; + } + public Q_SLOTS: void open(); void resetScene(); @@ -132,6 +138,7 @@ private: QAction *_resetSceneAction; QAction *_saveScreenshotAction; QLabel *_statusInfo; + QUndoStack *_undoStack; float _fps; uint _numTri; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/modules.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/modules.cpp index 76afed779..605f484f7 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/modules.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/modules.cpp @@ -37,7 +37,7 @@ void Modules::init() void Modules::release() { - delete _mainWindow; +// delete _mainWindow; _mainWindow = NULL; delete _particleEditor; _particleEditor = NULL; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.cpp index 193ad8fac..f82789e66 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.cpp @@ -22,7 +22,7 @@ ObjectViewerPlugin::~ObjectViewerPlugin() } qDeleteAll(_autoReleaseObjects); _autoReleaseObjects.clear(); - //Modules::release(); + Modules::release(); } bool ObjectViewerPlugin::initialize(ExtensionSystem::IPluginManager *pluginManager, QString *errorString) @@ -43,7 +43,7 @@ void ObjectViewerPlugin::extensionsInitialized() void ObjectViewerPlugin::shutdown() { - Modules::release(); +// Modules::release(); } void ObjectViewerPlugin::setNelContext(NLMISC::INelContext *nelContext) @@ -94,6 +94,11 @@ void CObjectViewerContext::open() Modules::mainWin().open(); } +QUndoStack *CObjectViewerContext::undoStack() +{ + return Modules::mainWin().getUndoStack(); +} + QWidget *CObjectViewerContext::widget() { return &Modules::mainWin(); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.h index e7f9b8197..b5f9c2881 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/object_viewer/object_viewer_plugin.h @@ -77,6 +77,8 @@ public: return QIcon(); } + virtual QUndoStack *undoStack(); + virtual void open(); virtual QWidget *widget();