/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>
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 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. """
37
    def __init__(self, gladefile, comm):
38
        """ Initialize the Push dialog. """
39
        self.gladefile = gladefile
40
        self.glade = gtk.glade.XML(self.gladefile, 'window_push')
41
        
42
        self.comm = comm
43
        
44
        self.window = self.glade.get_widget('window_push')
45
        
46
        # Dictionary for signal_autoconnect
47
        dic = { "on_button_push_push_clicked": self.push,
48
                "on_button_push_cancel_clicked": self.close,
49
                "on_radiobutton_push_stored_toggled": self.stored_toggled,
50
                "on_radiobutton_push_specific_toggled": self.specific_toggled, }
51
        
52
        # Connect the signals to the handlers
53
        self.glade.signal_autoconnect(dic)
54
        
55
        # Get some useful widgets
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
56
        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>
57
        self.entry_location = self.glade.get_widget('entry_push_location')
58
        self.check_remember = self.glade.get_widget('checkbutton_push_remember')
59
        self.check_overwrite = self.glade.get_widget('checkbutton_push_overwrite')
60
        self.check_create = self.glade.get_widget('checkbutton_push_create')
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
61
        
62
        # Get stored location
63
        loc = info.get_push_location(self.comm.get_path())
64
        if loc != '':
65
            self.entry_stored.set_text(loc)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
66
    
67
    def display(self):
68
        """ Display the Push dialog. """
69
        self.window.show()
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
70
        self.width, self.height = self.window.get_size()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
71
    
72
    def stored_toggled(self, widget):
73
        if widget.get_active():
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
74
            self.entry_stored.show()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
75
            self.entry_location.hide()
76
            self.check_remember.hide()
77
            self.check_create.hide()
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
78
            self.window.resize(self.width, self.height)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
79
        else:
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
80
            self.entry_stored.hide()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
81
            self.entry_location.show()
82
            self.check_remember.show()
83
            self.check_create.show()
84
    
85
    def specific_toggled(self, widget):
86
        if widget.get_active():
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
87
            self.entry_stored.hide()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
88
            self.entry_location.show()
89
            self.check_remember.show()
90
            self.check_create.show()
91
        else:
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
92
            self.entry_stored.show()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
93
            self.entry_location.hide()
94
            self.check_remember.hide()
95
            self.check_create.hide()
96
    
97
    def push(self, widget):
98
        from dialog import OliveDialog
99
        dialog = OliveDialog(self.gladefile)
100
        
101
        radio_stored = self.glade.get_widget('radiobutton_push_stored')
102
        radio_specific = self.glade.get_widget('radiobutton_push_specific')
103
        
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
104
        revs = 0
105
        self.comm.set_busy(self.window)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
106
        if radio_stored.get_active():
107
            try:
0.8.27 by Szilveszter Farkas (Phanatic)
Push dialog now displays stored location
108
                revs = commit.push(self.comm.get_path(),
109
                                   overwrite=self.check_overwrite.get_active())
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
110
            except errors.NotBranchError:
111
                dialog.error_dialog('Directory is not a branch.')
112
                return
113
            except errors.NoLocationKnown:
114
                dialog.error_dialog('No location known.')
115
                return
116
            except errors.NonExistingParent, errmsg:
117
                dialog.error_dialog('Parent directory doesn\'t exist: %s', errmsg)
118
                return
119
            except errors.DivergedBranchesError:
120
                dialog.error_dialog('Branches have been diverged.')
121
                return
122
            except:
123
                raise
124
        elif radio_specific.get_active():
125
            location = self.entry_location.get_text()
126
            if location == '':
127
                dialog.error_dialog('No location specified.')
128
                return
129
            
130
            try:
0.8.21 by Szilveszter Farkas (Phanatic)
2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
131
                revs = commit.push(self.comm.get_path(), location,
132
                                   self.check_remember.get_active(),
133
                                   self.check_overwrite.get_active(),
134
                                   self.check_create.get_active())
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
135
            except errors.NotBranchError:
136
                dialog.error_dialog('Directory is not a branch.')
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
137
                self.comm.set_busy(self.window, False)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
138
                return
139
            except errors.NonExistingParent, errmsg:
140
                dialog.error_dialog('Parent directory doesn\'t exist: %s', errmsg)
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
141
                self.comm.set_busy(self.window, False)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
142
                return
143
            except errors.DivergedBranchesError:
144
                dialog.error_dialog('Branches have been diverged.')
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
145
                self.comm.set_busy(self.window, False)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
146
                return
147
            except errors.PathPrefixNotCreated:
148
                dialog.error_dialog('Path prefix couldn\'t be created.')
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
149
                self.comm.set_busy(self.window, False)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
150
                return
151
            except:
152
                raise
153
        else:
154
            # This should really never happen
155
            pass
156
        
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
157
        self.close()
0.8.22 by Szilveszter Farkas (Phanatic)
2006-07-31 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
158
        dialog.info_dialog('%d revision(s) pushed.' % revs)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
159
    
160
    def close(self, widget=None):
161
        self.window.destroy()