/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/commit.py

  • Committer: Jelmer Vernooij
  • Date: 2007-02-01 15:50:40 UTC
  • Revision ID: jelmer@samba.org-20070201155040-3hq4mfbxs99kzazy
add framework for tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
    pass
22
22
 
23
23
import gtk
 
24
import gtk.glade
24
25
import gobject
25
26
import pango
26
27
 
31
32
 
32
33
from dialog import error_dialog, question_dialog
33
34
from errors import show_bzr_error
34
 
 
35
 
try:
36
 
    import dbus
37
 
    import dbus.glib
38
 
    have_dbus = True
39
 
except ImportError:
40
 
    have_dbus = False
 
35
from guifiles import GLADEFILENAME
41
36
 
42
37
class CommitDialog(gtk.Dialog):
43
38
    """ New implementation of the Commit dialog. """
86
81
        
87
82
        # Create the widgets
88
83
        self._button_commit = gtk.Button(_("Comm_it"), use_underline=True)
89
 
        self._expander_files = gtk.Expander(_("File(s) to commit"))
 
84
        if self._is_checkout:
 
85
            self._check_local = gtk.CheckButton(_("_Local only commit (works in checkouts)"),
 
86
                                                use_underline=True)
 
87
        self._check_strict = gtk.CheckButton(_("_Strict commit (fails if unknown files are present)"),
 
88
                                             use_underline=True)
 
89
        self._expander_files = gtk.Expander(_("Please select the file(s) to commit"))
90
90
        self._vpaned_main = gtk.VPaned()
91
91
        self._scrolledwindow_files = gtk.ScrolledWindow()
92
92
        self._scrolledwindow_message = gtk.ScrolledWindow()
93
93
        self._treeview_files = gtk.TreeView()
94
94
        self._vbox_message = gtk.VBox()
95
 
        self._label_message = gtk.Label(_("Commit message:"))
 
95
        self._label_message = gtk.Label(_("Please specify a commit message:"))
96
96
        self._textview_message = gtk.TextView()
97
97
        
98
98
        if self._is_pending:
113
113
        self._textview_message.modify_font(pango.FontDescription("Monospace"))
114
114
        self.set_default_size(500, 500)
115
115
        self._vpaned_main.set_position(200)
116
 
        self._button_commit.set_flags(gtk.CAN_DEFAULT)
117
116
 
118
117
        if self._is_pending:
119
118
            self._scrolledwindow_merges.set_policy(gtk.POLICY_AUTOMATIC,
143
142
        self._vpaned_main.add2(self._vbox_message)
144
143
        
145
144
        self.vbox.pack_start(self._vpaned_main, True, True)
146
 
        if self._is_checkout: 
147
 
            self._check_local = gtk.CheckButton(_("_Only commit locally"),
148
 
                                                use_underline=True)
 
145
        if self._is_checkout:
149
146
            self.vbox.pack_start(self._check_local, False, False)
150
 
            if have_dbus:
151
 
                bus = dbus.SystemBus()
152
 
                proxy_obj = bus.get_object('org.freedesktop.NetworkManager', 
153
 
                              '/org/freedesktop/NetworkManager')
154
 
                dbus_iface = dbus.Interface(
155
 
                        proxy_obj, 'org.freedesktop.NetworkManager')
156
 
                try:
157
 
                    # 3 is the enum value for STATE_CONNECTED
158
 
                    self._check_local.set_active(dbus_iface.state() != 3)
159
 
                except dbus.DBusException, e:
160
 
                    # Silently drop errors. While DBus may be 
161
 
                    # available, NetworkManager doesn't necessarily have to be
162
 
                    mutter("unable to get networkmanager state: %r" % e)
163
 
                
 
147
        self.vbox.pack_start(self._check_strict, False, False)
 
148
        
164
149
        # Create the file list
165
150
        self._create_file_view()
166
151
        # Create the pending merges
174
159
        
175
160
        # Display dialog
176
161
        self.vbox.show_all()
177
 
        
178
 
        # Default to Commit button
179
 
        self._button_commit.grab_default()
180
162
    
181
163
    def _on_treeview_files_row_activated(self, treeview, path, view_column):
182
164
        # FIXME: the diff window freezes for some reason
184
166
        (model, iter) = treeselection.get_selected()
185
167
        
186
168
        if iter is not None:
187
 
            from diff import DiffWindow
 
169
            from olive import DiffWindow
188
170
            
189
171
            _selected = model.get_value(iter, 1)
190
172
            
191
173
            diff = DiffWindow()
192
 
            diff.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
193
 
            diff.set_modal(True)
194
174
            parent_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision())
195
175
            diff.set_diff(self.wt.branch.nick, self.wt, parent_tree)
196
176
            try:
223
203
            local = self._check_local.get_active()
224
204
        else:
225
205
            local = False
226
 
 
227
 
        if list(self.wt.unknowns()) != []:
228
 
            response = question_dialog(_("Commit with unknowns?"),
229
 
               _("Unknown files exist in the working tree. Commit anyway?"))
230
 
            if response == gtk.RESPONSE_NO:
231
 
                return
232
206
        
233
207
        try:
234
208
            self.wt.commit(message,
235
209
                       allow_pointless=False,
236
 
                       strict=False,
 
210
                       strict=self._check_strict.get_active(),
237
211
                       local=local,
238
212
                       specific_files=specific_files)
239
213
        except errors.PointlessCommit:
242
216
            if response == gtk.RESPONSE_YES:
243
217
                self.wt.commit(message,
244
218
                               allow_pointless=True,
245
 
                               strict=False,
 
219
                               strict=self._check_strict.get_active(),
246
220
                               local=local,
247
221
                               specific_files=specific_files)
248
222
        self.response(gtk.RESPONSE_OK)