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