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

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

class MenuMaker;

class MenuEntry : public QObject
{
	Q_OBJECT

protected:
	MenuMaker *menumaker;
	KAction *action;
	QCString text;

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

public slots:
	void activated();
};

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

public:
	MenuCategory(const QString& name, const char *prefix, KActionMenu *menu);

	void addPrefix(const char *prefix);
	QString name();
	KActionMenu *menu();

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

class MenuMaker :public QObject
{
	Q_OBJECT

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

	MenuMaker(KActionMenu *root);

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

	void clear();

	const char *findID(int id);

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