Files
vsmartcard/eID_gui/src/eid/widgets.py
2010-08-05 20:59:43 +00:00

66 lines
2.2 KiB
Python

import sys
try:
import pygtk
pygtk.require("2.0")
import gtk, pango
except ImportError:
sys.exit(1)
from eid_gui_globals import AT_CHAT_STRINGS, IMAGES
import windows
class customCheckButton(object):
"""This class provides a custom version of gtk.CheckButton.
The main difference isthat the checkbox can be placed at the right
side of the label and that we can store an index with the button"""
def __init__(self, index, vbox):
self.idx = index
#Fetch name and (possibly empty) helptext
strings = AT_CHAT_STRINGS[index]
self.label = strings[0]
self.helptext = strings[1]
self.parent = vbox.get_parent_window()
#Setup a label with the name of the access right
self.lbl = gtk.Label(self.label)
self.lbl.set_alignment(0.0, 0.5)
self.lbl.set_padding(20, 0)
self.lbl.modify_font(pango.FontDescription("bold"))
#If we have a helptext, put an image at the left side of the label
self.info_box = None
if self.helptext is not None:
self.info_box = gtk.EventBox()
img = gtk.Image()
img.set_from_file(IMAGES["info"])
self.info_box.add(img)
self.info_box.connect("button_release_event", self._show_info)
#...and a checkbox on the right side of the label
self.chk = gtk.CheckButton("")
self.chk.set_active(True)
self.chk.set_alignment(1.0, 0.5)
#Insert the label and the checkbox in the vbox and add a seperator
hbox = gtk.HBox()
if self.info_box is not None:
hbox.pack_start(self.info_box, False, False)
else: #pack empty label for spacing
spacer = gtk.Label("")
spacer.set_size_request(32, 32)
hbox.pack_start(spacer, False, False)
hbox.pack_start(self.lbl, True, True)
hbox.pack_start(self.chk, False, False)
vbox.pack_start(gtk.HSeparator())
vbox.pack_start(hbox)
def is_active(self):
return self.chk.get_active()
def _show_info(self, widget=None, data=None):
"""Show a messagebox containing info about the access right in
question"""
help = windows.MsgBox(self.parent, self.helptext, "info")