~gdesklets-desklet-team/gdesklets/0.36

« back to all changes in this revision

Viewing changes to main/AboutDialog.py

  • Committer: Robert Pastierovic
  • Date: 2007-10-07 10:08:42 UTC
  • Revision ID: pastierovic@gmail.com-20071007100842-fdvp2vzmqgh1j87k
merged 0.3x branch and basic documentation and some other changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from main import CREDITS
 
2
 
 
3
import gobject
 
4
import gtk
 
5
import os
 
6
 
 
7
 
 
8
class AboutDialog(gtk.Window):
 
9
 
 
10
    """ Class for a fancy "About" dialog. """
 
11
 
 
12
    def __init__(self, path):
 
13
 
 
14
        self.__is_stopped = True
 
15
        self.__scroller_values = ()
 
16
 
 
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)
 
26
 
 
27
        fixed = gtk.Fixed()
 
28
        self.add(fixed)
 
29
 
 
30
        img = gtk.Image()
 
31
        img.set_from_file(os.path.join(path, "about.png"))
 
32
        fixed.put(img, 0, 0)
 
33
 
 
34
        width, height = img.size_request()
 
35
 
 
36
        scroller = gtk.Fixed()
 
37
        scroller.set_size_request(width, height - 32)
 
38
        fixed.put(scroller, 0, 32)
 
39
 
 
40
        text = ""
 
41
        for header, body in CREDITS:
 
42
            text += "<b>" + header + "</b>\n\n"
 
43
            text += "\n".join(body)
 
44
            text += "\n\n\n\n"
 
45
        text = "<big>" + text.strip() + "</big>"
 
46
 
 
47
        credits = gtk.Label(text)
 
48
        credits.set_use_markup(True)
 
49
        credits.set_justify(gtk.JUSTIFY_CENTER)
 
50
 
 
51
        lbl_width, lbl_height = credits.size_request()
 
52
        scroller.put(credits, (width - lbl_width) / 2, height)
 
53
 
 
54
        self.__scroller = scroller
 
55
        self.__credits = credits
 
56
 
 
57
        self.__scroller_values = (height - 32, -lbl_height,
 
58
                                  (width - lbl_width) / 2)
 
59
 
 
60
 
 
61
    def __scroll(self, ycoord):
 
62
 
 
63
        begin, end, xcoord = self.__scroller_values
 
64
        self.__scroller.move(self.__credits, xcoord, ycoord)
 
65
        ycoord -= 1
 
66
 
 
67
        if (ycoord < end):
 
68
            ycoord = begin
 
69
 
 
70
        if (not self.__is_stopped):
 
71
            gobject.timeout_add(50, self.__scroll, ycoord)
 
72
 
 
73
        return False
 
74
 
 
75
 
 
76
    def __on_close(self, *args):
 
77
 
 
78
        self.__is_stopped = True
 
79
        self.hide()
 
80
 
 
81
        return True
 
82
 
 
83
 
 
84
    def show(self):
 
85
 
 
86
        if (not self.__is_stopped):
 
87
            return
 
88
 
 
89
        self.show_all()
 
90
 
 
91
        self.__is_stopped = False
 
92
        begin, end, xcoord = self.__scroller_values
 
93
        gobject.timeout_add(0, self.__scroll, begin)
 
94