/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
import os
18
19
try:
20
    import pygtk
21
    pygtk.require("2.0")
22
except:
23
    pass
0.13.11 by Jelmer Vernooij
Bunch of small fixes, cleanups and simplifications.
24
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
25
import gtk
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
26
0.11.1 by Jelmer Vernooij
Eliminate olive.backend.errors.
27
import bzrlib.errors as errors
0.8.97 by Szilveszter Farkas (Phanatic)
Fix Move, Rename and glade file.
28
from bzrlib.workingtree import WorkingTree
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
29
475.1.2 by Vincent Ladeuil
Fix bug #187283 fix replacing _() by _i18n().
30
from bzrlib.plugins.gtk import _i18n
151 by Jelmer Vernooij
Move dialog to top-level directory.
31
from bzrlib.plugins.gtk.dialog import error_dialog
511.2.1 by Jelmer Vernooij
Fix import in olive.
32
from bzrlib.plugins.gtk.errors import show_bzr_error
533.6.1 by Jasper Groenewegen
Replace glade OliveMove with MoveDialog
33
34
35
class MoveDialog(gtk.Dialog):
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
36
    """ Display the Move dialog and perform the needed actions. """
533.6.1 by Jasper Groenewegen
Replace glade OliveMove with MoveDialog
37
    
38
    def __init__(self, wt, wtpath, selected, parent=None):
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
39
        """ Initialize the Move dialog. """
533.6.1 by Jasper Groenewegen
Replace glade OliveMove with MoveDialog
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
0.8.97 by Szilveszter Farkas (Phanatic)
Fix Move, Rename and glade file.
46
        self.wt = wt
47
        self.wtpath = wtpath
48
        self.selected = selected
49
        
50
        if self.selected is None:
51
            self.selected = ""
52
        
53
        if self.wtpath == "":
533.6.1 by Jasper Groenewegen
Replace glade OliveMove with MoveDialog
54
            directory = os.path.dirname(self.wt.abspath(self.selected))
0.8.97 by Szilveszter Farkas (Phanatic)
Fix Move, Rename and glade file.
55
        else:
533.6.1 by Jasper Groenewegen
Replace glade OliveMove with MoveDialog
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()
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
86
132 by Jelmer Vernooij
Use decorator for catching and showing bzr-gtk errors graphically. Eventually, this should go away and should be handled by the ui factory.
87
    @show_bzr_error
533.6.1 by Jasper Groenewegen
Replace glade OliveMove with MoveDialog
88
    def _on_move_clicked(self, widget):
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
89
        destination = self.filechooser.get_filename()
533.6.1 by Jasper Groenewegen
Replace glade OliveMove with MoveDialog
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
        
0.8.97 by Szilveszter Farkas (Phanatic)
Fix Move, Rename and glade file.
96
        filename = self.selected
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
97
            
98
        if filename is None:
475.1.2 by Vincent Ladeuil
Fix bug #187283 fix replacing _() by _i18n().
99
            error_dialog(_i18n('No file was selected'),
100
                         _i18n('Please select a file from the list to proceed.'))
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
101
            return
102
        
0.8.98 by Szilveszter Farkas (Phanatic)
Loads of fixes. Pyflakes cleanup.
103
        source = os.path.join(self.wtpath, filename)
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
104
        
105
        # Move the file to a directory
132 by Jelmer Vernooij
Use decorator for catching and showing bzr-gtk errors graphically. Eventually, this should go away and should be handled by the ui factory.
106
        wt1, path1 = WorkingTree.open_containing(self.wt.abspath(source))
107
        wt2, path2 = WorkingTree.open_containing(destination)
108
        if wt1.basedir != wt2.basedir:
475.1.2 by Vincent Ladeuil
Fix bug #187283 fix replacing _() by _i18n().
109
            error_dialog(_i18n('Not the same branch'),
110
                         _i18n('The destination is not in the same branch.'))
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
111
            return
112
132 by Jelmer Vernooij
Use decorator for catching and showing bzr-gtk errors graphically. Eventually, this should go away and should be handled by the ui factory.
113
        wt1.move([source], wt1.relpath(destination))
533.6.1 by Jasper Groenewegen
Replace glade OliveMove with MoveDialog
114
        
115
        self.response(gtk.RESPONSE_OK)