Skip to content

Commit 5337042

Browse files
committedJun 29, 2016
...
1 parent 2decc5a commit 5337042

File tree

6 files changed

+96
-63
lines changed

6 files changed

+96
-63
lines changed
 

‎Source/Compiler/InstanceLoaders/GuiInstanceLoader_List.cpp

+82
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,83 @@ GuiVirtualTreeViewInstanceLoader
161161
}
162162
};
163163

164+
/***********************************************************************
165+
GuiComboBoxInstanceLoader
166+
***********************************************************************/
167+
168+
#define BASE_TYPE GuiTemplateControlInstanceLoader<GuiComboBoxListControl, GuiComboBoxTemplate_StyleProvider, GuiComboBoxTemplate>
169+
class GuiComboBoxInstanceLoader : public BASE_TYPE
170+
{
171+
protected:
172+
GlobalStringKey _ListControl;
173+
174+
void AddAdditionalArguments(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List<WString>& errors, Ptr<WfNewClassExpression> createControl)override
175+
{
176+
vint indexListControl = arguments.Keys().IndexOf(_ListControl);
177+
if (indexListControl != -1)
178+
{
179+
createControl->arguments.Add(arguments.GetByIndex(indexListControl)[0].expression);
180+
}
181+
}
182+
public:
183+
GuiComboBoxInstanceLoader()
184+
:BASE_TYPE(L"presentation::controls::GuiComboBox", L"CreateComboBoxStyle")
185+
{
186+
_ListControl = GlobalStringKey::Get(L"ListControl");
187+
}
188+
189+
void GetConstructorParameters(const TypeInfo& typeInfo, collections::List<GlobalStringKey>& propertyNames)override
190+
{
191+
if (typeInfo.typeName == GetTypeName())
192+
{
193+
propertyNames.Add(_ListControl);
194+
propertyNames.Add(GlobalStringKey::_ItemTemplate);
195+
}
196+
BASE_TYPE::GetConstructorParameters(typeInfo, propertyNames);
197+
}
198+
199+
Ptr<GuiInstancePropertyInfo> GetPropertyType(const PropertyInfo& propertyInfo)override
200+
{
201+
if (propertyInfo.propertyName == _ListControl)
202+
{
203+
auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor<GuiSelectableListControl>());
204+
info->scope = GuiInstancePropertyInfo::Constructor;
205+
info->required = true;
206+
return info;
207+
}
208+
else if (propertyInfo.propertyName == GlobalStringKey::_ItemTemplate)
209+
{
210+
auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor<WString>());
211+
return info;
212+
}
213+
return BASE_TYPE::GetPropertyType(propertyInfo);
214+
}
215+
216+
Ptr<workflow::WfStatement> AssignParameters(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List<WString>& errors)override
217+
{
218+
auto block = MakePtr<WfBlockStatement>();
219+
220+
FOREACH_INDEXER(GlobalStringKey, prop, index, arguments.Keys())
221+
{
222+
const auto& values = arguments.GetByIndex(index);
223+
if (prop == GlobalStringKey::_ItemTemplate)
224+
{
225+
if (auto stat = CreateSetControlTemplateStyle<GuiControlTemplate_ItemStyleProvider, GuiControlTemplate>(variableName, arguments.GetByIndex(index)[0].expression, typeInfo, L"StyleProvider", errors))
226+
{
227+
block->statements.Add(stat);
228+
}
229+
}
230+
}
231+
232+
if (block->statements.Count() > 0)
233+
{
234+
return block;
235+
}
236+
return nullptr;
237+
}
238+
};
239+
#undef BASE_TYPE
240+
164241
/***********************************************************************
165242
GuiListViewInstanceLoader
166243
***********************************************************************/
@@ -1040,6 +1117,11 @@ Initialization
10401117

10411118
void LoadListControls(IGuiInstanceLoaderManager* manager)
10421119
{
1120+
manager->CreateVirtualType(
1121+
GlobalStringKey::Get(description::TypeInfo<GuiComboBoxListControl>::TypeName),
1122+
new GuiComboBoxInstanceLoader
1123+
);
1124+
10431125
manager->SetLoader(new GuiSelectableListControlInstanceLoader);
10441126
manager->SetLoader(new GuiVirtualTreeViewInstanceLoader);
10451127

‎Source/Compiler/InstanceLoaders/GuiInstanceLoader_Plugin.cpp

-49
Original file line numberDiff line numberDiff line change
@@ -145,54 +145,6 @@ GuiControlInstanceLoader
145145
}
146146
};
147147

148-
/***********************************************************************
149-
GuiComboBoxInstanceLoader
150-
***********************************************************************/
151-
152-
#define BASE_TYPE GuiTemplateControlInstanceLoader<GuiComboBoxListControl, GuiComboBoxTemplate_StyleProvider, GuiComboBoxTemplate>
153-
class GuiComboBoxInstanceLoader : public BASE_TYPE
154-
{
155-
protected:
156-
GlobalStringKey _ListControl;
157-
158-
void AddAdditionalArguments(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List<WString>& errors, Ptr<WfNewClassExpression> createControl)override
159-
{
160-
vint indexListControl = arguments.Keys().IndexOf(_ListControl);
161-
if (indexListControl != -1)
162-
{
163-
createControl->arguments.Add(arguments.GetByIndex(indexListControl)[0].expression);
164-
}
165-
}
166-
public:
167-
GuiComboBoxInstanceLoader()
168-
:BASE_TYPE(L"presentation::controls::GuiComboBox", L"CreateComboBoxStyle")
169-
{
170-
_ListControl = GlobalStringKey::Get(L"ListControl");
171-
}
172-
173-
void GetConstructorParameters(const TypeInfo& typeInfo, collections::List<GlobalStringKey>& propertyNames)override
174-
{
175-
if (typeInfo.typeName == GetTypeName())
176-
{
177-
propertyNames.Add(_ListControl);
178-
}
179-
BASE_TYPE::GetConstructorParameters(typeInfo, propertyNames);
180-
}
181-
182-
Ptr<GuiInstancePropertyInfo> GetPropertyType(const PropertyInfo& propertyInfo)override
183-
{
184-
if (propertyInfo.propertyName == _ListControl)
185-
{
186-
auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor<GuiSelectableListControl>());
187-
info->scope = GuiInstancePropertyInfo::Constructor;
188-
info->required = true;
189-
return info;
190-
}
191-
return BASE_TYPE::GetPropertyType(propertyInfo);
192-
}
193-
};
194-
#undef BASE_TYPE
195-
196148
#endif
197149

198150
/***********************************************************************
@@ -311,7 +263,6 @@ GuiPredefinedInstanceLoadersPlugin
311263
)
312264

313265
manager->SetLoader(new GuiControlInstanceLoader);
314-
ADD_VIRTUAL_TYPE_LOADER(GuiComboBoxListControl, GuiComboBoxInstanceLoader);
315266

316267
ADD_TEMPLATE_CONTROL ( GuiCustomControl, CreateCustomControlStyle, GuiControlTemplate );
317268
ADD_TEMPLATE_CONTROL ( GuiLabel, CreateLabelStyle, GuiLabelTemplate );

‎Source/Controls/Templates/GuiControlTemplateStyles.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -1076,27 +1076,27 @@ GuiTabTemplate_StyleProvider
10761076
}
10771077

10781078
/***********************************************************************
1079-
GuiControlItemTemplate_ItemStyleProvider
1079+
GuiControlTemplate_ItemStyleProvider
10801080
***********************************************************************/
10811081

1082-
GuiControlItemTemplate_ItemStyleProvider::GuiControlItemTemplate_ItemStyleProvider(Ptr<GuiTemplate::IFactory> _factory)
1082+
GuiControlTemplate_ItemStyleProvider::GuiControlTemplate_ItemStyleProvider(Ptr<GuiTemplate::IFactory> _factory)
10831083
:factory(_factory)
10841084
{
10851085
}
10861086

1087-
GuiControlItemTemplate_ItemStyleProvider::~GuiControlItemTemplate_ItemStyleProvider()
1087+
GuiControlTemplate_ItemStyleProvider::~GuiControlTemplate_ItemStyleProvider()
10881088
{
10891089
}
10901090

1091-
void GuiControlItemTemplate_ItemStyleProvider::AttachComboBox(controls::GuiComboBoxListControl* value)
1091+
void GuiControlTemplate_ItemStyleProvider::AttachComboBox(controls::GuiComboBoxListControl* value)
10921092
{
10931093
}
10941094

1095-
void GuiControlItemTemplate_ItemStyleProvider::DetachComboBox()
1095+
void GuiControlTemplate_ItemStyleProvider::DetachComboBox()
10961096
{
10971097
}
10981098

1099-
controls::GuiControl::IStyleController* GuiControlItemTemplate_ItemStyleProvider::CreateItemStyle(description::Value item)
1099+
controls::GuiControl::IStyleController* GuiControlTemplate_ItemStyleProvider::CreateItemStyle(description::Value item)
11001100
{
11011101
return new GuiControlTemplate_StyleProvider(factory, item);
11021102
}

‎Source/Controls/Templates/GuiControlTemplateStyles.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -460,17 +460,17 @@ Control Template
460460
Item Template (GuiControlTemplate)
461461
***********************************************************************/
462462

463-
class GuiControlItemTemplate_ItemStyleProvider
463+
class GuiControlTemplate_ItemStyleProvider
464464
: public Object
465465
, public virtual controls::GuiComboBoxListControl::IItemStyleProvider
466-
, public Description<GuiControlItemTemplate_ItemStyleProvider>
466+
, public Description<GuiControlTemplate_ItemStyleProvider>
467467
{
468468
protected:
469469
Ptr<GuiTemplate::IFactory> factory;
470470

471471
public:
472-
GuiControlItemTemplate_ItemStyleProvider(Ptr<GuiTemplate::IFactory> _factory);
473-
~GuiControlItemTemplate_ItemStyleProvider();
472+
GuiControlTemplate_ItemStyleProvider(Ptr<GuiTemplate::IFactory> _factory);
473+
~GuiControlTemplate_ItemStyleProvider();
474474

475475
void AttachComboBox(controls::GuiComboBoxListControl* value)override;
476476
void DetachComboBox()override;

‎Source/Reflection/TypeDescriptors/GuiReflectionTemplates.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -370,11 +370,11 @@ Type Declaration
370370
CLASS_MEMBER_CONSTRUCTOR(GuiTabTemplate_StyleProvider*(Ptr<GuiTemplate::IFactory>), { L"factory" })
371371
END_CLASS_MEMBER(GuiTabTemplate_StyleProvider)
372372

373-
BEGIN_CLASS_MEMBER(GuiControlItemTemplate_ItemStyleProvider)
373+
BEGIN_CLASS_MEMBER(GuiControlTemplate_ItemStyleProvider)
374374
CLASS_MEMBER_BASE(GuiComboBoxListControl::IItemStyleProvider)
375375

376-
CLASS_MEMBER_CONSTRUCTOR(GuiControlItemTemplate_ItemStyleProvider*(Ptr<GuiTemplate::IFactory>), { L"factory" })
377-
END_CLASS_MEMBER(GuiControlItemTemplate_ItemStyleProvider)
376+
CLASS_MEMBER_CONSTRUCTOR(GuiControlTemplate_ItemStyleProvider*(Ptr<GuiTemplate::IFactory>), { L"factory" })
377+
END_CLASS_MEMBER(GuiControlTemplate_ItemStyleProvider)
378378

379379
BEGIN_CLASS_MEMBER(GuiListItemTemplate_ItemStyleController)
380380
CLASS_MEMBER_BASE(GuiListControl::IItemStyleController)

‎Source/Reflection/TypeDescriptors/GuiReflectionTemplates.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ Type List
7575
F(presentation::templates::GuiListViewTemplate_StyleProvider)\
7676
F(presentation::templates::GuiTreeViewTemplate_StyleProvider)\
7777
F(presentation::templates::GuiTabTemplate_StyleProvider)\
78-
F(presentation::templates::GuiControlItemTemplate_ItemStyleProvider)\
78+
F(presentation::templates::GuiControlTemplate_ItemStyleProvider)\
7979
F(presentation::templates::GuiListItemTemplate_ItemStyleController)\
8080
F(presentation::templates::GuiListItemTemplate_ItemStyleProvider)\
8181
F(presentation::templates::GuiTreeItemTemplate_ItemStyleProvider)\

0 commit comments

Comments
 (0)
Please sign in to comment.