/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/rename.py

  • Committer: Jelmer Vernooij
  • Date: 2007-02-01 15:50:40 UTC
  • Revision ID: jelmer@samba.org-20070201155040-3hq4mfbxs99kzazy
add framework for tests.

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
19
18
 
20
19
try:
21
20
    import pygtk
22
21
    pygtk.require("2.0")
23
22
except:
24
23
    pass
25
 
try:
26
 
    import gtk
27
 
    import gtk.glade
28
 
except:
29
 
    sys.exit(1)
30
 
 
31
 
import olive.backend.errors as errors
32
 
import olive.backend.fileops as fileops
 
24
 
 
25
import gtk
 
26
import gtk.glade
 
27
 
 
28
import bzrlib.errors as errors
 
29
from bzrlib.workingtree import WorkingTree
 
30
 
 
31
from dialog import error_dialog
 
32
from guifiles import GLADEFILENAME
 
33
 
33
34
 
34
35
class OliveRename:
35
36
    """ Display the Rename dialog and perform the needed actions. """
36
 
    def __init__(self, gladefile, comm, dialog):
 
37
    def __init__(self, wt, wtpath, selected=[]):
37
38
        """ Initialize the Rename dialog. """
38
 
        self.gladefile = gladefile
39
 
        self.glade = gtk.glade.XML(self.gladefile, 'window_rename')
40
 
        
41
 
        # Communication object
42
 
        self.comm = comm
43
 
        # Dialog object
44
 
        self.dialog = dialog
 
39
        self.glade = gtk.glade.XML(GLADEFILENAME, 'window_rename')
45
40
        
46
41
        self.window = self.glade.get_widget('window_rename')
 
42
        self.entry = self.glade.get_widget('entry_rename')
47
43
        
48
44
        # Dictionary for signal_autoconnect
49
45
        dic = { "on_button_rename_rename_clicked": self.rename,
52
48
        # Connect the signals to the handlers
53
49
        self.glade.signal_autoconnect(dic)
54
50
        
 
51
        self.wt = wt
 
52
        self.wtpath = wtpath
 
53
        self.selected = selected
 
54
        
55
55
    def display(self):
56
56
        """ Display the Rename dialog. """
 
57
        if self.selected is not None:
 
58
            self.entry.set_text(self.selected)
 
59
        
57
60
        self.window.show_all()
58
61
 
 
62
    @show_bzr_error
59
63
    def rename(self, widget):
60
64
        # Get entry
61
 
        entry = self.glade.get_widget('entry_rename')
62
 
        
63
 
        old_filename = self.comm.get_selected_right()
64
 
        new_filename = entry.get_text()
 
65
        old_filename = self.selected
 
66
        new_filename = self.entry.get_text()
65
67
            
66
68
        if old_filename is None:
67
 
            self.dialog.error_dialog(_('No file was selected'),
68
 
                                     _('Please select a file from the list to proceed.'))
 
69
            error_dialog(_('No file was selected'),
 
70
                         _('Please select a file from the list to proceed.'))
69
71
            return
70
72
        
71
73
        if new_filename == "":
72
 
            self.dialog.error_dialog(_('Filename not given'),
73
 
                                     _('Please specify a new name for the file.'))
 
74
            error_dialog(_('Filename not given'),
 
75
                         _('Please specify a new name for the file.'))
74
76
            return
75
77
        
76
 
        source = self.comm.get_path() + '/' + old_filename
77
 
        destination = self.comm.get_path() + '/' + new_filename
 
78
        source = os.path.join(self.wtpath, old_filename)
 
79
        destination = os.path.join(self.wtpath, new_filename)
78
80
        
79
81
        # Rename the file
80
 
        try:
81
 
            fileops.rename(source, destination)
82
 
        except errors.NotBranchError:
83
 
            self.dialog.error_dialog(_('File is not in a branch'),
84
 
                                     _('The selected file is not in a branch.'))
85
 
            return
86
 
        except errors.NotSameBranchError:
87
 
            self.dialog.error_dialog(_('Not the same branch'),
88
 
                                     _('The destination is not in the same branch.'))
89
 
            return
90
 
        except:
91
 
            raise
 
82
        wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
 
83
        wt2, path2 = WorkingTree.open_containing(self.wt.abspath(source))
92
84
 
 
85
        if wt1.basedir != wt2.basedir:
 
86
            error_dialog(_('Not the same branch'),
 
87
                         _('The destination is not in the same branch.'))
 
88
            return
 
89
        wt1.rename_one(source, destination)
93
90
        self.close()
94
 
        self.comm.refresh_right()
95
91
    
96
92
    def close(self, widget=None):
97
93
        self.window.destroy()