6
#include "Precompiled.h"
7
#include "SeparatorListControl.h"
8
#include "SkinManager.h"
17
SeparatorPresetScale = Binary<0>::value,
18
SeparatorPreset9Slice = Binary<1111>::value,
19
SeparatorPreset3SliceHorScale = Binary<1100>::value,
20
SeparatorPreset3SliceVertScale = Binary<11>::value
23
SeparatorListControl::SeparatorListControl(MyGUI::Widget* _parent) :
24
wraps::BaseLayout("SeparatorListControl.layout", _parent),
28
mTypeName = MyGUI::utility::toString((size_t)this);
30
assignWidget(mList, "List");
31
assignWidget(mPresets, "Presets");
35
mList->eventListChangePosition += MyGUI::newDelegate(this, &SeparatorListControl::notifyChangePosition);
36
mPresets->eventComboChangePosition += MyGUI::newDelegate(this, &SeparatorListControl::notifyComboChangePosition);
41
SeparatorListControl::~SeparatorListControl()
45
mPresets->eventComboChangePosition -= MyGUI::newDelegate(this, &SeparatorListControl::notifyComboChangePosition);
46
mList->eventListChangePosition -= MyGUI::newDelegate(this, &SeparatorListControl::notifyChangePosition);
49
void SeparatorListControl::notifyChangePosition(MyGUI::ListBox* _sender, size_t _index)
51
if (getCurrentSkin() != nullptr)
53
SeparatorItem* item = nullptr;
55
if (_index != MyGUI::ITEM_NONE)
56
item = *mList->getItemDataAt<SeparatorItem*>(_index);
58
getCurrentSkin()->getSeparators().setItemSelected(item);
62
void SeparatorListControl::updateSeparatorProperty(Property* _sender, const MyGUI::UString& _owner)
64
if (_sender->getName() == "Visible")
67
if (_owner != mTypeName)
71
void SeparatorListControl::updateSeparatorProperties()
76
void SeparatorListControl::updateSkinProperties()
81
void SeparatorListControl::updateList()
83
if (getCurrentSkin() != nullptr)
85
SeparatorItem* selectedItem = getCurrentSkin()->getSeparators().getItemSelected();
86
size_t selectedIndex = MyGUI::ITEM_NONE;
89
ItemHolder<SeparatorItem>::EnumeratorItem separators = getCurrentSkin()->getSeparators().getChildsEnumerator();
90
while (separators.next())
92
SeparatorItem* item = separators.current();
95
if (item->getPropertySet()->getPropertyValue("Visible") != "True")
96
name = replaceTags("ColourDisabled") + item->getName();
98
name = item->getName();
100
if (index < mList->getItemCount())
102
mList->setItemNameAt(index, name);
103
mList->setItemDataAt(index, item);
107
mList->addItem(name, item);
110
if (item == selectedItem)
111
selectedIndex = index;
116
while (index < mList->getItemCount())
117
mList->removeItemAt(mList->getItemCount() - 1);
119
mList->setIndexSelected(selectedIndex);
123
void SeparatorListControl::fillPresets()
125
mPresets->removeAllItems();
126
mPresets->addItem(replaceTags("PresetRegionOneScale"), SeparatorPresetScale);
127
mPresets->addItem(replaceTags("PresetRegion9Grid"), SeparatorPreset9Slice);
128
mPresets->addItem(replaceTags("PresetRegion3Hor"), SeparatorPreset3SliceHorScale);
129
mPresets->addItem(replaceTags("PresetRegion3Vert"), SeparatorPreset3SliceVertScale);
131
mPresets->beginToItemFirst();
134
void SeparatorListControl::notifyComboChangePosition(MyGUI::ComboBox* _sender, size_t _index)
136
if (getCurrentSkin() == nullptr)
139
if (_index == MyGUI::ITEM_NONE)
142
SeparatorPreset preset = *_sender->getItemDataAt<SeparatorPreset>(_index);
145
ItemHolder<SeparatorItem>::EnumeratorItem separators = getCurrentSkin()->getSeparators().getChildsEnumerator();
146
while (separators.next())
148
SeparatorItem* item = separators.current();
149
MyGUI::UString value = ((preset & (1 << index)) != 0) ? "True" : "False";
150
item->getPropertySet()->setPropertyValue("Visible", value, mTypeName);
155
// для обновления пропертей
156
getCurrentSkin()->getSeparators().setItemSelected(nullptr);
161
void SeparatorListControl::updatePreset()
163
mPresets->setEnabled(getCurrentSkin() != nullptr);
165
if (getCurrentSkin() != nullptr)
167
int currentPreset = 0;
170
ItemHolder<SeparatorItem>::EnumeratorItem separators = getCurrentSkin()->getSeparators().getChildsEnumerator();
171
while (separators.next())
173
SeparatorItem* item = separators.current();
174
bool visible = item->getPropertySet()->getPropertyValue("Visible") == "True";
176
currentPreset |= (1 << bitIndex);
181
size_t indexSelected = MyGUI::ITEM_NONE;
183
size_t count = mPresets->getItemCount();
184
for (size_t index = 0; index < count; ++index)
186
SeparatorPreset preset = *mPresets->getItemDataAt<SeparatorPreset>(index);
187
if (preset == currentPreset)
189
indexSelected = index;
194
mPresets->setIndexSelected(indexSelected);
196
mPresets->setEnabled(true);
200
mPresets->setEnabled(false);
7
#include "Precompiled.h"
8
#include "SeparatorListControl.h"
9
#include "FactoryManager.h"
10
#include "CommandManager.h"
11
#include "DialogManager.h"
12
#include "MessageBoxManager.h"
13
#include "DataManager.h"
14
#include "ActionManager.h"
15
#include "ActionCreateData.h"
16
#include "ActionCloneData.h"
17
#include "ActionDestroyData.h"
18
#include "ActionRenameData.h"
19
#include "ActionChangePositionData.h"
20
#include "PropertyUtility.h"
21
#include "DataUtility.h"
26
FACTORY_ITEM_ATTRIBUTE(SeparatorListControl)
28
SeparatorListControl::SeparatorListControl() :
29
mListBoxControl(nullptr)
33
SeparatorListControl::~SeparatorListControl()
37
void SeparatorListControl::OnInitialise(Control* _parent, MyGUI::Widget* _place, const std::string& _layoutName)
39
Control::OnInitialise(_parent, _place, _layoutName);
41
mListBoxControl = findControl<ListBoxDataControl>();
43
if (mListBoxControl != nullptr)
45
mListBoxControl->setEnableChangePosition(false);
46
mListBoxControl->setReplaceColourName("ColourDisabled");
48
mListBoxControl->addPropertyNameEnabled("Visible");
50
mListBoxControl->setDataInfo("Skin", "Separator", "Name");