YSTest: YSLib::UI::Menu类 参考

YSTest PreAlpha_b500_20140530 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 类列表
- 类索引
- 类继承关系
- 类成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
Public 类型 | Public 成员函数 | Public 属性 | Protected 成员函数 | Protected 属性 | Private 属性 | 友元 | 所有成员列表
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 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

## 详细描述

文本菜单。

自从
  build 252

在文件 menu.h 第 50 行定义.

## 成员类型定义说明

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

菜单标识类型。

在文件 menu.h 第 55 行定义.

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

子菜单映射表类型。

在文件 menu.h 第 56 行定义.

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

子菜单映射表项目类型。

在文件 menu.h 第 57 行定义.

## 构造及析构函数说明

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

explicit

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

自从
  build 327

在文件 menu.cpp 第 42 行定义.

参考 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.cpp 第 153 行定义.

参考 vDisabled.

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

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

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

override

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

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

在文件 menu.cpp 第 162 行定义.

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

绘制菜单项。

自从
  build 346

在文件 menu.cpp 第 209 行定义.

参考 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 | ( |  | ) |

隐藏菜单。

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

在文件 menu.cpp 第 198 行定义.

参考 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.cpp 第 137 行定义.

参考 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.cpp 第 119 行定义.

参考 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.cpp 第 145 行定义.

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

函数调用图:

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

按指定 Z 顺序显示菜单。

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

返回
  菜单宿主指针非空。

在文件 menu.cpp 第 168 行定义.

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

函数调用图:

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

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

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

返回
  菜单宿主指针非空且索引指定的子菜单存在时为子菜单指针，否则为空指针。

在文件 menu.cpp 第 179 行定义.

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

参考自 Menu().

函数调用图:

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

## 友元及相关函数文档

friend class MenuHost

friend

在文件 menu.h 第 52 行定义.

## 类成员变量说明

ID YSLib::UI::Menu::id

private

菜单标识。

在文件 menu.h 第 60 行定义.

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

SubMap YSLib::UI::Menu::mSubMenus

protected

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

在文件 menu.h 第 65 行定义.

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

Menu YSLib::UI::Menu::ParentPtr

在文件 menu.h 第 112 行定义.

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

protected

宿主指针。

在文件 menu.h 第 63 行定义.

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

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

protected

父菜单指针。

在文件 menu.h 第 64 行定义.

参考自 Menu().

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

mutableprotected

未启用菜单项。

在文件 menu.h 第 66 行定义.

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

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

- menu.h
- menu.cpp