/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
2
#
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
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.
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
7
#
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
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.
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
12
#
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
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 sys
18
19
try:
20
    import pygtk
21
    pygtk.require("2.0")
22
except:
23
    pass
24
try:
25
    import gtk
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
26
    import gtk.gdk
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
27
    import gtk.glade
28
except:
29
    sys.exit(1)
30
31
import olive.backend.commit as commit
32
import olive.backend.errors as errors
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
33
import olive.backend.info as info
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
34
35
class OlivePush:
36
    """ Display Push dialog and perform the needed actions. """
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
37
    def __init__(self, gladefile, comm, dialog):
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
38
        """ Initialize the Push dialog. """
39
        self.gladefile = gladefile
40
        self.glade = gtk.glade.XML(self.gladefile, 'window_push')
41
        
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
42
        # Communication object
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
43
        self.comm = comm
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
44
        # Dialog object
45
        self.dialog = dialog
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
46
        
47
        self.window = self.glade.get_widget('window_push')
48
        
49
        # Dictionary for signal_autoconnect
50
        dic = { "on_button_push_push_clicked": self.push,
51
                "on_button_push_cancel_clicked": self.close,
52
                "on_radiobutton_push_stored_toggled": self.stored_toggled,
53
                "on_radiobutton_push_specific_toggled": self.specific_toggled, }
54
        
55
        # Connect the signals to the handlers
56
        self.glade.signal_autoconnect(dic)
57
        
58
        # Get some useful widgets
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
59
        self.entry_stored = self.glade.get_widget('entry_push_stored')
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
60
        self.entry_location = self.glade.get_widget('entry_push_location')
61
        self.check_remember = self.glade.get_widget('checkbutton_push_remember')
62
        self.check_overwrite = self.glade.get_widget('checkbutton_push_overwrite')
63
        self.check_create = self.glade.get_widget('checkbutton_push_create')
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
64
        
65
        # Get stored location
0.8.45 by Szilveszter Farkas (Phanatic)
Some bugs fixed in the Push dialog; added TODO items.
66
        self.notbranch = False
67
        try:
68
            loc = info.get_push_location(self.comm.get_path())
69
        except errors.NotBranchError:
70
            self.notbranch = True
71
            return
72
73
        if loc is not None:
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
74
            self.entry_stored.set_text(loc)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
75
    
76
    def display(self):
77
        """ Display the Push dialog. """
0.8.45 by Szilveszter Farkas (Phanatic)
Some bugs fixed in the Push dialog; added TODO items.
78
        if self.notbranch:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
79
            self.dialog.error_dialog(_('Directory is not a branch'),
80
                                     _('You can perform this action only in a branch.'))
0.8.45 by Szilveszter Farkas (Phanatic)
Some bugs fixed in the Push dialog; added TODO items.
81
            self.close()
82
        else:
83
            self.window.show()
84
            self.width, self.height = self.window.get_size()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
85
    
86
    def stored_toggled(self, widget):
87
        if widget.get_active():
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
88
            self.entry_stored.show()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
89
            self.entry_location.hide()
90
            self.check_remember.hide()
91
            self.check_create.hide()
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
92
            self.window.resize(self.width, self.height)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
93
        else:
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
94
            self.entry_stored.hide()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
95
            self.entry_location.show()
96
            self.check_remember.show()
97
            self.check_create.show()
98
    
99
    def specific_toggled(self, widget):
100
        if widget.get_active():
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
101
            self.entry_stored.hide()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
102
            self.entry_location.show()
103
            self.check_remember.show()
104
            self.check_create.show()
105
        else:
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
106
            self.entry_stored.show()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
107
            self.entry_location.hide()
108
            self.check_remember.hide()
109
            self.check_create.hide()
110
    
111
    def push(self, widget):
112
        radio_stored = self.glade.get_widget('radiobutton_push_stored')
113
        radio_specific = self.glade.get_widget('radiobutton_push_specific')
114
        
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
115
        revs = 0
116
        self.comm.set_busy(self.window)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
117
        if radio_stored.get_active():
118
            try:
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
119
                revs = commit.push(self.comm.get_path(),
120
                                   overwrite=self.check_overwrite.get_active())
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
121
            except errors.NotBranchError:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
122
                self.dialog.error_dialog(_('Directory is not a branch'),
123
                                         _('You can perform this action only in a branch.'))
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
124
                return
125
            except errors.NoLocationKnown:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
126
                self.dialog.error_dialog(_('Push location is unknown'),
127
                                         _('Please specify a location manually.'))
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
128
                return
129
            except errors.NonExistingParent, errmsg:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
130
                self.dialog.error_dialog(_('Non existing parent directory'),
131
                                         _("The parent directory (%s)\ndoesn't exist.") % errmsg)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
132
                return
133
            except errors.DivergedBranchesError:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
134
                self.dialog.error_dialog(_('Branches have been diverged'),
135
                                         _('You cannot push if branches have diverged. Use the\noverwrite option if you want to push anyway.'))
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
136
                return
137
            except:
138
                raise
139
        elif radio_specific.get_active():
140
            location = self.entry_location.get_text()
141
            if location == '':
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
142
                self.dialog.error_dialog(_('No location specified'),
143
                                         _('Please specify a location or use the default.'))
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
144
                return
145
            
146
            try:
0.8.21 by Szilveszter Farkas (Phanatic)
2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
147
                revs = commit.push(self.comm.get_path(), location,
148
                                   self.check_remember.get_active(),
149
                                   self.check_overwrite.get_active(),
150
                                   self.check_create.get_active())
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
151
            except errors.NotBranchError:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
152
                self.dialog.error_dialog(_('Directory is not a branch'),
153
                                         _('You can perform this action only in a branch.'))
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
154
                self.comm.set_busy(self.window, False)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
155
                return
156
            except errors.NonExistingParent, errmsg:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
157
                self.dialog.error_dialog(_('Non existing parent directory'),
158
                                         _("The parent directory (%s)\ndoesn't exist.") % errmsg)
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
159
                self.comm.set_busy(self.window, False)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
160
                return
161
            except errors.DivergedBranchesError:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
162
                self.dialog.error_dialog(_('Branches have been diverged'),
163
                                         _('You cannot push if branches have diverged. Use the\noverwrite option if you want to push anyway.'))
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
164
                self.comm.set_busy(self.window, False)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
165
                return
166
            except errors.PathPrefixNotCreated:
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
167
                self.dialog.error_dialog(_('Path prefix not created'),
168
                                         _("The path leading up to the specified location couldn't\nbe created."))
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
169
                self.comm.set_busy(self.window, False)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
170
                return
171
            except:
172
                raise
173
        else:
174
            # This should really never happen
175
            pass
176
        
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
177
        self.close()
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
178
        self.dialog.info_dialog(_('Push successful'),
179
                                _('%d revision(s) pushed.') % revs)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
180
    
181
    def close(self, widget=None):
182
        self.window.destroy()