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 errors import show_bzr_error
32
from bzrlib.plugins.gtk.dialog import error_dialog
33
from guifiles import GLADEFILENAME
34
from bzrlib.plugins.gtk import _i18n
31
import olive.backend.errors as errors
32
import olive.backend.fileops as fileops
34
from dialog import OliveDialog
38
37
""" Display the Rename dialog and perform the needed actions. """
39
def __init__(self, wt, wtpath, selected=[]):
38
def __init__(self, gladefile, comm):
40
39
""" Initialize the Rename dialog. """
41
self.glade = gtk.glade.XML(GLADEFILENAME, 'window_rename')
40
self.gladefile = gladefile
41
self.glade = gtk.glade.XML(self.gladefile, 'window_rename')
45
self.dialog = OliveDialog(self.gladefile)
43
47
self.window = self.glade.get_widget('window_rename')
44
self.entry = self.glade.get_widget('entry_rename')
46
49
# Dictionary for signal_autoconnect
47
50
dic = { "on_button_rename_rename_clicked": self.rename,
50
53
# Connect the signals to the handlers
51
54
self.glade.signal_autoconnect(dic)
55
self.selected = selected
58
57
""" Display the Rename dialog. """
59
if self.selected is not None:
60
self.entry.set_text(self.selected)
62
58
self.window.show_all()
65
60
def rename(self, widget):
67
old_filename = self.selected
68
new_filename = self.entry.get_text()
62
entry = self.glade.get_widget('entry_rename')
64
old_filename = self.comm.get_selected_right()
65
new_filename = entry.get_text()
70
67
if old_filename is None:
71
error_dialog(_i18n('No file was selected'),
72
_i18n('Please select a file from the list to proceed.'))
68
self.dialog.error_dialog('No file was selected.')
75
71
if new_filename == "":
76
error_dialog(_i18n('Filename not given'),
77
_i18n('Please specify a new name for the file.'))
72
self.dialog.error_dialog('New filename not specified.')
80
source = os.path.join(self.wtpath, old_filename)
81
destination = os.path.join(self.wtpath, new_filename)
75
source = self.comm.get_path() + '/' + old_filename
76
destination = self.comm.get_path() + '/' + new_filename
84
wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
85
wt2, path2 = WorkingTree.open_containing(self.wt.abspath(source))
80
fileops.rename(source, destination)
81
except errors.NotBranchError:
82
self.dialog.error_dialog('Selected file is not in a branch.')
84
except errors.NotSameBranchError:
85
self.dialog.error_dialog('The destination is not in the same branch.')
87
if wt1.basedir != wt2.basedir:
88
error_dialog(_i18n('Not the same branch'),
89
_i18n('The destination is not in the same branch.'))
91
wt1.rename_one(source, destination)
89
self.comm.refresh_right()
94
91
def close(self, widget=None):
95
92
self.window.destroy()