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