15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
22
pygtk.require("2.0")
28
import bzrlib.errors as errors
29
from bzrlib.workingtree import WorkingTree
31
from dialog import error_dialog
32
from guifiles import GLADEFILENAME
31
import olive.backend.errors as errors
32
import olive.backend.fileops as fileops
36
35
""" Display the Rename dialog and perform the needed actions. """
37
def __init__(self, wt, wtpath, selected=[]):
36
def __init__(self, gladefile, comm, dialog):
38
37
""" Initialize the Rename dialog. """
39
self.glade = gtk.glade.XML(GLADEFILENAME, 'window_rename')
38
self.gladefile = gladefile
39
self.glade = gtk.glade.XML(self.gladefile, 'window_rename')
41
# Communication object
41
46
self.window = self.glade.get_widget('window_rename')
42
self.entry = self.glade.get_widget('entry_rename')
44
48
# Dictionary for signal_autoconnect
45
49
dic = { "on_button_rename_rename_clicked": self.rename,
48
52
# Connect the signals to the handlers
49
53
self.glade.signal_autoconnect(dic)
53
self.selected = selected
56
56
""" Display the Rename dialog. """
57
if self.selected is not None:
58
self.entry.set_text(self.selected)
60
57
self.window.show_all()
62
59
def rename(self, widget):
64
old_filename = self.selected
65
new_filename = self.entry.get_text()
61
entry = self.glade.get_widget('entry_rename')
63
old_filename = self.comm.get_selected_right()
64
new_filename = entry.get_text()
67
66
if old_filename is None:
68
error_dialog(_('No file was selected'),
69
_('Please select a file from the list to proceed.'))
67
self.dialog.error_dialog(_('No file was selected'),
68
_('Please select a file from the list to proceed.'))
72
71
if new_filename == "":
73
error_dialog(_('Filename not given'),
74
_('Please specify a new name for the file.'))
72
self.dialog.error_dialog(_('Filename not given'),
73
_('Please specify a new name for the file.'))
77
source = os.path.join(self.wtpath, old_filename)
78
destination = os.path.join(self.wtpath, new_filename)
76
source = self.comm.get_path() + '/' + old_filename
77
destination = self.comm.get_path() + '/' + new_filename
82
wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
83
wt2, path2 = WorkingTree.open_containing(self.wt.abspath(source))
85
if wt1.basedir != wt2.basedir:
86
error_dialog(_('Not the same branch'),
87
_('The destination is not in the same branch.'))
89
wt1.rename_one(source, destination)
81
fileops.rename(source, destination)
90
82
except errors.NotBranchError:
91
error_dialog(_('File is not in a branch'),
92
_('The selected file is not in a branch.'))
94
except errors.BzrError, msg:
95
error_dialog(_('Unknown bzr error'), str(msg))
83
self.dialog.error_dialog(_('File is not in a branch'),
84
_('The selected file is not in a branch.'))
86
except errors.NotSameBranchError:
87
self.dialog.error_dialog(_('Not the same branch'),
88
_('The destination is not in the same branch.'))
94
self.comm.refresh_right()
99
96
def close(self, widget=None):
100
97
self.window.destroy()