15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
from os.path import dirname
22
22
pygtk.require("2.0")
31
29
import bzrlib.errors as errors
30
from bzrlib.workingtree import WorkingTree
32
from olive import gladefile
33
from dialog import error_dialog
34
36
""" Display the Move dialog and perform the needed actions. """
35
def __init__(self, gladefile, comm, dialog):
37
def __init__(self, wt, wtpath, selected=[]):
36
38
""" Initialize the Move dialog. """
37
self.gladefile = gladefile
38
self.glade = gtk.glade.XML(self.gladefile, 'window_move', 'olive-gtk')
40
# Communication object
39
self.glade = gtk.glade.XML(gladefile, 'window_move', 'olive-gtk')
45
41
self.window = self.glade.get_widget('window_move')
51
47
# Connect the signals to the handlers
52
48
self.glade.signal_autoconnect(dic)
52
self.selected = selected
54
if self.selected is None:
58
directory = dirname(self.wt.abspath(self.selected))
60
directory = dirname(self.wt.abspath(self.wtpath + os.sep + self.selected))
54
62
# Set FileChooser directory
55
63
self.filechooser = self.glade.get_widget('filechooserbutton_move')
56
self.filechooser.set_filename(self.comm.get_path())
64
self.filechooser.set_filename(directory)
59
67
""" Display the Move dialog. """
62
70
def move(self, widget):
63
71
destination = self.filechooser.get_filename()
65
filename = self.comm.get_selected_right()
73
filename = self.selected
67
75
if filename is None:
68
self.dialog.error_dialog(_('No file was selected'),
69
_('Please select a file from the list to proceed.'))
76
error_dialog(_('No file was selected'),
77
_('Please select a file from the list to proceed.'))
72
source = self.comm.get_path() + '/' + filename
80
source = os.path.join(self.wtpath, filename)
74
82
# Move the file to a directory
76
wt1, path1 = WorkingTree.open_containing(source)
84
wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
77
85
wt2, path2 = WorkingTree.open_containing(destination)
78
if wt1.base != wt2.base:
79
self.dialog.error_dialog(_('Not the same branch'),
80
_('The destination is not in the same branch.'))
86
if wt1.basedir != wt2.basedir:
87
error_dialog(_('Not the same branch'),
88
_('The destination is not in the same branch.'))
83
wt1.move([source], destination)
91
wt1.move([source], wt1.relpath(destination))
84
92
except errors.NotBranchError:
85
self.dialog.error_dialog(_('File is not in a branch'),
86
_('The selected file is not in a branch.'))
93
error_dialog(_('File is not in a branch'),
94
_('The selected file is not in a branch.'))
90
self.comm.refresh_right()
92
99
def close(self, widget=None):
93
100
self.window.destroy()