#include "GuiGraphicsHost.h"
#include "../Controls/GuiWindowControls.h"
#include "../Controls/GuiLabelControls.h"
#include "../Controls/Templates/GuiThemeStyleFactory.h"
namespace
{
namespace
{
namespace
{
using
namespace
collections
;
using
namespace
controls
;
using
namespace
theme
;
const
wchar_t
*
const
::
=
L"vl::presentation::compositions::IGuiAltAction"
;
const
wchar_t
*
const
::
=
L"vl::presentation::compositions::IGuiAltActionContainer"
;
const
wchar_t
*
const
::
=
L"vl::presentation::compositions::IGuiAltActionHost"
;
bool
::
(
const
&
)
{
for
(
=
0
;
i
<
.
();
i
++)
{
auto
=
i
];
if
((
'A'
<=
c
&&
c
<=
'Z'
) || (
'0'
<=
c
&&
c
<=
'9'
))
{
continue
;
}
return
false
;
}
return
true
;
}
void
::
CollectAltActionsFromControl
(
controls
::
*
,
bool
,
collections
::
<
,
*>&
)
{
<
*>
;
controls
.
(
);
=
0
;
while
(
index
<
controls
.
())
{
auto
=
controls
index
++];
if
(
current
!=
||
)
{
if
(
auto
=
current
->
<
>())
{
=
container
->
();
for
(
=
0
;
i
<
count
;
i
++)
{
auto
=
container
->
(
i
);
.
(
action
->
(),
action
);
}
continue
;
}
else
if
(
auto
=
current
->
<
>())
{
if
(
action
->
())
{
if
(
action
->
())
{
.
(
action
->
(),
action
);
continue
;
}
}
}
}
=
current
->
();
for
(
=
0
;
i
<
count
;
i
++)
{
controls
.
(
current
->
(
i
));
}
}
}
void
::
(
*
)
{
=
;
}
void
::
(
controls
::
*
,
bool
)
{
=
;
=
;
}
*
::
()
{
CHECK_ERROR(composition, L"GuiAltActionHostBase::GetAltComposition()#Need to call SetAltComposition.");
do
{
if
(!(
))
throw
(
L"GuiAltActionHostBase::GetAltComposition()#Need to call SetAltComposition."
);}
while
(
0
);
return
;
}
*
::
()
{
return
;
}
void
::
(
*
)
{
=
;
}
void
::
()
{
=
nullptr
;
}
void
::
(
collections
::
<
,
*>&
)
{
CHECK_ERROR(control, L"GuiAltActionHostBase::CollectAltActions(Group<WString, IGuiAltAction*>&)#Need to call SetAltControl.");
do
{
if
(!(
))
throw
(
L"GuiAltActionHostBase::CollectAltActions(Group<WString, IGuiAltAction*>&)#Need to call SetAltControl."
);}
while
(
0
);
CollectAltActionsFromControl
(
,
,
);
}
void
::
(
*
)
{
();
<
,
*>
;
->
(
actions
);
if
(
actions
.
() ==
0
)
{
();
return
;
}
->
(
);
=
;
(
actions
);
}
void
::
()
{
if
(
)
{
();
auto
=
->
();
->
();
=
previousHost
;
if
(
)
{
<
,
*>
;
->
(
actions
);
(
actions
);
}
}
}
bool
::
(
wchar_t
)
{
;
=
.
().
(
);
if
(
index
== -
1
)
{
if
(
() ==
0
)
{
.
(
.
() -
1
);
();
}
}
else
{
auto
=
.
()
index
];
if
(
action
->
())
{
(
action
->
());
}
else
{
();
}
action
->
();
return
true
;
}
return
false
;
}
void
::
()
{
if
(
.
() >=
1
)
{
.
(
.
() -
1
);
}
();
}
void
::
(
const
collections
::
<
,
*>&
)
{
if
(
)
{
=
.
();
for
(
=
0
;
i
<
count
;
i
++)
{
=
.
()
i
];
const
auto
&
=
.
(
i
);
=
0
;
if
(
values
.
() ==
1
&&
key
.
() >
0
)
{
numberLength
=
0
;
}
else
if
(
values
.
() <=
10
)
{
numberLength
=
1
;
}
else
if
(
values
.
() <=
100
)
{
numberLength
=
2
;
}
else
if
(
values
.
() <=
1000
)
{
numberLength
=
3
;
}
else
{
continue
;
}
FOREACH_INDEXER(IGuiAltAction*, action, index, values)
if
(
bool
=
true
)
for
(
const
::
vl
::
collections
::
<
*>&
= ::
vl
::
collections
::
(
values
);
__scope_variable_flag__
;
__scope_variable_flag__
=
false
)
if
(
bool
=
true
)
for
(
=
0
;
__scope_variable_flag__
;
__scope_variable_flag__
=
false
)
for
(
*
;
__foreach_iterator__
.
(
action
);
index
++)
{
=
.
()
i
];
if
(
numberLength
>
0
)
{
=
(
index
);
while
(
number
.
() <
numberLength
)
{
number
=
L"0"
+
number
;
}
key
number
;
}
.
(
key
,
action
);
}
}
count
=
.
();
auto
=
dynamic_cast
<
*>(
->
()->
());
for
(
=
0
;
i
<
count
;
i
++)
{
auto
=
.
()
i
];
auto
=
.
()
i
]->
();
auto
=
new
(
theme
::
::
);
if
(
auto
=
window
->
TypedControlTemplateObject
(
true
)->
())
{
label
->
(
labelStyle
);
}
label
->
(
key
);
composition
->
(
label
->
());
.
(
key
,
label
);
}
();
}
}
::
()
{
=
.
();
=
0
;
for
(
=
0
;
i
<
count
;
i
++)
{
auto
=
.
()
i
];
auto
=
.
()
i
];
if
(
key
.
() >=
.
() &&
key
.
(
.
()) ==
)
{
value
->
(
true
);
if
(
.
() <=
key
.
())
{
value
->
(
key
.
(
.
(),
L"["
)
.Insert(
.
() +
2
,
L"]"
)
);
}
else
{
value
->
(
key
);
}
visibles
++;
}
else
{
value
->
(
false
);
}
}
return
visibles
;
}
void
::
()
{
FOREACH(GuiControl*, title, currentActiveAltTitles.Values())
if
(
bool
=
true
)
for
(
const
::
vl
::
collections
::
<
*>&
= ::
vl
::
collections
::
(
.
());
__scope_variable_flag__
;
__scope_variable_flag__
=
false
)
for
(
*
;
__foreach_iterator__
.
(
title
);)
{
(
title
);
}
.
();
.
();
=
L""
;
}
void
::
()
{
();
while
(
)
{
->
();
=
->
();
}
}
::
(
controls
::
*
)
:controlHost(
)
{
}
::
()
{
}
bool
::
(
const
&
)
{
if
(!
.
&& !
.
&&
)
{
if
(
.
::
)
{
();
return
true
;
}
else
if
(
.
::
)
{
();
}
else
if
(
::
.
&&
.
<=
::
)
{
if
(
((
wchar_t
)(
L'0'
+ ((
)
.
- (
)
::
))))
{
=
.
;
return
true
;
}
}
else
if
((
::
.
&&
.
<=
::
) || (
::
.
&&
.
<=
::
))
{
if
(
((
wchar_t
)
.
))
{
=
.
;
return
true
;
}
}
}
if
(
)
{
return
true
;
}
return
false
;
}
bool
::
(
const
&
)
{
if
(!
.
&& !
.
&&
.
==
)
{
=
::
;
return
true
;
}
return
false
;
}
bool
::
(
const
&
)
{
if
(!
.
&& !
.
&&
.
==
::
&& !
)
{
if
(
auto
=
->
<
>())
{
if
(!
altHost
->
())
{
(
altHost
);
}
}
}
if
(
)
{
return
true
;
}
return
false
;
}
bool
::
(
const
&
)
{
return
false
;
}
bool
::
(
const
&
)
{
if
(
||
!=
::
)
{
return
true
;
}
return
false
;
}
}
}
}