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

YSTest PreAlpha_b400_20130424 The YSLib Test Project

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

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

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
Public 类型 | Public 成员函数 | Protected 成员函数 | Protected 属性 | Private 属性 | 友元 | 所有成员列表
YSLib::UI::Menu类 参考

文本菜单。 更多...

`#include <menu.h>`

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

## Public 类型

typedef size_t | ID
| 菜单标识类型。
typedef map< IndexType, Menu * > | SubMap
| 子菜单映射表类型。
typedef SubMap::value_type | ValueType
| 子菜单映射表项目类型。
Public 类型 继承自 YSLib::UI::TextList
typedef GSequenceViewer< ListType > | ViewerType
| 视图类型。
typedef GValueEventArgs< bool > | ViewArgs
| 视图参数类型。
typedef GHEvent< void(ViewArgs)> | HViewEvent
| 视图事件委托类型。
typedef String | ItemType
| 项目类型：字符串。
typedef vector< ItemType > | ListType
| 列表类型。
typedef ListType::size_type | IndexType
| 索引类型。

## Public 成员函数

| Menu (const Rect &={}, const shared_ptr< ListType > &={}, ID=0)
| 构造：使用指定边界、文本列表和菜单标识。
| Menu (Menu &&)=delete
| 禁止转移构造。
Menu & | operator[] (size_t idx)

访问索引指定的子菜单。

异常

  std::out_of_range | 异常中立：指定子菜单越界或不存在：由 at 抛出。

void | operator+= (const ValueType &)
| 向子菜单组添加关联索引和指针指定的菜单。
bool | operator-= (IndexType)
| 向菜单组移除指定子菜单索引项。
bool | IsItemEnabled (ListType::size_type) const
| 判断菜单项是否有效。
ID | GetID () const ynothrow
Menu * | GetParentPtr () const ynothrow
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 成员函数 继承自 YSLib::UI::TextList
| TextList (const Rect &={}, const shared_ptr< ListType > &={}, pair< Color, Color >=FetchGUIState().Colors.GetPair(Styles::Highlight, Styles::HighlightText))
| 构造：使用指定边界、文本列表和高亮背景色/文本色对。
| TextList (TextList &&)=default
bool | IsSelected () const ynothrow
bool | Contains (ListType::size_type i)
GEvent< void(HViewEvent::EventArgsType)> & | GetViewChanged () ynothrow
| 视图变更事件。
GEvent< void(HIndexEvent::EventArgsType)> & | GetSelected () ynothrow
| 项目选择状态变更事件。
GEvent< void(HIndexEvent::EventArgsType)> & | GetConfirmed () ynothrow
| 项目选中确定事件。
ListType::size_type | GetHeadIndex () const ynothrow
ListType::size_type | GetSelectedIndex () const ynothrow
SDst | GetFullViewHeight () const
| 取完整视图高。
SDst | GetViewPosition () const
| 取视图顶端竖直位置。
void | SetList (const shared_ptr< ListType > &)
| 设置文本列表。
void | SetSelected (ListType::size_type)
| 按指定项目索引设置选中项目。
void | SetSelected (SPos, SPos)
| 按接触点设置选中项目。
void | SetSelected (const Point &pt)
| 按接触点设置选中项目。
void | AdjustViewForContent ()
| 按内容大小依次调整视图中选中和首个项目的索引，然后按需调整竖直偏移量。
void | AdjustViewLength ()
| 调整视图长度。
ListType::size_type | CheckPoint (SPos, SPos)
| 检查点（相对于所在缓冲区的控件坐标）是否在选择范围内，
ListType::size_type | CheckPoint (const Point &pt)
| 检查点（相对于所在缓冲区的控件坐标）是否在选择范围内，
void | ClearSelected ()
void | LocateViewPosition (SDst)
| 定位视图顶端至指定竖直位置。
void | Refresh (PaintEventArgs &&) override
| 刷新：按指定参数绘制界面并更新状态。
void | ResetView ()
| 复位视图。
void | SelectFirst ()
| 选择第一个项目。
void | SelectLast ()
| 选择最后一个项目。
Public 成员函数 继承自 YSLib::UI::Control
| Control (const Rect &={})
| 构造：使用指定边界，默认背景（同 Widget 默认构造）。
| Control (const Rect &, NoBackgroundTag)
| 构造：使用指定边界，无背景。
| Control (const Control &)
| 复制构造：除容器为空外深复制。
| Control (Control &&)=default
virtual IWidget * | GetBoundControlPtr (const KeyInput &)
| 取按键-指针设备输入默认事件组映射。
void | OnTouch_Close (TouchEventArgs &&)
| 处理屏幕事件：关闭显示。
Public 成员函数 继承自 YSLib::UI::Widget
| Widget (const Rect &={}, Color=Drawing::ColorSpace::White, Color=Drawing::ColorSpace::Black)
template<typename _tView , typename _tRenderer , typename _tController >
| Widget (_tView &&pView_=make_unique< View >(), _tRenderer &&pRenderer_=make_unique< Renderer >(), _tController &&pController_={})
| 构造：使用视图指针、渲染器指针和控制器指针，无背景。
| Widget (const Widget &)
| 复制构造：除容器指针为空外深复制。
| Widget (Widget &&)=default
virtual | ~Widget ()
| 析构：虚实现。
SPos | GetX () const ynothrow
SPos | GetY () const ynothrow
SDst | GetWidth () const ynothrow
SDst | GetHeight () const ynothrow
virtual Renderer & | GetRenderer () const ynothrow
| 取渲染器。
virtual View & | GetView () const ynothrow
| 取部件视图。
virtual AController & | GetController () const override
| 取控制器。
virtual WidgetRange | GetChildren () override
void | SetX (SDst _tempArgName)
void | SetY (SDst _tempArgName)
void | SetWidth (SDst _tempArgName)
void | SetHeight (SDst _tempArgName)
void | SetRenderer (unique_ptr< Renderer > &&)
| 设置渲染器为指定指针指向的对象，同时更新渲染器状态。
void | SetView (unique_ptr< View > &&)
| 设置渲染器为指定指针指向的对象，同时更新渲染器状态。
Public 成员函数 继承自 YSLib::UI::IWidget
virtual | ~IWidget ()

## Protected 成员函数

void | AdjustSize () const
| 调整 vDisabled 大小。
void | DrawItem (const Graphics &, const Rect &mask, const Rect &, ListType::size_type) override
| 绘制菜单项。
Protected 成员函数 继承自 YSLib::UI::TextList
void | InvalidateSelected (ListType::difference_type offset, ListType::size_type diff=1)
| 无效化偏移量对应的列表项区域。
void | InvalidateSelected2 (ListType::difference_type, ListType::difference_type)
| 无效化偏移量对应的列表项区域。
virtual void | DrawItemBackground (const PaintContext &, const Rect &r)
| 描画列表项背景。
virtual void | DrawItems (const PaintContext &)
| 绘制列表。
Protected 成员函数 继承自 YSLib::UI::MTextList
const ListType & | GetList () const ynothrow
| 取文本列表。
ListType & | GetListRef () ynothrow
| 取文本列表引用。
ItemType * | GetItemPtr (const IndexType &)
| 取指定项目索引的项目指针。
const ItemType * | GetItemPtr (const IndexType &) const
| 取指定项目索引的项目 const 指针。
SDst | GetItemHeight () const ynothrow
| 取项目行高。
SDst | GetMaxTextWidth () const
| 取文本列表中的最大文本宽度。
void | SetList (const shared_ptr< ListType > &h)
| 设置文本列表。
IndexType | Find (const ItemType &) const
| 查找项。
void | RefreshTextState ()
| 刷新文本状态。
| MTextList (const shared_ptr< ListType > &={}, const Drawing::Font &={})
| 构造：使用文本列表句柄和字体指针。
| MTextList (MTextList &&)=default

## Protected 属性

MenuHost * | pHost
| 宿主指针。
Menu * | pParent
| 父菜单指针。
SubMap | mSubMenus
| 子菜单映射表：存储非空子菜单指针。
vector< bool > | vDisabled
| 未启用菜单项。

## Private 属性

ID | id
| 菜单标识。

## 友元

class | MenuHost

## 额外继承的成员函数

Public 属性 继承自 YSLib::UI::TextList
Color | HilightBackColor
| 高亮背景色。
Color | HilightTextColor
| 高亮文本色。
bool | CyclicTraverse
| 循环选择遍历。
Protected 类型 继承自 YSLib::UI::MTextList
typedef String | ItemType
| 项目类型：字符串。
typedef vector< ItemType > | ListType
| 列表类型。
typedef ListType::size_type | IndexType
| 索引类型。

## 详细描述

文本菜单。

自从
  build 252

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

## 成员类型定义说明

typedef size_t YSLib::UI::Menu::ID

菜单标识类型。

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

typedef map<IndexType, Menu*> YSLib::UI::Menu::SubMap

子菜单映射表类型。

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

typedef SubMap::value_type YSLib::UI::Menu::ValueType

子菜单映射表项目类型。

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

## 构造及析构函数说明

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

explicit

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

自从
  build 327

YSLib::UI::Menu::Menu | ( | Menu && |  | ) |

delete

禁止转移构造。

自从
  build 379

待办事项:
  实现转移操作。

## 成员函数说明

void Menu::AdjustSize | ( |  | ) | const

protected

调整 vDisabled 大小。

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

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

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

overridevirtual

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

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

重载 YSLib::UI::TextList .

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

void Menu::DrawItem | ( | const Graphics & | g,
|  | const Rect & | mask,
|  | const Rect & | unit,
|  | ListType::size_type | i
| ) |  |

overrideprotectedvirtual

绘制菜单项。

自从
  build 346

重载 YSLib::UI::TextList .

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

参考 YSLib::Drawing::DrawArrow(),FetchGUIState(),YSLib::UI::Styles::GrayText,YSLib::Drawing::Size::Height,YSLib::Drawing::RDeg0,YSLib::Drawing::Size::Width,YSLib::Drawing::GBinaryGroup< _type >::X,YSLib::Drawing::GBinaryGroup< _type >::Y , 以及 YB_LIKELY.

函数调用图:

ID YSLib::UI::Menu::GetID | ( |  | ) | const

inline

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

Menu* YSLib::UI::Menu::GetParentPtr | ( |  | ) | const

inline

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

bool Menu::Hide | ( |  | ) |

隐藏菜单。

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

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

bool Menu::IsItemEnabled | ( | ListType::size_type | idx | ) | const

判断菜单项是否有效。

前置条件
  断言： `IsInInterval(idx, GetList().size())` 。

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

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

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

函数调用图:

void Menu::operator+= | ( | const ValueType & | val | ) |

向子菜单组添加关联索引和指针指定的菜单。

注解
  若索引越界或菜单指针为空则忽略。

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

参考 YSLib::IsInInterval().

函数调用图:

bool Menu::operator-= | ( | IndexType | idx | ) |

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

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

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

参考 YSLib::IsInInterval().

函数调用图:

Menu& YSLib::UI::Menu::operator[] | ( | size_t | idx | ) |

inline

访问索引指定的子菜单。

异常

  std::out_of_range | 异常中立：指定子菜单越界或不存在：由 at 抛出。

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

void Menu::SetItemEnabled | ( | ListType::size_type | idx,
|  | bool | = `true`
| ) |  |

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

前置条件
  断言： `IsInInterval(idx, GetList().size())` 。

后置条件
  `vDisabled.size() == GetList().size()` ； IsItemEnabled(idx) 。

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

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

函数调用图:

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

按指定 Z 顺序显示菜单。

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

返回
  菜单宿主指针非空。

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

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

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

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

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

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

参考 LocateMenu().

函数调用图:

## 友元及相关函数文档

friend class MenuHost

friend

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

## 类成员变量说明

ID YSLib::UI::Menu::id

private

菜单标识。

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

SubMap YSLib::UI::Menu::mSubMenus

protected

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

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

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

protected

宿主指针。

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

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

protected

父菜单指针。

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

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

mutableprotected

未启用菜单项。

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

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

- menu.h
- menu.cpp