mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2026-01-05 06:00:43 +00:00
spicec: add menu id & find_sub()
This commit is contained in:
parent
21f586762f
commit
793dd31cad
@ -20,10 +20,11 @@
|
||||
#include "utils.h"
|
||||
#include "debug.h"
|
||||
|
||||
Menu::Menu(CommandTarget& target, const std::string& name)
|
||||
Menu::Menu(CommandTarget& target, const std::string& name, int id)
|
||||
: _refs (1)
|
||||
, _target (target)
|
||||
, _name (name)
|
||||
, _id (id)
|
||||
{
|
||||
}
|
||||
|
||||
@ -115,6 +116,21 @@ Menu* Menu::sub_at(int pos)
|
||||
return ((Menu*)_items[pos].obj)->ref();
|
||||
}
|
||||
|
||||
Menu* Menu::find_sub(int id)
|
||||
{
|
||||
Menu* sub;
|
||||
|
||||
if (_id == id) {
|
||||
return ref();
|
||||
}
|
||||
for (unsigned int i = 0; i < _items.size(); i++) {
|
||||
if (_items[i].type == MENU_ITEM_TYPE_MENU && (sub = ((Menu*)_items[i].obj)->find_sub(id))) {
|
||||
return sub;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Menu::clear()
|
||||
{
|
||||
for (unsigned int i = 0; i < _items.size(); i++) {
|
||||
|
||||
@ -26,7 +26,7 @@ public:
|
||||
|
||||
class Menu {
|
||||
public:
|
||||
Menu(CommandTarget& target, const std::string& name);
|
||||
Menu(CommandTarget& target, const std::string& name, int id = 0);
|
||||
|
||||
enum ItemType {
|
||||
MENU_ITEM_TYPE_INVALID,
|
||||
@ -46,6 +46,7 @@ public:
|
||||
void set_name(const std::string& name) { _name = name;}
|
||||
const std::string& get_name() { return _name;}
|
||||
CommandTarget& get_target() { return _target;}
|
||||
int get_id() { return _id;}
|
||||
|
||||
void add_command(const std::string& name, int cmd_id, int state = 0);
|
||||
void add_separator();
|
||||
@ -57,6 +58,7 @@ public:
|
||||
ItemType item_type_at(int pos);
|
||||
void command_at(int pos, std::string& name, int& cmd_id, int& state);
|
||||
Menu* sub_at(int pos);
|
||||
Menu* find_sub(int id);
|
||||
|
||||
void clear();
|
||||
|
||||
@ -94,6 +96,7 @@ private:
|
||||
CommandTarget& _target;
|
||||
std::string _name;
|
||||
std::vector<MenuItem> _items;
|
||||
int _id;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user