/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/__init__.py

  • Committer: Jelmer Vernooij
  • Date: 2007-07-15 18:12:57 UTC
  • Revision ID: jelmer@samba.org-20070715181257-g264qus2zyi3v39z
Add RevisionSelectionBox widget, use in TagDialog.

Show diffs side-by-side

added added

removed removed

Lines of Context:
66
66
 
67
67
    # Set version
68
68
    dialog.set_version(__version__)
69
 
    dialog.set_authors([ _("Lead Developer:"),
70
 
                         "Szilveszter Farkas <szilveszter.farkas@gmail.com>",
71
 
                         _("Contributors:"),
72
 
                         "Jelmer Vernooij <jelmer@samba.org>",
73
 
                         "Mateusz Korniak <mateusz.korniak@ant.gliwice.pl>",
74
 
                         "Gary van der Merwe <garyvdm@gmail.com>" ])
75
 
    dialog.set_artists([ "Simon Pascal Klein <klepas@klepas.org>",
76
 
                         "Jakub Steiner <jimmac@novell.com>" ])
77
69
 
78
70
    dialog.run()
79
71
    # Destroy the dialog
108
100
        self.menuitem_file_move = self.toplevel.get_widget('menuitem_file_move')
109
101
        self.menuitem_file_annotate = self.toplevel.get_widget('menuitem_file_annotate')
110
102
        self.menuitem_view_show_hidden_files = self.toplevel.get_widget('menuitem_view_show_hidden_files')
111
 
        self.menuitem_view_show_ignored_files = self.toplevel.get_widget('menuitem_view_show_ignored_files')
112
103
        self.menuitem_branch = self.toplevel.get_widget('menuitem_branch')
113
104
        self.menuitem_branch_init = self.toplevel.get_widget('menuitem_branch_initialize')
114
105
        self.menuitem_branch_get = self.toplevel.get_widget('menuitem_branch_get')
115
106
        self.menuitem_branch_checkout = self.toplevel.get_widget('menuitem_branch_checkout')
116
107
        self.menuitem_branch_pull = self.toplevel.get_widget('menuitem_branch_pull')
117
108
        self.menuitem_branch_push = self.toplevel.get_widget('menuitem_branch_push')
118
 
        self.menuitem_branch_update = self.toplevel.get_widget('menuitem_branch_update')
119
109
        self.menuitem_branch_revert = self.toplevel.get_widget('menuitem_branch_revert')
120
110
        self.menuitem_branch_merge = self.toplevel.get_widget('menuitem_branch_merge')
121
111
        self.menuitem_branch_commit = self.toplevel.get_widget('menuitem_branch_commit')
133
123
        self.toolbutton_commit = self.toplevel.get_widget('toolbutton_commit')
134
124
        self.toolbutton_pull = self.toplevel.get_widget('toolbutton_pull')
135
125
        self.toolbutton_push = self.toplevel.get_widget('toolbutton_push')
136
 
        self.toolbutton_update = self.toplevel.get_widget('toolbutton_update')
137
126
        # Get the drive selector
138
127
        self.combobox_drive = gtk.combo_box_new_text()
139
128
        self.combobox_drive.connect("changed", self._refresh_drives)
164
153
                "on_menuitem_file_rename_activate": self.on_menuitem_file_rename_activate,
165
154
                "on_menuitem_file_annotate_activate": self.on_menuitem_file_annotate_activate,
166
155
                "on_menuitem_view_show_hidden_files_activate": self.on_menuitem_view_show_hidden_files_activate,
167
 
                "on_menuitem_view_show_ignored_files_activate": self.on_menuitem_view_show_ignored_files_activate,
168
156
                "on_menuitem_view_refresh_activate": self.on_menuitem_view_refresh_activate,
169
157
                "on_menuitem_branch_initialize_activate": self.on_menuitem_branch_initialize_activate,
170
158
                "on_menuitem_branch_get_activate": self.on_menuitem_branch_get_activate,
174
162
                "on_menuitem_branch_commit_activate": self.on_menuitem_branch_commit_activate,
175
163
                "on_menuitem_branch_push_activate": self.on_menuitem_branch_push_activate,
176
164
                "on_menuitem_branch_pull_activate": self.on_menuitem_branch_pull_activate,
177
 
                "on_menuitem_branch_update_activate": self.on_menuitem_branch_update_activate,                
178
165
                "on_menuitem_branch_tags_activate": self.on_menuitem_branch_tags_activate,
179
166
                "on_menuitem_branch_status_activate": self.on_menuitem_branch_status_activate,
180
167
                "on_menuitem_branch_missing_revisions_activate": self.on_menuitem_branch_missing_revisions_activate,
189
176
                "on_toolbutton_commit_clicked": self.on_menuitem_branch_commit_activate,
190
177
                "on_toolbutton_pull_clicked": self.on_menuitem_branch_pull_activate,
191
178
                "on_toolbutton_push_clicked": self.on_menuitem_branch_push_activate,
192
 
                "on_toolbutton_update_clicked": self.on_menuitem_branch_update_activate,
193
179
                "on_treeview_right_button_press_event": self.on_treeview_right_button_press_event,
194
180
                "on_treeview_right_row_activated": self.on_treeview_right_row_activated,
195
181
                "on_treeview_left_button_press_event": self.on_treeview_left_button_press_event,
236
222
 
237
223
        # Apply menu state
238
224
        self.menuitem_view_show_hidden_files.set_active(self.pref.get_preference('dotted_files', 'bool'))
239
 
        self.menuitem_view_show_ignored_files.set_active(self.pref.get_preference('ignored_files', 'bool'))
240
225
 
241
226
        # We're starting local
242
227
        self.remote = False
527
512
            error_dialog(_('There are local changes in the branch'),
528
513
                         _('Please commit or revert the changes before merging.'))
529
514
        else:
530
 
            parent_branch_path = self.wt.branch.get_parent()
531
 
            merge = MergeDialog(self.wt, self.wtpath,default_branch_path=parent_branch_path )
 
515
            merge = MergeDialog(self.wt, self.wtpath)
532
516
            merge.display()
533
517
 
534
518
    @show_bzr_error
535
519
    def on_menuitem_branch_missing_revisions_activate(self, widget):
536
520
        """ Branch/Missing revisions menu handler. """
537
 
        
538
 
        from bzrlib.missing import find_unmerged, iter_log_revisions
539
 
        
540
521
        local_branch = self.wt.branch
541
 
        parent_branch_path = local_branch.get_parent()
542
 
        if parent_branch_path is None:
 
522
        
 
523
        other_branch = local_branch.get_parent()
 
524
        if other_branch is None:
543
525
            error_dialog(_('Parent location is unknown'),
544
526
                         _('Cannot determine missing revisions if no parent location is known.'))
545
527
            return
546
528
        
547
 
        parent_branch = Branch.open(parent_branch_path)
548
 
        
549
 
        if parent_branch.base == local_branch.base:
550
 
            parent_branch = local_branch
551
 
        
552
 
        local_extra, remote_extra = find_unmerged(local_branch,parent_branch)
553
 
 
554
 
        if local_extra or remote_extra:
555
 
            
556
 
            ## def log_revision_one_line_text(log_revision):
557
 
            ##    """ Generates one line description of log_revison ended with end of line."""
558
 
            ##    revision = log_revision.rev
559
 
            ##    txt =  "- %s (%s)\n" % (revision.get_summary(), revision.committer, )
560
 
            ##    txt = txt.replace("<"," ") # Seems < > chars are expected to be xml tags ...
561
 
            ##    txt = txt.replace(">"," ")
562
 
            ##    return txt
563
 
            
564
 
            dlg_txt = ""
565
 
            if local_extra:
566
 
                dlg_txt += _('%d local extra revision(s). \n') % (len(local_extra),) 
567
 
                ## NOTE: We do not want such ugly info about missing revisions
568
 
                ##       Revision Browser should be used there
569
 
                ## max_revisions = 10
570
 
                ## for log_revision in iter_log_revisions(local_extra, local_branch.repository, verbose=1):
571
 
                ##    dlg_txt += log_revision_one_line_text(log_revision)
572
 
                ##    if max_revisions <= 0:
573
 
                ##        dlg_txt += _("more ... \n")
574
 
                ##        break
575
 
                ## max_revisions -= 1
576
 
            ## dlg_txt += "\n"
577
 
            if remote_extra:
578
 
                dlg_txt += _('%d local missing revision(s).\n') % (len(remote_extra),) 
579
 
                ## max_revisions = 10
580
 
                ## for log_revision in iter_log_revisions(remote_extra, parent_branch.repository, verbose=1):
581
 
                ##    dlg_txt += log_revision_one_line_text(log_revision)
582
 
                ##    if max_revisions <= 0:
583
 
                ##        dlg_txt += _("more ... \n")
584
 
                ##        break
585
 
                ##    max_revisions -= 1
586
 
                
 
529
        remote_branch = Branch.open(other_branch)
 
530
        
 
531
        if remote_branch.base == local_branch.base:
 
532
            remote_branch = local_branch
 
533
 
 
534
        ret = len(local_branch.missing_revisions(remote_branch))
 
535
 
 
536
        if ret > 0:
587
537
            info_dialog(_('There are missing revisions'),
588
 
                        dlg_txt)
 
538
                        _('%d revision(s) missing.') % ret)
589
539
        else:
590
540
            info_dialog(_('Local branch up to date'),
591
541
                        _('There are no missing revisions.'))
609
559
        ret = branch_to.pull(branch_from)
610
560
        
611
561
        info_dialog(_('Pull successful'), _('%d revision(s) pulled.') % ret)
612
 
        
613
 
    @show_bzr_error
614
 
    def on_menuitem_branch_update_activate(self, widget):
615
 
        """ Brranch/checkout update menu handler. """
616
 
        
617
 
        ret = self.wt.update()
618
 
        conflicts = self.wt.conflicts()
619
 
        if conflicts:
620
 
            info_dialog(_('Update successful but conflicts generated'), _('Number of conflicts generated: %d.') % (len(conflicts),) )
621
 
        else:
622
 
            info_dialog(_('Update successful'), _('No conflicts generated.') )
623
562
    
624
563
    def on_menuitem_branch_push_activate(self, widget):
625
564
        """ Branch/Push... menu handler. """
626
 
        push = PushDialog(repository=None,revid=None,branch=self.wt.branch, parent=self.window)
 
565
        push = PushDialog(self.wt.branch, self.window)
627
566
        response = push.run()
628
567
        if response != gtk.RESPONSE_NONE:
629
568
            push.destroy()
679
618
        branch = self.wt.branch
680
619
        file_id = self.wt.path2id(self.wt.relpath(os.path.join(self.path, self.get_selected_right())))
681
620
        
682
 
        window = GAnnotateWindow(all=False, plain=False, parent=self.window)
 
621
        window = GAnnotateWindow(all=False, plain=False)
683
622
        window.set_title(os.path.join(self.path, self.get_selected_right()) + " - Annotate")
684
623
        config = GAnnotateConfig(window)
685
624
        window.show()
726
665
    
727
666
    def on_menuitem_stats_diff_activate(self, widget):
728
667
        """ Statistics/Differences... menu handler. """
729
 
        window = DiffWindow(parent=self.window)
 
668
        window = DiffWindow()
730
669
        parent_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision())
731
670
        window.set_diff(self.wt.branch.nick, self.wt, parent_tree)
732
671
        window.show()
742
681
    
743
682
    def on_menuitem_stats_log_activate(self, widget):
744
683
        """ Statistics/Log... menu handler. """
745
 
        window = branchwin.BranchWindow(parent=self.window)
 
684
        window = branchwin.BranchWindow()
746
685
        if not self.remote:
747
686
            window.set_branch(self.wt.branch, self.wt.branch.last_revision(), None)
748
687
        else:
762
701
        if self.path is not None:
763
702
            self.refresh_right()
764
703
 
765
 
    def on_menuitem_view_show_ignored_files_activate(self, widget):
766
 
        """ Hide/Show ignored files menu handler. """
767
 
        self.pref.set_preference('ignored_files', widget.get_active())
768
 
        if self.path is not None:
769
 
            self.refresh_right()
770
 
            
771
704
    def on_treeview_left_button_press_event(self, widget, event):
772
705
        """ Occurs when somebody right-clicks in the bookmark list. """
773
706
        if event.button == 3:
920
853
    def _load_right(self):
921
854
        """ Load data into the right panel. (Filelist) """
922
855
        # Create ListStore
923
 
        # Model: [ icon, dir, name, status text, status, size (int), size (human), mtime (int), mtime (local), fileid ]
 
856
        # Model: [ icon, dir, name, status text, status, size (int), size (human), mtime (int), mtime (local), fileid]
924
857
        liststore = gtk.ListStore(gobject.TYPE_STRING,
925
858
                                  gobject.TYPE_BOOLEAN,
926
859
                                  gobject.TYPE_STRING,
927
860
                                  gobject.TYPE_STRING,
928
861
                                  gobject.TYPE_STRING,
929
 
                                  gobject.TYPE_STRING,
 
862
                                  gobject.TYPE_INT,
930
863
                                  gobject.TYPE_STRING,
931
864
                                  gobject.TYPE_INT,
932
865
                                  gobject.TYPE_STRING,
959
892
                               item,
960
893
                               '',
961
894
                               '',
962
 
                               "<DIR>",
963
 
                               "<DIR>",
 
895
                               statinfo.st_size,
 
896
                               self._format_size(statinfo.st_size),
964
897
                               statinfo.st_mtime,
965
898
                               self._format_date(statinfo.st_mtime),
966
899
                               ''])
1020
953
                              item,
1021
954
                              st,
1022
955
                              status,
1023
 
                              str(statinfo.st_size), # NOTE: if int used there it will fail for large files (size expressed as long int)
 
956
                              statinfo.st_size,
1024
957
                              self._format_size(statinfo.st_size),
1025
958
                              statinfo.st_mtime,
1026
959
                              self._format_date(statinfo.st_mtime),
1117
1050
            self.menuitem_branch_checkout.set_sensitive(self.notbranch)
1118
1051
            self.menuitem_branch_pull.set_sensitive(not self.notbranch)
1119
1052
            self.menuitem_branch_push.set_sensitive(not self.notbranch)
1120
 
            self.menuitem_branch_update.set_sensitive(not self.notbranch)
1121
1053
            self.menuitem_branch_revert.set_sensitive(not self.notbranch)
1122
1054
            self.menuitem_branch_merge.set_sensitive(not self.notbranch)
1123
1055
            self.menuitem_branch_commit.set_sensitive(not self.notbranch)
1139
1071
            self.toolbutton_commit.set_sensitive(not self.notbranch)
1140
1072
            self.toolbutton_pull.set_sensitive(not self.notbranch)
1141
1073
            self.toolbutton_push.set_sensitive(not self.notbranch)
1142
 
            self.toolbutton_update.set_sensitive(not self.notbranch)
1143
1074
        else:
1144
1075
            # We're remote
1145
1076
            self.menuitem_branch_init.set_sensitive(False)
1147
1078
            self.menuitem_branch_checkout.set_sensitive(True)
1148
1079
            self.menuitem_branch_pull.set_sensitive(False)
1149
1080
            self.menuitem_branch_push.set_sensitive(False)
1150
 
            self.menuitem_branch_update.set_sensitive(False)
1151
1081
            self.menuitem_branch_revert.set_sensitive(False)
1152
1082
            self.menuitem_branch_merge.set_sensitive(False)
1153
1083
            self.menuitem_branch_commit.set_sensitive(False)
1169
1099
            self.toolbutton_commit.set_sensitive(False)
1170
1100
            self.toolbutton_pull.set_sensitive(False)
1171
1101
            self.toolbutton_push.set_sensitive(False)
1172
 
            self.toolbutton_update.set_sensitive(False)
1173
1102
    
1174
1103
    def refresh_left(self):
1175
1104
        """ Refresh the bookmark list. """
1221
1150
    
1222
1151
            # Fill the appropriate lists
1223
1152
            dotted_files = self.pref.get_preference('dotted_files', 'bool')
1224
 
            ignored_files = self.pref.get_preference('ignored_files', 'bool')
1225
 
 
1226
1153
            for item in os.listdir(path):
1227
1154
                if not dotted_files and item[0] == '.':
1228
1155
                    continue
1252
1179
                                  item,
1253
1180
                                  '',
1254
1181
                                  '',
1255
 
                                  "<DIR>",
1256
 
                                  "<DIR>",
 
1182
                                  statinfo.st_size,
 
1183
                                  self._format_size(statinfo.st_size),
1257
1184
                                  statinfo.st_mtime,
1258
1185
                                  self._format_date(statinfo.st_mtime),
1259
1186
                                  ''])
1304
1231
                    st = _('unchanged')
1305
1232
                elif status == 'ignored':
1306
1233
                    st = _('ignored')
1307
 
                    if not ignored_files:
1308
 
                        continue
1309
1234
                else:
1310
1235
                    st = _('unknown')
1311
1236
                
1315
1240
                                  item,
1316
1241
                                  st,
1317
1242
                                  status,
1318
 
                                  str(statinfo.st_size),
 
1243
                                  statinfo.st_size,
1319
1244
                                  self._format_size(statinfo.st_size),
1320
1245
                                  statinfo.st_mtime,
1321
1246
                                  self._format_date(statinfo.st_mtime),
1372
1297
                                       item.name,
1373
1298
                                       '',
1374
1299
                                       '',
1375
 
                                       "<DIR>",
1376
 
                                       "<DIR>",
 
1300
                                       0,
 
1301
                                       self._format_size(0),
1377
1302
                                       rev.timestamp,
1378
1303
                                       self._format_date(rev.timestamp),
1379
1304
                                       ''
1389
1314
                                       item.name,
1390
1315
                                       '',
1391
1316
                                       '',
1392
 
                                       str(item.text_size),
 
1317
                                       item.text_size,
1393
1318
                                       self._format_size(item.text_size),
1394
1319
                                       rev.timestamp,
1395
1320
                                       self._format_date(rev.timestamp),
1491
1416
    
1492
1417
    def _format_size(self, size):
1493
1418
        """ Format size to a human readable format. """
1494
 
        if size < 1000:
1495
 
            return "%d[B]" % (size,)
1496
 
        size = size / 1000.0
1497
 
        
1498
 
        for metric in ["kB","MB","GB","TB"]:
1499
 
            if size < 1000:
1500
 
                break
1501
 
            size = size / 1000.0
1502
 
        return "%.1f[%s]" % (size,metric) 
 
1419
        return size
1503
1420
    
1504
1421
    def _format_date(self, timestamp):
1505
1422
        """ Format the time (given in secs) to a human readable format. """
1541
1458
        # Some default options
1542
1459
        self.defaults = { 'strict_commit' : False,
1543
1460
                          'dotted_files'  : False,
1544
 
                          'ignored_files' : True,
1545
1461
                          'window_width'  : 700,
1546
1462
                          'window_height' : 400,
1547
1463
                          'window_x'      : 40,