21
21
pygtk.require("2.0")
30
import olive.backend.init as init
31
import olive.backend.errors as errors
28
import bzrlib.errors as errors
29
from olive import gladefile
34
32
""" Display branch dialog and perform the needed operations. """
35
def __init__(self, gladefile, comm, dialog):
33
def __init__(self, comm):
36
34
""" Initialize the Branch dialog. """
37
self.gladefile = gladefile
38
self.glade = gtk.glade.XML(self.gladefile, 'window_branch', 'olive-gtk')
35
self.glade = gtk.glade.XML(gladefile, 'window_branch', 'olive-gtk')
40
37
# Communication object
45
40
self.window = self.glade.get_widget('window_branch')
72
67
spinbutton_revno = self.glade.get_widget('spinbutton_branch_revno')
73
68
revno = spinbutton_revno.get_value_as_int()
69
revision_id = br_from.get_rev_id(revno)
77
71
self.comm.set_busy(self.window)
79
revs = init.branch(location, destination, revno)
73
from bzrlib.transport import get_transport
75
br_from = Branch.open(location)
80
destination = destination + '/' + os.path.basename(location.rstrip("/\\"))
81
to_transport = get_transport(destination)
83
to_transport.mkdir('.')
86
dir = br_from.bzrdir.sprout(to_transport.base, revision_id)
87
branch = dir.open_branch()
88
except NoSuchRevision:
89
to_transport.delete_tree('.')
96
info_dialog(_('Branching successful'),
97
_('%d revision(s) branched.') % revs)
98
self.comm.refresh_right()
80
99
except errors.NonExistingSource, errmsg:
81
self.dialog.error_dialog(_('Non existing source'),
100
error_dialog(_('Non existing source'),
82
101
_("The location (%s)\ndoesn't exist.") % errmsg)
83
102
self.comm.set_busy(self.window, False)
85
104
except errors.TargetAlreadyExists, errmsg:
86
self.dialog.error_dialog(_('Target already exists'),
105
error_dialog(_('Target already exists'),
87
106
_('Target directory (%s)\nalready exists. Please select another target.') % errmsg)
88
107
self.comm.set_busy(self.window, False)
90
109
except errors.NonExistingParent, errmsg:
91
self.dialog.error_dialog(_('Non existing parent directory'),
110
error_dialog(_('Non existing parent directory'),
92
111
_("The parent directory (%s)\ndoesn't exist.") % errmsg)
93
112
self.comm.set_busy(self.window, False)
95
114
except errors.NonExistingRevision:
96
self.dialog.error_dialog(_('Non existing revision'),
115
error_dialog(_('Non existing revision'),
97
116
_("The revision you specified doesn't exist."))
98
117
self.comm.set_busy(self.window, False)
100
119
except errors.NotBranchError, errmsg:
101
self.dialog.error_dialog(_('Location is not a branch'),
120
error_dialog(_('Location is not a branch'),
102
121
_('The specified location has to be a branch.'))
103
122
self.comm.set_busy(self.window, False)
109
self.dialog.info_dialog(_('Branching successful'),
110
_('%d revision(s) branched.') % revs)
111
self.comm.refresh_right()
113
126
def close(self, widget=None):
114
127
self.window.destroy()