Merge pull request #1253 from akortunov/pinned

Remember "pinned" windows across game restarts
pull/1273/head
scrawl 8 years ago committed by GitHub
commit 8fbf9dc597

@ -444,6 +444,8 @@ namespace MWGui
void InventoryWindow::onPinToggled()
{
Settings::Manager::setBool("inventory pin", "Windows", mPinned);
MWBase::Environment::get().getWindowManager()->setWeaponVisibility(!mPinned);
}

@ -629,7 +629,7 @@ namespace MWGui
, mGlobalMap(0)
, mGlobalMapImage(NULL)
, mGlobalMapOverlay(NULL)
, mGlobal(false)
, mGlobal(Settings::Manager::getBool("global", "Map"))
, mEventBoxGlobal(NULL)
, mEventBoxLocal(NULL)
, mGlobalMapRender(new MWRender::GlobalMap(localMapRender->getRoot(), workQueue))
@ -667,7 +667,7 @@ namespace MWGui
getWidget(mButton, "WorldButton");
mButton->eventMouseButtonClick += MyGUI::newDelegate(this, &MapWindow::onWorldButtonClicked);
mButton->setCaptionWithReplacing("#{sWorld}");
mButton->setCaptionWithReplacing( mGlobal ? "#{sLocal}" : "#{sWorld}");
getWidget(mEventBoxGlobal, "EventBoxGlobal");
mEventBoxGlobal->eventMouseDrag += MyGUI::newDelegate(this, &MapWindow::onMouseDrag);
@ -680,6 +680,9 @@ namespace MWGui
mEventBoxLocal->eventMouseButtonDoubleClick += MyGUI::newDelegate(this, &MapWindow::onMapDoubleClicked);
LocalMapBase::init(mLocalMap, mPlayerArrowLocal, Settings::Manager::getInt("local map widget size", "Map"), Settings::Manager::getInt("local map cell distance", "Map"));
mGlobalMap->setVisible(mGlobal);
mLocalMap->setVisible(!mGlobal);
}
void MapWindow::onNoteEditOk()
@ -777,7 +780,7 @@ namespace MWGui
void MapWindow::setVisible(bool visible)
{
WindowBase::setVisible(visible);
mButton->setVisible(visible && MWBase::Environment::get().getWindowManager()->isGuiMode());
mButton->setVisible(visible && MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_None);
}
void MapWindow::renderGlobalMap()
@ -918,6 +921,8 @@ namespace MWGui
mGlobalMap->setVisible(mGlobal);
mLocalMap->setVisible(!mGlobal);
Settings::Manager::setBool("global", "Map", mGlobal);
mButton->setCaptionWithReplacing( mGlobal ? "#{sLocal}" :
"#{sWorld}");
@ -927,6 +932,8 @@ namespace MWGui
void MapWindow::onPinToggled()
{
Settings::Manager::setBool("map pin", "Windows", mPinned);
MWBase::Environment::get().getWindowManager()->setMinimapVisibility(!mPinned);
}

@ -4,6 +4,8 @@
#include <MyGUI_InputManager.h>
#include <components/settings/settings.hpp>
#include "../mwbase/windowmanager.hpp"
#include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp"
@ -48,6 +50,8 @@ namespace MWGui
void SpellWindow::onPinToggled()
{
Settings::Manager::setBool("spells pin", "Windows", mPinned);
MWBase::Environment::get().getWindowManager()->setSpellVisibility(!mPinned);
}

@ -6,6 +6,8 @@
#include <MyGUI_ImageBox.h>
#include <MyGUI_Gui.h>
#include <components/settings/settings.hpp>
#include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp"
#include "../mwbase/windowmanager.hpp"
@ -672,6 +674,8 @@ namespace MWGui
void StatsWindow::onPinToggled()
{
Settings::Manager::setBool("stats pin", "Windows", mPinned);
MWBase::Environment::get().getWindowManager()->setHMSVisibility(!mPinned);
}

@ -369,6 +369,8 @@ namespace MWGui
mPlayerSkillValues.insert(std::make_pair(ESM::Skill::sSkillIds[i], MWMechanics::SkillValue()));
}
updatePinnedWindows();
// Set up visibility
updateVisible();
@ -546,14 +548,14 @@ namespace MWGui
setSpellVisibility((mAllowed & GW_Magic) && (!mSpellWindow->pinned() || (mForceHidden & GW_Magic)));
setHMSVisibility((mAllowed & GW_Stats) && (!mStatsWindow->pinned() || (mForceHidden & GW_Stats)));
// If in game mode, show only the pinned windows
if (gameMode)
// If in game mode (or interactive messagebox), show only the pinned windows
if (mGuiModes.empty())
{
mInventoryWindow->setGuiMode(GM_None);
mMap->setVisible(mMap->pinned() && !(mForceHidden & GW_Map));
mStatsWindow->setVisible(mStatsWindow->pinned() && !(mForceHidden & GW_Stats));
mInventoryWindow->setVisible(mInventoryWindow->pinned() && !(mForceHidden & GW_Inventory));
mSpellWindow->setVisible(mSpellWindow->pinned() && !(mForceHidden & GW_Magic));
mMap->setVisible(mMap->pinned() && !(mForceHidden & GW_Map) && (mAllowed & GW_Map));
mStatsWindow->setVisible(mStatsWindow->pinned() && !(mForceHidden & GW_Stats) && (mAllowed & GW_Stats));
mInventoryWindow->setVisible(mInventoryWindow->pinned() && !(mForceHidden & GW_Inventory) && (mAllowed & GW_Inventory));
mSpellWindow->setVisible(mSpellWindow->pinned() && !(mForceHidden & GW_Magic) && (mAllowed & GW_Magic));
return;
}
@ -1853,6 +1855,17 @@ namespace MWGui
mVideoWidget->stop();
}
void WindowManager::updatePinnedWindows()
{
mInventoryWindow->setPinned(Settings::Manager::getBool("inventory pin", "Windows"));
mMap->setPinned(Settings::Manager::getBool("map pin", "Windows"));
mSpellWindow->setPinned(Settings::Manager::getBool("spells pin", "Windows"));
mStatsWindow->setPinned(Settings::Manager::getBool("stats pin", "Windows"));
}
void WindowManager::pinWindow(GuiWindow window)
{
switch (window)

@ -539,6 +539,8 @@ namespace MWGui
void createTextures();
void createCursors();
void setMenuTransparency(float value);
void updatePinnedWindows();
};
}

@ -1,6 +1,17 @@
Map Settings
############
global
------
:Type: boolean
:Range: True/False
:Default: False
If this setting is true, a world map on a map window will be displayed, otherwise a local map will be displayed.
The default value is false. This setting can be toggled with the local/world map switch button on the map window.
global map cell size
--------------------

@ -18,6 +18,21 @@ Each window in the GUI mode remembers it's previous location when exiting the ga
.. note::
To scale the windows, making the widgets proportionally larger, see the scaling factor setting instead.
:Type: boolean
:Range: True/False
This section controls the state of pinnable windows: pinned or not. For example, to pin only the map window, the actual settings will be::
inventory pin = false
map pin = true
stats pin = false
spells pin = false
The pinnable window can be pinned/unpinned by clicking on a button in the right upper corner of the window.
.. note::
A world/local map switch button on the map window will be showed only in GUI mode.
stats
-----
@ -25,6 +40,7 @@ stats
y = 0.0
h = 0.375
w = 0.4275
pin = false
The stats window, displaying level, race, class, skills and stats. Activated by clicking on any of the three bars in the lower left corner of the HUD.
@ -35,6 +51,7 @@ spells
y = 0.5725
h = 0.375
w = 0.4275
pin = false
The spells window, displaying powers, spells, and magical items. Activated by clicking on the spells widget (third from left) in the bottom left corner of the HUD.
@ -45,39 +62,10 @@ map
y = 0.0
h = 0.375
w = 0.5725
pin = false
The local and world map window. Activated by clicking on the map widget in the bottom right corner of the HUD.
dialogue
--------
:Default: x = 0.095
y = 0.095
h = 0.810
w = 0.810
The dialog window, for talking with NPCs. Activated by clicking on a NPC.
alchemy
-------
:Default: x = 0.25
y = 0.25
h = 0.5
w = 0.5
The alchemy window, for crafting potions. Activated by dragging an alchemy tool on to the rag doll. Unlike most other windows, this window hides all other windows when opened.
console
-------
:Default: x = 0.0
y = 0.0
h = 1.0
w = 0.5
The console command window. Activated by pressing the tilde (~) key.
inventory
---------
@ -85,6 +73,7 @@ inventory
y = 0.4275
h = 0.6225
w = 0.5725
pin = false
The inventory window, displaying the paper doll and possessions, when activated by clicking on the inventory widget (second from left) in the bottom left corner of the HUD.
@ -146,4 +135,34 @@ companion
h = 0.75
w = 0.375
The NPC's inventory window while interacting with a companion. The companion windows were added in the Tribunal expansion, but are available everywhere in the OpenMW engine.
The NPC's inventory window while interacting with a companion. The companion windows were added in the Tribunal expansion, but are available everywhere in the OpenMW engine.
dialogue
--------
:Default: x = 0.095
y = 0.095
h = 0.810
w = 0.810
The dialog window, for talking with NPCs. Activated by clicking on a NPC.
alchemy
-------
:Default: x = 0.25
y = 0.25
h = 0.5
w = 0.5
The alchemy window, for crafting potions. Activated by dragging an alchemy tool on to the rag doll. Unlike most other windows, this window hides all other windows when opened.
console
-------
:Default: x = 0.0
y = 0.0
h = 1.0
w = 0.5
The console command window. Activated by pressing the tilde (~) key.

@ -107,6 +107,9 @@ local map widget size = 512
# may result in longer loading times.
local map cell distance = 1
# If true, map in world mode, otherwise in local mode
global = false
[GUI]
# Scales GUI window and widget size. (<1.0 is smaller, >1.0 is larger).
@ -371,18 +374,24 @@ stats x = 0.0
stats y = 0.0
stats w = 0.375
stats h = 0.4275
# Stats window pin status
stats pin = false
# Spells window displaying powers, spells, and magical items.
spells x = 0.625
spells y = 0.5725
spells w = 0.375
spells h = 0.4275
# Spells window pin status
spells pin = false
# Local and world map window.
map x = 0.625
map y = 0.0
map w = 0.375
map h = 0.5725
# Map window pin status
map pin = false
# Dialog window for talking with NPCs.
dialogue x = 0.095
@ -407,6 +416,8 @@ inventory x = 0.0
inventory y = 0.4275
inventory w = 0.6225
inventory h = 0.5725
# Inventory window pin status
inventory pin = false
# Player inventory window when searching a container.
inventory container x = 0.0

Loading…
Cancel
Save