/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: Jasper Groenewegen
  • Date: 2008-07-27 12:01:40 UTC
  • mfrom: (576.3.2 improve-merge)
  • mto: This revision was merged to the branch mainline in revision 579.
  • Revision ID: colbrac@xs4all.nl-20080727120140-1agdlzkc9fumjk5f
Merge merge dialog improvements

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
    pass
24
24
 
25
25
import gtk
26
 
import gtk.glade
27
26
 
28
27
import bzrlib.errors as errors
29
28
from bzrlib.workingtree import WorkingTree
30
29
 
31
 
from dialog import error_dialog
32
 
from guifiles import GLADEFILENAME
33
 
 
34
 
 
35
 
class OliveRename:
 
30
from bzrlib.plugins.gtk import _i18n
 
31
from bzrlib.plugins.gtk.dialog import error_dialog
 
32
from bzrlib.plugins.gtk.errors import show_bzr_error
 
33
 
 
34
 
 
35
class RenameDialog(gtk.Dialog):
36
36
    """ Display the Rename dialog and perform the needed actions. """
37
 
    def __init__(self, wt, wtpath, selected=[]):
38
 
        """ Initialize the Rename dialog. """
39
 
        self.glade = gtk.glade.XML(GLADEFILENAME, 'window_rename')
40
 
        
41
 
        self.window = self.glade.get_widget('window_rename')
42
 
        self.entry = self.glade.get_widget('entry_rename')
43
 
        
44
 
        # Dictionary for signal_autoconnect
45
 
        dic = { "on_button_rename_rename_clicked": self.rename,
46
 
                "on_button_rename_cancel_clicked": self.close }
47
 
        
48
 
        # Connect the signals to the handlers
49
 
        self.glade.signal_autoconnect(dic)
50
 
        
 
37
    
 
38
    def __init__(self, wt, wtpath, selected=None, parent=None):
 
39
        """ Initialize the Rename file dialog. """
 
40
        gtk.Dialog.__init__(self, title="Olive - Rename files",
 
41
                                  parent=parent,
 
42
                                  flags=0,
 
43
                                  buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
 
44
        
 
45
        # Get arguments
51
46
        self.wt = wt
52
47
        self.wtpath = wtpath
53
48
        self.selected = selected
54
49
        
55
 
    def display(self):
56
 
        """ Display the Rename dialog. """
 
50
        # Create widgets
 
51
        self._hbox = gtk.HBox()
 
52
        self._label_rename_to = gtk.Label(_i18n("Rename to"))
 
53
        self._entry = gtk.Entry()
 
54
        self._button_rename = gtk.Button(_i18n("_Rename"))
 
55
        self._button_rename_icon = gtk.Image()
 
56
        self._button_rename_icon.set_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_BUTTON)
 
57
        self._button_rename.set_image(self._button_rename_icon)
 
58
        
 
59
        self._entry.connect('activate', self._on_rename_clicked)
 
60
        self._button_rename.connect('clicked', self._on_rename_clicked)
 
61
        
 
62
        # Set text
57
63
        if self.selected is not None:
58
 
            self.entry.set_text(self.selected)
59
 
        
60
 
        self.window.show_all()
61
 
 
62
 
    def rename(self, widget):
 
64
            self._entry.set_text(self.selected)
 
65
        
 
66
        # Add widgets to dialog
 
67
        self.vbox.add(self._hbox)
 
68
        self._hbox.add(self._label_rename_to)
 
69
        self._hbox.add(self._entry)
 
70
        self._hbox.set_spacing(5)
 
71
        self.action_area.pack_end(self._button_rename)
 
72
        
 
73
        self.vbox.show_all()
 
74
        
 
75
    @show_bzr_error
 
76
    def _on_rename_clicked(self, widget):
63
77
        # Get entry
64
78
        old_filename = self.selected
65
 
        new_filename = self.entry.get_text()
 
79
        new_filename = self._entry.get_text()
66
80
            
67
81
        if old_filename is None:
68
 
            error_dialog(_('No file was selected'),
69
 
                         _('Please select a file from the list to proceed.'))
 
82
            error_dialog(_i18n('No file was selected'),
 
83
                         _i18n('Please select a file from the list to proceed.'))
70
84
            return
71
85
        
72
86
        if new_filename == "":
73
 
            error_dialog(_('Filename not given'),
74
 
                         _('Please specify a new name for the file.'))
 
87
            error_dialog(_i18n('Filename not given'),
 
88
                         _i18n('Please specify a new name for the file.'))
75
89
            return
76
90
        
77
91
        source = os.path.join(self.wtpath, old_filename)
78
92
        destination = os.path.join(self.wtpath, new_filename)
79
93
        
80
94
        # Rename the file
81
 
        try:
82
 
            wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
83
 
            wt2, path2 = WorkingTree.open_containing(self.wt.abspath(source))
 
95
        wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
 
96
        wt2, path2 = WorkingTree.open_containing(self.wt.abspath(source))
84
97
 
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)
90
 
        except errors.NotBranchError:
91
 
            error_dialog(_('File is not in a branch'),
92
 
                         _('The selected file is not in a branch.'))
 
98
        if wt1.basedir != wt2.basedir:
 
99
            error_dialog(_i18n('Not the same branch'),
 
100
                         _i18n('The destination is not in the same branch.'))
93
101
            return
94
 
        except errors.BzrError, msg:
95
 
            error_dialog(_('Unknown bzr error'), str(msg))
96
 
 
97
 
        self.close()
98
 
    
99
 
    def close(self, widget=None):
100
 
        self.window.destroy()
 
102
        wt1.rename_one(source, destination)
 
103
        
 
104
        self.response(gtk.RESPONSE_OK)