/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to olive/move.py

  • Committer: Jelmer Vernooij
  • Date: 2008-05-01 12:55:33 UTC
  • mto: This revision was merged to the branch mainline in revision 488.
  • Revision ID: jelmer@samba.org-20080501125533-hesg3b13cxgsyqa2
Import Chris Lamb's olive-gtk manpage.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
import os
18
 
import sys
 
18
from os.path import dirname
19
19
 
20
20
try:
21
21
    import pygtk
22
22
    pygtk.require("2.0")
23
23
except:
24
24
    pass
 
25
 
25
26
import gtk
26
27
import gtk.glade
27
28
 
28
29
import bzrlib.errors as errors
29
 
 
30
 
from olive import gladefile
 
30
from bzrlib.workingtree import WorkingTree
 
31
 
 
32
from bzrlib.plugins.gtk.dialog import error_dialog
 
33
from errors import show_bzr_error
 
34
from guifiles import GLADEFILENAME
 
35
 
31
36
 
32
37
class OliveMove:
33
38
    """ Display the Move dialog and perform the needed actions. """
34
 
    def __init__(self, comm):
 
39
    def __init__(self, wt, wtpath, selected=[]):
35
40
        """ Initialize the Move dialog. """
36
 
        self.glade = gtk.glade.XML(gladefile, 'window_move', 'olive-gtk')
37
 
        
38
 
        # Communication object
39
 
        self.comm = comm
 
41
        self.glade = gtk.glade.XML(GLADEFILENAME, 'window_move', 'olive-gtk')
40
42
        
41
43
        self.window = self.glade.get_widget('window_move')
42
44
        
47
49
        # Connect the signals to the handlers
48
50
        self.glade.signal_autoconnect(dic)
49
51
        
 
52
        self.wt = wt
 
53
        self.wtpath = wtpath
 
54
        self.selected = selected
 
55
        
 
56
        if self.selected is None:
 
57
            self.selected = ""
 
58
        
 
59
        if self.wtpath == "":
 
60
            directory = dirname(self.wt.abspath(self.selected))
 
61
        else:
 
62
            directory = dirname(self.wt.abspath(self.wtpath + os.sep + self.selected))
 
63
        
50
64
        # Set FileChooser directory
51
65
        self.filechooser = self.glade.get_widget('filechooserbutton_move')
52
 
        self.filechooser.set_filename(self.comm.get_path())
 
66
        self.filechooser.set_filename(directory)
53
67
 
54
68
    def display(self):
55
69
        """ Display the Move dialog. """
56
70
        self.window.show_all()
57
71
 
 
72
    @show_bzr_error
58
73
    def move(self, widget):
59
74
        destination = self.filechooser.get_filename()
60
75
 
61
 
        filename = self.comm.get_selected_right()
 
76
        filename = self.selected
62
77
            
63
78
        if filename is None:
64
79
            error_dialog(_('No file was selected'),
65
 
                                     _('Please select a file from the list to proceed.'))
 
80
                         _('Please select a file from the list to proceed.'))
66
81
            return
67
82
        
68
 
        source = self.comm.get_path() + '/' + filename
 
83
        source = os.path.join(self.wtpath, filename)
69
84
        
70
85
        # Move the file to a directory
71
 
        try:
72
 
            wt1, path1 = WorkingTree.open_containing(source)
73
 
            wt2, path2 = WorkingTree.open_containing(destination)
74
 
            if wt1.base != wt2.base:
75
 
                error_dialog(_('Not the same branch'),
76
 
                                         _('The destination is not in the same branch.'))
77
 
                return
78
 
 
79
 
            wt1.move([source], destination)
80
 
        except errors.NotBranchError:
81
 
            error_dialog(_('File is not in a branch'),
82
 
                                     _('The selected file is not in a 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.'))
83
91
            return
84
92
 
 
93
        wt1.move([source], wt1.relpath(destination))
85
94
        self.close()
86
 
        self.comm.refresh_right()
87
95
    
88
96
    def close(self, widget=None):
89
97
        self.window.destroy()