summarylogtreecommitdiffstats
path: root/Compiz.py
blob: fb19f9ceb492c6935ccd7c6590f9da37379f8494 (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
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
import MenuMaker




from MenuMaker import indent, writeFullMenu




menuFile = "~/.config/compiz/deskmenu/menu.xml"




def _map(x) :
	for d, s in (("&", "&"), ("\'", "\"")) :
		x = x.replace(s, d)
	return x




class Sep(object) :
	def emit(self, level) :
		return ['%s<separator/>' % indent(level)]




class App(object) :
	def emit(self, level) :
		x = indent(level)
		xx = indent(level + 1)
		cmd = self.app.execmd
		if self.app.terminal :
			cmd = MenuMaker.terminal.runCmd(cmd)
		return [
			'%s<item type="launcher">' % x,
			'%s<name>%s</name>' % (x, _map(self.app.name)),
			'%s<command>%s</command>' % (x, cmd),
			'%s</item>' % x
		]



class Menu(object) :
	def emit(self, level) :
		menu = ['%s<menu name="%s">' % (indent(level),  _map(self.name))]
		for x in self :
			menu += x.emit(level + 1)
		menu.append('%s</menu>' % indent(level))
		return menu


class Root(object) :
	def __init__(self, subs) :
		if writeFullMenu :
			subs = subs + [MenuMaker.Sep(), SysMenu()]
		super(Root, self).__init__(subs)
	def emit(self, level) :
		if writeFullMenu :
			menu = [
				'<menu>'
			]
			for x in self :
				menu += x.emit(level)
			menu.append('</menu>')
			return menu
		else :
			menu = []
			for x in self :
				menu += x.emit(level)
			return menu





class SysMenu(MenuMaker.Menu) :
	name = "Compiz"
	def __init__(self) :
		subs = [
			X('<item type="launcher">'),
			X('	<name>Edit Menu</name>'),
			X('	<icon>gtk-edit</icon>'),
			X('	<command>compiz-deskmenu-editor</command>'),
			X('</item>'),
			X('<item type="viewportlist"/>'),
			X('<item type="reload"/>'),
			MenuMaker.Sep(),
			X('<item type="launcher">'),
			X('	<name>Logout</name>'),
			X('	<icon>gnome-session-logout</icon>'),
			X('	<command>killall X</command>'),
			X('</item>')
		]
		super(SysMenu, self).__init__(subs)
		self.align = MenuMaker.Entry.StickBottom




class X(MenuMaker.Entry) :
	def __init__(self, x) :
		super(X, self).__init__()
		self.align = MenuMaker.Entry.StickBottom
		self.x = x
	def emit(self, level) :
		return [indent(level) + self.x]