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

  • Committer: Jelmer Vernooij
  • Date: 2006-09-13 20:19:31 UTC
  • mfrom: (0.8.79 main)
  • mto: (0.8.83 merge)
  • mto: This revision was merged to the branch mainline in revision 83.
  • Revision ID: jelmer@samba.org-20060913201931-23adba246d4d6529
Merge main branch.

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
17
18
import sys
18
19
 
19
20
try:
27
28
except:
28
29
    sys.exit(1)
29
30
 
30
 
from olive.backend.info import is_branch
31
 
import olive.backend.errors as errors
 
31
import bzrlib.errors as errors
 
32
from bzrlib.branch import Branch
32
33
 
33
34
from dialog import OliveDialog
34
35
from menu import OliveMenu
73
74
    
74
75
    def on_menuitem_branch_missing_revisions_activate(self, widget):
75
76
        """ Branch/Missing revisions menu handler. """
76
 
        import olive.backend.update as update
77
77
        
78
78
        self.comm.set_busy(self.comm.window_main)
79
79
        
80
80
        try:
81
 
            ret = update.missing(self.comm.get_path())
82
 
        except errors.NotBranchError:
83
 
            self.dialog.error_dialog(_('Directory is not a branch'),
84
 
                                     _('You can perform this action only in a branch.'))
85
 
        except errors.ConnectionError:
86
 
            self.dialog.error_dialog(_('Connection error'),
87
 
                                     _('Cannot connect to remote location.\nPlease try again later.'))
88
 
        except errors.NoLocationKnown:
89
 
            self.dialog.error_dialog(_('Parent location is unknown'),
90
 
                                     _('Cannot determine missing revisions if no parent location is known.'))
91
 
        else:
 
81
            import bzrlib
 
82
            
 
83
            try:
 
84
                local_branch = Branch.open_containing(self.comm.get_path())[0]
 
85
            except NotBranchError:
 
86
                self.dialog.error_dialog(_('Directory is not a branch'),
 
87
                                         _('You can perform this action only in a branch.'))
 
88
                return
 
89
            
 
90
            other_branch = local_branch.get_parent()
 
91
            if other_branch is None:
 
92
                self.dialog.error_dialog(_('Parent location is unknown'),
 
93
                                         _('Cannot determine missing revisions if no parent location is known.'))
 
94
                return
 
95
            
 
96
            remote_branch = Branch.open(other_branch)
 
97
            
 
98
            if remote_branch.base == local_branch.base:
 
99
                remote_branch = local_branch
 
100
 
 
101
            ret = len(local_branch.missing_revisions(remote_branch))
 
102
 
92
103
            if ret > 0:
93
104
                self.dialog.info_dialog(_('There are missing revisions'),
94
105
                                        _('%d revision(s) missing.') % ret)
95
106
            else:
96
107
                self.dialog.info_dialog(_('Local branch up to date'),
97
108
                                        _('There are no missing revisions.'))
98
 
        
99
 
        self.comm.set_busy(self.comm.window_main, False)
 
109
        finally:
 
110
            self.comm.set_busy(self.comm.window_main, False)
100
111
    
101
112
    def on_menuitem_branch_pull_activate(self, widget):
102
113
        """ Branch/Pull menu handler. """
103
 
        import olive.backend.update as update
104
114
        
105
115
        self.comm.set_busy(self.comm.window_main)
106
 
        
 
116
 
107
117
        try:
108
 
            ret = update.pull(self.comm.get_path())
109
 
        except errors.NotBranchError:
110
 
            self.dialog.error_dialog(_('Directory is not a branch'),
111
 
                                     _('You can perform this action only in a branch.'))
112
 
        except errors.NoLocationKnown:
113
 
            self.dialog.error_dialog(_('Parent location is unknown'),
114
 
                                     _('Pulling is not possible until there is no parent location.'))
115
 
        else:
 
118
            try:
 
119
                from bzrlib.workingtree import WorkingTree
 
120
                tree_to = WorkingTree.open_containing(self.comm.get_path())[0]
 
121
                branch_to = tree_to.branch
 
122
            except errors.NoWorkingTree:
 
123
                tree_to = None
 
124
                branch_to = Branch.open_containing(self.comm.get_path())[0]
 
125
            except errors.NotBranchError:
 
126
                 self.dialog.error_dialog(_('Directory is not a branch'),
 
127
                                         _('You can perform this action only in a branch.'))
 
128
 
 
129
            location = branch_to.get_parent()
 
130
            if location is None:
 
131
                self.dialog.error_dialog(_('Parent location is unknown'),
 
132
                                         _('Pulling is not possible until there is a parent location.'))
 
133
                return
 
134
 
 
135
            try:
 
136
                branch_from = Branch.open(location)
 
137
            except errors.NotBranchError:
 
138
                self.dialog.error_dialog(_('Directory is not a branch'),
 
139
                                         _('You can perform this action only in a branch.'))
 
140
 
 
141
            if branch_to.get_parent() is None:
 
142
                branch_to.set_parent(branch_from.base)
 
143
 
 
144
            old_rh = branch_to.revision_history()
 
145
            if tree_to is not None:
 
146
                tree_to.pull(branch_from)
 
147
            else:
 
148
                branch_to.pull(branch_from)
 
149
            
116
150
            self.dialog.info_dialog(_('Pull successful'),
117
151
                                    _('%d revision(s) pulled.') % ret)
118
 
        
119
 
        self.comm.set_busy(self.comm.window_main, False)
 
152
            
 
153
        finally:
 
154
            self.comm.set_busy(self.comm.window_main, False)
120
155
    
121
156
    def on_menuitem_branch_push_activate(self, widget):
122
157
        """ Branch/Push... menu handler. """
132
167
    
133
168
    def on_menuitem_branch_initialize_activate(self, widget):
134
169
        """ Initialize current directory. """
135
 
        import olive.backend.init as init
136
 
        
137
170
        try:
138
 
            init.init(self.comm.get_path())
 
171
            location = self.comm.get_path()
 
172
            from bzrlib.builtins import get_format_type
 
173
 
 
174
            format = get_format_type('default')
 
175
 
 
176
            if not os.path.exists(location):
 
177
                os.mkdir(location)
 
178
     
 
179
            try:
 
180
                existing_bzrdir = bzrdir.BzrDir.open(location)
 
181
            except NotBranchError:
 
182
                bzrdir.BzrDir.create_branch_convenience(location, format=format)
 
183
            else:
 
184
                if existing_bzrdir.has_branch():
 
185
                    if existing_bzrdir.has_workingtree():
 
186
                        raise AlreadyBranchError(location)
 
187
                    else:
 
188
                        raise BranchExistsWithoutWorkingTree(location)
 
189
                else:
 
190
                    existing_bzrdir.create_branch()
 
191
                    existing_bzrdir.create_workingtree()
139
192
        except errors.AlreadyBranchError, errmsg:
140
193
            self.dialog.error_dialog(_('Directory is already a branch'),
141
194
                                     _('The current directory (%s) is already a branch.\nYou can start using it, or initialize another directory.') % errmsg)
142
195
        except errors.BranchExistsWithoutWorkingTree, errmsg:
143
196
            self.dialog.error_dialog(_('Branch without a working tree'),
144
197
                                     _('The current directory (%s)\nis a branch without a working tree.') % errmsg)
145
 
        except:
146
 
            raise
147
198
        else:
148
 
            self.dialog.info_dialog(_('Ininialize successful'),
 
199
            self.dialog.info_dialog(_('Initialize successful'),
149
200
                                    _('Directory successfully initialized.'))
150
201
            self.comm.refresh_right()
151
202
        
243
294
            m_commit = self.menu.ui.get_widget('/context_right/commit')
244
295
            m_diff = self.menu.ui.get_widget('/context_right/diff')
245
296
            # check if we're in a branch
246
 
            if not is_branch(self.comm.get_path()):
 
297
            try:
 
298
                from bzrlib.branch import Branch
 
299
                Branch.open_containing(self.comm.get_path())
247
300
                m_add.set_sensitive(False)
248
301
                m_remove.set_sensitive(False)
249
302
                m_commit.set_sensitive(False)
250
303
                m_diff.set_sensitive(False)
251
 
            else:
 
304
            except errors.NotBranchError:
252
305
                m_add.set_sensitive(True)
253
306
                m_remove.set_sensitive(True)
254
307
                m_commit.set_sensitive(True)