1
2
3
4
5
6
7
8
9
10
11
|
# encoding: utf-8
# title: Spec buttons for apps
# description: Adds configurable mini toolbar buttons
# version: 0.8.3
# depends: streamtuner2 >= 2.2.0
# type: feature
# category: ui
# config:
# { name: specbutton_rows, value: 2, max: 4, type: int, description: "Number of rows to arrange buttons in." }
# { name: specbuttons, type: dict, columns: "Icon,Command", description: "Icons can be `<a href='http://www.pygtk.org/pygtk2reference/gtk-stock-items.html'>gtk-xyz</a>` internal names. Else use `/usr/share/icon/*.png` file names. Icon file basenames will be expanded into full paths." }
# documentation:
|
|
|
1
2
3
4
5
6
7
8
9
10
11
|
# encoding: utf-8
# title: Spec buttons for apps
# description: Adds configurable mini toolbar buttons
# version: 0.8.4
# depends: streamtuner2 >= 2.2.0
# type: feature
# category: ui
# config:
# { name: specbutton_rows, value: 2, max: 4, type: int, description: "Number of rows to arrange buttons in." }
# { name: specbuttons, type: dict, columns: "Icon,Command", description: "Icons can be `<a href='http://www.pygtk.org/pygtk2reference/gtk-stock-items.html'>gtk-xyz</a>` internal names. Else use `/usr/share/icon/*.png` file names. Icon file basenames will be expanded into full paths." }
# documentation:
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#
# up amixer sset Master 5%+
#
# kill pkill vlc
#
# Icons can be gtk-xyz icon names or /usr/share/icon/* PNG files.
# Each command may use streamtuner2 placeholders like %g or %url and $title.
import os.path
import subprocess
import math
import re
from config import conf, log, plugin_meta
|
>
>
>
>
>
>
>
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#
# up amixer sset Master 5%+
#
# kill pkill vlc
#
# Icons can be gtk-xyz icon names or /usr/share/icon/* PNG files.
# Each command may use streamtuner2 placeholders like %g or %url and $title.
#
# Internal functions can be bound now as well, for example:
#
# find search.menu_search(1)
#
# disk exportcat.savewindow(1)
#
import os.path
import subprocess
import math
import re
from config import conf, log, plugin_meta
|
124
125
126
127
128
129
130
131
132
133
134
135
136
|
log.WARN("Extra button icon '%s' could not be found" % btn)
r[btn] = cmd
conf.specbuttons = r
self.update_buttons(self.parent)
# Button callback, allow for %url/%title placeholders
def action(self, cmd):
if re.search("[%$]", cmd):
row = self.parent.channel().row()
action.run_fmt_url(row=row, add_default=False, cmd=cmd)
else:
action.run(cmd)
|
>
>
>
>
>
>
>
>
>
|
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
log.WARN("Extra button icon '%s' could not be found" % btn)
r[btn] = cmd
conf.specbuttons = r
self.update_buttons(self.parent)
# Button callback, allow for %url/%title placeholders
def action(self, cmd):
# code hooks (`search.menu_search(0)`)
internal = re.match("^(\w+)\.(\w+)\((.*)\)$", cmd)
if internal:
feature, func, args = internal.groups()
if self.parent.__getattr__(feature):
func = getattr(self.parent.__getattr__(feature), func)
if func:
return func(*(args.split()))
# external commands
if re.search("[%$]", cmd):
row = self.parent.channel().row()
action.run_fmt_url(row=row, add_default=False, cmd=cmd)
else:
action.run(cmd)
|