1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
/*
** ClanLib SDK
** Copyright (c) 1997-2005 The ClanLib Team
**
** This software is provided 'as-is', without any express or implied
** warranty. In no event will the authors be held liable for any damages
** arising from the use of this software.
**
** Permission is granted to anyone to use this software for any purpose,
** including commercial applications, and to alter it and redistribute it
** freely, subject to the following restrictions:
**
** 1. The origin of this software must not be misrepresented; you must not
** claim that you wrote the original software. If you use this software
** in a product, an acknowledgment in the product documentation would be
** appreciated but is not required.
** 2. Altered source versions must be plainly marked as such, and must not be
** misrepresented as being the original software.
** 3. This notice may not be removed or altered from any source distribution.
**
** Note: Some of the libraries ClanLib may link to may have additional
** requirements or restrictions.
**
** File Author(s):
**
** Magnus Norddahl
** (if your name is missing here, please add it)
*/
//! clanGUI="Controls"
//! header=gui.h
#ifndef header_menu_node
#define header_menu_node
#ifdef CL_API_DLL
#ifdef CL_GUI_EXPORT
#define CL_API_GUI __declspec(dllexport)
#else
#define CL_API_GUI __declspec(dllimport)
#endif
#else
#define CL_API_GUI
#endif
#if _MSC_VER > 1000
#pragma once
#endif
#include "../GUI/component.h"
class CL_Menu;
class CL_MenuNode_Generic;
//: MenuNode component
//- !group=GUI/Controls!
//- !header=gui.h!
class CL_API_GUI CL_MenuNode : public CL_Component
{
//! Construction:
public:
//: CL_MenuNode Constructor
CL_MenuNode(
CL_Menu *parent_menu,
CL_StyleManager *style = NULL);
//: CL_MenuNode destructor
virtual ~CL_MenuNode();
//! Attributes:
public:
//: Returns a pointer to the CL_Component which is this MenuNodes MenuItem.
CL_Component *get_data();
//: Returns true if the mouse is in the submenus of this node.
bool has_mouse_in_submenus();
//: Returns true if the mouse is on this component or it's MenuItem
//: This overrides CL_Component's has_mouse_over()
bool has_mouse_over();
//: Returns true if the node has a submenu.
bool has_submenu();
//: Returns true if the node has an open submenu.
bool has_open_submenu();
//: Returns the nodes submenu, or NULL if the node has no submenu.
CL_Menu *get_submenu();
//: Returns the nodes parent menu.
CL_Menu *get_parent_menu();
//: Returns the name of the menu node.
//: A menu nodes name forms a part of the path used by the CL_Menu::get_<menu/node/item>(std::string path) functions.
std::string get_name();
//! Operations:
public:
//: Set the nodes submenu.
void set_submenu(CL_Menu *menu);
//: Set the nodes parent menu.
void set_parent_menu(CL_Menu *menu);
//: Set whether the menus should collapse when an node is clicked
void set_close_on_click(bool close);
//: Close the nodes submenu.
void collapse();
//: Open the nodes submenu.
void open_submenu();
//: Start the repositioning of the nodes submenus.
void reposition_submenus();
//: Set the name of the node. This forms a part of the path used in adressing menu components.
void set_name(std::string);
//! Signals:
public:
//: Emitted when repositioning of the menus is requested.
CL_Signal_v0 &sig_reposition();
//: Emitted when a menu node is clicked.
CL_Signal_v0 &sig_clicked();
//! Implementation:
private:
CL_MenuNode(const CL_MenuNode ©) : CL_Component(NULL, NULL) { return; } // disallow copy construction.
CL_MenuNode_Generic *impl;
};
#endif
|