1
from main import CREDITS
8
class AboutDialog(gtk.Window):
10
""" Class for a fancy "About" dialog. """
12
def __init__(self, path):
14
self.__is_stopped = True
15
self.__scroller_values = ()
17
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
18
self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
19
self.set_position(gtk.WIN_POS_CENTER)
20
self.set_resizable(False)
21
self.set_title(_("About gDesklets"))
22
self.connect("button-press-event", self.__on_close)
23
self.connect("key-press-event", self.__on_close)
24
self.connect("delete-event", self.__on_close)
25
self.add_events(gtk.gdk.BUTTON_PRESS_MASK)
31
img.set_from_file(os.path.join(path, "about.png"))
34
width, height = img.size_request()
36
scroller = gtk.Fixed()
37
scroller.set_size_request(width, height - 32)
38
fixed.put(scroller, 0, 32)
41
for header, body in CREDITS:
42
text += "<b>" + header + "</b>\n\n"
43
text += "\n".join(body)
45
text = "<big>" + text.strip() + "</big>"
47
credits = gtk.Label(text)
48
credits.set_use_markup(True)
49
credits.set_justify(gtk.JUSTIFY_CENTER)
51
lbl_width, lbl_height = credits.size_request()
52
scroller.put(credits, (width - lbl_width) / 2, height)
54
self.__scroller = scroller
55
self.__credits = credits
57
self.__scroller_values = (height - 32, -lbl_height,
58
(width - lbl_width) / 2)
61
def __scroll(self, ycoord):
63
begin, end, xcoord = self.__scroller_values
64
self.__scroller.move(self.__credits, xcoord, ycoord)
70
if (not self.__is_stopped):
71
gobject.timeout_add(50, self.__scroll, ycoord)
76
def __on_close(self, *args):
78
self.__is_stopped = True
86
if (not self.__is_stopped):
91
self.__is_stopped = False
92
begin, end, xcoord = self.__scroller_values
93
gobject.timeout_add(0, self.__scroll, begin)