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")
29
import bzrlib.errors as errors
30
from bzrlib.workingtree import WorkingTree
32
from bzrlib.plugins.gtk import _i18n
33
from bzrlib.plugins.gtk.dialog import error_dialog
34
from errors import show_bzr_error
35
from guifiles import GLADEFILENAME
31
import olive.backend.errors as errors
32
import olive.backend.fileops as fileops
34
from dialog import OliveDialog
39
37
""" Display the Move dialog and perform the needed actions. """
40
def __init__(self, wt, wtpath, selected=[]):
38
def __init__(self, gladefile, comm):
41
39
""" Initialize the Move dialog. """
42
self.glade = gtk.glade.XML(GLADEFILENAME, 'window_move', 'olive-gtk')
40
self.gladefile = gladefile
41
self.glade = gtk.glade.XML(self.gladefile, 'window_move')
45
self.dialog = OliveDialog(self.gladefile)
44
47
self.window = self.glade.get_widget('window_move')
50
53
# Connect the signals to the handlers
51
54
self.glade.signal_autoconnect(dic)
55
self.selected = selected
57
if self.selected is None:
61
directory = dirname(self.wt.abspath(self.selected))
63
directory = dirname(self.wt.abspath(self.wtpath + os.sep + self.selected))
65
56
# Set FileChooser directory
66
57
self.filechooser = self.glade.get_widget('filechooserbutton_move')
67
self.filechooser.set_filename(directory)
58
self.filechooser.set_filename(self.comm.get_path())
70
61
""" Display the Move dialog. """
71
62
self.window.show_all()
74
64
def move(self, widget):
75
65
destination = self.filechooser.get_filename()
77
filename = self.selected
67
filename = self.comm.get_selected_right()
79
69
if filename is None:
80
error_dialog(_i18n('No file was selected'),
81
_i18n('Please select a file from the list to proceed.'))
70
self.dialog.error_dialog('No file was selected.')
84
source = os.path.join(self.wtpath, filename)
73
source = self.comm.get_path() + '/' + filename
86
75
# Move the file to a directory
87
wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
88
wt2, path2 = WorkingTree.open_containing(destination)
89
if wt1.basedir != wt2.basedir:
90
error_dialog(_i18n('Not the same branch'),
91
_i18n('The destination is not in the same branch.'))
77
fileops.move([source, destination])
78
except errors.NotBranchError:
79
self.dialog.error_dialog('Selected file is not in a branch.')
81
except errors.NotSameBranchError:
82
self.dialog.error_dialog('The destination is not in the same branch.')
94
wt1.move([source], wt1.relpath(destination))
86
self.comm.refresh_right()
97
88
def close(self, widget=None):
98
89
self.window.destroy()