/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to preferences.py

  • Committer: matkor
  • Date: 2007-08-23 10:17:40 UTC
  • mto: This revision was merged to the branch mainline in revision 265.
  • Revision ID: matkor@laptop-hp-20070823101740-s17kf9qa383wiuje
Code for "branch update" menuitem and toolbox. Typo fix

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
import gtk
24
24
 
25
25
from bzrlib.config import GlobalConfig
26
 
from identity import IdentityPage
27
 
from plugins import PluginsPage
28
 
from notifications import NotificationsPage
29
26
 
30
27
class PreferencesWindow(gtk.Dialog):
31
28
    """Displays global preferences windows."""
38
35
        """ Initialize the Status window. """
39
36
        super(PreferencesWindow, self).__init__(flags=gtk.DIALOG_MODAL)
40
37
        self.set_title("Bazaar Preferences")
41
 
        self.set_has_separator(False)
42
38
        self.config = config
43
39
        if self.config is None:
44
40
            self.config = GlobalConfig()
45
41
        self._create()
46
42
 
 
43
    def _create_mainpage(self):
 
44
        table = gtk.Table(rows=4, columns=2)
 
45
        table.set_row_spacings(6)
 
46
        table.set_col_spacings(6)
 
47
 
 
48
        align = gtk.Alignment(1.0, 0.5)
 
49
        label = gtk.Label()
 
50
        label.set_markup("<b>User Id:</b>")
 
51
        align.add(label)
 
52
        table.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
 
53
 
 
54
        self.username = gtk.Entry()
 
55
        self.username.set_text(self.config.username())
 
56
        table.attach(self.username, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
57
 
 
58
        align = gtk.Alignment(1.0, 0.5)
 
59
        label = gtk.Label()
 
60
        label.set_markup("<b>GPG signing command:</b>")
 
61
        align.add(label)
 
62
        table.attach(align, 0, 1, 1, 2, gtk.FILL, gtk.FILL)
 
63
 
 
64
        self.email = gtk.Entry()
 
65
        self.email.set_text(self.config.gpg_signing_command())
 
66
        table.attach(self.email, 1, 2, 1, 2, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
67
 
 
68
        align = gtk.Alignment(1.0, 0.5)
 
69
        label = gtk.Label()
 
70
        label.set_markup("<b>Check GPG Signatures:</b>")
 
71
        align.add(label)
 
72
        table.attach(align, 0, 1, 2, 3, gtk.FILL, gtk.FILL)
 
73
 
 
74
        sigvals = gtk.VBox()
 
75
        self.check_sigs_if_possible = gtk.RadioButton(None, 
 
76
                                                      "_Check if possible")
 
77
        sigvals.pack_start(self.check_sigs_if_possible)
 
78
        self.check_sigs_always = gtk.RadioButton(self.check_sigs_if_possible, 
 
79
                                                 "Check _always")
 
80
        sigvals.pack_start(self.check_sigs_always)
 
81
        self.check_sigs_never = gtk.RadioButton(self.check_sigs_if_possible,
 
82
                                                "Check _never")
 
83
        sigvals.pack_start(self.check_sigs_never)
 
84
        # FIXME: Set default
 
85
        table.attach(sigvals, 1, 2, 2, 3, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
86
 
 
87
        align = gtk.Alignment(1.0, 0.5)
 
88
        label = gtk.Label()
 
89
        label.set_markup("<b>Create GPG Signatures:</b>")
 
90
        align.add(label)
 
91
        table.attach(align, 0, 1, 3, 4, gtk.FILL, gtk.FILL)
 
92
 
 
93
        create_sigs = gtk.VBox()
 
94
        self.create_sigs_when_required = gtk.RadioButton(None, 
 
95
                                                         "Sign When _Required")
 
96
        create_sigs.pack_start(self.create_sigs_when_required)
 
97
        self.create_sigs_always = gtk.RadioButton(
 
98
            self.create_sigs_when_required, "Sign _Always")
 
99
        create_sigs.pack_start(self.create_sigs_always)
 
100
        self.create_sigs_never = gtk.RadioButton(
 
101
            self.create_sigs_when_required, "Sign _Never")
 
102
        create_sigs.pack_start(self.create_sigs_never)
 
103
        # FIXME: Set default
 
104
        table.attach(create_sigs, 1, 2, 3, 4, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
105
 
 
106
        return table
 
107
 
 
108
    def _create_pluginpage(self):
 
109
        paned = gtk.VPaned()
 
110
        scrolledwindow = gtk.ScrolledWindow()
 
111
        scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
112
        model = gtk.ListStore(str, str)
 
113
        treeview = gtk.TreeView()
 
114
        scrolledwindow.add(treeview)
 
115
        paned.pack1(scrolledwindow, resize=True, shrink=False)
 
116
 
 
117
        table = gtk.Table(columns=2)
 
118
        table.set_row_spacings(6)
 
119
        table.set_col_spacings(6)
 
120
 
 
121
        def row_selected(tv, path, tvc):
 
122
            p = bzrlib.plugin.all_plugins()[model[path][0]]
 
123
            from inspect import getdoc
 
124
 
 
125
            for w in table.get_children():
 
126
                table.remove(w)
 
127
 
 
128
            if getattr(p, '__author__', None) is not None:
 
129
                align = gtk.Alignment(1.0, 0.5)
 
130
                label = gtk.Label()
 
131
                label.set_markup("<b>Author:</b>")
 
132
                align.add(label)
 
133
                table.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
 
134
                align.show()
 
135
                label.show()
 
136
 
 
137
                align = gtk.Alignment(0.0, 0.5)
 
138
                author = gtk.Label()
 
139
                author.set_text(p.__author__)
 
140
                author.set_selectable(True)
 
141
                align.add(author)
 
142
                table.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
143
 
 
144
            if getattr(p, '__version__', None) is not None:
 
145
                align = gtk.Alignment(1.0, 0.5)
 
146
                label = gtk.Label()
 
147
                label.set_markup("<b>Version:</b>")
 
148
                align.add(label)
 
149
                table.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
 
150
                align.show()
 
151
                label.show()
 
152
 
 
153
                align = gtk.Alignment(0.0, 0.5)
 
154
                author = gtk.Label()
 
155
                author.set_text(p.__version__)
 
156
                author.set_selectable(True)
 
157
                align.add(author)
 
158
                table.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
159
 
 
160
            if getdoc(p) is not None:
 
161
                align = gtk.Alignment(0.0, 0.5)
 
162
                description = gtk.Label()
 
163
                description.set_text(getdoc(p))
 
164
                description.set_selectable(True)
 
165
                align.add(description)
 
166
                table.attach(align, 0, 2, 1, 2, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
167
 
 
168
            table.show_all()
 
169
 
 
170
        treeview.set_headers_visible(False)
 
171
        treeview.set_model(model)
 
172
        treeview.connect("row-activated", row_selected)
 
173
 
 
174
        cell = gtk.CellRendererText()
 
175
        column = gtk.TreeViewColumn()
 
176
        column.pack_start(cell, expand=True)
 
177
        column.add_attribute(cell, "text", 0)
 
178
        treeview.append_column(column)
 
179
 
 
180
        cell = gtk.CellRendererText()
 
181
        column = gtk.TreeViewColumn()
 
182
        column.pack_start(cell, expand=True)
 
183
        column.add_attribute(cell, "text", 1)
 
184
        treeview.append_column(column)
 
185
        
 
186
        import bzrlib.plugin
 
187
        plugins = bzrlib.plugin.all_plugins()
 
188
        plugin_names = plugins.keys()
 
189
        plugin_names.sort()
 
190
        for name in plugin_names:
 
191
            model.append([name, getattr(plugins[name], '__file__', None)])
 
192
                 
 
193
        scrolledwindow = gtk.ScrolledWindow()
 
194
        scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
195
        scrolledwindow.add_with_viewport(table)
 
196
        paned.pack2(scrolledwindow, resize=False, shrink=True)
 
197
        paned.show()
 
198
 
 
199
        return paned
 
200
 
47
201
    def _create(self):
48
 
        self.set_default_size(320, 480)
49
 
        self.set_border_width(0)
50
 
 
 
202
        self.set_default_size(600, 600)
51
203
        notebook = gtk.Notebook()
52
 
        notebook.set_border_width(12)
53
 
        for (label, page) in self._create_pages():
54
 
            notebook.append_page(page, gtk.Label(label))
55
 
 
56
 
        notebook.set_current_page(0)
57
 
        self.vbox.set_border_width(0)
 
204
        notebook.insert_page(self._create_mainpage(), gtk.Label("Main"))
 
205
        notebook.insert_page(self._create_pluginpage(), gtk.Label("Plugins"))
58
206
        self.vbox.pack_start(notebook, True, True)
59
207
        self.vbox.show_all()
60
 
        self.action_area.set_border_width(12)
61
 
 
62
 
    def _create_pages(self):
63
 
        return [("Identity", IdentityPage(self.config)), 
64
 
                ("Plugins", PluginsPage()),
65
 
                ("Notifications", NotificationsPage(self.config))]
66
208
 
67
209
    def display(self):
68
210
        self.window.show_all()