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