mirror of
				https://github.com/TES3MP/openmw-tes3mp.git
				synced 2025-10-31 20:26:48 +00:00 
			
		
		
		
	Merge pull request #2349 from akortunov/pinning
Allow to maximize windows via Shift + Double Click
This commit is contained in:
		
						commit
						632e7b973b
					
				
					 21 changed files with 243 additions and 87 deletions
				
			
		|  | @ -91,6 +91,7 @@ | |||
|     Feature #3610: Option to invert X axis | ||||
|     Feature #3893: Implicit target for "set" function in console | ||||
|     Feature #3980: In-game option to disable controller | ||||
|     Feature #3999: Shift + Double Click should maximize/restore menu size | ||||
|     Feature #4001: Toggle sneak controller shortcut | ||||
|     Feature #4209: Editor: Faction rank sub-table | ||||
|     Feature #4360: Improve default controller bindings | ||||
|  |  | |||
|  | @ -322,6 +322,7 @@ namespace MWBase | |||
|             virtual void removeCurrentModal(MWGui::WindowModal* input) = 0; | ||||
| 
 | ||||
|             virtual void pinWindow (MWGui::GuiWindow window) = 0; | ||||
|             virtual void toggleMaximized(MWGui::Layout *layout) = 0; | ||||
| 
 | ||||
|             /// Fade the screen in, over \a time seconds
 | ||||
|             virtual void fadeScreenIn(const float time, bool clearQueue=true, float delay=0.f) = 0; | ||||
|  |  | |||
|  | @ -2,12 +2,12 @@ | |||
| 
 | ||||
| namespace MWGui | ||||
| { | ||||
|     MyGUI::VectorWidgetPtr ExposedWindow::getSkinWidgetsByName (const std::string &name) | ||||
|     MyGUI::VectorWidgetPtr Window::getSkinWidgetsByName (const std::string &name) | ||||
|     { | ||||
|         return MyGUI::Widget::getSkinWidgetsByName (name); | ||||
|     } | ||||
| 
 | ||||
|     MyGUI::Widget* ExposedWindow::getSkinWidget(const std::string & _name, bool _throw) | ||||
|     MyGUI::Widget* Window::getSkinWidget(const std::string & _name, bool _throw) | ||||
|     { | ||||
|         MyGUI::VectorWidgetPtr widgets = getSkinWidgetsByName (_name); | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,9 +9,9 @@ namespace MWGui | |||
|     /**
 | ||||
|      * @brief subclass to provide access to some Widget internals. | ||||
|      */ | ||||
|     class ExposedWindow : public MyGUI::Window | ||||
|     class Window : public MyGUI::Window | ||||
|     { | ||||
|         MYGUI_RTTI_DERIVED(ExposedWindow) | ||||
|         MYGUI_RTTI_DERIVED(Window) | ||||
| 
 | ||||
|     public: | ||||
|         MyGUI::VectorWidgetPtr getSkinWidgetsByName (const std::string &name); | ||||
|  |  | |||
|  | @ -162,28 +162,39 @@ namespace MWGui | |||
|         mItemView->setModel(nullptr); | ||||
|     } | ||||
| 
 | ||||
|     void InventoryWindow::toggleMaximized() | ||||
|     { | ||||
|         std::string setting = getModeSetting(); | ||||
| 
 | ||||
|         bool maximized = !Settings::Manager::getBool(setting + " maximized", "Windows"); | ||||
|         if (maximized) | ||||
|             setting += " maximized"; | ||||
| 
 | ||||
|         MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize(); | ||||
|         float x = Settings::Manager::getFloat(setting + " x", "Windows") * float(viewSize.width); | ||||
|         float y = Settings::Manager::getFloat(setting + " y", "Windows") * float(viewSize.height); | ||||
|         float w = Settings::Manager::getFloat(setting + " w", "Windows") * float(viewSize.width); | ||||
|         float h = Settings::Manager::getFloat(setting + " h", "Windows") * float(viewSize.height); | ||||
|         MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>(); | ||||
|         window->setCoord(x, y, w, h); | ||||
| 
 | ||||
|         if (maximized) | ||||
|             Settings::Manager::setBool(setting, "Windows", maximized); | ||||
|         else | ||||
|             Settings::Manager::setBool(setting + " maximized", "Windows", maximized); | ||||
| 
 | ||||
|         adjustPanes(); | ||||
|         updatePreviewSize(); | ||||
|     } | ||||
| 
 | ||||
|     void InventoryWindow::setGuiMode(GuiMode mode) | ||||
|     { | ||||
|         std::string setting = "inventory"; | ||||
|         mGuiMode = mode; | ||||
|         switch(mode) { | ||||
|             case GM_Container: | ||||
|                 setPinButtonVisible(false); | ||||
|                 setting += " container"; | ||||
|                 break; | ||||
|             case GM_Companion: | ||||
|                 setPinButtonVisible(false); | ||||
|                 setting += " companion"; | ||||
|                 break; | ||||
|             case GM_Barter: | ||||
|                 setPinButtonVisible(false); | ||||
|                 setting += " barter"; | ||||
|                 break; | ||||
|             case GM_Inventory: | ||||
|             default: | ||||
|                 setPinButtonVisible(true); | ||||
|                 break; | ||||
|         } | ||||
|         std::string setting = getModeSetting(); | ||||
|         setPinButtonVisible(mode == GM_Inventory); | ||||
| 
 | ||||
|         if (Settings::Manager::getBool(setting + " maximized", "Windows")) | ||||
|             setting += " maximized"; | ||||
| 
 | ||||
|         MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize(); | ||||
|         MyGUI::IntPoint pos(static_cast<int>(Settings::Manager::getFloat(setting + " x", "Windows") * viewSize.width), | ||||
|  | @ -386,11 +397,11 @@ namespace MWGui | |||
|         adjustPanes(); | ||||
|     } | ||||
| 
 | ||||
|     void InventoryWindow::onWindowResize(MyGUI::Window* _sender) | ||||
|     std::string InventoryWindow::getModeSetting() const | ||||
|     { | ||||
|         adjustPanes(); | ||||
|         std::string setting = "inventory"; | ||||
|         switch(mGuiMode) { | ||||
|         switch(mGuiMode) | ||||
|         { | ||||
|             case GM_Container: | ||||
|                 setting += " container"; | ||||
|                 break; | ||||
|  | @ -404,6 +415,14 @@ namespace MWGui | |||
|                 break; | ||||
|         } | ||||
| 
 | ||||
|         return setting; | ||||
|     } | ||||
| 
 | ||||
|     void InventoryWindow::onWindowResize(MyGUI::Window* _sender) | ||||
|     { | ||||
|         adjustPanes(); | ||||
|         std::string setting = getModeSetting(); | ||||
| 
 | ||||
|         MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize(); | ||||
|         float x = _sender->getPosition().left / float(viewSize.width); | ||||
|         float y = _sender->getPosition().top / float(viewSize.height); | ||||
|  | @ -413,6 +432,9 @@ namespace MWGui | |||
|         Settings::Manager::setFloat(setting + " y", "Windows", y); | ||||
|         Settings::Manager::setFloat(setting + " w", "Windows", w); | ||||
|         Settings::Manager::setFloat(setting + " h", "Windows", h); | ||||
|         bool maximized = Settings::Manager::getBool(setting + " maximized", "Windows"); | ||||
|         if (maximized) | ||||
|             Settings::Manager::setBool(setting + " maximized", "Windows", false); | ||||
| 
 | ||||
|         if (mMainWidget->getSize().width != mLastXSize || mMainWidget->getSize().height != mLastYSize) | ||||
|         { | ||||
|  | @ -476,7 +498,9 @@ namespace MWGui | |||
| 
 | ||||
|     void InventoryWindow::onTitleDoubleClicked() | ||||
|     { | ||||
|         if (!mPinned) | ||||
|         if (MyGUI::InputManager::getInstance().isShiftPressed()) | ||||
|             toggleMaximized(); | ||||
|         else if (!mPinned) | ||||
|             MWBase::Environment::get().getWindowManager()->toggleVisible(GW_Inventory); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -65,6 +65,9 @@ namespace MWGui | |||
|             /// Cycle to previous/next weapon
 | ||||
|             void cycle(bool next); | ||||
| 
 | ||||
|         protected: | ||||
|             virtual void onTitleDoubleClicked(); | ||||
| 
 | ||||
|         private: | ||||
|             DragAndDrop* mDragAndDrop; | ||||
| 
 | ||||
|  | @ -104,11 +107,15 @@ namespace MWGui | |||
|             float mScaleFactor; | ||||
|             float mUpdateTimer; | ||||
| 
 | ||||
|             void toggleMaximized(); | ||||
| 
 | ||||
|             void onItemSelected(int index); | ||||
|             void onItemSelectedFromSourceModel(int index); | ||||
| 
 | ||||
|             void onBackgroundSelected(); | ||||
| 
 | ||||
|             std::string getModeSetting() const; | ||||
| 
 | ||||
|             void sellItem(MyGUI::Widget* sender, int count); | ||||
|             void dragItem(MyGUI::Widget* sender, int count); | ||||
| 
 | ||||
|  | @ -116,7 +123,6 @@ namespace MWGui | |||
|             void onFilterChanged(MyGUI::Widget* _sender); | ||||
|             void onAvatarClicked(MyGUI::Widget* _sender); | ||||
|             void onPinToggled(); | ||||
|             void onTitleDoubleClicked(); | ||||
| 
 | ||||
|             void updateEncumbranceBar(); | ||||
|             void notifyContentChanged(); | ||||
|  |  | |||
|  | @ -931,7 +931,9 @@ namespace MWGui | |||
| 
 | ||||
|     void MapWindow::onTitleDoubleClicked() | ||||
|     { | ||||
|         if (!mPinned) | ||||
|         if (MyGUI::InputManager::getInstance().isShiftPressed()) | ||||
|             MWBase::Environment::get().getWindowManager()->toggleMaximized(this); | ||||
|         else if (!mPinned) | ||||
|             MWBase::Environment::get().getWindowManager()->toggleVisible(GW_Map); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -62,7 +62,9 @@ namespace MWGui | |||
| 
 | ||||
|     void SpellWindow::onTitleDoubleClicked() | ||||
|     { | ||||
|         if (!mPinned) | ||||
|         if (MyGUI::InputManager::getInstance().isShiftPressed()) | ||||
|             MWBase::Environment::get().getWindowManager()->toggleMaximized(this); | ||||
|         else if (!mPinned) | ||||
|             MWBase::Environment::get().getWindowManager()->toggleVisible(GW_Magic); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ | |||
| #include <MyGUI_ScrollView.h> | ||||
| #include <MyGUI_ProgressBar.h> | ||||
| #include <MyGUI_ImageBox.h> | ||||
| #include <MyGUI_InputManager.h> | ||||
| #include <MyGUI_Gui.h> | ||||
| 
 | ||||
| #include <components/settings/settings.hpp> | ||||
|  | @ -652,7 +653,13 @@ namespace MWGui | |||
| 
 | ||||
|     void StatsWindow::onTitleDoubleClicked() | ||||
|     { | ||||
|         if (!mPinned) | ||||
|         if (MyGUI::InputManager::getInstance().isShiftPressed()) | ||||
|         { | ||||
|             MWBase::Environment::get().getWindowManager()->toggleMaximized(this); | ||||
|             MyGUI::Window* t = mMainWidget->castType<MyGUI::Window>(); | ||||
|             onWindowResize(t); | ||||
|         } | ||||
|         else if (!mPinned) | ||||
|             MWBase::Environment::get().getWindowManager()->toggleVisible(GW_Stats); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| #include "windowbase.hpp" | ||||
| 
 | ||||
| #include <MyGUI_Button.h> | ||||
| #include <MyGUI_InputManager.h> | ||||
| #include <MyGUI_RenderManager.h> | ||||
| 
 | ||||
|  | @ -9,6 +10,7 @@ | |||
| #include <components/widgets/imagebutton.hpp> | ||||
| 
 | ||||
| #include "draganddrop.hpp" | ||||
| #include "exposedwindow.hpp" | ||||
| 
 | ||||
| using namespace MWGui; | ||||
| 
 | ||||
|  | @ -16,6 +18,32 @@ WindowBase::WindowBase(const std::string& parLayout) | |||
|   : Layout(parLayout) | ||||
| { | ||||
|     mMainWidget->setVisible(false); | ||||
| 
 | ||||
|     Window* window = mMainWidget->castType<Window>(false); | ||||
|     if (!window) | ||||
|         return; | ||||
| 
 | ||||
|     MyGUI::Button* button = nullptr; | ||||
|     MyGUI::VectorWidgetPtr widgets = window->getSkinWidgetsByName("Action"); | ||||
|     for (MyGUI::Widget* widget : widgets) | ||||
|     { | ||||
|         if (widget->isUserString("SupportDoubleClick")) | ||||
|             button = widget->castType<MyGUI::Button>(); | ||||
|     } | ||||
| 
 | ||||
|     if (button) | ||||
|         button->eventMouseButtonDoubleClick += MyGUI::newDelegate(this, &WindowBase::onDoubleClick); | ||||
| } | ||||
| 
 | ||||
| void WindowBase::onTitleDoubleClicked() | ||||
| { | ||||
|     if (MyGUI::InputManager::getInstance().isShiftPressed()) | ||||
|         MWBase::Environment::get().getWindowManager()->toggleMaximized(this); | ||||
| } | ||||
| 
 | ||||
| void WindowBase::onDoubleClick(MyGUI::Widget *_sender) | ||||
| { | ||||
|     onTitleDoubleClicked(); | ||||
| } | ||||
| 
 | ||||
| void WindowBase::setVisible(bool visible) | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ namespace MWGui | |||
| 
 | ||||
|     class WindowBase: public Layout | ||||
|     { | ||||
|         public: | ||||
|     public: | ||||
|         WindowBase(const std::string& parLayout); | ||||
| 
 | ||||
|         virtual MyGUI::Widget* getDefaultKeyFocus() { return nullptr; } | ||||
|  | @ -52,8 +52,13 @@ namespace MWGui | |||
| 
 | ||||
|         /// Called when GUI viewport changes size
 | ||||
|         virtual void onResChange(int width, int height) {} | ||||
|     }; | ||||
| 
 | ||||
|     protected: | ||||
|         virtual void onTitleDoubleClicked(); | ||||
| 
 | ||||
|     private: | ||||
|         void onDoubleClick(MyGUI::Widget* _sender); | ||||
|     }; | ||||
| 
 | ||||
|     /*
 | ||||
|      * "Modal" windows cause the rest of the interface to be inaccessible while they are visible | ||||
|  |  | |||
|  | @ -216,7 +216,7 @@ namespace MWGui | |||
|         MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWEffectList>("Widget"); | ||||
|         MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWSpellEffect>("Widget"); | ||||
|         MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWDynamicStat>("Widget"); | ||||
|         MyGUI::FactoryManager::getInstance().registerFactory<MWGui::ExposedWindow>("Widget"); | ||||
|         MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Window>("Widget"); | ||||
|         MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWScrollBar>("Widget"); | ||||
|         MyGUI::FactoryManager::getInstance().registerFactory<VideoWidget>("Widget"); | ||||
|         MyGUI::FactoryManager::getInstance().registerFactory<BackgroundImage>("Widget"); | ||||
|  | @ -1235,10 +1235,14 @@ namespace MWGui | |||
| 
 | ||||
|         for (std::map<MyGUI::Window*, std::string>::iterator it = mTrackedWindows.begin(); it != mTrackedWindows.end(); ++it) | ||||
|         { | ||||
|             MyGUI::IntPoint pos(static_cast<int>(Settings::Manager::getFloat(it->second + " x", "Windows") * x), | ||||
|                                 static_cast<int>( Settings::Manager::getFloat(it->second+ " y", "Windows") * y)); | ||||
|             MyGUI::IntSize size(static_cast<int>(Settings::Manager::getFloat(it->second + " w", "Windows") * x), | ||||
|                                  static_cast<int>(Settings::Manager::getFloat(it->second + " h", "Windows") * y)); | ||||
|             std::string settingName = it->second; | ||||
|             if (Settings::Manager::getBool(settingName + " maximized", "Windows")) | ||||
|                 settingName += " maximized"; | ||||
| 
 | ||||
|             MyGUI::IntPoint pos(static_cast<int>(Settings::Manager::getFloat(settingName + " x", "Windows") * x), | ||||
|                                 static_cast<int>(Settings::Manager::getFloat(settingName + " y", "Windows") * y)); | ||||
|             MyGUI::IntSize size(static_cast<int>(Settings::Manager::getFloat(settingName + " w", "Windows") * x), | ||||
|                                  static_cast<int>(Settings::Manager::getFloat(settingName + " h", "Windows") * y)); | ||||
|             it->first->setPosition(pos); | ||||
|             it->first->setSize(size); | ||||
|         } | ||||
|  | @ -1709,11 +1713,16 @@ namespace MWGui | |||
| 
 | ||||
|     void WindowManager::trackWindow(Layout *layout, const std::string &name) | ||||
|     { | ||||
|         std::string settingName = name; | ||||
|         MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize(); | ||||
|         MyGUI::IntPoint pos(static_cast<int>(Settings::Manager::getFloat(name + " x", "Windows") * viewSize.width), | ||||
|                             static_cast<int>(Settings::Manager::getFloat(name + " y", "Windows") * viewSize.height)); | ||||
|         MyGUI::IntSize size (static_cast<int>(Settings::Manager::getFloat(name + " w", "Windows") * viewSize.width), | ||||
|                              static_cast<int>(Settings::Manager::getFloat(name + " h", "Windows") * viewSize.height)); | ||||
|         bool isMaximized = Settings::Manager::getBool(name + " maximized", "Windows"); | ||||
|         if (isMaximized) | ||||
|             settingName += " maximized"; | ||||
| 
 | ||||
|         MyGUI::IntPoint pos(static_cast<int>(Settings::Manager::getFloat(settingName + " x", "Windows") * viewSize.width), | ||||
|                             static_cast<int>(Settings::Manager::getFloat(settingName + " y", "Windows") * viewSize.height)); | ||||
|         MyGUI::IntSize size (static_cast<int>(Settings::Manager::getFloat(settingName + " w", "Windows") * viewSize.width), | ||||
|                              static_cast<int>(Settings::Manager::getFloat(settingName + " h", "Windows") * viewSize.height)); | ||||
|         layout->mMainWidget->setPosition(pos); | ||||
|         layout->mMainWidget->setSize(size); | ||||
| 
 | ||||
|  | @ -1722,6 +1731,26 @@ namespace MWGui | |||
|         mTrackedWindows[window] = name; | ||||
|     } | ||||
| 
 | ||||
|     void WindowManager::toggleMaximized(Layout *layout) | ||||
|     { | ||||
|         MyGUI::Window* window = layout->mMainWidget->castType<MyGUI::Window>(); | ||||
|         std::string setting = mTrackedWindows[window]; | ||||
|         if (setting.empty()) | ||||
|             return; | ||||
| 
 | ||||
|         bool maximized = !Settings::Manager::getBool(setting + " maximized", "Windows"); | ||||
|         if (maximized) | ||||
|             setting += " maximized"; | ||||
| 
 | ||||
|         MyGUI::IntSize viewSize = MyGUI::RenderManager::getInstance().getViewSize(); | ||||
|         float x = Settings::Manager::getFloat(setting + " x", "Windows") * float(viewSize.width); | ||||
|         float y = Settings::Manager::getFloat(setting + " y", "Windows") * float(viewSize.height); | ||||
|         float w = Settings::Manager::getFloat(setting + " w", "Windows") * float(viewSize.width); | ||||
|         float h = Settings::Manager::getFloat(setting + " h", "Windows") * float(viewSize.height); | ||||
|         window->setCoord(x, y, w, h); | ||||
|         Settings::Manager::setBool(mTrackedWindows[window] + " maximized", "Windows", maximized); | ||||
|     } | ||||
| 
 | ||||
|     void WindowManager::onWindowChangeCoord(MyGUI::Window *_sender) | ||||
|     { | ||||
|         std::string setting = mTrackedWindows[_sender]; | ||||
|  | @ -1734,6 +1763,9 @@ namespace MWGui | |||
|         Settings::Manager::setFloat(setting + " y", "Windows", y); | ||||
|         Settings::Manager::setFloat(setting + " w", "Windows", w); | ||||
|         Settings::Manager::setFloat(setting + " h", "Windows", h); | ||||
|         bool maximized = Settings::Manager::getBool(setting + " maximized", "Windows"); | ||||
|         if (maximized) | ||||
|             Settings::Manager::setBool(setting + " maximized", "Windows", false); | ||||
|     } | ||||
| 
 | ||||
|     void WindowManager::clear() | ||||
|  |  | |||
|  | @ -350,6 +350,7 @@ namespace MWGui | |||
|     virtual void removeCurrentModal(WindowModal* input); | ||||
| 
 | ||||
|     virtual void pinWindow (MWGui::GuiWindow window); | ||||
|     virtual void toggleMaximized(Layout *layout); | ||||
| 
 | ||||
|     /// Fade the screen in, over \a time seconds
 | ||||
|     virtual void fadeScreenIn(const float time, bool clearQueue, float delay); | ||||
|  |  | |||
|  | @ -1,7 +1,5 @@ | |||
| #include "windowpinnablebase.hpp" | ||||
| 
 | ||||
| #include <MyGUI_Button.h> | ||||
| 
 | ||||
| #include "exposedwindow.hpp" | ||||
| 
 | ||||
| namespace MWGui | ||||
|  | @ -9,21 +7,10 @@ namespace MWGui | |||
|     WindowPinnableBase::WindowPinnableBase(const std::string& parLayout) | ||||
|       : WindowBase(parLayout), mPinned(false) | ||||
|     { | ||||
|         ExposedWindow* window = mMainWidget->castType<ExposedWindow>(); | ||||
|         Window* window = mMainWidget->castType<Window>(); | ||||
|         mPinButton = window->getSkinWidget ("Button"); | ||||
| 
 | ||||
|         mPinButton->eventMouseButtonPressed += MyGUI::newDelegate(this, &WindowPinnableBase::onPinButtonPressed); | ||||
| 
 | ||||
|         MyGUI::Button* button = nullptr; | ||||
|         MyGUI::VectorWidgetPtr widgets = window->getSkinWidgetsByName("Action"); | ||||
|         for (MyGUI::Widget* widget : widgets) | ||||
|         { | ||||
|             if (widget->isUserString("HideWindowOnDoubleClick")) | ||||
|                 button = widget->castType<MyGUI::Button>(); | ||||
|         } | ||||
| 
 | ||||
|         if (button) | ||||
|             button->eventMouseButtonDoubleClick += MyGUI::newDelegate(this, &WindowPinnableBase::onDoubleClick); | ||||
|     } | ||||
| 
 | ||||
|     void WindowPinnableBase::onPinButtonPressed(MyGUI::Widget* _sender, int left, int top, MyGUI::MouseButton id) | ||||
|  | @ -41,11 +28,6 @@ namespace MWGui | |||
|         onPinToggled(); | ||||
|     } | ||||
| 
 | ||||
|     void WindowPinnableBase::onDoubleClick(MyGUI::Widget *_sender) | ||||
|     { | ||||
|         onTitleDoubleClicked(); | ||||
|     } | ||||
| 
 | ||||
|     void WindowPinnableBase::setPinned(bool pinned) | ||||
|     { | ||||
|         if (pinned != mPinned) | ||||
|  |  | |||
|  | @ -17,11 +17,9 @@ namespace MWGui | |||
| 
 | ||||
|     private: | ||||
|         void onPinButtonPressed(MyGUI::Widget* _sender, int left, int top, MyGUI::MouseButton id); | ||||
|         void onDoubleClick(MyGUI::Widget* _sender); | ||||
| 
 | ||||
|     protected: | ||||
|         virtual void onPinToggled() = 0; | ||||
|         virtual void onTitleDoubleClicked() = 0; | ||||
| 
 | ||||
|         MyGUI::Widget* mPinButton; | ||||
|         bool mPinned; | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| 
 | ||||
| <MyGUI type="Layout"> | ||||
|     <Widget type="ExposedWindow" skin="MW_Window_Pinnable" layer="Windows" position="0 0 600 300" name="_Main"> | ||||
|     <Widget type="Window" skin="MW_Window_Pinnable" layer="Windows" position="0 0 600 300" name="_Main"> | ||||
|         <Property key="MinSize" value="40 40"/> | ||||
| 
 | ||||
|         <Widget type="Widget" skin="" position="0 0 224 223" align="Left Top" name="LeftPane"> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| 
 | ||||
| <MyGUI type="Layout"> | ||||
|     <Widget type="ExposedWindow" skin="MW_Window_Pinnable" layer="Windows" position="0 0 300 300" name="_Main"> | ||||
|     <Widget type="Window" skin="MW_Window_Pinnable" layer="Windows" position="0 0 300 300" name="_Main"> | ||||
|         <Property key="MinSize" value="40 40"/> | ||||
| 
 | ||||
|         <!-- Local map --> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| 
 | ||||
| <MyGUI type="Layout"> | ||||
|     <Widget type="ExposedWindow" skin="MW_Window_Pinnable" layer="Windows" position="0 0 300 600" name="_Main"> | ||||
|     <Widget type="Window" skin="MW_Window_Pinnable" layer="Windows" position="0 0 300 600" name="_Main"> | ||||
|         <Property key="MinSize" value="40 40"/> | ||||
| 
 | ||||
|         <!-- Effect box--> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| 
 | ||||
| <MyGUI type="Layout"> | ||||
|     <Widget type="ExposedWindow" skin="MW_Window_Pinnable" layer="Windows" position="0 0 500 342" name="_Main"> | ||||
|     <Widget type="Window" skin="MW_Window_Pinnable" layer="Windows" position="0 0 500 342" name="_Main"> | ||||
|         <Property key="MinSize" value="40 40"/> | ||||
| 
 | ||||
|         <Widget type="Widget" skin="" name="LeftPane" position="0 0 220 342"> | ||||
|  |  | |||
|  | @ -589,6 +589,7 @@ | |||
|         <!-- This invisible button makes it possible to move the | ||||
|              window by dragging the caption. --> | ||||
|         <Child type="Button" offset="4 4 248 20" align="HStretch Top" name="Action"> | ||||
|             <Property key="SupportDoubleClick" value="1"/> | ||||
|             <Property key="Scale" value="1 1 0 0"/> | ||||
|         </Child> | ||||
|     </Resource> | ||||
|  | @ -725,6 +726,7 @@ | |||
|         <!-- This invisible button makes it possible to move the | ||||
|              window by dragging the caption. --> | ||||
|         <Child type="Button" offset="4 4 248 20" align="HStretch Top" name="Action"> | ||||
|             <Property key="SupportDoubleClick" value="1"/> | ||||
|             <Property key="Scale" value="1 1 0 0"/> | ||||
|         </Child> | ||||
|     </Resource> | ||||
|  | @ -860,8 +862,8 @@ | |||
|         <!-- This invisible button makes it possible to move the | ||||
|              window by dragging the caption. --> | ||||
|         <Child type="Button" offset="4 4 248 20" align="HStretch Top" name="Action"> | ||||
|             <Property key="SupportDoubleClick" value="1"/> | ||||
|             <Property key="Scale" value="1 1 0 0"/> | ||||
|             <Property key="HideWindowOnDoubleClick" value="1"/> | ||||
|         </Child> | ||||
| 
 | ||||
|         <Child type="Button" skin="PinUp" offset="232 4 19 19" align="Right Top" name="Button"/> | ||||
|  |  | |||
|  | @ -484,86 +484,151 @@ stats x = 0.015 | |||
| stats y = 0.015 | ||||
| stats w = 0.4275 | ||||
| stats h = 0.45 | ||||
| stats maximized x = 0.0 | ||||
| stats maximized y = 0.0 | ||||
| stats maximized w = 1.0 | ||||
| stats maximized h = 1.0 | ||||
| stats pin = false | ||||
| stats hidden = false | ||||
| stats maximized = false | ||||
| 
 | ||||
| # Spells window displaying powers, spells, and magical items. | ||||
| spells x = 0.63 | ||||
| spells y = 0.39 | ||||
| spells w = 0.36 | ||||
| spells h = 0.51 | ||||
| spells maximized x = 0.0 | ||||
| spells maximized y = 0.0 | ||||
| spells maximized w = 1.0 | ||||
| spells maximized h = 1.0 | ||||
| spells pin = false | ||||
| spells hidden = false | ||||
| spells maximized = false | ||||
| 
 | ||||
| # Local and world map window. | ||||
| map x = 0.63 | ||||
| map y = 0.015 | ||||
| map w = 0.36 | ||||
| map h = 0.37 | ||||
| map maximized x = 0.0 | ||||
| map maximized y = 0.0 | ||||
| map maximized w = 1.0 | ||||
| map maximized h = 1.0 | ||||
| map pin = false | ||||
| map hidden = false | ||||
| map maximized = false | ||||
| 
 | ||||
| # Player inventory window when explicitly opened. | ||||
| inventory x = 0.015 | ||||
| inventory x = 0.0 | ||||
| inventory y = 0.54 | ||||
| inventory w = 0.45 | ||||
| inventory h = 0.38 | ||||
| inventory maximized x = 0.0 | ||||
| inventory maximized y = 0.0 | ||||
| inventory maximized w = 1.0 | ||||
| inventory maximized h = 1.0 | ||||
| inventory pin = false | ||||
| inventory hidden = false | ||||
| 
 | ||||
| # Dialog window for talking with NPCs. | ||||
| dialogue x = 0.15 | ||||
| dialogue y = 0.5 | ||||
| dialogue w = 0.7 | ||||
| dialogue h = 0.45 | ||||
| 
 | ||||
| # Alchemy window for crafting potions. | ||||
| alchemy x = 0.25 | ||||
| alchemy y = 0.25 | ||||
| alchemy w = 0.5 | ||||
| alchemy h = 0.5 | ||||
| 
 | ||||
| # Console command window for debugging commands. | ||||
| console x = 0.015 | ||||
| console y = 0.015 | ||||
| console w = 1.0 | ||||
| console h = 0.5 | ||||
| inventory maximized = false | ||||
| 
 | ||||
| # Player inventory window when searching a container. | ||||
| inventory container x = 0.015 | ||||
| inventory container y = 0.54 | ||||
| inventory container w = 0.45 | ||||
| inventory container h = 0.38 | ||||
| inventory container maximized x = 0.0 | ||||
| inventory container maximized y = 0.5 | ||||
| inventory container maximized w = 1.0 | ||||
| inventory container maximized h = 0.5 | ||||
| inventory container maximized = false | ||||
| 
 | ||||
| # Player inventory window when bartering with a shopkeeper. | ||||
| inventory barter x = 0.015 | ||||
| inventory barter y = 0.54 | ||||
| inventory barter w = 0.45 | ||||
| inventory barter h = 0.38 | ||||
| inventory barter maximized x = 0.0 | ||||
| inventory barter maximized y = 0.5 | ||||
| inventory barter maximized w = 1.0 | ||||
| inventory barter maximized h = 0.5 | ||||
| inventory barter maximized = false | ||||
| 
 | ||||
| # Player inventory window when trading with a companion. | ||||
| inventory companion x = 0.015 | ||||
| inventory companion y = 0.54 | ||||
| inventory companion w = 0.45 | ||||
| inventory companion h = 0.38 | ||||
| inventory companion maximized x = 0.0 | ||||
| inventory companion maximized y = 0.5 | ||||
| inventory companion maximized w = 1.0 | ||||
| inventory companion maximized h = 0.5 | ||||
| inventory companion maximized = false | ||||
| 
 | ||||
| # Dialog window for talking with NPCs. | ||||
| dialogue x = 0.15 | ||||
| dialogue y = 0.5 | ||||
| dialogue w = 0.7 | ||||
| dialogue h = 0.45 | ||||
| dialogue maximized x = 0.0 | ||||
| dialogue maximized y = 0.0 | ||||
| dialogue maximized w = 1.0 | ||||
| dialogue maximized h = 1.0 | ||||
| dialogue maximized = false | ||||
| 
 | ||||
| # Alchemy window for crafting potions. | ||||
| alchemy x = 0.25 | ||||
| alchemy y = 0.25 | ||||
| alchemy w = 0.5 | ||||
| alchemy h = 0.5 | ||||
| alchemy maximized x = 0.0 | ||||
| alchemy maximized y = 0.0 | ||||
| alchemy maximized w = 1.0 | ||||
| alchemy maximized h = 1.0 | ||||
| alchemy maximized = false | ||||
| 
 | ||||
| # Console command window for debugging commands. | ||||
| console x = 0.015 | ||||
| console y = 0.015 | ||||
| console w = 1.0 | ||||
| console h = 0.5 | ||||
| console maximized x = 0.0 | ||||
| console maximized y = 0.0 | ||||
| console maximized w = 1.0 | ||||
| console maximized h = 1.0 | ||||
| console maximized = false | ||||
| 
 | ||||
| # Container inventory when searching a container. | ||||
| container x = 0.49 | ||||
| container y = 0.54 | ||||
| container w = 0.39 | ||||
| container h = 0.38 | ||||
| container maximized x = 0.0 | ||||
| container maximized y = 0.0 | ||||
| container maximized w = 1.0 | ||||
| container maximized h = 0.5 | ||||
| container maximized = false | ||||
| 
 | ||||
| # NPC inventory window when bartering with a shopkeeper. | ||||
| barter x = 0.6 | ||||
| barter y = 0.27 | ||||
| barter w = 0.38 | ||||
| barter h = 0.63 | ||||
| barter maximized x = 0.0 | ||||
| barter maximized y = 0.0 | ||||
| barter maximized w = 1.0 | ||||
| barter maximized h = 0.5 | ||||
| barter maximized = false | ||||
| 
 | ||||
| # NPC inventory window when trading with a companion. | ||||
| companion x = 0.6 | ||||
| companion y = 0.27 | ||||
| companion w = 0.38 | ||||
| companion h = 0.63 | ||||
| companion maximized x = 0.0 | ||||
| companion maximized y = 0.0 | ||||
| companion maximized w = 1.0 | ||||
| companion maximized h = 0.5 | ||||
| companion maximized = false | ||||
| 
 | ||||
| [Navigator] | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue