/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: Vincent Ladeuil
  • Date: 2008-06-10 15:25:47 UTC
  • mto: This revision was merged to the branch mainline in revision 504.
  • Revision ID: v.ladeuil+lp@free.fr-20080610152547-dwmil1p8pd0mfpnl
Fix third failing test (thanks to jam).

* tests/test_commit.py:
(TestPendingRevisions.test_pending_revisions_multi_merge): Fix
provided by jam: bzr we now filter the pending merges so that only
the 'heads()' are included. We just ensure that the pending merges
contain the unique tips for the ancestries.

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