/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: Jasper Groenewegen
  • Date: 2008-07-27 12:01:40 UTC
  • mfrom: (576.3.2 improve-merge)
  • mto: This revision was merged to the branch mainline in revision 579.
  • Revision ID: colbrac@xs4all.nl-20080727120140-1agdlzkc9fumjk5f
Merge merge dialog 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 os
 
18
 
17
19
try:
18
20
    import pygtk
19
21
    pygtk.require("2.0")
21
23
    pass
22
24
 
23
25
import gtk
24
 
import gtk.glade
25
26
 
26
27
import bzrlib.errors as errors
27
28
 
28
 
from dialog import error_dialog
29
 
from guifiles import GLADEFILENAME
 
29
from bzrlib.plugins.gtk import _i18n, icon_path
 
30
from bzrlib.plugins.gtk.dialog import error_dialog
30
31
 
31
32
 
32
33
def info(location):
108
109
 
109
110
    try:
110
111
        branch = a_bzrdir.open_branch()
 
112
        repository = branch.repository
 
113
        control = a_bzrdir
111
114
        branch.lock_read()
112
115
        try:
113
116
            ret['location'] = info_helper.get_location_info(repository, branch)
134
137
            ret['repstats'] = info_helper.get_repository_stats(repository)
135
138
        finally:
136
139
            repository.unlock()
137
 
            return ret
138
 
        return
 
140
        return ret
139
141
    except errors.NoRepositoryPresent:
140
142
        pass
141
143
 
142
144
 
143
 
class OliveInfo:
 
145
class InfoDialog(object):
144
146
    """ Display Informations window and perform the needed actions. """
145
 
    def __init__(self, wt):
 
147
    
 
148
    def __init__(self, branch):
146
149
        """ Initialize the Informations window. """
147
 
        self.glade = gtk.glade.XML(GLADEFILENAME, 'window_info', 'olive-gtk')
148
 
        
149
 
        # Get the Informations window widget
150
 
        self.window = self.glade.get_widget('window_info')
151
 
        
152
150
        # Check if current location is a branch
153
151
        self.notbranch = False
154
152
        try:
155
 
            self.ret = info(wt.basedir)
 
153
            self.ret = info(branch.base)
156
154
        except errors.NotBranchError:
157
155
            self.notbranch = True
158
156
            return
159
157
        
160
 
        # Dictionary for signal_autoconnect
161
 
        dic = { "on_button_info_close_clicked": self.close,
162
 
                "on_expander_info_location_activate": self.activate,
163
 
                "on_expander_info_related_activate": self.activate,
164
 
                "on_expander_info_format_activate": self.activate,
165
 
                "on_expander_info_locking_activate": self.activate,
166
 
                "on_expander_info_missing_activate": self.activate,
167
 
                "on_expander_info_wtstats_activate": self.activate,
168
 
                "on_expander_info_brstats_activate": self.activate,
169
 
                "on_expander_info_repstats_activate": self.activate }
170
 
        
171
 
        # Connect the signals to the handlers
172
 
        self.glade.signal_autoconnect(dic)
173
 
        
 
158
        # Create the window
 
159
        self.window = gtk.Dialog(title="Olive - Information",
 
160
                                  parent = None,
 
161
                                  flags=0,
 
162
                                  buttons=None)
 
163
        self.window.set_icon_list(gtk.gdk.pixbuf_new_from_file(icon_path("oliveicon2.png")),
 
164
                                  gtk.gdk.pixbuf_new_from_file(icon_path("olive-gtk.png")))
 
165
        self.window.vbox.set_spacing(3)
 
166
        self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_NORMAL)
 
167
        
 
168
        infokeylist = ( ('location', _i18n("Location"), (
 
169
                            ('lightcoroot', _i18n("Light checkout root")),
 
170
                            ('sharedrepo', _i18n("Shared repository")),
 
171
                            ('repobranch', _i18n("Repository branch")),
 
172
                            ('cobranch', _i18n("Checkout of branch")),
 
173
                            ('repoco', _i18n("Repository checkout")),
 
174
                            ('coroot', _i18n("Checkout root")),
 
175
                            ('branchroot', _i18n("Branch root")),
 
176
                            )),
 
177
                        ('related', _i18n("Related branches"), (
 
178
                            ('parentbranch', _i18n("Parent branch")),
 
179
                            ('publishbranch', _i18n("Publish to branch")),
 
180
                            )),
 
181
                        ('format', _i18n("Format"), (
 
182
                            ('control', _i18n("Control format")),
 
183
                            ('workingtree', _i18n("Working tree format")),
 
184
                            ('branch', _i18n("Branch format")),
 
185
                            ('repository', _i18n("Repository format")),
 
186
                            )),
 
187
                        ('locking', _i18n("Lock status"), (
 
188
                            ('workingtree', _i18n("Working tree lock status")),
 
189
                            ('branch', _i18n("Branch lock status")),
 
190
                            ('repository', _i18n("Repository lock status")),
 
191
                            )),
 
192
                        #('missing', _i18n("Missing revisions"), (
 
193
                        #    ('branch', _i18n("Missing revisions in branch")),
 
194
                        #    ('workingtree', _i18n("Missing revisions in working tree")),
 
195
                        #    )), # Missing is 'temporary' disabled
 
196
                        ('wtstats', _i18n("In the working tree"), (
 
197
                            ('unchanged', _i18n("Unchanged files")),
 
198
                            ('modified', _i18n("Modified files")),
 
199
                            ('added', _i18n("Added files")),
 
200
                            ('removed', _i18n("Removed files")),
 
201
                            ('renamed', _i18n("Renamed files")),
 
202
                            ('unknown', _i18n("Unknown files")),
 
203
                            ('ignored', _i18n("Ignored files")),
 
204
                            ('subdirs', _i18n("Versioned subdirectories")),
 
205
                            )),
 
206
                        ('brstats', _i18n("Branch history"), (
 
207
                            ('revno', _i18n("Revisions in branch")),
 
208
                            ('commiters', _i18n("Number of commiters")),
 
209
                            ('age', _i18n("Age of branch in days")),
 
210
                            ('firstrev', _i18n("Time of first revision")),
 
211
                            ('lastrev', _i18n("Time of last revision")),
 
212
                            )),
 
213
                        ('repstats', _i18n("Revision store"), (
 
214
                            ('revisions', _i18n("Revisions in repository")),
 
215
                            ('size', _i18n("Size of repository in bytes")),
 
216
                            )),
 
217
                        )
 
218
               
174
219
        # Generate status output
175
 
        self._generate_info()
176
 
 
177
 
    def _generate_info(self):
 
220
        self._generate_info(infokeylist)
 
221
        
 
222
        button_close = gtk.Button(stock=gtk.STOCK_CLOSE)        
 
223
        button_close.connect('clicked', self.close)
 
224
        self.window.action_area.pack_end(button_close)
 
225
        self.window.set_focus(button_close)
 
226
    
 
227
    def _generate_info(self, infokeylist):
178
228
        """ Generate 'bzr info' output. """
179
 
        # location
180
 
        if self.ret.has_key('location'):
181
 
            display = False
182
 
            e = self.glade.get_widget('expander_info_location')
183
 
            if self.ret['location'].has_key('lightcoroot'):
184
 
                ll = self.glade.get_widget('label_info_location_lightcoroot_label')
185
 
                l = self.glade.get_widget('label_info_location_lightcoroot')
186
 
                l.set_text(self.ret['location']['lightcoroot'])
187
 
                ll.show()
188
 
                l.show()
189
 
                if not display:
190
 
                    e.set_expanded(True)
191
 
                    e.show()
192
 
                    display = True
193
 
            if self.ret['location'].has_key('sharedrepo'):
194
 
                ll = self.glade.get_widget('label_info_location_sharedrepo_label')
195
 
                l = self.glade.get_widget('label_info_location_sharedrepo')
196
 
                l.set_text(self.ret['location']['sharedrepo'])
197
 
                ll.show()
198
 
                l.show()
199
 
                if not display:
200
 
                    e.set_expanded(True)
201
 
                    e.show()
202
 
                    display = True
203
 
            if self.ret['location'].has_key('repobranch'):
204
 
                ll = self.glade.get_widget('label_info_location_repobranch_label')
205
 
                l = self.glade.get_widget('label_info_location_repobranch')
206
 
                l.set_text(self.ret['location']['repobranch'])
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['location'].has_key('cobranch'):
214
 
                ll = self.glade.get_widget('label_info_location_cobranch_label')
215
 
                l = self.glade.get_widget('label_info_location_cobranch')
216
 
                l.set_text(self.ret['location']['cobranch'])
217
 
                ll.show()
218
 
                l.show()
219
 
                if not display:
220
 
                    e.set_expanded(True)
221
 
                    e.show()
222
 
                    display = True
223
 
            if self.ret['location'].has_key('repoco'):
224
 
                ll = self.glade.get_widget('label_info_location_repoco_label')
225
 
                l = self.glade.get_widget('label_info_location_repoco')
226
 
                l.set_text(self.ret['location']['repoco'])
227
 
                ll.show()
228
 
                l.show()
229
 
                if not display:
230
 
                    e.set_expanded(True)
231
 
                    e.show()
232
 
                    display = True
233
 
            if self.ret['location'].has_key('coroot'):
234
 
                ll = self.glade.get_widget('label_info_location_coroot_label')
235
 
                l = self.glade.get_widget('label_info_location_coroot')
236
 
                l.set_text(self.ret['location']['coroot'])
237
 
                ll.show()
238
 
                l.show()
239
 
                if not display:
240
 
                    e.set_expanded(True)
241
 
                    e.show()
242
 
                    display = True
243
 
            if self.ret['location'].has_key('branchroot'):
244
 
                ll = self.glade.get_widget('label_info_location_branchroot_label')
245
 
                l = self.glade.get_widget('label_info_location_branchroot')
246
 
                l.set_text(self.ret['location']['branchroot'])
247
 
                ll.show()
248
 
                l.show()
249
 
                if not display:
250
 
                    e.set_expanded(True)
251
 
                    e.show()
252
 
                    display = True
253
 
        # related
254
 
        if self.ret.has_key('related'):
255
 
            display = False
256
 
            e = self.glade.get_widget('expander_info_related')
257
 
            if self.ret['related'].has_key('parentbranch'):
258
 
                ll = self.glade.get_widget('label_info_related_parentbranch_label')
259
 
                l = self.glade.get_widget('label_info_related_parentbranch')
260
 
                l.set_text(self.ret['related']['parentbranch'])
261
 
                ll.show()
262
 
                l.show()
263
 
                if not display:
264
 
                    e.set_expanded(True)
265
 
                    e.show()
266
 
                    display = True
267
 
            if self.ret['related'].has_key('publishbranch'):
268
 
                ll = self.glade.get_widget('label_info_related_publishbranch_label')
269
 
                l = self.glade.get_widget('label_info_related_publishbranch')
270
 
                l.set_text(self.ret['related']['publishbranch'])
271
 
                ll.show()
272
 
                l.show()
273
 
                if not display:
274
 
                    e.set_expanded(True)
275
 
                    e.show()
276
 
                    display = True
277
 
        # format
278
 
        if self.ret.has_key('format'):
279
 
            display = False
280
 
            e = self.glade.get_widget('expander_info_format')
281
 
            if self.ret['format'].has_key('control'):
282
 
                ll = self.glade.get_widget('label_info_format_control_label')
283
 
                l = self.glade.get_widget('label_info_format_control')
284
 
                l.set_text(self.ret['format']['control'])
285
 
                ll.show()
286
 
                l.show()
287
 
                if not display:
288
 
                    e.set_expanded(True)
289
 
                    e.show()
290
 
                    display = True
291
 
            if self.ret['format'].has_key('workingtree'):
292
 
                ll = self.glade.get_widget('label_info_format_workingtree_label')
293
 
                l = self.glade.get_widget('label_info_format_workingtree')
294
 
                l.set_text(self.ret['format']['workingtree'])
295
 
                ll.show()
296
 
                l.show()
297
 
                if not display:
298
 
                    e.set_expanded(True)
299
 
                    e.show()
300
 
                    display = True
301
 
            if self.ret['format'].has_key('branch'):
302
 
                ll = self.glade.get_widget('label_info_format_branch_label')
303
 
                l = self.glade.get_widget('label_info_format_branch')
304
 
                l.set_text(self.ret['format']['branch'])
305
 
                ll.show()
306
 
                l.show()
307
 
                if not display:
308
 
                    e.set_expanded(True)
309
 
                    e.show()
310
 
                    display = True
311
 
            if self.ret['format'].has_key('repository'):
312
 
                ll = self.glade.get_widget('label_info_format_repository_label')
313
 
                l = self.glade.get_widget('label_info_format_repository')
314
 
                l.set_text(self.ret['format']['repository'])
315
 
                ll.show()
316
 
                l.show()
317
 
                if not display:
318
 
                    e.set_expanded(True)
319
 
                    e.show()
320
 
                    display = True
321
 
        # locking
322
 
        if self.ret.has_key('locking'):
323
 
            display = False
324
 
            e = self.glade.get_widget('expander_info_locking')
325
 
            if self.ret['locking'].has_key('workingtree'):
326
 
                ll = self.glade.get_widget('label_info_locking_workingtree_label')
327
 
                l = self.glade.get_widget('label_info_locking_workingtree')
328
 
                l.set_text(self.ret['locking']['workingtree'])
329
 
                ll.show()
330
 
                l.show()
331
 
                if not display:
332
 
                    e.set_expanded(True)
333
 
                    e.show()
334
 
                    display = True
335
 
            if self.ret['locking'].has_key('branch'):
336
 
                ll = self.glade.get_widget('label_info_locking_branch_label')
337
 
                l = self.glade.get_widget('label_info_locking_branch')
338
 
                l.set_text(self.ret['locking']['branch'])
339
 
                ll.show()
340
 
                l.show()
341
 
                if not display:
342
 
                    e.set_expanded(True)
343
 
                    e.show()
344
 
                    display = True
345
 
            if self.ret['locking'].has_key('repository'):
346
 
                ll = self.glade.get_widget('label_info_locking_repository_label')
347
 
                l = self.glade.get_widget('label_info_locking_repository')
348
 
                l.set_text(self.ret['locking']['repository'])
349
 
                ll.show()
350
 
                l.show()
351
 
                if not display:
352
 
                    e.set_expanded(True)
353
 
                    e.show()
354
 
                    display = True
355
 
        # missing - temporary disabled
356
 
        """
357
 
        if self.ret.has_key('missing'):
358
 
            display = False
359
 
            e = self.glade.get_widget('expander_info_missing')
360
 
            if self.ret['missing'].has_key('branch'):
361
 
                ll = self.glade.get_widget('label_info_missing_branch_label')
362
 
                l = self.glade.get_widget('label_info_missing_branch')
363
 
                l.set_text(self.ret['missing']['branch'])
364
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
365
 
                ll.show()
366
 
                l.show()
367
 
                if not display:
368
 
                    e.set_expanded(True)
369
 
                    e.show()
370
 
                    display = True
371
 
            if self.ret['missing'].has_key('workingtree'):
372
 
                ll = self.glade.get_widget('label_info_missing_workingtree_label')
373
 
                l = self.glade.get_widget('label_info_missing_workingtree')
374
 
                l.set_text(self.ret['missing']['branch'])
375
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
376
 
                ll.show()
377
 
                l.show()
378
 
                if not display:
379
 
                    e.set_expanded(True)
380
 
                    e.show()
381
 
                    display = True
382
 
        """
383
 
        # working tree stats
384
 
        if self.ret.has_key('wtstats'):
385
 
            display = False
386
 
            e = self.glade.get_widget('expander_info_wtstats')
387
 
            if self.ret['wtstats'].has_key('unchanged'):
388
 
                ll = self.glade.get_widget('label_info_wtstats_unchanged_label')
389
 
                l = self.glade.get_widget('label_info_wtstats_unchanged')
390
 
                l.set_text(str(self.ret['wtstats']['unchanged']))
391
 
                ll.show()
392
 
                l.show()
393
 
                if not display:
394
 
                    e.set_expanded(True)
395
 
                    e.show()
396
 
                    display = True
397
 
            if self.ret['wtstats'].has_key('modified'):
398
 
                ll = self.glade.get_widget('label_info_wtstats_modified_label')
399
 
                l = self.glade.get_widget('label_info_wtstats_modified')
400
 
                l.set_text(str(self.ret['wtstats']['modified']))
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['wtstats'].has_key('added'):
408
 
                ll = self.glade.get_widget('label_info_wtstats_added_label')
409
 
                l = self.glade.get_widget('label_info_wtstats_added')
410
 
                l.set_text(str(self.ret['wtstats']['added']))
411
 
                ll.show()
412
 
                l.show()
413
 
                if not display:
414
 
                    e.set_expanded(True)
415
 
                    e.show()
416
 
                    display = True
417
 
            if self.ret['wtstats'].has_key('removed'):
418
 
                ll = self.glade.get_widget('label_info_wtstats_removed_label')
419
 
                l = self.glade.get_widget('label_info_wtstats_removed')
420
 
                l.set_text(str(self.ret['wtstats']['removed']))
421
 
                ll.show()
422
 
                l.show()
423
 
                if not display:
424
 
                    e.set_expanded(True)
425
 
                    e.show()
426
 
                    display = True
427
 
            if self.ret['wtstats'].has_key('renamed'):
428
 
                ll = self.glade.get_widget('label_info_wtstats_renamed_label')
429
 
                l = self.glade.get_widget('label_info_wtstats_renamed')
430
 
                l.set_text(str(self.ret['wtstats']['renamed']))
431
 
                ll.show()
432
 
                l.show()
433
 
                if not display:
434
 
                    e.set_expanded(True)
435
 
                    e.show()
436
 
                    display = True
437
 
            if self.ret['wtstats'].has_key('unknown'):
438
 
                ll = self.glade.get_widget('label_info_wtstats_unknown_label')
439
 
                l = self.glade.get_widget('label_info_wtstats_unknown')
440
 
                l.set_text(str(self.ret['wtstats']['unknown']))
441
 
                ll.show()
442
 
                l.show()
443
 
                if not display:
444
 
                    e.set_expanded(True)
445
 
                    e.show()
446
 
                    display = True
447
 
            if self.ret['wtstats'].has_key('ignored'):
448
 
                ll = self.glade.get_widget('label_info_wtstats_ignored_label')
449
 
                l = self.glade.get_widget('label_info_wtstats_ignored')
450
 
                l.set_text(str(self.ret['wtstats']['ignored']))
451
 
                ll.show()
452
 
                l.show()
453
 
                if not display:
454
 
                    e.set_expanded(True)
455
 
                    e.show()
456
 
                    display = True
457
 
            if self.ret['wtstats'].has_key('subdirs'):
458
 
                ll = self.glade.get_widget('label_info_wtstats_subdirs_label')
459
 
                l = self.glade.get_widget('label_info_wtstats_subdirs')
460
 
                l.set_text(str(self.ret['wtstats']['subdirs']))
461
 
                ll.show()
462
 
                l.show()
463
 
                if not display:
464
 
                    e.set_expanded(True)
465
 
                    e.show()
466
 
                    display = True
467
 
        # branch stats
468
 
        if self.ret.has_key('brstats'):
469
 
            display = False
470
 
            e = self.glade.get_widget('expander_info_brstats')
471
 
            if self.ret['brstats'].has_key('revno'):
472
 
                ll = self.glade.get_widget('label_info_brstats_revno_label')
473
 
                l = self.glade.get_widget('label_info_brstats_revno')
474
 
                l.set_text(str(self.ret['brstats']['revno']))
475
 
                ll.show()
476
 
                l.show()
477
 
                if not display:
478
 
                    e.set_expanded(True)
479
 
                    e.show()
480
 
                    display = True
481
 
            if self.ret['brstats'].has_key('commiters'):
482
 
                ll = self.glade.get_widget('label_info_brstats_commiters_label')
483
 
                l = self.glade.get_widget('label_info_brstats_commiters')
484
 
                l.set_text(str(self.ret['brstats']['commiters']))
485
 
                ll.show()
486
 
                l.show()
487
 
                if not display:
488
 
                    e.set_expanded(True)
489
 
                    e.show()
490
 
                    display = True
491
 
            if self.ret['brstats'].has_key('age'):
492
 
                ll = self.glade.get_widget('label_info_brstats_age_label')
493
 
                l = self.glade.get_widget('label_info_brstats_age')
494
 
                l.set_text('%d days' % self.ret['brstats']['age'])
495
 
                ll.show()
496
 
                l.show()
497
 
                if not display:
498
 
                    e.set_expanded(True)
499
 
                    e.show()
500
 
                    display = True
501
 
            if self.ret['brstats'].has_key('firstrev'):
502
 
                ll = self.glade.get_widget('label_info_brstats_firstrev_label')
503
 
                l = self.glade.get_widget('label_info_brstats_firstrev')
504
 
                l.set_text(self.ret['brstats']['firstrev'])
505
 
                ll.show()
506
 
                l.show()
507
 
                if not display:
508
 
                    e.set_expanded(True)
509
 
                    e.show()
510
 
                    display = True
511
 
            if self.ret['brstats'].has_key('lastrev'):
512
 
                ll = self.glade.get_widget('label_info_brstats_lastrev_label')
513
 
                l = self.glade.get_widget('label_info_brstats_lastrev')
514
 
                l.set_text(self.ret['brstats']['lastrev'])
515
 
                ll.show()
516
 
                l.show()
517
 
                if not display:
518
 
                    e.set_expanded(True)
519
 
                    e.show()
520
 
                    display = True
521
 
        # repository stats
522
 
        if self.ret.has_key('repstats'):
523
 
            display = False
524
 
            e = self.glade.get_widget('expander_info_repstats')
525
 
            if self.ret['repstats'].has_key('revisions'):
526
 
                ll = self.glade.get_widget('label_info_repstats_revisions_label')
527
 
                l = self.glade.get_widget('label_info_repstats_revisions')
528
 
                l.set_text(str(self.ret['repstats']['revisions']))
529
 
                ll.show()
530
 
                l.show()
531
 
                if not display:
532
 
                    e.set_expanded(True)
533
 
                    e.show()
534
 
                    display = True
535
 
            if self.ret['repstats'].has_key('size'):
536
 
                ll = self.glade.get_widget('label_info_repstats_size_label')
537
 
                l = self.glade.get_widget('label_info_repstats_size')
538
 
                l.set_text('%d KiB' % (self.ret['repstats']['size'] / 1024))
539
 
                ll.show()
540
 
                l.show()
541
 
                if not display:
542
 
                    e.set_expanded(True)
543
 
                    e.show()
544
 
                    display = True
 
229
        for key, keystring, subkeylist in infokeylist:
 
230
            if self.ret.has_key(key):
 
231
                tablelength = 0
 
232
                for subkey, subkeystring in subkeylist:
 
233
                    if self.ret[key].has_key(subkey):
 
234
                        tablelength += 1
 
235
                if tablelength == 0:
 
236
                    pass
 
237
                else:
 
238
                    exec "exp_%s = gtk.Expander('<b>%s</b>')"%(key, keystring)
 
239
                    eval("exp_%s.set_use_markup(True)"%key)
 
240
                    eval("exp_%s.connect('activate', self.activate)"%key)
 
241
                    
 
242
                    exec "alignment_%s = gtk.Alignment()"%key
 
243
                    eval("alignment_%s.set_padding(0, 0, 24, 0)"%key)
 
244
                    eval("exp_%s.add(alignment_%s)"%(key, key))
 
245
                    
 
246
                    exec "table_%s = gtk.Table(tablelength, 2)"%key
 
247
                    eval("table_%s.set_col_spacings(12)"%key)
 
248
                    eval("alignment_%s.add(table_%s)"%(key, key))
 
249
                    
 
250
                    tablepos = 0
 
251
                    for subkey, subkeystring in subkeylist:
 
252
                        if self.ret[key].has_key(subkey):
 
253
                            exec "%s_%s_label = gtk.Label('%s:')"%(key,subkey, subkeystring)
 
254
                            eval("table_%s.attach(%s_%s_label, 0, 1, %i, %i, gtk.FILL)"%(key, key, subkey, tablepos, tablepos + 1))
 
255
                            eval("%s_%s_label.set_alignment(0, 0.5)"%(key, subkey))
 
256
                            
 
257
                            exec "%s_%s = gtk.Label('%s')"%(key, subkey, str(self.ret[key][subkey]))
 
258
                            eval("table_%s.attach(%s_%s, 1, 2, %i, %i, gtk.FILL)"%(key, key, subkey, tablepos, tablepos + 1))
 
259
                            eval("%s_%s.set_alignment(0, 0.5)"%(key, subkey))
 
260
                            tablepos += 1
 
261
                    eval("exp_%s.set_expanded(True)"%key)
 
262
                    eval("self.window.vbox.pack_start(exp_%s, False, True, 0)"%key)
545
263
    
546
264
    def activate(self, expander):
547
265
        """ Redraw the window. """
551
269
    def display(self):
552
270
        """ Display the Informations window. """
553
271
        if self.notbranch:
554
 
            error_dialog(_('Directory is not a branch'),
555
 
                         _('You can perform this action only in a branch.'))
 
272
            error_dialog(_i18n('Directory is not a branch'),
 
273
                         _i18n('You can perform this action only in a branch.'))
556
274
            self.close()
557
275
        else:
558
 
            self.window.show()
559
 
 
 
276
            self.window.show_all()
 
277
    
560
278
    def close(self, widget=None):
561
279
        self.window.destroy()