/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
 
 
29
from bzrlib.plugins.gtk import _i18n, icon_path
28
30
from bzrlib.plugins.gtk.dialog import error_dialog
29
 
from guifiles import GLADEFILENAME
30
31
 
31
32
 
32
33
def info(location):
136
137
            ret['repstats'] = info_helper.get_repository_stats(repository)
137
138
        finally:
138
139
            repository.unlock()
139
 
            return ret
140
 
        return
 
140
        return ret
141
141
    except errors.NoRepositoryPresent:
142
142
        pass
143
143
 
144
144
 
145
 
class OliveInfo:
 
145
class InfoDialog(object):
146
146
    """ Display Informations window and perform the needed actions. """
 
147
    
147
148
    def __init__(self, branch):
148
149
        """ Initialize the Informations window. """
149
 
        self.glade = gtk.glade.XML(GLADEFILENAME, 'window_info', 'olive-gtk')
150
 
        
151
 
        # Get the Informations window widget
152
 
        self.window = self.glade.get_widget('window_info')
153
 
        
154
150
        # Check if current location is a branch
155
151
        self.notbranch = False
156
152
        try:
159
155
            self.notbranch = True
160
156
            return
161
157
        
162
 
        # Dictionary for signal_autoconnect
163
 
        dic = { "on_button_info_close_clicked": self.close,
164
 
                "on_expander_info_location_activate": self.activate,
165
 
                "on_expander_info_related_activate": self.activate,
166
 
                "on_expander_info_format_activate": self.activate,
167
 
                "on_expander_info_locking_activate": self.activate,
168
 
                "on_expander_info_missing_activate": self.activate,
169
 
                "on_expander_info_wtstats_activate": self.activate,
170
 
                "on_expander_info_brstats_activate": self.activate,
171
 
                "on_expander_info_repstats_activate": self.activate }
172
 
        
173
 
        # Connect the signals to the handlers
174
 
        self.glade.signal_autoconnect(dic)
175
 
        
 
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
               
176
219
        # Generate status output
177
 
        self._generate_info()
178
 
 
179
 
    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):
180
228
        """ Generate 'bzr info' output. """
181
 
        # location
182
 
        if self.ret.has_key('location'):
183
 
            display = False
184
 
            e = self.glade.get_widget('expander_info_location')
185
 
            if self.ret['location'].has_key('lightcoroot'):
186
 
                ll = self.glade.get_widget('label_info_location_lightcoroot_label')
187
 
                l = self.glade.get_widget('label_info_location_lightcoroot')
188
 
                l.set_text(self.ret['location']['lightcoroot'])
189
 
                ll.show()
190
 
                l.show()
191
 
                if not display:
192
 
                    e.set_expanded(True)
193
 
                    e.show()
194
 
                    display = True
195
 
            if self.ret['location'].has_key('sharedrepo'):
196
 
                ll = self.glade.get_widget('label_info_location_sharedrepo_label')
197
 
                l = self.glade.get_widget('label_info_location_sharedrepo')
198
 
                l.set_text(self.ret['location']['sharedrepo'])
199
 
                ll.show()
200
 
                l.show()
201
 
                if not display:
202
 
                    e.set_expanded(True)
203
 
                    e.show()
204
 
                    display = True
205
 
            if self.ret['location'].has_key('repobranch'):
206
 
                ll = self.glade.get_widget('label_info_location_repobranch_label')
207
 
                l = self.glade.get_widget('label_info_location_repobranch')
208
 
                l.set_text(self.ret['location']['repobranch'])
209
 
                ll.show()
210
 
                l.show()
211
 
                if not display:
212
 
                    e.set_expanded(True)
213
 
                    e.show()
214
 
                    display = True
215
 
            if self.ret['location'].has_key('cobranch'):
216
 
                ll = self.glade.get_widget('label_info_location_cobranch_label')
217
 
                l = self.glade.get_widget('label_info_location_cobranch')
218
 
                l.set_text(self.ret['location']['cobranch'])
219
 
                ll.show()
220
 
                l.show()
221
 
                if not display:
222
 
                    e.set_expanded(True)
223
 
                    e.show()
224
 
                    display = True
225
 
            if self.ret['location'].has_key('repoco'):
226
 
                ll = self.glade.get_widget('label_info_location_repoco_label')
227
 
                l = self.glade.get_widget('label_info_location_repoco')
228
 
                l.set_text(self.ret['location']['repoco'])
229
 
                ll.show()
230
 
                l.show()
231
 
                if not display:
232
 
                    e.set_expanded(True)
233
 
                    e.show()
234
 
                    display = True
235
 
            if self.ret['location'].has_key('coroot'):
236
 
                ll = self.glade.get_widget('label_info_location_coroot_label')
237
 
                l = self.glade.get_widget('label_info_location_coroot')
238
 
                l.set_text(self.ret['location']['coroot'])
239
 
                ll.show()
240
 
                l.show()
241
 
                if not display:
242
 
                    e.set_expanded(True)
243
 
                    e.show()
244
 
                    display = True
245
 
            if self.ret['location'].has_key('branchroot'):
246
 
                ll = self.glade.get_widget('label_info_location_branchroot_label')
247
 
                l = self.glade.get_widget('label_info_location_branchroot')
248
 
                l.set_text(self.ret['location']['branchroot'])
249
 
                ll.show()
250
 
                l.show()
251
 
                if not display:
252
 
                    e.set_expanded(True)
253
 
                    e.show()
254
 
                    display = True
255
 
        # related
256
 
        if self.ret.has_key('related'):
257
 
            display = False
258
 
            e = self.glade.get_widget('expander_info_related')
259
 
            if self.ret['related'].has_key('parentbranch'):
260
 
                ll = self.glade.get_widget('label_info_related_parentbranch_label')
261
 
                l = self.glade.get_widget('label_info_related_parentbranch')
262
 
                l.set_text(self.ret['related']['parentbranch'])
263
 
                ll.show()
264
 
                l.show()
265
 
                if not display:
266
 
                    e.set_expanded(True)
267
 
                    e.show()
268
 
                    display = True
269
 
            if self.ret['related'].has_key('publishbranch'):
270
 
                ll = self.glade.get_widget('label_info_related_publishbranch_label')
271
 
                l = self.glade.get_widget('label_info_related_publishbranch')
272
 
                l.set_text(self.ret['related']['publishbranch'])
273
 
                ll.show()
274
 
                l.show()
275
 
                if not display:
276
 
                    e.set_expanded(True)
277
 
                    e.show()
278
 
                    display = True
279
 
        # format
280
 
        if self.ret.has_key('format'):
281
 
            display = False
282
 
            e = self.glade.get_widget('expander_info_format')
283
 
            if self.ret['format'].has_key('control'):
284
 
                ll = self.glade.get_widget('label_info_format_control_label')
285
 
                l = self.glade.get_widget('label_info_format_control')
286
 
                l.set_text(self.ret['format']['control'])
287
 
                ll.show()
288
 
                l.show()
289
 
                if not display:
290
 
                    e.set_expanded(True)
291
 
                    e.show()
292
 
                    display = True
293
 
            if self.ret['format'].has_key('workingtree'):
294
 
                ll = self.glade.get_widget('label_info_format_workingtree_label')
295
 
                l = self.glade.get_widget('label_info_format_workingtree')
296
 
                l.set_text(self.ret['format']['workingtree'])
297
 
                ll.show()
298
 
                l.show()
299
 
                if not display:
300
 
                    e.set_expanded(True)
301
 
                    e.show()
302
 
                    display = True
303
 
            if self.ret['format'].has_key('branch'):
304
 
                ll = self.glade.get_widget('label_info_format_branch_label')
305
 
                l = self.glade.get_widget('label_info_format_branch')
306
 
                l.set_text(self.ret['format']['branch'])
307
 
                ll.show()
308
 
                l.show()
309
 
                if not display:
310
 
                    e.set_expanded(True)
311
 
                    e.show()
312
 
                    display = True
313
 
            if self.ret['format'].has_key('repository'):
314
 
                ll = self.glade.get_widget('label_info_format_repository_label')
315
 
                l = self.glade.get_widget('label_info_format_repository')
316
 
                l.set_text(self.ret['format']['repository'])
317
 
                ll.show()
318
 
                l.show()
319
 
                if not display:
320
 
                    e.set_expanded(True)
321
 
                    e.show()
322
 
                    display = True
323
 
        # locking
324
 
        if self.ret.has_key('locking'):
325
 
            display = False
326
 
            e = self.glade.get_widget('expander_info_locking')
327
 
            if self.ret['locking'].has_key('workingtree'):
328
 
                ll = self.glade.get_widget('label_info_locking_workingtree_label')
329
 
                l = self.glade.get_widget('label_info_locking_workingtree')
330
 
                l.set_text(self.ret['locking']['workingtree'])
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['locking'].has_key('branch'):
338
 
                ll = self.glade.get_widget('label_info_locking_branch_label')
339
 
                l = self.glade.get_widget('label_info_locking_branch')
340
 
                l.set_text(self.ret['locking']['branch'])
341
 
                ll.show()
342
 
                l.show()
343
 
                if not display:
344
 
                    e.set_expanded(True)
345
 
                    e.show()
346
 
                    display = True
347
 
            if self.ret['locking'].has_key('repository'):
348
 
                ll = self.glade.get_widget('label_info_locking_repository_label')
349
 
                l = self.glade.get_widget('label_info_locking_repository')
350
 
                l.set_text(self.ret['locking']['repository'])
351
 
                ll.show()
352
 
                l.show()
353
 
                if not display:
354
 
                    e.set_expanded(True)
355
 
                    e.show()
356
 
                    display = True
357
 
        # missing - temporary disabled
358
 
        """
359
 
        if self.ret.has_key('missing'):
360
 
            display = False
361
 
            e = self.glade.get_widget('expander_info_missing')
362
 
            if self.ret['missing'].has_key('branch'):
363
 
                ll = self.glade.get_widget('label_info_missing_branch_label')
364
 
                l = self.glade.get_widget('label_info_missing_branch')
365
 
                l.set_text(self.ret['missing']['branch'])
366
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
367
 
                ll.show()
368
 
                l.show()
369
 
                if not display:
370
 
                    e.set_expanded(True)
371
 
                    e.show()
372
 
                    display = True
373
 
            if self.ret['missing'].has_key('workingtree'):
374
 
                ll = self.glade.get_widget('label_info_missing_workingtree_label')
375
 
                l = self.glade.get_widget('label_info_missing_workingtree')
376
 
                l.set_text(self.ret['missing']['branch'])
377
 
                ll.set_markup('<b>' + ll.get_text() + '</b>')
378
 
                ll.show()
379
 
                l.show()
380
 
                if not display:
381
 
                    e.set_expanded(True)
382
 
                    e.show()
383
 
                    display = True
384
 
        """
385
 
        # working tree stats
386
 
        if self.ret.has_key('wtstats'):
387
 
            display = False
388
 
            e = self.glade.get_widget('expander_info_wtstats')
389
 
            if self.ret['wtstats'].has_key('unchanged'):
390
 
                ll = self.glade.get_widget('label_info_wtstats_unchanged_label')
391
 
                l = self.glade.get_widget('label_info_wtstats_unchanged')
392
 
                l.set_text(str(self.ret['wtstats']['unchanged']))
393
 
                ll.show()
394
 
                l.show()
395
 
                if not display:
396
 
                    e.set_expanded(True)
397
 
                    e.show()
398
 
                    display = True
399
 
            if self.ret['wtstats'].has_key('modified'):
400
 
                ll = self.glade.get_widget('label_info_wtstats_modified_label')
401
 
                l = self.glade.get_widget('label_info_wtstats_modified')
402
 
                l.set_text(str(self.ret['wtstats']['modified']))
403
 
                ll.show()
404
 
                l.show()
405
 
                if not display:
406
 
                    e.set_expanded(True)
407
 
                    e.show()
408
 
                    display = True
409
 
            if self.ret['wtstats'].has_key('added'):
410
 
                ll = self.glade.get_widget('label_info_wtstats_added_label')
411
 
                l = self.glade.get_widget('label_info_wtstats_added')
412
 
                l.set_text(str(self.ret['wtstats']['added']))
413
 
                ll.show()
414
 
                l.show()
415
 
                if not display:
416
 
                    e.set_expanded(True)
417
 
                    e.show()
418
 
                    display = True
419
 
            if self.ret['wtstats'].has_key('removed'):
420
 
                ll = self.glade.get_widget('label_info_wtstats_removed_label')
421
 
                l = self.glade.get_widget('label_info_wtstats_removed')
422
 
                l.set_text(str(self.ret['wtstats']['removed']))
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['wtstats'].has_key('renamed'):
430
 
                ll = self.glade.get_widget('label_info_wtstats_renamed_label')
431
 
                l = self.glade.get_widget('label_info_wtstats_renamed')
432
 
                l.set_text(str(self.ret['wtstats']['renamed']))
433
 
                ll.show()
434
 
                l.show()
435
 
                if not display:
436
 
                    e.set_expanded(True)
437
 
                    e.show()
438
 
                    display = True
439
 
            if self.ret['wtstats'].has_key('unknown'):
440
 
                ll = self.glade.get_widget('label_info_wtstats_unknown_label')
441
 
                l = self.glade.get_widget('label_info_wtstats_unknown')
442
 
                l.set_text(str(self.ret['wtstats']['unknown']))
443
 
                ll.show()
444
 
                l.show()
445
 
                if not display:
446
 
                    e.set_expanded(True)
447
 
                    e.show()
448
 
                    display = True
449
 
            if self.ret['wtstats'].has_key('ignored'):
450
 
                ll = self.glade.get_widget('label_info_wtstats_ignored_label')
451
 
                l = self.glade.get_widget('label_info_wtstats_ignored')
452
 
                l.set_text(str(self.ret['wtstats']['ignored']))
453
 
                ll.show()
454
 
                l.show()
455
 
                if not display:
456
 
                    e.set_expanded(True)
457
 
                    e.show()
458
 
                    display = True
459
 
            if self.ret['wtstats'].has_key('subdirs'):
460
 
                ll = self.glade.get_widget('label_info_wtstats_subdirs_label')
461
 
                l = self.glade.get_widget('label_info_wtstats_subdirs')
462
 
                l.set_text(str(self.ret['wtstats']['subdirs']))
463
 
                ll.show()
464
 
                l.show()
465
 
                if not display:
466
 
                    e.set_expanded(True)
467
 
                    e.show()
468
 
                    display = True
469
 
        # branch stats
470
 
        if self.ret.has_key('brstats'):
471
 
            display = False
472
 
            e = self.glade.get_widget('expander_info_brstats')
473
 
            if self.ret['brstats'].has_key('revno'):
474
 
                ll = self.glade.get_widget('label_info_brstats_revno_label')
475
 
                l = self.glade.get_widget('label_info_brstats_revno')
476
 
                l.set_text(str(self.ret['brstats']['revno']))
477
 
                ll.show()
478
 
                l.show()
479
 
                if not display:
480
 
                    e.set_expanded(True)
481
 
                    e.show()
482
 
                    display = True
483
 
            if self.ret['brstats'].has_key('commiters'):
484
 
                ll = self.glade.get_widget('label_info_brstats_commiters_label')
485
 
                l = self.glade.get_widget('label_info_brstats_commiters')
486
 
                l.set_text(str(self.ret['brstats']['commiters']))
487
 
                ll.show()
488
 
                l.show()
489
 
                if not display:
490
 
                    e.set_expanded(True)
491
 
                    e.show()
492
 
                    display = True
493
 
            if self.ret['brstats'].has_key('age'):
494
 
                ll = self.glade.get_widget('label_info_brstats_age_label')
495
 
                l = self.glade.get_widget('label_info_brstats_age')
496
 
                l.set_text('%d days' % self.ret['brstats']['age'])
497
 
                ll.show()
498
 
                l.show()
499
 
                if not display:
500
 
                    e.set_expanded(True)
501
 
                    e.show()
502
 
                    display = True
503
 
            if self.ret['brstats'].has_key('firstrev'):
504
 
                ll = self.glade.get_widget('label_info_brstats_firstrev_label')
505
 
                l = self.glade.get_widget('label_info_brstats_firstrev')
506
 
                l.set_text(self.ret['brstats']['firstrev'])
507
 
                ll.show()
508
 
                l.show()
509
 
                if not display:
510
 
                    e.set_expanded(True)
511
 
                    e.show()
512
 
                    display = True
513
 
            if self.ret['brstats'].has_key('lastrev'):
514
 
                ll = self.glade.get_widget('label_info_brstats_lastrev_label')
515
 
                l = self.glade.get_widget('label_info_brstats_lastrev')
516
 
                l.set_text(self.ret['brstats']['lastrev'])
517
 
                ll.show()
518
 
                l.show()
519
 
                if not display:
520
 
                    e.set_expanded(True)
521
 
                    e.show()
522
 
                    display = True
523
 
        # repository stats
524
 
        if self.ret.has_key('repstats'):
525
 
            display = False
526
 
            e = self.glade.get_widget('expander_info_repstats')
527
 
            if self.ret['repstats'].has_key('revisions'):
528
 
                ll = self.glade.get_widget('label_info_repstats_revisions_label')
529
 
                l = self.glade.get_widget('label_info_repstats_revisions')
530
 
                l.set_text(str(self.ret['repstats']['revisions']))
531
 
                ll.show()
532
 
                l.show()
533
 
                if not display:
534
 
                    e.set_expanded(True)
535
 
                    e.show()
536
 
                    display = True
537
 
            if self.ret['repstats'].has_key('size'):
538
 
                ll = self.glade.get_widget('label_info_repstats_size_label')
539
 
                l = self.glade.get_widget('label_info_repstats_size')
540
 
                l.set_text('%d KiB' % (self.ret['repstats']['size'] / 1024))
541
 
                ll.show()
542
 
                l.show()
543
 
                if not display:
544
 
                    e.set_expanded(True)
545
 
                    e.show()
546
 
                    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)
547
263
    
548
264
    def activate(self, expander):
549
265
        """ Redraw the window. """
553
269
    def display(self):
554
270
        """ Display the Informations window. """
555
271
        if self.notbranch:
556
 
            error_dialog(_('Directory is not a branch'),
557
 
                         _('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.'))
558
274
            self.close()
559
275
        else:
560
 
            self.window.show()
561
 
 
 
276
            self.window.show_all()
 
277
    
562
278
    def close(self, widget=None):
563
279
        self.window.destroy()