df9878316982832526ea42f0139417f85fdf3a21
[wifihood] / hildon.py
1
2 import gtk
3
4 __version__ = 1.0
5
6 gtk.HILDON_SIZE_FINGER_HEIGHT = -1
7 gtk.HILDON_SIZE_AUTO = -1
8
9 BUTTON_ARRANGEMENT_VERTICAL = -1
10
11
12 class Program :
13     window = None
14     def get_instance() :
15         return Program()
16     get_instance = staticmethod( get_instance )
17     def add_window ( self , window ) :
18         self.window = window
19
20 class Window ( gtk.Window ) :
21     def __init__ ( self ) :
22         gtk.Window.__init__( self , gtk.WINDOW_TOPLEVEL )
23     def set_app_menu( self , menubar ) :
24         self.vbox.pack_start(menubar,True,True,5)
25
26 class AppMenu ( gtk.MenuBar ) :
27     def append ( self , item ) :
28       item._menu_item = gtk.MenuItem( item.get_label() )
29       item._menu_item.connect( "activate", lambda arg : item.get_selector().show_all() )
30       gtk.MenuBar.append( self , item._menu_item )
31
32 class StackableWindow ( gtk.Window ) :
33     def __init__ ( self ) :
34         gtk.Window.__init__( self )
35
36 class PannableArea ( gtk.ScrolledWindow ) :
37     def __init__ ( self ) :
38         gtk.ScrolledWindow.__init__( self )
39         self.set_size_request(-1, 260)
40         self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
41
42 class Entry ( gtk.Entry ) :
43     def __init__ ( self , height ) :
44         gtk.Entry.__init__( self )
45
46 class Button ( gtk.Button ) :
47     def __init__ ( self , height , arrangement ) :
48         self._menu_item = None
49         gtk.Button.__init__( self )
50     def set_label ( self , label ) :
51         gtk.Button.set_label( self , label )
52         if self._menu_item :
53             self._menu_item.set_label( self.get_label() )
54
55 class CheckButton ( gtk.CheckButton ) :
56     def __init__ ( self , height ) :
57         gtk.CheckButton.__init__( self )
58
59 # FIXME : Add value-changed signal, with the response signal from the Dialog
60 class PickerButton ( Button ) :
61     def __init__ ( self , height , arrangement ) :
62         Button.__init__( self , height , arrangement )
63         self._title = None
64         self._selector = None
65     def _build_label ( self ) :
66         selected = None
67         if self._selector :
68             selected = " -- %s" % self._selector.get_current_text()
69         Button.set_label( self , "%s%s" % ( self._title , selected ) )
70     def set_title ( self , title ) :
71         self._title = title
72         self._build_label()
73     def get_selector ( self ) :
74         return self._selector
75     def set_selector ( self , selector ) :
76         self._selector = selector
77         self.connect( "clicked", lambda arg : self._selector.show_all() )
78         self._build_label()
79
80 class TouchSelector ( gtk.Dialog ) :
81
82     def __init__ ( self ) :
83         gtk.Dialog.__init__( self , "Select zoom level",
84                              None,
85                              gtk.DIALOG_MODAL,
86                              ( gtk.STOCK_OK, gtk.RESPONSE_ACCEPT,
87                                gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT
88                                )
89                              )
90         self.combo = gtk.ComboBox()
91
92     def append_text_column ( self , zooms , boolean ) :
93         self.combo.set_model( zooms )
94         cell = gtk.CellRendererText()
95         self.combo.pack_start(cell, True)
96         self.combo.add_attribute(cell, 'text', 0)
97
98         self.vbox.pack_start(self.combo , True, True, 0)
99
100     def set_active ( self , unknown , active ) :
101         self.combo.set_active( active )
102
103     def get_current_text ( self ) :
104         item = self.combo.get_active_iter()
105         if item :
106             model = self.combo.get_model()
107             return model.get(item,0)[0]
108
109     def response ( self , widget , response , config ) :
110         if response == gtk.RESPONSE_ACCEPT :
111             self.zoomdialog( widget , config )
112             widget._build_label()
113         self.hide()
114