/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 olive/info.py

  • Committer: Daniel Schierbeck
  • Date: 2008-04-07 20:34:51 UTC
  • mfrom: (450.6.13 bugs)
  • mto: (463.2.1 bug.78765)
  • mto: This revision was merged to the branch mainline in revision 462.
  • Revision ID: daniel.schierbeck@gmail.com-20080407203451-2i6el7jf9t0k9y64
Merged bug page improvements.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
import sys
18
 
 
19
17
try:
20
18
    import pygtk
21
19
    pygtk.require("2.0")
22
20
except:
23
21
    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
 
22
 
 
23
import gtk
 
24
import gtk.glade
 
25
 
 
26
import bzrlib.errors as errors
 
27
 
 
28
from bzrlib.plugins.gtk.dialog import error_dialog
 
29
from guifiles import GLADEFILENAME
 
30
 
 
31
 
 
32
def info(location):
 
33
    """ Get info about branch, working tree, and repository
 
34
    
 
35
    :param location: the location of the branch/working tree/repository
 
36
    
 
37
    :return: the information in dictionary format
 
38
    
 
39
    The following informations are delivered (if available):
 
40
    ret['location']['lightcoroot']: Light checkout root
 
41
    ret['location']['sharedrepo']: Shared repository
 
42
    ret['location']['repobranch']: Repository branch
 
43
    ret['location']['cobranch']: Checkout of branch
 
44
    ret['location']['repoco']: Repository checkout
 
45
    ret['location']['coroot']: Checkout root
 
46
    ret['location']['branchroot']: Branch root
 
47
    ret['related']['parentbranch']: Parent branch
 
48
    ret['related']['publishbranch']: Publish to branch
 
49
    ret['format']['control']: Control format
 
50
    ret['format']['workingtree']: Working tree format
 
51
    ret['format']['branch']: Branch format
 
52
    ret['format']['repository']: Repository format
 
53
    ret['locking']['workingtree']: Working tree lock status
 
54
    ret['locking']['branch']: Branch lock status
 
55
    ret['locking']['repository']: Repository lock status
 
56
    ret['missing']['branch']: Missing revisions in branch
 
57
    ret['missing']['workingtree']: Missing revisions in working tree
 
58
    ret['wtstats']['unchanged']: Unchanged files
 
59
    ret['wtstats']['modified']: Modified files
 
60
    ret['wtstats']['added']: Added files
 
61
    ret['wtstats']['removed']: Removed files
 
62
    ret['wtstats']['renamed']: Renamed files
 
63
    ret['wtstats']['unknown']: Unknown files
 
64
    ret['wtstats']['ignored']: Ingnored files
 
65
    ret['wtstats']['subdirs']: Versioned subdirectories
 
66
    ret['brstats']['revno']: Revisions in branch
 
67
    ret['brstats']['commiters']: Number of commiters
 
68
    ret['brstats']['age']: Age of branch in days
 
69
    ret['brstats']['firstrev']: Time of first revision
 
70
    ret['brstats']['lastrev']: Time of last revision
 
71
    ret['repstats']['revisions']: Revisions in repository
 
72
    ret['repstats']['size']: Size of repository in bytes
 
73
    """
 
74
    import bzrlib.bzrdir as bzrdir
 
75
    
 
76
    import info_helper
 
77
    
 
78
    ret = {}
 
79
    try:
 
80
        a_bzrdir = bzrdir.BzrDir.open_containing(location)[0]
 
81
    except errors.NotBranchError:
 
82
        raise errors.NotBranchError(location)
 
83
 
 
84
    try:
 
85
        working = a_bzrdir.open_workingtree()
 
86
        working.lock_read()
 
87
        try:
 
88
            branch = working.branch
 
89
            repository = branch.repository
 
90
            control = working.bzrdir
 
91
            
 
92
            ret['location'] = info_helper.get_location_info(repository, branch, working)
 
93
            ret['related'] = info_helper.get_related_info(branch)
 
94
            ret['format'] = info_helper.get_format_info(control, repository, branch, working)
 
95
            ret['locking'] = info_helper.get_locking_info(repository, branch, working)
 
96
            ret['missing'] = {}
 
97
            ret['missing']['branch'] = info_helper.get_missing_revisions_branch(branch)
 
98
            ret['missing']['workingtree'] = info_helper.get_missing_revisions_working(working)
 
99
            ret['wtstats'] = info_helper.get_working_stats(working)
 
100
            ret['brstats'] = info_helper.get_branch_stats(branch)
 
101
            ret['repstats'] = info_helper.get_repository_stats(repository)
 
102
        finally:
 
103
            working.unlock()
 
104
            return ret
 
105
        return
 
106
    except (errors.NoWorkingTree, errors.NotLocalUrl):
 
107
        pass
 
108
 
 
109
    try:
 
110
        branch = a_bzrdir.open_branch()
 
111
        repository = branch.repository
 
112
        control = a_bzrdir
 
113
        branch.lock_read()
 
114
        try:
 
115
            ret['location'] = info_helper.get_location_info(repository, branch)
 
116
            ret['related'] = info_helper.get_related_info(branch)
 
117
            ret['format'] = info_helper.get_format_info(control, repository, branch)
 
118
            ret['locking'] = info_helper.get_locking_info(repository, branch)
 
119
            ret['missing']['branch'] = info_helper.get_missing_revisions_branch(branch)
 
120
            ret['brstats'] = info_helper.get_branch_stats(branch)
 
121
            ret['repstats'] = info_helper.get_repository_stats(repository)
 
122
        finally:
 
123
            branch.unlock()
 
124
            return ret
 
125
        return
 
126
    except errors.NotBranchError:
 
127
        pass
 
128
 
 
129
    try:
 
130
        repository = a_bzrdir.open_repository()
 
131
        repository.lock_read()
 
132
        try:
 
133
            ret['location'] = info_helper.get_location_info(repository)
 
134
            ret['format'] = info_helper.get_format_info(control, repository)
 
135
            ret['locking'] = info_helper.get_locking_info(repository)
 
136
            ret['repstats'] = info_helper.get_repository_stats(repository)
 
137
        finally:
 
138
            repository.unlock()
 
139
            return ret
 
140
        return
 
141
    except errors.NoRepositoryPresent:
 
142
        pass
 
143
 
36
144
 
37
145
class OliveInfo:
38
146
    """ Display Informations window and perform the needed actions. """
39
 
    def __init__(self, gladefile, comm):
 
147
    def __init__(self, branch):
40
148
        """ 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)
 
149
        self.glade = gtk.glade.XML(GLADEFILENAME, 'window_info', 'olive-gtk')
47
150
        
48
151
        # Get the Informations window widget
49
152
        self.window = self.glade.get_widget('window_info')
51
154
        # Check if current location is a branch
52
155
        self.notbranch = False
53
156
        try:
54
 
            self.ret = info.info(self.comm.get_path())
 
157
            self.ret = info(branch.base)
55
158
        except errors.NotBranchError:
56
159
            self.notbranch = True
57
160
            return
58
 
        except:
59
 
            raise
60
161
        
61
162
        # Dictionary for signal_autoconnect
62
163
        dic = { "on_button_info_close_clicked": self.close,
85
186
                ll = self.glade.get_widget('label_info_location_lightcoroot_label')
86
187
                l = self.glade.get_widget('label_info_location_lightcoroot')
87
188
                l.set_text(self.ret['location']['lightcoroot'])
88
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
89
189
                ll.show()
90
190
                l.show()
91
191
                if not display:
96
196
                ll = self.glade.get_widget('label_info_location_sharedrepo_label')
97
197
                l = self.glade.get_widget('label_info_location_sharedrepo')
98
198
                l.set_text(self.ret['location']['sharedrepo'])
99
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
100
199
                ll.show()
101
200
                l.show()
102
201
                if not display:
107
206
                ll = self.glade.get_widget('label_info_location_repobranch_label')
108
207
                l = self.glade.get_widget('label_info_location_repobranch')
109
208
                l.set_text(self.ret['location']['repobranch'])
110
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
111
209
                ll.show()
112
210
                l.show()
113
211
                if not display:
118
216
                ll = self.glade.get_widget('label_info_location_cobranch_label')
119
217
                l = self.glade.get_widget('label_info_location_cobranch')
120
218
                l.set_text(self.ret['location']['cobranch'])
121
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
122
219
                ll.show()
123
220
                l.show()
124
221
                if not display:
129
226
                ll = self.glade.get_widget('label_info_location_repoco_label')
130
227
                l = self.glade.get_widget('label_info_location_repoco')
131
228
                l.set_text(self.ret['location']['repoco'])
132
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
133
229
                ll.show()
134
230
                l.show()
135
231
                if not display:
140
236
                ll = self.glade.get_widget('label_info_location_coroot_label')
141
237
                l = self.glade.get_widget('label_info_location_coroot')
142
238
                l.set_text(self.ret['location']['coroot'])
143
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
144
239
                ll.show()
145
240
                l.show()
146
241
                if not display:
151
246
                ll = self.glade.get_widget('label_info_location_branchroot_label')
152
247
                l = self.glade.get_widget('label_info_location_branchroot')
153
248
                l.set_text(self.ret['location']['branchroot'])
154
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
155
249
                ll.show()
156
250
                l.show()
157
251
                if not display:
166
260
                ll = self.glade.get_widget('label_info_related_parentbranch_label')
167
261
                l = self.glade.get_widget('label_info_related_parentbranch')
168
262
                l.set_text(self.ret['related']['parentbranch'])
169
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
170
263
                ll.show()
171
264
                l.show()
172
265
                if not display:
177
270
                ll = self.glade.get_widget('label_info_related_publishbranch_label')
178
271
                l = self.glade.get_widget('label_info_related_publishbranch')
179
272
                l.set_text(self.ret['related']['publishbranch'])
180
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
181
273
                ll.show()
182
274
                l.show()
183
275
                if not display:
192
284
                ll = self.glade.get_widget('label_info_format_control_label')
193
285
                l = self.glade.get_widget('label_info_format_control')
194
286
                l.set_text(self.ret['format']['control'])
195
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
196
287
                ll.show()
197
288
                l.show()
198
289
                if not display:
203
294
                ll = self.glade.get_widget('label_info_format_workingtree_label')
204
295
                l = self.glade.get_widget('label_info_format_workingtree')
205
296
                l.set_text(self.ret['format']['workingtree'])
206
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
207
297
                ll.show()
208
298
                l.show()
209
299
                if not display:
214
304
                ll = self.glade.get_widget('label_info_format_branch_label')
215
305
                l = self.glade.get_widget('label_info_format_branch')
216
306
                l.set_text(self.ret['format']['branch'])
217
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
218
307
                ll.show()
219
308
                l.show()
220
309
                if not display:
225
314
                ll = self.glade.get_widget('label_info_format_repository_label')
226
315
                l = self.glade.get_widget('label_info_format_repository')
227
316
                l.set_text(self.ret['format']['repository'])
228
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
229
317
                ll.show()
230
318
                l.show()
231
319
                if not display:
240
328
                ll = self.glade.get_widget('label_info_locking_workingtree_label')
241
329
                l = self.glade.get_widget('label_info_locking_workingtree')
242
330
                l.set_text(self.ret['locking']['workingtree'])
243
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
244
331
                ll.show()
245
332
                l.show()
246
333
                if not display:
251
338
                ll = self.glade.get_widget('label_info_locking_branch_label')
252
339
                l = self.glade.get_widget('label_info_locking_branch')
253
340
                l.set_text(self.ret['locking']['branch'])
254
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
255
341
                ll.show()
256
342
                l.show()
257
343
                if not display:
262
348
                ll = self.glade.get_widget('label_info_locking_repository_label')
263
349
                l = self.glade.get_widget('label_info_locking_repository')
264
350
                l.set_text(self.ret['locking']['repository'])
265
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
266
351
                ll.show()
267
352
                l.show()
268
353
                if not display:
305
390
                ll = self.glade.get_widget('label_info_wtstats_unchanged_label')
306
391
                l = self.glade.get_widget('label_info_wtstats_unchanged')
307
392
                l.set_text(str(self.ret['wtstats']['unchanged']))
308
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
309
393
                ll.show()
310
394
                l.show()
311
395
                if not display:
316
400
                ll = self.glade.get_widget('label_info_wtstats_modified_label')
317
401
                l = self.glade.get_widget('label_info_wtstats_modified')
318
402
                l.set_text(str(self.ret['wtstats']['modified']))
319
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
320
403
                ll.show()
321
404
                l.show()
322
405
                if not display:
327
410
                ll = self.glade.get_widget('label_info_wtstats_added_label')
328
411
                l = self.glade.get_widget('label_info_wtstats_added')
329
412
                l.set_text(str(self.ret['wtstats']['added']))
330
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
331
413
                ll.show()
332
414
                l.show()
333
415
                if not display:
338
420
                ll = self.glade.get_widget('label_info_wtstats_removed_label')
339
421
                l = self.glade.get_widget('label_info_wtstats_removed')
340
422
                l.set_text(str(self.ret['wtstats']['removed']))
341
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
342
423
                ll.show()
343
424
                l.show()
344
425
                if not display:
349
430
                ll = self.glade.get_widget('label_info_wtstats_renamed_label')
350
431
                l = self.glade.get_widget('label_info_wtstats_renamed')
351
432
                l.set_text(str(self.ret['wtstats']['renamed']))
352
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
353
433
                ll.show()
354
434
                l.show()
355
435
                if not display:
360
440
                ll = self.glade.get_widget('label_info_wtstats_unknown_label')
361
441
                l = self.glade.get_widget('label_info_wtstats_unknown')
362
442
                l.set_text(str(self.ret['wtstats']['unknown']))
363
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
364
443
                ll.show()
365
444
                l.show()
366
445
                if not display:
371
450
                ll = self.glade.get_widget('label_info_wtstats_ignored_label')
372
451
                l = self.glade.get_widget('label_info_wtstats_ignored')
373
452
                l.set_text(str(self.ret['wtstats']['ignored']))
374
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
375
453
                ll.show()
376
454
                l.show()
377
455
                if not display:
382
460
                ll = self.glade.get_widget('label_info_wtstats_subdirs_label')
383
461
                l = self.glade.get_widget('label_info_wtstats_subdirs')
384
462
                l.set_text(str(self.ret['wtstats']['subdirs']))
385
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
386
463
                ll.show()
387
464
                l.show()
388
465
                if not display:
397
474
                ll = self.glade.get_widget('label_info_brstats_revno_label')
398
475
                l = self.glade.get_widget('label_info_brstats_revno')
399
476
                l.set_text(str(self.ret['brstats']['revno']))
400
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
401
477
                ll.show()
402
478
                l.show()
403
479
                if not display:
408
484
                ll = self.glade.get_widget('label_info_brstats_commiters_label')
409
485
                l = self.glade.get_widget('label_info_brstats_commiters')
410
486
                l.set_text(str(self.ret['brstats']['commiters']))
411
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
412
487
                ll.show()
413
488
                l.show()
414
489
                if not display:
419
494
                ll = self.glade.get_widget('label_info_brstats_age_label')
420
495
                l = self.glade.get_widget('label_info_brstats_age')
421
496
                l.set_text('%d days' % self.ret['brstats']['age'])
422
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
423
497
                ll.show()
424
498
                l.show()
425
499
                if not display:
430
504
                ll = self.glade.get_widget('label_info_brstats_firstrev_label')
431
505
                l = self.glade.get_widget('label_info_brstats_firstrev')
432
506
                l.set_text(self.ret['brstats']['firstrev'])
433
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
434
507
                ll.show()
435
508
                l.show()
436
509
                if not display:
441
514
                ll = self.glade.get_widget('label_info_brstats_lastrev_label')
442
515
                l = self.glade.get_widget('label_info_brstats_lastrev')
443
516
                l.set_text(self.ret['brstats']['lastrev'])
444
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
445
517
                ll.show()
446
518
                l.show()
447
519
                if not display:
456
528
                ll = self.glade.get_widget('label_info_repstats_revisions_label')
457
529
                l = self.glade.get_widget('label_info_repstats_revisions')
458
530
                l.set_text(str(self.ret['repstats']['revisions']))
459
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
460
531
                ll.show()
461
532
                l.show()
462
533
                if not display:
467
538
                ll = self.glade.get_widget('label_info_repstats_size_label')
468
539
                l = self.glade.get_widget('label_info_repstats_size')
469
540
                l.set_text('%d KiB' % (self.ret['repstats']['size'] / 1024))
470
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
471
541
                ll.show()
472
542
                l.show()
473
543
                if not display:
483
553
    def display(self):
484
554
        """ Display the Informations window. """
485
555
        if self.notbranch:
486
 
            self.dialog.error_dialog('Directory is not a branch.')
 
556
            error_dialog(_('Directory is not a branch'),
 
557
                         _('You can perform this action only in a branch.'))
487
558
            self.close()
488
559
        else:
489
560
            self.window.show()