/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: Aaron Bentley
  • Date: 2006-12-20 01:45:49 UTC
  • mfrom: (66.4.3 trunk)
  • mto: This revision was merged to the branch mainline in revision 125.
  • Revision ID: aaron.bentley@utoronto.ca-20061220014549-o8ki5xwkh787j0gi
MergeĀ fromĀ mainline

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
from bzrlib.workingtree import WorkingTree
37
37
 
38
38
# Olive GTK UI version
39
 
__version__ = '0.12.0'
 
39
__version__ = '0.14.0'
40
40
 
41
41
from dialog import error_dialog, info_dialog
42
42
from guifiles import GLADEFILENAME
45
45
try:
46
46
    from bzrlib.plugins.gtk.viz.diffwin import DiffWindow
47
47
    from bzrlib.plugins.gtk.viz.branchwin import BranchWindow
 
48
    from bzrlib.plugins.gtk.annotate.gannotate import GAnnotateWindow
 
49
    from bzrlib.plugins.gtk.annotate.config import GAnnotateConfig
48
50
except ImportError:
49
51
    # olive+bzr-gtk not installed. try to import from sources
50
52
    path = os.path.dirname(os.path.dirname(__file__))
52
54
        sys.path.append(path)
53
55
    from viz.diffwin import DiffWindow
54
56
    from viz.branchwin import BranchWindow
 
57
    from annotate.gannotate import GAnnotateWindow
 
58
    from annotate.config import GAnnotateConfig
55
59
 
56
60
 
57
61
class OliveGtk:
84
88
        self.menuitem_file_make_directory = self.toplevel.get_widget('menuitem_file_make_directory')
85
89
        self.menuitem_file_rename = self.toplevel.get_widget('menuitem_file_rename')
86
90
        self.menuitem_file_move = self.toplevel.get_widget('menuitem_file_move')
 
91
        self.menuitem_file_annotate = self.toplevel.get_widget('menuitem_file_annotate')
87
92
        self.menuitem_view_show_hidden_files = self.toplevel.get_widget('menuitem_view_show_hidden_files')
88
93
        self.menuitem_branch = self.toplevel.get_widget('menuitem_branch')
89
94
        self.menuitem_branch_init = self.toplevel.get_widget('menuitem_branch_initialize')
122
127
                "on_menuitem_file_make_directory_activate": self.on_menuitem_file_make_directory_activate,
123
128
                "on_menuitem_file_move_activate": self.on_menuitem_file_move_activate,
124
129
                "on_menuitem_file_rename_activate": self.on_menuitem_file_rename_activate,
 
130
                "on_menuitem_file_annotate_activate": self.on_menuitem_file_annotate_activate,
125
131
                "on_menuitem_view_show_hidden_files_activate": self.on_menuitem_view_show_hidden_files_activate,
126
132
                "on_menuitem_view_refresh_activate": self.on_menuitem_view_refresh_activate,
127
133
                "on_menuitem_branch_initialize_activate": self.on_menuitem_branch_initialize_activate,
229
235
    def on_menuitem_branch_merge_activate(self, widget):
230
236
        """ Branch/Merge... menu handler. """
231
237
        from merge import MergeDialog
232
 
        merge = MergeDialog(self.wt, self.wtpath)
233
 
        merge.display()
 
238
        
 
239
        if self.check_for_changes():
 
240
            error_dialog(_('There are local changes in the branch'),
 
241
                         _('Please commit or revert the changes before merging.'))
 
242
        else:
 
243
            merge = MergeDialog(self.wt, self.wtpath)
 
244
            merge.display()
234
245
 
235
246
    def on_menuitem_branch_missing_revisions_activate(self, widget):
236
247
        """ Branch/Missing revisions menu handler. """
328
339
                        _('Directory successfully initialized.'))
329
340
            self.refresh_right()
330
341
        
 
342
    def on_menuitem_file_annotate_activate(self, widget):
 
343
        """ File/Annotate... menu handler. """
 
344
        if self.get_selected_right() is None:
 
345
            error_dialog(_('No file was selected'),
 
346
                         _('Please select a file from the list.'))
 
347
            return
 
348
        
 
349
        branch = self.wt.branch
 
350
        file_id = self.wt.path2id(self.wt.relpath(os.path.join(self.path, self.get_selected_right())))
 
351
        revision_id = None
 
352
        
 
353
        window = GAnnotateWindow(all=False, plain=False)
 
354
        window.set_title(os.path.join(self.path, self.get_selected_right()) + " - Annotate")
 
355
        config = GAnnotateConfig(window)
 
356
        window.show()
 
357
        branch.lock_read()
 
358
        try:
 
359
            window.annotate(branch, file_id, revision_id)
 
360
        finally:
 
361
            branch.unlock()
 
362
    
331
363
    def on_menuitem_file_make_directory_activate(self, widget):
332
364
        """ File/Make directory... menu handler. """
333
365
        from mkdir import OliveMkdir
348
380
 
349
381
    def on_menuitem_remove_file_activate(self, widget):
350
382
        """ Remove (unversion) selected file. """
351
 
        from remove import OliveRemove
352
 
        remove = OliveRemove(self.wt, self.wtpath, self.get_selected_right())
353
 
        remove.display()
 
383
        from remove import OliveRemoveDialog
 
384
        remove = OliveRemoveDialog(self.wt, self.wtpath,
 
385
                                   selected=self.get_selected_right(),
 
386
                                   parent=self.window)
 
387
        response = remove.run()
 
388
        
 
389
        if response != gtk.RESPONSE_NONE:
 
390
            remove.hide()
 
391
        
 
392
            if response == gtk.RESPONSE_OK:
 
393
                self.set_path(self.path)
 
394
                self.refresh_right()
 
395
            
 
396
            remove.destroy()
354
397
    
355
398
    def on_menuitem_stats_diff_activate(self, widget):
356
399
        """ Statistics/Differences... menu handler. """
393
436
 
394
437
            # Create a menu
395
438
            from menu import OliveMenu
396
 
            menu = OliveMenu(self.get_path(), self.get_selected_left())
 
439
            menu = OliveMenu(path=self.get_path(),
 
440
                             selected=self.get_selected_left(),
 
441
                             app=self)
397
442
            
398
443
            menu.left_context_menu().popup(None, None, None, 0,
399
444
                                           event.time)
414
459
        if event.button == 3:
415
460
            # Create a menu
416
461
            from menu import OliveMenu
417
 
            menu = OliveMenu(self.get_path(), self.get_selected_right())
 
462
            menu = OliveMenu(path=self.get_path(),
 
463
                             selected=self.get_selected_right(),
 
464
                             app=self)
418
465
            # get the menu items
419
466
            m_add = menu.ui.get_widget('/context_right/add')
420
467
            m_remove = menu.ui.get_widget('/context_right/remove')
575
622
                for rpath, id, kind in delta.unchanged:
576
623
                    if rpath == filename:
577
624
                        status = 'unchanged'
 
625
                for rpath, file_class, kind, id, entry in self.wt.list_files():
 
626
                    if rpath == filename and file_class == 'I':
 
627
                        status = 'ignored'
578
628
            
579
629
            #try:
580
630
            #    status = fileops.status(path + os.sep + item)
591
641
                st = _('modified')
592
642
            elif status == 'unchanged':
593
643
                st = _('unchanged')
 
644
            elif status == 'ignored':
 
645
                st = _('ignored')
594
646
            else:
595
647
                st = _('unknown')
596
648
            liststore.append([gtk.STOCK_FILE, item, st])
660
712
        self.menuitem_file_make_directory.set_sensitive(not self.notbranch)
661
713
        self.menuitem_file_rename.set_sensitive(not self.notbranch)
662
714
        self.menuitem_file_move.set_sensitive(not self.notbranch)
 
715
        self.menuitem_file_annotate.set_sensitive(not self.notbranch)
663
716
        #self.menutoolbutton_diff.set_sensitive(True)
664
717
        self.toolbutton_diff.set_sensitive(not self.notbranch)
665
718
        self.toolbutton_log.set_sensitive(not self.notbranch)
741
794
            tree2 = tree1.branch.repository.revision_tree(branch.last_revision())
742
795
        
743
796
            delta = tree1.changes_from(tree2, want_unchanged=True)
744
 
 
 
797
            
745
798
        # Add'em to the ListStore
746
799
        for item in dirs:
747
800
            liststore.append([gtk.STOCK_DIRECTORY, item, ''])
765
818
                for rpath, id, kind in delta.unchanged:
766
819
                    if rpath == filename:
767
820
                        status = 'unchanged'
 
821
                for rpath, file_class, kind, id, entry in self.wt.list_files():
 
822
                    if rpath == filename and file_class == 'I':
 
823
                        status = 'ignored'
768
824
            
769
825
            #try:
770
826
            #    status = fileops.status(path + os.sep + item)
781
837
                st = _('modified')
782
838
            elif status == 'unchanged':
783
839
                st = _('unchanged')
 
840
            elif status == 'ignored':
 
841
                st = _('ignored')
784
842
            else:
785
843
                st = _('unknown')
786
844
            liststore.append([gtk.STOCK_FILE, item, st])
822
880
            drive = model[active][0]
823
881
            self.set_path(drive + '\\')
824
882
            self.refresh_right(drive + '\\')
 
883
    
 
884
    def check_for_changes(self):
 
885
        """ Check whether there were changes in the current working tree. """
 
886
        old_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision())
 
887
        delta = self.wt.changes_from(old_tree)
 
888
 
 
889
        changes = False
 
890
        
 
891
        if len(delta.added) or len(delta.removed) or len(delta.renamed) or len(delta.modified):
 
892
            changes = True
 
893
        
 
894
        return changes
825
895
 
826
896
import ConfigParser
827
897