bbfa0b9d8739c53a60ff5937b0f3ff14a76d17c2
[wifihood] / hildongtk.py
1
2 import gtk
3
4 __version__ = 0.9
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 = gtk.MenuItem( "KK-%s"%item.get_label() )
29       _item.connect( "activate", lambda arg : item.get_selector().show_all() )
30       gtk.MenuBar.append( self , _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 , text=None , value=None ) :
48 #        gtk.Button.__init__( self , "%s %s" % ( text , value ) )
49 #
50 #class __Button ( gtk.Button ) :
51 #     def __init__ ( self , text , value ) :
52 #         gtk.Button.__init__( self )
53 #         self._text = text
54 #         self.set_value( value )
55 #     def set_value ( self , value ) :
56 #         self._value = value
57 #         self.set_label( "%s -- %s" % ( self._text , self._value ) )
58
59 class CheckButton ( gtk.CheckButton ) :
60     def __init__ ( self , height ) :
61         gtk.CheckButton.__init__( self )
62
63 # FIXME : Add value-changed signal, with the response signal from the Dialog
64 class PickerButton ( gtk.Button ) :
65     def __init__ ( self , height , arrangement ) : # , text=None , value=None ) :
66         gtk.Button.__init__( self )
67         self._text = None
68         self._selector = None
69     def _build_label ( self ) :
70         content = []
71         if self._text  : content.append( self._text )
72         if self._selector : content.append( self._selector.get_current_text() )
73         if content : self.set_label( " -- ".join( content ) )
74     def set_title ( self , title ) :
75         self._text = title
76         self._build_label()
77     def get_selector ( self ) :
78         return self._selector
79     def set_selector ( self , selector ) :
80         self._selector = selector
81         self.connect( "clicked", lambda arg : self._selector.show_all() )
82         self._build_label()
83
84 class TouchSelector ( gtk.Dialog ) :
85
86     def __init__ ( self ) :
87         gtk.Dialog.__init__( self , "Select zoom level",
88                              None,
89                              gtk.DIALOG_MODAL,
90                              ( gtk.STOCK_OK, gtk.RESPONSE_ACCEPT,
91                                gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT
92                                )
93                              )
94         self.combo = gtk.ComboBox()
95
96     def append_text_column ( self , zooms , boolean ) :
97         self.combo.set_model( zooms )
98         cell = gtk.CellRendererText()
99         self.combo.pack_start(cell, True)
100         self.combo.add_attribute(cell, 'text', 0)
101
102         self.vbox.pack_start(self.combo , True, True, 0)
103
104     def set_active ( self , unknown , active ) :
105         self.combo.set_active( active )
106
107     def get_current_text ( self ) :
108         item = self.combo.get_active_iter()
109         if item :
110             model = self.combo.get_model()
111             return model.get(item,0)[0]
112
113     def response ( self , widget , response , config ) :
114         if response == gtk.RESPONSE_ACCEPT :
115             self.zoomdialog( widget , config )
116             widget._build_label()
117         self.hide()
118