YSTest
PreAlpha_b500_20140530
The YSLib Test Project
|
文本菜单。 更多...
#include <menu.h>
Public 类型 | |
using | ID = size_t |
菜单标识类型。 更多... | |
using | SubMap = map< IndexType, Menu * > |
子菜单映射表类型。 更多... | |
using | ValueType = SubMap::value_type |
子菜单映射表项目类型。 更多... | |
Public 成员函数 | |
Menu (const Rect &={}, const shared_ptr< ListType > &={}, ID=0) | |
构造:使用指定边界、文本列表和菜单标识。 更多... | |
DefDelMoveCtor (Menu) PDefHOp(Menu & | |
禁止转移构造。 更多... | |
size_t idx ImplRet * | mSubMenus (idx)) void operator+=(const ValueType & |
bool | operator-= (IndexType) |
向菜单组移除指定子菜单索引项。 更多... | |
bool | IsItemEnabled (ListType::size_type) const |
判断菜单项是否有效。 更多... | |
DefGetter (const ynothrow, ID, ID, id) DefGetter(const ynothrow | |
Menu pParent void | SetItemEnabled (ListType::size_type idx, bool=true) |
设置 idx 指定的菜单项的可用性。 更多... | |
bool | CheckConfirmed (ListType::size_type) const override |
检查列表中的指定项是否可用。 更多... | |
bool | Show (ZOrderType=DefaultMenuZOrder) |
按指定 Z 顺序显示菜单。 更多... | |
Menu * | ShowSub (IndexType, ZOrderType=DefaultMenuZOrder) |
按指定 Z 顺序显示索引指定的子菜单。 更多... | |
bool | Hide () |
隐藏菜单。 更多... | |
Public 属性 | |
Menu | ParentPtr |
Protected 成员函数 | |
void | AdjustSize () const |
调整 vDisabled 大小。 更多... | |
void | DrawItem (const Graphics &, const Rect &mask, const Rect &, ListType::size_type) override |
绘制菜单项。 更多... | |
Protected 属性 | |
MenuHost * | pHost |
宿主指针。 更多... | |
Menu * | pParent |
父菜单指针。 更多... | |
SubMap | mSubMenus |
子菜单映射表:存储非空子菜单指针。 更多... | |
vector< bool > | vDisabled |
未启用菜单项。 更多... | |
Private 属性 | |
ID | id |
菜单标识。 更多... | |
友元 | |
class | MenuHost |
using YSLib::UI::Menu::ID = size_t |
using YSLib::UI::Menu::SubMap = map<IndexType, Menu*> |
using YSLib::UI::Menu::ValueType = SubMap::value_type |
|
explicit |
构造:使用指定边界、文本列表和菜单标识。
参考 YSLib::UI::Contains, YSLib::UI::CyclicTraverse, YSLib::UI::FetchGUIState(), Hide(), YSLib::UI::MenuHost::HideUnrelated(), YSLib::UI::Left, YSLib::UI::Styles::Panel, pHost, pParent, YSLib::UI::Right, YSLib::UI::MenuHost::Roots, ShowSub() , 以及 yunseq.
|
protected |
调整 vDisabled 大小。
vDisabled.size() == GetList().size()
。 参考 vDisabled.
参考自 IsItemEnabled() , 以及 SetItemEnabled().
|
override |
检查列表中的指定项是否可用。
参考 YSLib::UI::CheckConfirmed() , 以及 IsItemEnabled().
YSLib::UI::Menu::DefDelMoveCtor | ( | Menu | ) |
|
overrideprotected |
绘制菜单项。
参考 YSLib::UI::GUIState::Colors, YSLib::Drawing::DrawArrow(), YSLib::UI::DrawItem(), ystdex::exists(), YSLib::UI::FetchGUIState(), YSLib::UI::Styles::GrayText, YSLib::Drawing::Size::Height, IsItemEnabled(), mSubMenus, YSLib::Drawing::RDeg0, YSLib::Drawing::Size::Width, YSLib::Drawing::GBinaryGroup< _type >::X, YSLib::Drawing::GBinaryGroup< _type >::Y , 以及 YB_LIKELY.
bool YSLib::UI::Menu::Hide | ( | ) |
bool YSLib::UI::Menu::IsItemEnabled | ( | ListType::size_type | idx | ) | const |
判断菜单项是否有效。
IsInInterval(idx, GetList().size())
。 vDisabled.size() == GetList().size()
。 参考 AdjustSize(), YSLib::IsInInterval(), vDisabled , 以及 YAssert.
参考自 CheckConfirmed() , 以及 DrawItem().
size_t idx ImplRet* YSLib::UI::Menu::mSubMenus | ( | idx | ) | const |
bool YSLib::UI::Menu::operator-= | ( | IndexType | idx | ) |
void YSLib::UI::Menu::SetItemEnabled | ( | ListType::size_type | idx, |
bool | = true |
||
) |
设置 idx 指定的菜单项的可用性。
IsInInterval(idx, GetList().size())
。 vDisabled.size() == GetList().size()
; IsItemEnabled(idx) 。 参考 AdjustSize(), YSLib::IsInInterval(), vDisabled , 以及 YAssert.
bool YSLib::UI::Menu::Show | ( | ZOrderType | z = DefaultMenuZOrder | ) |
Menu * YSLib::UI::Menu::ShowSub | ( | IndexType | idx, |
ZOrderType | z = DefaultMenuZOrder |
||
) |
|
private |
|
protected |
|
protected |
|
mutableprotected |