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

  • Committer: Mateusz Korniak
  • Date: 2007-09-02 15:42:18 UTC
  • mto: This revision was merged to the branch mainline in revision 274.
  • Revision ID: matkor@laptop-hp-20070902154218-nba0woaqjsn20f9n
Ignoring eric3 project files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
 
27
27
import os.path
28
28
 
29
 
import bzrlib.errors as errors
30
 
from bzrlib import osutils
 
29
from bzrlib import errors, osutils
 
30
from bzrlib.trace import mutter
31
31
 
32
 
from olive.dialog import error_dialog, question_dialog
 
32
from dialog import error_dialog, question_dialog
33
33
from errors import show_bzr_error
34
34
 
 
35
try:
 
36
    import dbus
 
37
    import dbus.glib
 
38
    have_dbus = True
 
39
except ImportError:
 
40
    have_dbus = False
 
41
 
35
42
class CommitDialog(gtk.Dialog):
36
43
    """ New implementation of the Commit dialog. """
37
44
    def __init__(self, wt, wtpath, notbranch, selected=None, parent=None):
79
86
        
80
87
        # Create the widgets
81
88
        self._button_commit = gtk.Button(_("Comm_it"), use_underline=True)
82
 
        if self._is_checkout:
83
 
            self._check_local = gtk.CheckButton(_("_Only commit locally"),
84
 
                                                use_underline=True)
85
 
        self._check_strict = gtk.CheckButton(_("_Allow unknown files"),
86
 
                                             use_underline=True)
87
89
        self._expander_files = gtk.Expander(_("File(s) to commit"))
88
90
        self._vpaned_main = gtk.VPaned()
89
91
        self._scrolledwindow_files = gtk.ScrolledWindow()
111
113
        self._textview_message.modify_font(pango.FontDescription("Monospace"))
112
114
        self.set_default_size(500, 500)
113
115
        self._vpaned_main.set_position(200)
 
116
        self._button_commit.set_flags(gtk.CAN_DEFAULT)
114
117
 
115
118
        if self._is_pending:
116
119
            self._scrolledwindow_merges.set_policy(gtk.POLICY_AUTOMATIC,
140
143
        self._vpaned_main.add2(self._vbox_message)
141
144
        
142
145
        self.vbox.pack_start(self._vpaned_main, True, True)
143
 
        if self._is_checkout:
 
146
        if self._is_checkout: 
 
147
            self._check_local = gtk.CheckButton(_("_Only commit locally"),
 
148
                                                use_underline=True)
144
149
            self.vbox.pack_start(self._check_local, False, False)
145
 
        self.vbox.pack_start(self._check_strict, False, False)
146
 
        
 
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
164
        # Create the file list
148
165
        self._create_file_view()
149
166
        # Create the pending merges
157
174
        
158
175
        # Display dialog
159
176
        self.vbox.show_all()
 
177
        
 
178
        # Default to Commit button
 
179
        self._button_commit.grab_default()
160
180
    
161
181
    def _on_treeview_files_row_activated(self, treeview, path, view_column):
162
182
        # FIXME: the diff window freezes for some reason
164
184
        (model, iter) = treeselection.get_selected()
165
185
        
166
186
        if iter is not None:
167
 
            from olive import DiffWindow
 
187
            from diff import DiffWindow
168
188
            
169
189
            _selected = model.get_value(iter, 1)
170
190
            
171
191
            diff = DiffWindow()
 
192
            diff.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
 
193
            diff.set_modal(True)
172
194
            parent_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision())
173
195
            diff.set_diff(self.wt.branch.nick, self.wt, parent_tree)
174
196
            try:
201
223
            local = self._check_local.get_active()
202
224
        else:
203
225
            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
204
232
        
205
233
        try:
206
234
            self.wt.commit(message,
207
235
                       allow_pointless=False,
208
 
                       strict=self._check_strict.get_active(),
 
236
                       strict=False,
209
237
                       local=local,
210
238
                       specific_files=specific_files)
211
239
        except errors.PointlessCommit:
214
242
            if response == gtk.RESPONSE_YES:
215
243
                self.wt.commit(message,
216
244
                               allow_pointless=True,
217
 
                               strict=self._check_strict.get_active(),
 
245
                               strict=False,
218
246
                               local=local,
219
247
                               specific_files=specific_files)
220
248
        self.response(gtk.RESPONSE_OK)