/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: Jelmer Vernooij
  • Date: 2008-06-29 16:11:12 UTC
  • mfrom: (475.2.2 gtk)
  • mto: This revision was merged to the branch mainline in revision 519.
  • Revision ID: jelmer@samba.org-20080629161112-3j4zp0r0e7cv6cds
Merge Chad's progress bar in viz patch.

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