Release new version 0.105.0
[grml-terminalserver.git] / terminalserver / chooser_gui.py
1 #!/usr/bin/python2.4
2
3 import os
4 import sys
5 import snack
6 import types
7
8 class ChooserGui(object):
9     def __init__(self, screen):
10         #self.m_screen = screen
11         helptext = """This dialog shows all installed plugins for the grml-terminalserver.
12 Just activate them as needed and proceed with <Run>!"""
13         self.m_grid = snack.GridForm(screen, 'Grmlterminalserver Config', 1, 8)
14
15         self.m_text = snack.TextboxReflowed(40, helptext)
16         self.m_grid.add(self.m_text, 0, 0, (0, 0, 0, 1))
17
18         self.m_plugins = snack.CheckboxTree(15)
19         self.m_grid.add(self.m_plugins, 0, 2, (0, 0, 0, 1), growx=1)
20
21         self.m_bb = snack.ButtonBar(screen, ((' Run ', 'run'), ('Quit', 'quit')))
22         self.m_grid.add(self.m_bb, 0, 4)
23
24     def run(self):
25         result = self.m_grid.runOnce()
26         if(type(result) == types.StringType and result == 'F12'):
27             return 'run'
28         else:
29             return self.m_bb.buttonPressed(result)
30
31     def getPlugins(self):
32         return self.m_plugins.getSelection()
33
34     def addPlugin(self, name, pluginid):
35         self.m_plugins.append(name, pluginid)
36
37 def run(dir):
38     dir = os.path.expanduser(dir.rstrip('\n'))
39     try:
40         files = os.listdir(dir)
41     except OSError:
42         print 'Error: no such file or directory, using current directory'
43         files = os.listdir('.')
44     dir = os.path.abspath(dir)
45     files = ( f for f in files if os.path.isfile(os.path.join(dir, f)) )
46
47     screen = snack.SnackScreen()
48     gui = ChooserGui(screen)
49     for i in files:
50         gui.addPlugin(i, i)
51     result = gui.run()
52     screen.finish()
53     print 'ret =', result, 'selections =', gui.getPlugins()
54     return result
55
56 if __name__ == '__main__':
57     result = 'ok'
58     while result != 'quit':
59         print 'please input a directory: '
60         dir = sys.stdin.readline()
61         result = run(dir)
62     print 'Bye!'