1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-03-31 12:06:40 +00:00

Add scrolling to the script settings view

This commit is contained in:
uramer 2022-01-27 23:12:30 +01:00
parent fba82eb1a7
commit 64df4f54c6
4 changed files with 35 additions and 14 deletions

View file

@ -240,6 +240,7 @@ namespace MWGui
getWidget(mMaxLights, "MaxLights");
getWidget(mScriptFilter, "ScriptFilter");
getWidget(mScriptList, "ScriptList");
getWidget(mScriptBox, "ScriptBox");
getWidget(mScriptView, "ScriptView");
getWidget(mScriptDisabled, "ScriptDisabled");
@ -332,7 +333,7 @@ namespace MWGui
mScriptList->eventListMouseItemActivate += MyGUI::newDelegate(this, &SettingsWindow::onScriptListSelection);
}
void SettingsWindow::onTabChanged(MyGUI::TabControl* /*_sender*/, size_t index)
void SettingsWindow::onTabChanged(MyGUI::TabControl* /*_sender*/, size_t /*index*/)
{
resetScrollbars();
}
@ -710,26 +711,28 @@ namespace MWGui
void SettingsWindow::resizeScriptSettings()
{
static int minListWidth = 150;
static float relativeListWidth = 0.2f;
static const int minListWidth = 150;
static const float relativeListWidth = 0.2f;
static const int padding = 2;
static const int outerPadding = padding * 2;
MyGUI::IntSize parentSize = mScriptFilter->getParent()->getClientCoord().size();
int listWidth = std::max(minListWidth, static_cast<int>(parentSize.width * relativeListWidth));
int filterHeight = mScriptFilter->getSize().height;
int listBorder = (mScriptList->getSize().height - mScriptList->getClientCoord().height) / 2;
int listHeight = parentSize.height - listBorder - mScriptList->getPosition().top;
int listHeight = parentSize.height - mScriptList->getPosition().top - outerPadding;
mScriptFilter->setSize({ listWidth, filterHeight });
mScriptList->setSize({ listWidth, listHeight });
mScriptView->setPosition({ listWidth, 0 });
mScriptView->setSize({ parentSize.width - listWidth, parentSize.height });
mScriptBox->setPosition({ listWidth + padding, 0 });
mScriptBox->setSize({ parentSize.width - listWidth - padding, parentSize.height - outerPadding });
mScriptDisabled->setPosition({0, 0});
mScriptDisabled->setSize(parentSize);
}
void SettingsWindow::renderScriptSettings()
{
while (mScriptView->getChildCount() > 0)
mScriptView->getChildAt(0)->detachFromWidget();
mScriptList->removeAllItems();
mScriptView->setCanvasSize({0, 0});
std::string filter(".*");
filter += mScriptFilter->getCaption();
@ -750,7 +753,7 @@ namespace MWGui
mScriptDisabled->setVisible(disabled);
mScriptFilter->setVisible(!disabled);
mScriptList->setVisible(!disabled);
mScriptView->setVisible(!disabled);
mScriptBox->setVisible(!disabled);
}
void SettingsWindow::onScriptFilterChange(MyGUI::Widget*)
@ -767,6 +770,10 @@ namespace MWGui
size_t scriptIndex = *mScriptList->getItemDataAt<size_t>(index);
LuaUi::ScriptSettings script = LuaUi::scriptSettings()[scriptIndex];
LuaUi::attachToWidget(script, mScriptView);
MyGUI::IntSize canvasSize;
if (mScriptView->getChildCount() > 0)
canvasSize = mScriptView->getChildAt(0)->getSize();
mScriptView->setCanvasSize(canvasSize);
}
void SettingsWindow::onRebindAction(MyGUI::Widget* _sender)

View file

@ -46,7 +46,8 @@ namespace MWGui
MyGUI::EditBox* mScriptFilter;
MyGUI::ListBox* mScriptList;
MyGUI::Widget* mScriptView;
MyGUI::Widget* mScriptBox;
MyGUI::ScrollView* mScriptView;
MyGUI::EditBox* mScriptDisabled;
void onTabChanged(MyGUI::TabControl* _sender, size_t index);

View file

@ -14,4 +14,11 @@
<Child type="ScrollBar" skin="MW_HScroll" offset="3 498 513 14" align="Left Bottom HStretch" name="HScroll"/>
</Resource>
<Resource type="ResourceSkin" name="MW_ScrollViewVH" size="516 516">
<Property key="NeedKey" value="false"/>
<Child type="Widget" skin="" offset="0 0 502 502" align="Stretch" name="Client"/>
<Child type="ScrollBar" skin="MW_VScroll" offset="498 3 14 492" align="Right Top VStretch" name="VScroll"/>
<Child type="ScrollBar" skin="MW_HScroll" offset="3 498 492 14" align="Left Bottom HStretch" name="HScroll"/>
</Resource>
</MyGUI>

View file

@ -658,10 +658,16 @@
</Widget>
<Widget type="TabItem" skin="" position="4 32 360 308">
<Property key="Caption" value=" Scripts "/>
<Widget name="ScriptFilter" type="EditBox" skin="MW_TextEdit" position="0 0 150 40" />
<Widget name="ScriptList" type="ListBox" skin="MW_List" position="0 40 150 268" />
<Widget name="ScriptView" type="Widget" skin="" position="0 0 360 308" />
<Widget name="ScriptDisabled" type="EditBox" skin="SandText" position="0 0 360 308" align="Center" visible="false">
<Widget name="ScriptFilter" type="EditBox" skin="MW_TextEdit" position="0 0 150 40"/>
<Widget name="ScriptList" type="ListBox" skin="MW_List" position="0 40 150 268"/>
<Widget name="ScriptBox" type="Widget" skin="MW_Box" position="150 0 250 250" name="ScriptBox">
<Widget name="ScriptView" type="ScrollView" skin="MW_ScrollViewVH" position="2 2 246 246" align="Stretch">
<Property key="CanvasAlign" value="Left Top"/>
<Property key="CanvasSize" value="246 246"/>
</Widget>
</Widget>
<Widget name="ScriptDisabled" type="EditBox" skin="SandText" position="0 0 360 308" align="Center">
<Property key="Visible" value="false"/>
<Property key="Caption" value="Scripts settings are only available when a game is loaded."/>
<Property key="TextAlign" value="Center" />
<Property key="MultiLine" value="true" />