summaryrefslogtreecommitdiffstats
path: root/arts/builder/menumaker.h
blob: f1368d7365b589cde757b14e4667ea1ec35460e6 (plain)
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
#ifndef __MENUMAKER_H__
#define __MENUMAKER_H__

#include <kaction.h>
#include <tqobject.h>
#include <string>
#include <list>

class MenuMaker;

class MenuEntry : public TQObject
{
	Q_OBJECT
  

protected:
	MenuMaker *menumaker;
	TDEAction *action;
	TQCString text;

public:
	MenuEntry(MenuMaker *menumaker, TDEActionMenu *parent, const char *text);

public slots:
	void activated();
};

class MenuCategory
{
protected:
	TDEActionMenu *_menu;
	TQString _name;
	std::list<std::string> prefixList;
	bool _catchall;

public:
	MenuCategory(const TQString& name, const char *prefix, TDEActionMenu *menu);

	void addPrefix(const char *prefix);
	TQString name();
	TDEActionMenu *menu();

	bool catchall();
	bool matches(const char *item);
};

class MenuMaker :public TQObject
{
	Q_OBJECT
  

	std::list<MenuCategory *> categories;
public:
	enum { CAT_MAGIC_ID = 10000 };

	MenuMaker(TDEActionMenu *root);

	void addCategory(const TQString& name, const char *prefix);
	MenuCategory *lookupCategoryByName(const TQString& name);
	void addItem(const char *name, int i);
	TQString basename(const TQString& name);
	TQString catname(const TQString& name);

	void clear();

	const char *findID(int id);

	void menuActivated(const char *text);
signals:
	void activated(const char *text);
};
#endif