some editing code

actorid
scrawl 12 years ago
parent 7ee038fdd7
commit 1c0dd3ccc5

@ -8,7 +8,9 @@ namespace MWGui
EnchantingDialog::EnchantingDialog(MWBase::WindowManager &parWindowManager) EnchantingDialog::EnchantingDialog(MWBase::WindowManager &parWindowManager)
: WindowBase("openmw_enchanting_dialog.layout", parWindowManager) : WindowBase("openmw_enchanting_dialog.layout", parWindowManager)
{ {
getWidget(mCancelButton, "CancelButton");
mCancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &EnchantingDialog::onCancelButtonClicked);
} }
void EnchantingDialog::open() void EnchantingDialog::open()
@ -27,4 +29,8 @@ namespace MWGui
mWindowManager.removeGuiMode (GM_Enchanting); mWindowManager.removeGuiMode (GM_Enchanting);
} }
void EnchantingDialog::onCancelButtonClicked(MyGUI::Widget* sender)
{
mWindowManager.removeGuiMode (GM_Enchanting);
}
} }

@ -19,6 +19,10 @@ namespace MWGui
protected: protected:
virtual void onReferenceUnavailable(); virtual void onReferenceUnavailable();
void onCancelButtonClicked(MyGUI::Widget* sender);
MyGUI::Button* mCancelButton;
}; };
} }

@ -15,6 +15,7 @@
#include "tooltips.hpp" #include "tooltips.hpp"
#include "widgets.hpp" #include "widgets.hpp"
#include "class.hpp"
namespace namespace
{ {
@ -31,6 +32,7 @@ namespace MWGui
EditEffectDialog::EditEffectDialog(MWBase::WindowManager &parWindowManager) EditEffectDialog::EditEffectDialog(MWBase::WindowManager &parWindowManager)
: WindowModal("openmw_edit_effect.layout", parWindowManager) : WindowModal("openmw_edit_effect.layout", parWindowManager)
, mEditing(false)
{ {
getWidget(mCancelButton, "CancelButton"); getWidget(mCancelButton, "CancelButton");
getWidget(mOkButton, "OkButton"); getWidget(mOkButton, "OkButton");
@ -64,7 +66,27 @@ namespace MWGui
onRangeButtonClicked(mRangeButton); onRangeButtonClicked(mRangeButton);
} }
void EditEffectDialog::setEffect (const ESM::MagicEffect *effect) void EditEffectDialog::newEffect (const ESM::MagicEffect *effect)
{
setMagicEffect(effect);
mEditing = false;
mDeleteButton->setVisible (false);
}
void EditEffectDialog::editEffect (ESM::ENAMstruct effect)
{
const ESM::MagicEffect* magicEffect = MWBase::Environment::get().getWorld()->getStore().magicEffects.find(effect.mEffectID);
setMagicEffect(magicEffect);
mEffect = effect;
mEditing = true;
mDeleteButton->setVisible (true);
}
void EditEffectDialog::setMagicEffect (const ESM::MagicEffect *effect)
{ {
std::string icon = effect->mIcon; std::string icon = effect->mIcon;
icon[icon.size()-3] = 'd'; icon[icon.size()-3] = 'd';
@ -75,6 +97,8 @@ namespace MWGui
mEffectImage->setImageTexture (icon); mEffectImage->setImageTexture (icon);
mEffectName->setCaptionWithReplacing("#{"+ESM::MagicEffect::effectIdToString (effect->mIndex)+"}"); mEffectName->setCaptionWithReplacing("#{"+ESM::MagicEffect::effectIdToString (effect->mIndex)+"}");
mEffect.mEffectID = effect->mIndex;
} }
void EditEffectDialog::onRangeButtonClicked (MyGUI::Widget* sender) void EditEffectDialog::onRangeButtonClicked (MyGUI::Widget* sender)
@ -94,12 +118,19 @@ namespace MWGui
void EditEffectDialog::onDeleteButtonClicked (MyGUI::Widget* sender) void EditEffectDialog::onDeleteButtonClicked (MyGUI::Widget* sender)
{ {
setVisible(false);
eventEffectRemoved(mEffect);
} }
void EditEffectDialog::onOkButtonClicked (MyGUI::Widget* sender) void EditEffectDialog::onOkButtonClicked (MyGUI::Widget* sender)
{ {
setVisible(false); setVisible(false);
if (mEditing)
eventEffectModified(mEffect);
else
eventEffectAdded(mEffect);
} }
void EditEffectDialog::onCancelButtonClicked (MyGUI::Widget* sender) void EditEffectDialog::onCancelButtonClicked (MyGUI::Widget* sender)
@ -107,6 +138,16 @@ namespace MWGui
setVisible(false); setVisible(false);
} }
void EditEffectDialog::setSkill (int skill)
{
mEffect.mSkill = skill;
}
void EditEffectDialog::setAttribute (int attribute)
{
mEffect.mAttribute = attribute;
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
SpellCreationDialog::SpellCreationDialog(MWBase::WindowManager &parWindowManager) SpellCreationDialog::SpellCreationDialog(MWBase::WindowManager &parWindowManager)
@ -130,6 +171,10 @@ namespace MWGui
mBuyButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SpellCreationDialog::onBuyButtonClicked); mBuyButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SpellCreationDialog::onBuyButtonClicked);
mAvailableEffectsList->eventWidgetSelected += MyGUI::newDelegate(this, &SpellCreationDialog::onAvailableEffectClicked); mAvailableEffectsList->eventWidgetSelected += MyGUI::newDelegate(this, &SpellCreationDialog::onAvailableEffectClicked);
mAddEffectDialog.eventEffectAdded += MyGUI::newDelegate(this, &SpellCreationDialog::onEffectAdded);
mAddEffectDialog.eventEffectModified += MyGUI::newDelegate(this, &SpellCreationDialog::onEffectModified);
mAddEffectDialog.eventEffectRemoved += MyGUI::newDelegate(this, &SpellCreationDialog::onEffectRemoved);
} }
@ -205,15 +250,131 @@ namespace MWGui
} }
void SpellCreationDialog::onSelectAttribute ()
{
mAddEffectDialog.setVisible(true);
mAddEffectDialog.setAttribute (mSelectAttributeDialog->getAttributeId());
mWindowManager.removeDialog (mSelectAttributeDialog);
mSelectAttributeDialog = 0;
}
void SpellCreationDialog::onSelectSkill ()
{
mAddEffectDialog.setVisible(true);
mAddEffectDialog.setSkill (mSelectSkillDialog->getSkillId ());
mWindowManager.removeDialog (mSelectSkillDialog);
mSelectSkillDialog = 0;
}
void SpellCreationDialog::onAttributeOrSkillCancel ()
{
if (mSelectSkillDialog)
mWindowManager.removeDialog (mSelectSkillDialog);
if (mSelectAttributeDialog)
mWindowManager.removeDialog (mSelectAttributeDialog);
mSelectSkillDialog = 0;
mSelectAttributeDialog = 0;
}
void SpellCreationDialog::onAvailableEffectClicked (MyGUI::Widget* sender) void SpellCreationDialog::onAvailableEffectClicked (MyGUI::Widget* sender)
{ {
short effectId = *sender->getUserData<short>(); short effectId = *sender->getUserData<short>();
const ESM::MagicEffect* effect = MWBase::Environment::get().getWorld()->getStore().magicEffects.find(effectId); const ESM::MagicEffect* effect = MWBase::Environment::get().getWorld()->getStore().magicEffects.find(effectId);
mAddEffectDialog.newEffect (effect);
mAddEffectDialog.setVisible(true); if (effect->mData.mFlags & ESM::MagicEffect::TargetSkill)
mAddEffectDialog.setEffect (effect); {
delete mSelectSkillDialog;
mSelectSkillDialog = new SelectSkillDialog(mWindowManager);
mSelectSkillDialog->eventCancel += MyGUI::newDelegate(this, &SpellCreationDialog::onAttributeOrSkillCancel);
mSelectSkillDialog->eventItemSelected += MyGUI::newDelegate(this, &SpellCreationDialog::onSelectSkill);
mSelectSkillDialog->setVisible (true);
}
else if (effect->mData.mFlags & ESM::MagicEffect::TargetAttribute)
{
delete mSelectAttributeDialog;
mSelectAttributeDialog = new SelectAttributeDialog(mWindowManager);
mSelectAttributeDialog->eventCancel += MyGUI::newDelegate(this, &SpellCreationDialog::onAttributeOrSkillCancel);
mSelectAttributeDialog->eventItemSelected += MyGUI::newDelegate(this, &SpellCreationDialog::onSelectAttribute);
mSelectAttributeDialog->setVisible (true);
}
else
{
mAddEffectDialog.setVisible(true);
}
} }
void SpellCreationDialog::onEffectModified (ESM::ENAMstruct effect)
{
mEffects[mSelectedEffect] = effect;
updateEffectsView();
}
void SpellCreationDialog::onEffectRemoved (ESM::ENAMstruct effect)
{
mEffects.erase(mEffects.begin() + mSelectedEffect);
updateEffectsView();
}
void SpellCreationDialog::updateEffectsView ()
{
MyGUI::EnumeratorWidgetPtr oldWidgets = mUsedEffectsView->getEnumerator ();
MyGUI::Gui::getInstance ().destroyWidgets (oldWidgets);
MyGUI::IntSize size(0,0);
int i = 0;
for (std::vector<ESM::ENAMstruct>::const_iterator it = mEffects.begin(); it != mEffects.end(); ++it)
{
Widgets::SpellEffectParams params;
params.mEffectID = it->mEffectID;
params.mSkill = it->mSkill;
params.mAttribute = it->mAttribute;
params.mDuration = it->mDuration;
params.mMagnMin = it->mMagnMin;
params.mMagnMax = it->mMagnMax;
params.mRange = it->mRange;
MyGUI::Button* button = mUsedEffectsView->createWidget<MyGUI::Button>("", MyGUI::IntCoord(0, size.height, 0, 24), MyGUI::Align::Default);
button->setUserData(i);
button->eventMouseButtonClick += MyGUI::newDelegate(this, &SpellCreationDialog::onEditEffect);
button->setNeedMouseFocus (true);
Widgets::MWSpellEffectPtr effect = button->createWidget<Widgets::MWSpellEffect>("MW_EffectImage", MyGUI::IntCoord(0,0,0,24), MyGUI::Align::Default);
effect->setNeedMouseFocus (false);
effect->setWindowManager (&mWindowManager);
effect->setSpellEffect (params);
effect->setSize(effect->getRequestedWidth (), 24);
button->setSize(effect->getRequestedWidth (), 24);
size.width = std::max(size.width, effect->getRequestedWidth ());
size.height += 24;
++i;
}
mUsedEffectsView->setCanvasSize(size);
}
void SpellCreationDialog::onEffectAdded (ESM::ENAMstruct effect)
{
mEffects.push_back(effect);
updateEffectsView();
}
void SpellCreationDialog::onEditEffect (MyGUI::Widget *sender)
{
int id = *sender->getUserData<int>();
mSelectedEffect = id;
mAddEffectDialog.editEffect (mEffects[id]);
mAddEffectDialog.setVisible (true);
}
} }

@ -4,6 +4,7 @@
#include "window_base.hpp" #include "window_base.hpp"
#include "referenceinterface.hpp" #include "referenceinterface.hpp"
#include "list.hpp" #include "list.hpp"
#include "widgets.hpp"
namespace MWGui namespace MWGui
{ {
@ -18,7 +19,17 @@ namespace MWGui
virtual void open(); virtual void open();
void setEffect (const ESM::MagicEffect* effect); void setSkill(int skill);
void setAttribute(int attribute);
void newEffect (const ESM::MagicEffect* effect);
void editEffect (ESM::ENAMstruct effect);
typedef MyGUI::delegates::CMultiDelegate1<ESM::ENAMstruct> EventHandle_Effect;
EventHandle_Effect eventEffectAdded;
EventHandle_Effect eventEffectModified;
EventHandle_Effect eventEffectRemoved;
protected: protected:
MyGUI::Button* mCancelButton; MyGUI::Button* mCancelButton;
@ -42,12 +53,16 @@ namespace MWGui
MyGUI::ImageBox* mEffectImage; MyGUI::ImageBox* mEffectImage;
MyGUI::TextBox* mEffectName; MyGUI::TextBox* mEffectName;
bool mEditing;
protected: protected:
void onRangeButtonClicked (MyGUI::Widget* sender); void onRangeButtonClicked (MyGUI::Widget* sender);
void onDeleteButtonClicked (MyGUI::Widget* sender); void onDeleteButtonClicked (MyGUI::Widget* sender);
void onOkButtonClicked (MyGUI::Widget* sender); void onOkButtonClicked (MyGUI::Widget* sender);
void onCancelButtonClicked (MyGUI::Widget* sender); void onCancelButtonClicked (MyGUI::Widget* sender);
void setMagicEffect(const ESM::MagicEffect* effect);
protected: protected:
ESM::ENAMstruct mEffect; ESM::ENAMstruct mEffect;
}; };
@ -68,6 +83,17 @@ namespace MWGui
void onBuyButtonClicked (MyGUI::Widget* sender); void onBuyButtonClicked (MyGUI::Widget* sender);
void onAvailableEffectClicked (MyGUI::Widget* sender); void onAvailableEffectClicked (MyGUI::Widget* sender);
void onAttributeOrSkillCancel();
void onSelectAttribute();
void onSelectSkill();
void onEffectAdded(ESM::ENAMstruct effect);
void onEffectModified(ESM::ENAMstruct effect);
void onEffectRemoved(ESM::ENAMstruct effect);
void updateEffectsView();
void onEditEffect(MyGUI::Widget* sender);
MyGUI::EditBox* mNameEdit; MyGUI::EditBox* mNameEdit;
MyGUI::TextBox* mMagickaCost; MyGUI::TextBox* mMagickaCost;
@ -78,11 +104,17 @@ namespace MWGui
MyGUI::Button* mCancelButton; MyGUI::Button* mCancelButton;
MyGUI::TextBox* mPriceLabel; MyGUI::TextBox* mPriceLabel;
int mSelectedEffect;
EditEffectDialog mAddEffectDialog; EditEffectDialog mAddEffectDialog;
SelectAttributeDialog* mSelectAttributeDialog; SelectAttributeDialog* mSelectAttributeDialog;
SelectSkillDialog* mSelectSkillDialog; SelectSkillDialog* mSelectSkillDialog;
Widgets::MWEffectList* mUsedEffectsList;
std::vector<ESM::ENAMstruct> mEffects;
}; };
} }

@ -385,82 +385,77 @@ void MWSpellEffect::setSpellEffect(const SpellEffectParams& params)
void MWSpellEffect::updateWidgets() void MWSpellEffect::updateWidgets()
{ {
if (!mWindowManager)
return;
const ESMS::ESMStore &store = MWBase::Environment::get().getWorld()->getStore(); const ESMS::ESMStore &store = MWBase::Environment::get().getWorld()->getStore();
const ESM::MagicEffect *magicEffect = store.magicEffects.search(mEffectParams.mEffectID); const ESM::MagicEffect *magicEffect = store.magicEffects.search(mEffectParams.mEffectID);
if (!magicEffect)
return; assert(magicEffect);
if (mTextWidget) assert(mWindowManager);
std::string pt = mWindowManager->getGameSettingString("spoint", "");
std::string pts = mWindowManager->getGameSettingString("spoints", "");
std::string to = " " + mWindowManager->getGameSettingString("sTo", "") + " ";
std::string sec = " " + mWindowManager->getGameSettingString("ssecond", "");
std::string secs = " " + mWindowManager->getGameSettingString("sseconds", "");
std::string effectIDStr = ESM::MagicEffect::effectIdToString(mEffectParams.mEffectID);
std::string spellLine = mWindowManager->getGameSettingString(effectIDStr, "");
if (magicEffect->mData.mFlags & ESM::MagicEffect::TargetSkill)
{
spellLine += " " + mWindowManager->getGameSettingString(ESM::Skill::sSkillNameIds[mEffectParams.mSkill], "");
}
if (magicEffect->mData.mFlags & ESM::MagicEffect::TargetAttribute)
{ {
std::string pt = mWindowManager->getGameSettingString("spoint", ""); static const char *attributes[8] = {
std::string pts = mWindowManager->getGameSettingString("spoints", ""); "sAttributeStrength",
std::string to = " " + mWindowManager->getGameSettingString("sTo", "") + " "; "sAttributeIntelligence",
std::string sec = " " + mWindowManager->getGameSettingString("ssecond", ""); "sAttributeWillpower",
std::string secs = " " + mWindowManager->getGameSettingString("sseconds", ""); "sAttributeAgility",
"sAttributeSpeed",
"sAttributeEndurance",
"sAttributePersonality",
"sAttributeLuck"
};
spellLine += " " + mWindowManager->getGameSettingString(attributes[mEffectParams.mAttribute], "");
}
std::string effectIDStr = ESM::MagicEffect::effectIdToString(mEffectParams.mEffectID); if ((mEffectParams.mMagnMin >= 0 || mEffectParams.mMagnMax >= 0) && !(magicEffect->mData.mFlags & ESM::MagicEffect::NoMagnitude))
std::string spellLine = mWindowManager->getGameSettingString(effectIDStr, ""); {
if (magicEffect->mData.mFlags & ESM::MagicEffect::TargetSkill) if (mEffectParams.mMagnMin == mEffectParams.mMagnMax)
spellLine += " " + boost::lexical_cast<std::string>(mEffectParams.mMagnMin) + " " + ((mEffectParams.mMagnMin == 1) ? pt : pts);
else
{ {
spellLine += " " + mWindowManager->getGameSettingString(ESM::Skill::sSkillNameIds[mEffectParams.mSkill], ""); spellLine += " " + boost::lexical_cast<std::string>(mEffectParams.mMagnMin) + to + boost::lexical_cast<std::string>(mEffectParams.mMagnMax) + " " + pts;
}
if (magicEffect->mData.mFlags & ESM::MagicEffect::TargetAttribute)
{
static const char *attributes[8] = {
"sAttributeStrength",
"sAttributeIntelligence",
"sAttributeWillpower",
"sAttributeAgility",
"sAttributeSpeed",
"sAttributeEndurance",
"sAttributePersonality",
"sAttributeLuck"
};
spellLine += " " + mWindowManager->getGameSettingString(attributes[mEffectParams.mAttribute], "");
} }
}
if ((mEffectParams.mMagnMin >= 0 || mEffectParams.mMagnMax >= 0) && !(magicEffect->mData.mFlags & ESM::MagicEffect::NoMagnitude)) // constant effects have no duration and no target
if (!mEffectParams.mIsConstant)
{
if (mEffectParams.mDuration >= 0 && !(magicEffect->mData.mFlags & ESM::MagicEffect::NoDuration))
{ {
if (mEffectParams.mMagnMin == mEffectParams.mMagnMax) spellLine += " " + mWindowManager->getGameSettingString("sfor", "") + " " + boost::lexical_cast<std::string>(mEffectParams.mDuration) + ((mEffectParams.mDuration == 1) ? sec : secs);
spellLine += " " + boost::lexical_cast<std::string>(mEffectParams.mMagnMin) + " " + ((mEffectParams.mMagnMin == 1) ? pt : pts);
else
{
spellLine += " " + boost::lexical_cast<std::string>(mEffectParams.mMagnMin) + to + boost::lexical_cast<std::string>(mEffectParams.mMagnMax) + " " + pts;
}
} }
// constant effects have no duration and no target // potions have no target
if (!mEffectParams.mIsConstant) if (!mEffectParams.mNoTarget)
{ {
if (mEffectParams.mDuration >= 0 && !(magicEffect->mData.mFlags & ESM::MagicEffect::NoDuration)) std::string on = mWindowManager->getGameSettingString("sonword", "");
{ if (mEffectParams.mRange == ESM::RT_Self)
spellLine += " " + mWindowManager->getGameSettingString("sfor", "") + " " + boost::lexical_cast<std::string>(mEffectParams.mDuration) + ((mEffectParams.mDuration == 1) ? sec : secs); spellLine += " " + on + " " + mWindowManager->getGameSettingString("sRangeSelf", "");
} else if (mEffectParams.mRange == ESM::RT_Touch)
spellLine += " " + on + " " + mWindowManager->getGameSettingString("sRangeTouch", "");
// potions have no target else if (mEffectParams.mRange == ESM::RT_Target)
if (!mEffectParams.mNoTarget) spellLine += " " + on + " " + mWindowManager->getGameSettingString("sRangeTarget", "");
{
std::string on = mWindowManager->getGameSettingString("sonword", "");
if (mEffectParams.mRange == ESM::RT_Self)
spellLine += " " + on + " " + mWindowManager->getGameSettingString("sRangeSelf", "");
else if (mEffectParams.mRange == ESM::RT_Touch)
spellLine += " " + on + " " + mWindowManager->getGameSettingString("sRangeTouch", "");
else if (mEffectParams.mRange == ESM::RT_Target)
spellLine += " " + on + " " + mWindowManager->getGameSettingString("sRangeTarget", "");
}
} }
static_cast<MyGUI::TextBox*>(mTextWidget)->setCaption(spellLine);
mRequestedWidth = mTextWidget->getTextSize().width + 24;
}
if (mImageWidget)
{
std::string path = std::string("icons\\") + magicEffect->mIcon;
fixTexturePath(path);
mImageWidget->setImageTexture(path);
} }
static_cast<MyGUI::TextBox*>(mTextWidget)->setCaption(spellLine);
mRequestedWidth = mTextWidget->getTextSize().width + 24;
std::string path = std::string("icons\\") + magicEffect->mIcon;
fixTexturePath(path);
mImageWidget->setImageTexture(path);
} }
MWSpellEffect::~MWSpellEffect() MWSpellEffect::~MWSpellEffect()

@ -578,6 +578,7 @@ void WindowManager::onFrame (float frameDuration)
mTradeWindow->checkReferenceAvailable(); mTradeWindow->checkReferenceAvailable();
mSpellBuyingWindow->checkReferenceAvailable(); mSpellBuyingWindow->checkReferenceAvailable();
mSpellCreationDialog->checkReferenceAvailable(); mSpellCreationDialog->checkReferenceAvailable();
mEnchantingDialog->checkReferenceAvailable();
mContainerWindow->checkReferenceAvailable(); mContainerWindow->checkReferenceAvailable();
mConsole->checkReferenceAvailable(); mConsole->checkReferenceAvailable();
} }

@ -19,13 +19,26 @@
</Widget> </Widget>
<!-- Item --> <!-- Item -->
<Widget type="AutoSizedTextBox" skin="NormalText" position="12 48 0 24">
<Property key="Caption" value="#{sItem}"/>
</Widget>
<Widget type="HBox" position="12 48 400 59">
<Property key="Spacing" value="8"/>
<Widget type="AutoSizedTextBox" skin="NormalText">
<Property key="Caption" value="#{sItem}"/>
</Widget>
<Widget type="Button" skin="MW_Box" position="0 0 60 59" name="ItemBox"/>
<Widget type="Widget" position="0 0 8 0"/>
<Widget type="AutoSizedTextBox" skin="NormalText">
<Property key="Caption" value="#{sSoulGem}"/>
</Widget>
<Widget type="Button" skin="MW_Box" position="0 0 60 59" name="SoulBox"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="280 0 300 24"> <Widget type="TextBox" skin="NormalText" position="320 0 300 24">
<Property key="Caption" value="#{sEnchantmentMenu3}:"/> <Property key="Caption" value="#{sEnchantmentMenu3}:"/>
</Widget> </Widget>
<Widget type="TextBox" skin="SandText" position="280 0 258 24" name="Enchantment"> <Widget type="TextBox" skin="SandText" position="280 0 258 24" name="Enchantment">
@ -34,7 +47,7 @@
</Widget> </Widget>
<Widget type="TextBox" skin="NormalText" position="280 24 300 24"> <Widget type="TextBox" skin="NormalText" position="320 24 300 24">
<Property key="Caption" value="#{sCastCost}:"/> <Property key="Caption" value="#{sCastCost}:"/>
</Widget> </Widget>
<Widget type="TextBox" skin="SandText" position="280 24 258 24" name="CastCost"> <Widget type="TextBox" skin="SandText" position="280 24 258 24" name="CastCost">
@ -43,7 +56,7 @@
</Widget> </Widget>
<Widget type="TextBox" skin="NormalText" position="280 48 300 24"> <Widget type="TextBox" skin="NormalText" position="320 48 300 24">
<Property key="Caption" value="#{sCharges}"/> <Property key="Caption" value="#{sCharges}"/>
</Widget> </Widget>
<Widget type="TextBox" skin="SandText" position="280 48 258 24" name="Charge"> <Widget type="TextBox" skin="SandText" position="280 48 258 24" name="Charge">

@ -48,7 +48,8 @@
<Property key="Caption" value="#{sEffects}"/> <Property key="Caption" value="#{sEffects}"/>
</Widget> </Widget>
<Widget type="Widget" skin="MW_Box" position="226 76 316 269"> <Widget type="Widget" skin="MW_Box" position="226 76 316 269">
<Widget type="ScrollView" skin="MW_ScrollView" position="4 4 308 261" name="UsedEffects"> <Widget type="ScrollView" skin="MW_ScrollViewH" position="4 4 308 261" name="UsedEffects">
<Property key="CanvasAlign" value="Left Top"/>
</Widget> </Widget>
</Widget> </Widget>

Loading…
Cancel
Save