summaryrefslogtreecommitdiff
path: root/configs/apps/gladevcp/by-widget/radio.py
blob: c77e8bbd9bc5cadef97e9f4820e97b05b3a10e3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
'''
    gladevcp radiobutton example
    lifted from http://old.nabble.com/glade-and-radio-buttons.-td28793060.html

    Michael Haberler 12/2010
'''

import pygtk
import gtk
import pango

debug = 0

class HandlerClass:

    def print_radiobutton_state(self, widget):
        if widget.get_active():
            state = 'active'
            if self.builder.get_object('showoutput_btn').get_active():
                self.set_color_label(widget.get_label())
            else:
                self.color_lbl.set_label('Unknown')

        else:
            state = 'inactive'
        print '   %s button toggled - now %s ' % ( widget.get_label(), state)

    def on_red_rbtn_toggled(self, widget, data=None):
        print 'on_red_rbtn_toggled'
        self.print_radiobutton_state(widget)

    def on_blue_rbtn_toggled(self, widget, data=None):
        print 'on_blue_rbtn_toggled'
        self.print_radiobutton_state(widget)

    def on_green_rbtn_toggled(self, widget, data=None):
        print 'on_green_rbtn_toggled'
        self.print_radiobutton_state(widget)

    def on_yellow_rbtn_toggled(self, widget, data=None):
        print 'on_yellow_rbtn_toggled'
        self.print_radiobutton_state(widget)

    def on_showoutput_btn_toggled(self, widget, data=None):
        if widget.get_active():
            self.color_lbl.set_sensitive(True)
        else:
            self.color_lbl.set_sensitive(False)

    def set_color_label(self, color):
        self.color_lbl.set_label(color)
        mycolor = self.color_lookup[color.lower()]
        self.color_lbl.modify_fg(gtk.STATE_NORMAL, mycolor)

    def on_destroy(self,obj,data=None):
        print "on_destroy"
        self.halcomp.exit() # avoid lingering HAL component
        gtk.main_quit()

    def __init__(self, halcomp,builder,useropts):
        self.halcomp = halcomp
        self.builder = builder
        self.useropts = useropts

        self.window = self.builder.get_object('window1')
        self.color_lbl = self.builder.get_object('color_lbl')

        fontdesc = pango.FontDescription("Sans 20")
        self.color_lbl.modify_font(fontdesc)

        self.color_lookup = {
                                'red':       gtk.gdk.Color(red=65535),
                                'blue':     gtk.gdk.Color(blue=65535),
                                'green':    gtk.gdk.Color(green=65535),
                                'yellow':    gtk.gdk.color_parse('yellow')
                                }
        self.on_showoutput_btn_toggled(self.builder.get_object('showoutput_btn'))

def get_handlers(halcomp,builder,useropts):

    global debug
    for cmd in useropts:
        exec cmd in globals()

    return [HandlerClass(halcomp,builder,useropts)]