/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.42 by Szilveszter Farkas (Phanatic)
Implemented Informations functionality; some bzrlib API changes handled.
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
import sys
18
19
try:
20
    import pygtk
21
    pygtk.require("2.0")
22
except:
23
    pass
24
try:
25
    import gtk
26
    import gtk.glade
27
    import gobject
28
    import pango
29
except:
30
    sys.exit(1)
31
32
import olive.backend.errors as errors
33
import olive.backend.info as info
34
35
from dialog import OliveDialog
36
37
class OliveInfo:
38
    """ Display Informations window and perform the needed actions. """
39
    def __init__(self, gladefile, comm):
40
        """ Initialize the Informations window. """
41
        self.gladefile = gladefile
42
        self.glade = gtk.glade.XML(self.gladefile, 'window_info')
43
        
44
        self.comm = comm
45
        
46
        self.dialog = OliveDialog(self.gladefile)
47
        
48
        # Get the Informations window widget
49
        self.window = self.glade.get_widget('window_info')
50
        
51
        # Check if current location is a branch
52
        self.notbranch = False
53
        try:
54
            self.ret = info.info(self.comm.get_path())
55
        except errors.NotBranchError:
56
            self.notbranch = True
57
            return
58
        except:
59
            raise
60
        
61
        # Dictionary for signal_autoconnect
62
        dic = { "on_button_info_close_clicked": self.close,
63
                "on_expander_info_location_activate": self.activate,
64
                "on_expander_info_related_activate": self.activate,
65
                "on_expander_info_format_activate": self.activate,
66
                "on_expander_info_locking_activate": self.activate,
67
                "on_expander_info_missing_activate": self.activate,
68
                "on_expander_info_wtstats_activate": self.activate,
69
                "on_expander_info_brstats_activate": self.activate,
70
                "on_expander_info_repstats_activate": self.activate }
71
        
72
        # Connect the signals to the handlers
73
        self.glade.signal_autoconnect(dic)
74
        
75
        # Generate status output
76
        self._generate_info()
77
78
    def _generate_info(self):
79
        """ Generate 'bzr info' output. """
80
        # location
81
        if self.ret.has_key('location'):
82
            display = False
83
            e = self.glade.get_widget('expander_info_location')
84
            if self.ret['location'].has_key('lightcoroot'):
85
                ll = self.glade.get_widget('label_info_location_lightcoroot_label')
86
                l = self.glade.get_widget('label_info_location_lightcoroot')
87
                l.set_text(self.ret['location']['lightcoroot'])
88
                ll.set_markup('<b>' + ll.get_text() + '</b>')
89
                ll.show()
90
                l.show()
91
                if not display:
92
                    e.set_expanded(True)
93
                    e.show()
94
                    display = True
95
            if self.ret['location'].has_key('sharedrepo'):
96
                ll = self.glade.get_widget('label_info_location_sharedrepo_label')
97
                l = self.glade.get_widget('label_info_location_sharedrepo')
98
                l.set_text(self.ret['location']['sharedrepo'])
99
                ll.set_markup('<b>' + ll.get_text() + '</b>')
100
                ll.show()
101
                l.show()
102
                if not display:
103
                    e.set_expanded(True)
104
                    e.show()
105
                    display = True
106
            if self.ret['location'].has_key('repobranch'):
107
                ll = self.glade.get_widget('label_info_location_repobranch_label')
108
                l = self.glade.get_widget('label_info_location_repobranch')
109
                l.set_text(self.ret['location']['repobranch'])
110
                ll.set_markup('<b>' + ll.get_text() + '</b>')
111
                ll.show()
112
                l.show()
113
                if not display:
114
                    e.set_expanded(True)
115
                    e.show()
116
                    display = True
117
            if self.ret['location'].has_key('cobranch'):
118
                ll = self.glade.get_widget('label_info_location_cobranch_label')
119
                l = self.glade.get_widget('label_info_location_cobranch')
120
                l.set_text(self.ret['location']['cobranch'])
121
                ll.set_markup('<b>' + ll.get_text() + '</b>')
122
                ll.show()
123
                l.show()
124
                if not display:
125
                    e.set_expanded(True)
126
                    e.show()
127
                    display = True
128
            if self.ret['location'].has_key('repoco'):
129
                ll = self.glade.get_widget('label_info_location_repoco_label')
130
                l = self.glade.get_widget('label_info_location_repoco')
131
                l.set_text(self.ret['location']['repoco'])
132
                ll.set_markup('<b>' + ll.get_text() + '</b>')
133
                ll.show()
134
                l.show()
135
                if not display:
136
                    e.set_expanded(True)
137
                    e.show()
138
                    display = True
139
            if self.ret['location'].has_key('coroot'):
140
                ll = self.glade.get_widget('label_info_location_coroot_label')
141
                l = self.glade.get_widget('label_info_location_coroot')
142
                l.set_text(self.ret['location']['coroot'])
143
                ll.set_markup('<b>' + ll.get_text() + '</b>')
144
                ll.show()
145
                l.show()
146
                if not display:
147
                    e.set_expanded(True)
148
                    e.show()
149
                    display = True
150
            if self.ret['location'].has_key('branchroot'):
151
                ll = self.glade.get_widget('label_info_location_branchroot_label')
152
                l = self.glade.get_widget('label_info_location_branchroot')
153
                l.set_text(self.ret['location']['branchroot'])
154
                ll.set_markup('<b>' + ll.get_text() + '</b>')
155
                ll.show()
156
                l.show()
157
                if not display:
158
                    e.set_expanded(True)
159
                    e.show()
160
                    display = True
161
        # related
162
        if self.ret.has_key('related'):
163
            display = False
164
            e = self.glade.get_widget('expander_info_related')
165
            if self.ret['related'].has_key('parentbranch'):
166
                ll = self.glade.get_widget('label_info_related_parentbranch_label')
167
                l = self.glade.get_widget('label_info_related_parentbranch')
168
                l.set_text(self.ret['related']['parentbranch'])
169
                ll.set_markup('<b>' + ll.get_text() + '</b>')
170
                ll.show()
171
                l.show()
172
                if not display:
173
                    e.set_expanded(True)
174
                    e.show()
175
                    display = True
176
            if self.ret['related'].has_key('publishbranch'):
177
                ll = self.glade.get_widget('label_info_related_publishbranch_label')
178
                l = self.glade.get_widget('label_info_related_publishbranch')
179
                l.set_text(self.ret['related']['publishbranch'])
180
                ll.set_markup('<b>' + ll.get_text() + '</b>')
181
                ll.show()
182
                l.show()
183
                if not display:
184
                    e.set_expanded(True)
185
                    e.show()
186
                    display = True
187
        # format
188
        if self.ret.has_key('format'):
189
            display = False
190
            e = self.glade.get_widget('expander_info_format')
191
            if self.ret['format'].has_key('control'):
192
                ll = self.glade.get_widget('label_info_format_control_label')
193
                l = self.glade.get_widget('label_info_format_control')
194
                l.set_text(self.ret['format']['control'])
195
                ll.set_markup('<b>' + ll.get_text() + '</b>')
196
                ll.show()
197
                l.show()
198
                if not display:
199
                    e.set_expanded(True)
200
                    e.show()
201
                    display = True
202
            if self.ret['format'].has_key('workingtree'):
203
                ll = self.glade.get_widget('label_info_format_workingtree_label')
204
                l = self.glade.get_widget('label_info_format_workingtree')
205
                l.set_text(self.ret['format']['workingtree'])
206
                ll.set_markup('<b>' + ll.get_text() + '</b>')
207
                ll.show()
208
                l.show()
209
                if not display:
210
                    e.set_expanded(True)
211
                    e.show()
212
                    display = True
213
            if self.ret['format'].has_key('branch'):
214
                ll = self.glade.get_widget('label_info_format_branch_label')
215
                l = self.glade.get_widget('label_info_format_branch')
216
                l.set_text(self.ret['format']['branch'])
217
                ll.set_markup('<b>' + ll.get_text() + '</b>')
218
                ll.show()
219
                l.show()
220
                if not display:
221
                    e.set_expanded(True)
222
                    e.show()
223
                    display = True
224
            if self.ret['format'].has_key('repository'):
225
                ll = self.glade.get_widget('label_info_format_repository_label')
226
                l = self.glade.get_widget('label_info_format_repository')
227
                l.set_text(self.ret['format']['repository'])
228
                ll.set_markup('<b>' + ll.get_text() + '</b>')
229
                ll.show()
230
                l.show()
231
                if not display:
232
                    e.set_expanded(True)
233
                    e.show()
234
                    display = True
235
        # locking
236
        if self.ret.has_key('locking'):
237
            display = False
238
            e = self.glade.get_widget('expander_info_locking')
239
            if self.ret['locking'].has_key('workingtree'):
240
                ll = self.glade.get_widget('label_info_locking_workingtree_label')
241
                l = self.glade.get_widget('label_info_locking_workingtree')
242
                l.set_text(self.ret['locking']['workingtree'])
243
                ll.set_markup('<b>' + ll.get_text() + '</b>')
244
                ll.show()
245
                l.show()
246
                if not display:
247
                    e.set_expanded(True)
248
                    e.show()
249
                    display = True
250
            if self.ret['locking'].has_key('branch'):
251
                ll = self.glade.get_widget('label_info_locking_branch_label')
252
                l = self.glade.get_widget('label_info_locking_branch')
253
                l.set_text(self.ret['locking']['branch'])
254
                ll.set_markup('<b>' + ll.get_text() + '</b>')
255
                ll.show()
256
                l.show()
257
                if not display:
258
                    e.set_expanded(True)
259
                    e.show()
260
                    display = True
261
            if self.ret['locking'].has_key('repository'):
262
                ll = self.glade.get_widget('label_info_locking_repository_label')
263
                l = self.glade.get_widget('label_info_locking_repository')
264
                l.set_text(self.ret['locking']['repository'])
265
                ll.set_markup('<b>' + ll.get_text() + '</b>')
266
                ll.show()
267
                l.show()
268
                if not display:
269
                    e.set_expanded(True)
270
                    e.show()
271
                    display = True
272
        # missing - temporary disabled
273
        """
274
        if self.ret.has_key('missing'):
275
            display = False
276
            e = self.glade.get_widget('expander_info_missing')
277
            if self.ret['missing'].has_key('branch'):
278
                ll = self.glade.get_widget('label_info_missing_branch_label')
279
                l = self.glade.get_widget('label_info_missing_branch')
280
                l.set_text(self.ret['missing']['branch'])
281
                ll.set_markup('<b>' + ll.get_text() + '</b>')
282
                ll.show()
283
                l.show()
284
                if not display:
285
                    e.set_expanded(True)
286
                    e.show()
287
                    display = True
288
            if self.ret['missing'].has_key('workingtree'):
289
                ll = self.glade.get_widget('label_info_missing_workingtree_label')
290
                l = self.glade.get_widget('label_info_missing_workingtree')
291
                l.set_text(self.ret['missing']['branch'])
292
                ll.set_markup('<b>' + ll.get_text() + '</b>')
293
                ll.show()
294
                l.show()
295
                if not display:
296
                    e.set_expanded(True)
297
                    e.show()
298
                    display = True
299
        """
300
        # working tree stats
301
        if self.ret.has_key('wtstats'):
302
            display = False
303
            e = self.glade.get_widget('expander_info_wtstats')
304
            if self.ret['wtstats'].has_key('unchanged'):
305
                ll = self.glade.get_widget('label_info_wtstats_unchanged_label')
306
                l = self.glade.get_widget('label_info_wtstats_unchanged')
307
                l.set_text(str(self.ret['wtstats']['unchanged']))
308
                ll.set_markup('<b>' + ll.get_text() + '</b>')
309
                ll.show()
310
                l.show()
311
                if not display:
312
                    e.set_expanded(True)
313
                    e.show()
314
                    display = True
315
            if self.ret['wtstats'].has_key('modified'):
316
                ll = self.glade.get_widget('label_info_wtstats_modified_label')
317
                l = self.glade.get_widget('label_info_wtstats_modified')
318
                l.set_text(str(self.ret['wtstats']['modified']))
319
                ll.set_markup('<b>' + ll.get_text() + '</b>')
320
                ll.show()
321
                l.show()
322
                if not display:
323
                    e.set_expanded(True)
324
                    e.show()
325
                    display = True
326
            if self.ret['wtstats'].has_key('added'):
327
                ll = self.glade.get_widget('label_info_wtstats_added_label')
328
                l = self.glade.get_widget('label_info_wtstats_added')
329
                l.set_text(str(self.ret['wtstats']['added']))
330
                ll.set_markup('<b>' + ll.get_text() + '</b>')
331
                ll.show()
332
                l.show()
333
                if not display:
334
                    e.set_expanded(True)
335
                    e.show()
336
                    display = True
337
            if self.ret['wtstats'].has_key('removed'):
338
                ll = self.glade.get_widget('label_info_wtstats_removed_label')
339
                l = self.glade.get_widget('label_info_wtstats_removed')
340
                l.set_text(str(self.ret['wtstats']['removed']))
341
                ll.set_markup('<b>' + ll.get_text() + '</b>')
342
                ll.show()
343
                l.show()
344
                if not display:
345
                    e.set_expanded(True)
346
                    e.show()
347
                    display = True
348
            if self.ret['wtstats'].has_key('renamed'):
349
                ll = self.glade.get_widget('label_info_wtstats_renamed_label')
350
                l = self.glade.get_widget('label_info_wtstats_renamed')
351
                l.set_text(str(self.ret['wtstats']['renamed']))
352
                ll.set_markup('<b>' + ll.get_text() + '</b>')
353
                ll.show()
354
                l.show()
355
                if not display:
356
                    e.set_expanded(True)
357
                    e.show()
358
                    display = True
359
            if self.ret['wtstats'].has_key('unknown'):
360
                ll = self.glade.get_widget('label_info_wtstats_unknown_label')
361
                l = self.glade.get_widget('label_info_wtstats_unknown')
362
                l.set_text(str(self.ret['wtstats']['unknown']))
363
                ll.set_markup('<b>' + ll.get_text() + '</b>')
364
                ll.show()
365
                l.show()
366
                if not display:
367
                    e.set_expanded(True)
368
                    e.show()
369
                    display = True
370
            if self.ret['wtstats'].has_key('ignored'):
371
                ll = self.glade.get_widget('label_info_wtstats_ignored_label')
372
                l = self.glade.get_widget('label_info_wtstats_ignored')
373
                l.set_text(str(self.ret['wtstats']['ignored']))
374
                ll.set_markup('<b>' + ll.get_text() + '</b>')
375
                ll.show()
376
                l.show()
377
                if not display:
378
                    e.set_expanded(True)
379
                    e.show()
380
                    display = True
381
            if self.ret['wtstats'].has_key('subdirs'):
382
                ll = self.glade.get_widget('label_info_wtstats_subdirs_label')
383
                l = self.glade.get_widget('label_info_wtstats_subdirs')
384
                l.set_text(str(self.ret['wtstats']['subdirs']))
385
                ll.set_markup('<b>' + ll.get_text() + '</b>')
386
                ll.show()
387
                l.show()
388
                if not display:
389
                    e.set_expanded(True)
390
                    e.show()
391
                    display = True
392
        # branch stats
393
        if self.ret.has_key('brstats'):
394
            display = False
395
            e = self.glade.get_widget('expander_info_brstats')
396
            if self.ret['brstats'].has_key('revno'):
397
                ll = self.glade.get_widget('label_info_brstats_revno_label')
398
                l = self.glade.get_widget('label_info_brstats_revno')
399
                l.set_text(str(self.ret['brstats']['revno']))
400
                ll.set_markup('<b>' + ll.get_text() + '</b>')
401
                ll.show()
402
                l.show()
403
                if not display:
404
                    e.set_expanded(True)
405
                    e.show()
406
                    display = True
407
            if self.ret['brstats'].has_key('commiters'):
408
                ll = self.glade.get_widget('label_info_brstats_commiters_label')
409
                l = self.glade.get_widget('label_info_brstats_commiters')
410
                l.set_text(str(self.ret['brstats']['commiters']))
411
                ll.set_markup('<b>' + ll.get_text() + '</b>')
412
                ll.show()
413
                l.show()
414
                if not display:
415
                    e.set_expanded(True)
416
                    e.show()
417
                    display = True
418
            if self.ret['brstats'].has_key('age'):
419
                ll = self.glade.get_widget('label_info_brstats_age_label')
420
                l = self.glade.get_widget('label_info_brstats_age')
421
                l.set_text('%d days' % self.ret['brstats']['age'])
422
                ll.set_markup('<b>' + ll.get_text() + '</b>')
423
                ll.show()
424
                l.show()
425
                if not display:
426
                    e.set_expanded(True)
427
                    e.show()
428
                    display = True
429
            if self.ret['brstats'].has_key('firstrev'):
430
                ll = self.glade.get_widget('label_info_brstats_firstrev_label')
431
                l = self.glade.get_widget('label_info_brstats_firstrev')
432
                l.set_text(self.ret['brstats']['firstrev'])
433
                ll.set_markup('<b>' + ll.get_text() + '</b>')
434
                ll.show()
435
                l.show()
436
                if not display:
437
                    e.set_expanded(True)
438
                    e.show()
439
                    display = True
440
            if self.ret['brstats'].has_key('lastrev'):
441
                ll = self.glade.get_widget('label_info_brstats_lastrev_label')
442
                l = self.glade.get_widget('label_info_brstats_lastrev')
443
                l.set_text(self.ret['brstats']['lastrev'])
444
                ll.set_markup('<b>' + ll.get_text() + '</b>')
445
                ll.show()
446
                l.show()
447
                if not display:
448
                    e.set_expanded(True)
449
                    e.show()
450
                    display = True
451
        # repository stats
452
        if self.ret.has_key('repstats'):
453
            display = False
454
            e = self.glade.get_widget('expander_info_repstats')
455
            if self.ret['repstats'].has_key('revisions'):
456
                ll = self.glade.get_widget('label_info_repstats_revisions_label')
457
                l = self.glade.get_widget('label_info_repstats_revisions')
458
                l.set_text(str(self.ret['repstats']['revisions']))
459
                ll.set_markup('<b>' + ll.get_text() + '</b>')
460
                ll.show()
461
                l.show()
462
                if not display:
463
                    e.set_expanded(True)
464
                    e.show()
465
                    display = True
466
            if self.ret['repstats'].has_key('size'):
467
                ll = self.glade.get_widget('label_info_repstats_size_label')
468
                l = self.glade.get_widget('label_info_repstats_size')
469
                l.set_text('%d KiB' % (self.ret['repstats']['size'] / 1024))
470
                ll.set_markup('<b>' + ll.get_text() + '</b>')
471
                ll.show()
472
                l.show()
473
                if not display:
474
                    e.set_expanded(True)
475
                    e.show()
476
                    display = True
477
    
478
    def activate(self, expander):
479
        """ Redraw the window. """
480
        self.window.resize(50, 50)
481
        self.window.queue_resize()
482
    
483
    def display(self):
484
        """ Display the Informations window. """
485
        if self.notbranch:
486
            self.dialog.error_dialog('Directory is not a branch.')
487
            self.close()
488
        else:
489
            self.window.show()
490
491
    def close(self, widget=None):
492
        self.window.destroy()