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
import olive.backend.errors as errors
32
import olive.backend.fileops as fileops
29
import bzrlib.errors as errors
30
from bzrlib.workingtree import WorkingTree
32
from dialog import error_dialog
33
from guifiles import GLADEFILENAME
35
37
""" Display the Move dialog and perform the needed actions. """
36
def __init__(self, gladefile, comm, dialog):
38
def __init__(self, wt, wtpath, selected=[]):
37
39
""" Initialize the Move dialog. """
38
self.gladefile = gladefile
39
self.glade = gtk.glade.XML(self.gladefile, 'window_move', 'olive-gtk')
41
# Communication object
40
self.glade = gtk.glade.XML(GLADEFILENAME, 'window_move', 'olive-gtk')
46
42
self.window = self.glade.get_widget('window_move')
52
48
# Connect the signals to the handlers
53
49
self.glade.signal_autoconnect(dic)
53
self.selected = selected
55
if self.selected is None:
59
directory = dirname(self.wt.abspath(self.selected))
61
directory = dirname(self.wt.abspath(self.wtpath + os.sep + self.selected))
55
63
# Set FileChooser directory
56
64
self.filechooser = self.glade.get_widget('filechooserbutton_move')
57
self.filechooser.set_filename(self.comm.get_path())
65
self.filechooser.set_filename(directory)
60
68
""" Display the Move dialog. """
63
71
def move(self, widget):
64
72
destination = self.filechooser.get_filename()
66
filename = self.comm.get_selected_right()
74
filename = self.selected
68
76
if filename is None:
69
self.dialog.error_dialog(_('No file was selected'),
70
_('Please select a file from the list to proceed.'))
77
error_dialog(_('No file was selected'),
78
_('Please select a file from the list to proceed.'))
73
source = self.comm.get_path() + '/' + filename
81
source = os.path.join(self.wtpath, filename)
75
83
# Move the file to a directory
77
fileops.move([source, destination])
85
wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
86
wt2, path2 = WorkingTree.open_containing(destination)
87
if wt1.basedir != wt2.basedir:
88
error_dialog(_('Not the same branch'),
89
_('The destination is not in the same branch.'))
92
wt1.move([source], wt1.relpath(destination))
78
93
except errors.NotBranchError:
79
self.dialog.error_dialog(_('File is not in a branch'),
80
_('The selected file is not in a branch.'))
82
except errors.NotSameBranchError:
83
self.dialog.error_dialog(_('Not the same branch'),
84
_('The destination is not in the same branch.'))
94
error_dialog(_('File is not in a branch'),
95
_('The selected file is not in a branch.'))
90
self.comm.refresh_right()
92
100
def close(self, widget=None):
93
101
self.window.destroy()