YSTest  PreAlpha_b500_20140530
The YSLib Test Project
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
YSLib::UI::Menu类 参考

文本菜单。 更多...

#include <menu.h>

类 YSLib::UI::Menu 继承关系图:
YSLib::UI::Menu 的协作图:

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 ImplRetmSubMenus (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 顺序显示菜单。 更多...
 
MenuShowSub (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 属性

MenuHostpHost
 宿主指针。 更多...
 
MenupParent
 父菜单指针。 更多...
 
SubMap mSubMenus
 子菜单映射表:存储非空子菜单指针。 更多...
 
vector< bool > vDisabled
 未启用菜单项。 更多...
 

Private 属性

ID id
 菜单标识。 更多...
 

友元

class MenuHost
 

详细描述

文本菜单。

自从
build 252

在文件 menu.h50 行定义.

成员类型定义说明

using YSLib::UI::Menu::ID = size_t

菜单标识类型。

在文件 menu.h55 行定义.

using YSLib::UI::Menu::SubMap = map<IndexType, Menu*>

子菜单映射表类型。

在文件 menu.h56 行定义.

using YSLib::UI::Menu::ValueType = SubMap::value_type

子菜单映射表项目类型。

在文件 menu.h57 行定义.

构造及析构函数说明

YSLib::UI::Menu::Menu ( const Rect r = {},
const shared_ptr< ListType > &  h = {},
ID  id = 0 
)
explicit

构造:使用指定边界、文本列表和菜单标识。

自从
build 327

在文件 menu.cpp42 行定义.

参考 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.

函数调用图:

成员函数说明

void YSLib::UI::Menu::AdjustSize ( ) const
protected

调整 vDisabled 大小。

后置条件
vDisabled.size() == GetList().size()

在文件 menu.cpp153 行定义.

参考 vDisabled.

参考自 IsItemEnabled() , 以及 SetItemEnabled().

这是这个函数的调用关系图:

bool YSLib::UI::Menu::CheckConfirmed ( ListType::size_type  ) const
override

检查列表中的指定项是否可用。

注解
当且仅当可用时响应 Confirmed 事件。

在文件 menu.cpp162 行定义.

参考 YSLib::UI::CheckConfirmed() , 以及 IsItemEnabled().

函数调用图:

YSLib::UI::Menu::DefDelMoveCtor ( Menu  )

禁止转移构造。

自从
build 379
待办事项:
实现转移操作。

访问索引指定的子菜单。

异常
std::out_of_range异常中立:由 at 抛出。
YSLib::UI::Menu::DefGetter ( const ynothrow  ,
ID  ,
ID  ,
id   
) const
void YSLib::UI::Menu::DrawItem ( const Graphics g,
const Rect mask,
const Rect unit,
ListType::size_type  i 
)
overrideprotected
bool YSLib::UI::Menu::Hide ( )

隐藏菜单。

注解
菜单宿主指针为空时忽略。

在文件 menu.cpp198 行定义.

参考 YSLib::UI::MenuHost::Hide() , 以及 pHost.

参考自 Menu().

函数调用图:

这是这个函数的调用关系图:

bool YSLib::UI::Menu::IsItemEnabled ( ListType::size_type  idx) const

判断菜单项是否有效。

前置条件
断言: IsInInterval(idx, GetList().size())
后置条件
vDisabled.size() == GetList().size()

在文件 menu.cpp137 行定义.

参考 AdjustSize(), YSLib::IsInInterval(), vDisabled , 以及 YAssert.

参考自 CheckConfirmed() , 以及 DrawItem().

函数调用图:

这是这个函数的调用关系图:

size_t idx ImplRet* YSLib::UI::Menu::mSubMenus ( idx  ) const
bool YSLib::UI::Menu::operator-= ( IndexType  idx)

向菜单组移除指定子菜单索引项。

注解
若索引越界或不存在则忽略。

在文件 menu.cpp119 行定义.

参考 YSLib::IsInInterval() , 以及 mSubMenus.

函数调用图:

void YSLib::UI::Menu::SetItemEnabled ( ListType::size_type  idx,
bool  = true 
)

设置 idx 指定的菜单项的可用性。

前置条件
断言: IsInInterval(idx, GetList().size())
后置条件
vDisabled.size() == GetList().size() ; IsItemEnabled(idx) 。

在文件 menu.cpp145 行定义.

参考 AdjustSize(), YSLib::IsInInterval(), vDisabled , 以及 YAssert.

函数调用图:

bool YSLib::UI::Menu::Show ( ZOrderType  z = DefaultMenuZOrder)

按指定 Z 顺序显示菜单。

注解
菜单宿主指针为空时忽略。
返回
菜单宿主指针非空。

在文件 menu.cpp168 行定义.

参考 pHost , 以及 YSLib::UI::MenuHost::Show().

函数调用图:

Menu * YSLib::UI::Menu::ShowSub ( IndexType  idx,
ZOrderType  z = DefaultMenuZOrder 
)

按指定 Z 顺序显示索引指定的子菜单。

注解
菜单宿主指针为空时忽略。
返回
菜单宿主指针非空且索引指定的子菜单存在时为子菜单指针,否则为空指针。

在文件 menu.cpp179 行定义.

参考 YSLib::UI::LocateMenu(), mSubMenus , 以及 pHost.

参考自 Menu().

函数调用图:

这是这个函数的调用关系图:

友元及相关函数文档

friend class MenuHost
friend

在文件 menu.h52 行定义.

类成员变量说明

ID YSLib::UI::Menu::id
private

菜单标识。

在文件 menu.h60 行定义.

参考自 YSLib::UI::MenuHost::operator+=().

SubMap YSLib::UI::Menu::mSubMenus
protected

子菜单映射表:存储非空子菜单指针。

在文件 menu.h65 行定义.

参考自 DrawItem(), operator-=() , 以及 ShowSub().

Menu YSLib::UI::Menu::ParentPtr

在文件 menu.h112 行定义.

MenuHost* YSLib::UI::Menu::pHost
protected

宿主指针。

在文件 menu.h63 行定义.

参考自 Hide(), Menu(), YSLib::UI::MenuHost::operator+=(), Show() , 以及 ShowSub().

Menu* YSLib::UI::Menu::pParent
protected

父菜单指针。

在文件 menu.h64 行定义.

参考自 Menu().

vector<bool> YSLib::UI::Menu::vDisabled
mutableprotected

未启用菜单项。

在文件 menu.h66 行定义.

参考自 AdjustSize(), IsItemEnabled() , 以及 SetItemEnabled().


该类的文档由以下文件生成: