/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: 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:
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
import os
18
 
from os.path import dirname
19
18
 
20
19
try:
21
20
    import pygtk
24
23
    pass
25
24
 
26
25
import gtk
27
 
import gtk.glade
28
26
 
29
27
import bzrlib.errors as errors
30
28
from bzrlib.workingtree import WorkingTree
31
29
 
 
30
from bzrlib.plugins.gtk import _i18n
32
31
from bzrlib.plugins.gtk.dialog import error_dialog
33
 
from errors import show_bzr_error
34
 
from guifiles import GLADEFILENAME
35
 
 
36
 
 
37
 
class OliveMove:
 
32
from bzrlib.plugins.gtk.errors import show_bzr_error
 
33
 
 
34
 
 
35
class MoveDialog(gtk.Dialog):
38
36
    """ Display the Move dialog and perform the needed actions. """
39
 
    def __init__(self, wt, wtpath, selected=[]):
 
37
    
 
38
    def __init__(self, wt, wtpath, selected, parent=None):
40
39
        """ Initialize the Move dialog. """
41
 
        self.glade = gtk.glade.XML(GLADEFILENAME, 'window_move', 'olive-gtk')
42
 
        
43
 
        self.window = self.glade.get_widget('window_move')
44
 
        
45
 
        # Dictionary for signal_autoconnect
46
 
        dic = { "on_button_move_move_clicked": self.move,
47
 
                "on_button_move_cancel_clicked": self.close }
48
 
        
49
 
        # Connect the signals to the handlers
50
 
        self.glade.signal_autoconnect(dic)
51
 
        
 
40
        gtk.Dialog.__init__(self, title="Olive - Move",
 
41
                                  parent=parent,
 
42
                                  flags=0,
 
43
                                  buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
 
44
        
 
45
        # Get arguments
52
46
        self.wt = wt
53
47
        self.wtpath = wtpath
54
48
        self.selected = selected
57
51
            self.selected = ""
58
52
        
59
53
        if self.wtpath == "":
60
 
            directory = dirname(self.wt.abspath(self.selected))
 
54
            directory = os.path.dirname(self.wt.abspath(self.selected))
61
55
        else:
62
 
            directory = dirname(self.wt.abspath(self.wtpath + os.sep + self.selected))
63
 
        
64
 
        # Set FileChooser directory
65
 
        self.filechooser = self.glade.get_widget('filechooserbutton_move')
66
 
        self.filechooser.set_filename(directory)
67
 
 
68
 
    def display(self):
69
 
        """ Display the Move dialog. """
70
 
        self.window.show_all()
 
56
            directory = os.path.dirname(self.wt.abspath(self.wtpath + os.sep + self.selected))
 
57
        
 
58
        # Create widgets
 
59
        self._hbox = gtk.HBox()
 
60
        self._label_move_to = gtk.Label(_i18n("Move to"))
 
61
        self._filechooser_dialog = gtk.FileChooserDialog(title="Please select a folder",
 
62
                                    parent=self.window,
 
63
                                    action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
 
64
                                    buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
 
65
                                             gtk.STOCK_OPEN, gtk.RESPONSE_OK))
 
66
        self._filechooser_dialog.set_default_response(gtk.RESPONSE_OK)
 
67
        self.filechooser = gtk.FileChooserButton(self._filechooser_dialog)
 
68
        self._button_move = gtk.Button(_i18n("_Move"))
 
69
        self._button_move_icon = gtk.Image()
 
70
        self._button_move_icon.set_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_BUTTON)
 
71
        self._button_move.set_image(self._button_move_icon)
 
72
        
 
73
        self._button_move.connect('clicked', self._on_move_clicked)
 
74
        
 
75
        # Set location
 
76
        self._filechooser_dialog.set_current_folder(directory)
 
77
        
 
78
        # Add widgets to dialog
 
79
        self.vbox.add(self._hbox)
 
80
        self._hbox.add(self._label_move_to)
 
81
        self._hbox.add(self.filechooser)
 
82
        self._hbox.set_spacing(5)
 
83
        self.action_area.pack_end(self._button_move)
 
84
        
 
85
        self.vbox.show_all()
71
86
 
72
87
    @show_bzr_error
73
 
    def move(self, widget):
 
88
    def _on_move_clicked(self, widget):
74
89
        destination = self.filechooser.get_filename()
75
 
 
 
90
        
 
91
        if destination == None:
 
92
            error_dialog(_i18n('No folder was selected'),
 
93
                         _i18n('Please select a folder to move the selected file to'))
 
94
            return
 
95
        
76
96
        filename = self.selected
77
97
            
78
98
        if filename is None:
79
 
            error_dialog(_('No file was selected'),
80
 
                         _('Please select a file from the list to proceed.'))
 
99
            error_dialog(_i18n('No file was selected'),
 
100
                         _i18n('Please select a file from the list to proceed.'))
81
101
            return
82
102
        
83
103
        source = os.path.join(self.wtpath, filename)
86
106
        wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
87
107
        wt2, path2 = WorkingTree.open_containing(destination)
88
108
        if wt1.basedir != wt2.basedir:
89
 
            error_dialog(_('Not the same branch'),
90
 
                         _('The destination is not in the same branch.'))
 
109
            error_dialog(_i18n('Not the same branch'),
 
110
                         _i18n('The destination is not in the same branch.'))
91
111
            return
92
112
 
93
113
        wt1.move([source], wt1.relpath(destination))
94
 
        self.close()
95
 
    
96
 
    def close(self, widget=None):
97
 
        self.window.destroy()
 
114
        
 
115
        self.response(gtk.RESPONSE_OK)