forked from mirror/openmw-tes3mp
autorepeat scrollbar
This commit is contained in:
parent
72b7e113cc
commit
e3d8bdbafe
6 changed files with 130 additions and 6 deletions
|
@ -15,8 +15,6 @@
|
||||||
#include "../mwmechanics/creaturestats.hpp"
|
#include "../mwmechanics/creaturestats.hpp"
|
||||||
#include "../mwmechanics/npcstats.hpp"
|
#include "../mwmechanics/npcstats.hpp"
|
||||||
|
|
||||||
#include "widgets.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
namespace MWGui
|
namespace MWGui
|
||||||
{
|
{
|
||||||
|
@ -53,15 +51,14 @@ namespace MWGui
|
||||||
getWidget(mDateTimeText, "DateTimeText");
|
getWidget(mDateTimeText, "DateTimeText");
|
||||||
getWidget(mRestText, "RestText");
|
getWidget(mRestText, "RestText");
|
||||||
getWidget(mHourText, "HourText");
|
getWidget(mHourText, "HourText");
|
||||||
getWidget(mHourSlider, "HourSlider");
|
|
||||||
getWidget(mUntilHealedButton, "UntilHealedButton");
|
getWidget(mUntilHealedButton, "UntilHealedButton");
|
||||||
getWidget(mWaitButton, "WaitButton");
|
getWidget(mWaitButton, "WaitButton");
|
||||||
getWidget(mCancelButton, "CancelButton");
|
getWidget(mCancelButton, "CancelButton");
|
||||||
|
getWidget(mHourSlider, "HourSlider");
|
||||||
|
|
||||||
mCancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &WaitDialog::onCancelButtonClicked);
|
mCancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &WaitDialog::onCancelButtonClicked);
|
||||||
mUntilHealedButton->eventMouseButtonClick += MyGUI::newDelegate(this, &WaitDialog::onUntilHealedButtonClicked);
|
mUntilHealedButton->eventMouseButtonClick += MyGUI::newDelegate(this, &WaitDialog::onUntilHealedButtonClicked);
|
||||||
mWaitButton->eventMouseButtonClick += MyGUI::newDelegate(this, &WaitDialog::onWaitButtonClicked);
|
mWaitButton->eventMouseButtonClick += MyGUI::newDelegate(this, &WaitDialog::onWaitButtonClicked);
|
||||||
|
|
||||||
mHourSlider->eventScrollChangePosition += MyGUI::newDelegate(this, &WaitDialog::onHourSliderChangedPosition);
|
mHourSlider->eventScrollChangePosition += MyGUI::newDelegate(this, &WaitDialog::onHourSliderChangedPosition);
|
||||||
|
|
||||||
mProgressBar.setVisible (false);
|
mProgressBar.setVisible (false);
|
||||||
|
@ -231,6 +228,8 @@ namespace MWGui
|
||||||
|
|
||||||
void WaitDialog::onFrame(float dt)
|
void WaitDialog::onFrame(float dt)
|
||||||
{
|
{
|
||||||
|
mHourSlider->updateTime(dt);
|
||||||
|
|
||||||
if (!mWaiting)
|
if (!mWaiting)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define MWGUI_WAIT_DIALOG_H
|
#define MWGUI_WAIT_DIALOG_H
|
||||||
|
|
||||||
#include "windowbase.hpp"
|
#include "windowbase.hpp"
|
||||||
|
#include "widgets.hpp"
|
||||||
|
|
||||||
namespace MWGui
|
namespace MWGui
|
||||||
{
|
{
|
||||||
|
@ -38,10 +39,10 @@ namespace MWGui
|
||||||
MyGUI::TextBox* mDateTimeText;
|
MyGUI::TextBox* mDateTimeText;
|
||||||
MyGUI::TextBox* mRestText;
|
MyGUI::TextBox* mRestText;
|
||||||
MyGUI::TextBox* mHourText;
|
MyGUI::TextBox* mHourText;
|
||||||
MyGUI::ScrollBar* mHourSlider;
|
|
||||||
MyGUI::Button* mUntilHealedButton;
|
MyGUI::Button* mUntilHealedButton;
|
||||||
MyGUI::Button* mWaitButton;
|
MyGUI::Button* mWaitButton;
|
||||||
MyGUI::Button* mCancelButton;
|
MyGUI::Button* mCancelButton;
|
||||||
|
MWGui::Widgets::MWScrollBar* mHourSlider;
|
||||||
|
|
||||||
bool mWaiting;
|
bool mWaiting;
|
||||||
bool mSleeping;
|
bool mSleeping;
|
||||||
|
|
|
@ -893,5 +893,97 @@ namespace MWGui
|
||||||
{
|
{
|
||||||
align();
|
align();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MWScrollBar::MWScrollBar()
|
||||||
|
: mEnableRepeat(true)
|
||||||
|
, mRepeatTriggerTime(0.5)
|
||||||
|
, mRepeatStepTime(0.1)
|
||||||
|
, mStepDecrease(0)
|
||||||
|
, mStepIncrease(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
MWScrollBar::~MWScrollBar()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void MWScrollBar::initialiseOverride()
|
||||||
|
{
|
||||||
|
Base::initialiseOverride();
|
||||||
|
|
||||||
|
mWidgetStart->eventMouseButtonPressed += MyGUI::newDelegate(this, &MWScrollBar::onDecreaseButtonPressed);
|
||||||
|
mWidgetStart->eventMouseButtonReleased += MyGUI::newDelegate(this, &MWScrollBar::onDecreaseButtonReleased);
|
||||||
|
mWidgetEnd->eventMouseButtonPressed += MyGUI::newDelegate(this, &MWScrollBar::onIncreaseButtonPressed);
|
||||||
|
mWidgetEnd->eventMouseButtonReleased += MyGUI::newDelegate(this, &MWScrollBar::onIncreaseButtonReleased);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MWScrollBar::setEnableRepeat(bool enable)
|
||||||
|
{
|
||||||
|
mEnableRepeat = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MWScrollBar::getEnableRepeat()
|
||||||
|
{
|
||||||
|
return mEnableRepeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MWScrollBar::getRepeat(float &trigger, float &step)
|
||||||
|
{
|
||||||
|
trigger = mRepeatTriggerTime;
|
||||||
|
step = mRepeatStepTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MWScrollBar::setRepeat(float trigger, float step)
|
||||||
|
{
|
||||||
|
mRepeatTriggerTime = trigger;
|
||||||
|
mRepeatStepTime = step;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MWScrollBar::updateTime(float dt)
|
||||||
|
{
|
||||||
|
if(!mEnableRepeat)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(mStepDecrease > 0)
|
||||||
|
{
|
||||||
|
mStepDecrease -= dt;
|
||||||
|
if(mStepDecrease <= 0 && mScrollPosition > 0)
|
||||||
|
{
|
||||||
|
mScrollPosition -= 1;
|
||||||
|
eventScrollChangePosition(this, mScrollPosition);
|
||||||
|
mStepDecrease += mRepeatStepTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(mStepIncrease > 0)
|
||||||
|
{
|
||||||
|
mStepIncrease -= dt;
|
||||||
|
if(mStepIncrease <= 0 && mScrollPosition < mScrollRange-1)
|
||||||
|
{
|
||||||
|
mScrollPosition += 1;
|
||||||
|
eventScrollChangePosition(this, mScrollPosition);
|
||||||
|
mStepIncrease += mRepeatStepTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MWScrollBar::onDecreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id)
|
||||||
|
{
|
||||||
|
mStepDecrease = mRepeatTriggerTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MWScrollBar::onDecreaseButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id)
|
||||||
|
{
|
||||||
|
mStepDecrease = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MWScrollBar::onIncreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id)
|
||||||
|
{
|
||||||
|
mStepIncrease = mRepeatTriggerTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MWScrollBar::onIncreaseButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id)
|
||||||
|
{
|
||||||
|
mStepIncrease = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include <MyGUI_Button.h>
|
#include <MyGUI_Button.h>
|
||||||
#include <MyGUI_EditBox.h>
|
#include <MyGUI_EditBox.h>
|
||||||
|
#include <MyGUI_ScrollBar.h>
|
||||||
|
|
||||||
namespace MyGUI
|
namespace MyGUI
|
||||||
{
|
{
|
||||||
|
@ -407,6 +408,36 @@ namespace MWGui
|
||||||
|
|
||||||
virtual void onWidgetCreated(MyGUI::Widget* _widget);
|
virtual void onWidgetCreated(MyGUI::Widget* _widget);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MWScrollBar : public MyGUI::ScrollBar
|
||||||
|
{
|
||||||
|
MYGUI_RTTI_DERIVED(MWScrollBar)
|
||||||
|
|
||||||
|
public:
|
||||||
|
MWScrollBar();
|
||||||
|
|
||||||
|
void setEnableRepeat(bool enable);
|
||||||
|
bool getEnableRepeat();
|
||||||
|
void getRepeat(float &trigger, float &step);
|
||||||
|
void setRepeat(float trigger, float step);
|
||||||
|
void updateTime(float dt);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual ~MWScrollBar();
|
||||||
|
virtual void initialiseOverride();
|
||||||
|
|
||||||
|
bool mEnableRepeat;
|
||||||
|
float mRepeatTriggerTime;
|
||||||
|
float mRepeatStepTime;
|
||||||
|
float mStepDecrease;
|
||||||
|
float mStepIncrease;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void onDecreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
|
||||||
|
void onDecreaseButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
|
||||||
|
void onIncreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
|
||||||
|
void onIncreaseButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -142,6 +142,7 @@ namespace MWGui
|
||||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::ImageButton>("Widget");
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::ImageButton>("Widget");
|
||||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::ExposedWindow>("Widget");
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::ExposedWindow>("Widget");
|
||||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWScrollView>("Widget");
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWScrollView>("Widget");
|
||||||
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWScrollBar>("Widget");
|
||||||
BookPage::registerMyGUIComponents ();
|
BookPage::registerMyGUIComponents ();
|
||||||
ItemView::registerComponents();
|
ItemView::registerComponents();
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<Widget type="AutoSizedTextBox" skin="SandText" name="HourText">
|
<Widget type="AutoSizedTextBox" skin="SandText" name="HourText">
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
<Widget type="ScrollBar" skin="MW_HScroll" name="HourSlider" position="0 0 0 18">
|
<Widget type="MWScrollBar" skin="MW_HScroll" name="HourSlider" position="0 0 0 18">
|
||||||
<Property key="MoveToClick" value="true"/>
|
<Property key="MoveToClick" value="true"/>
|
||||||
<Property key="Range" value="24"/>
|
<Property key="Range" value="24"/>
|
||||||
<UserString key="HStretch" value="true"/>
|
<UserString key="HStretch" value="true"/>
|
||||||
|
|
Loading…
Reference in a new issue