/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: matkor
  • Date: 2007-08-23 10:17:40 UTC
  • mto: This revision was merged to the branch mainline in revision 265.
  • Revision ID: matkor@laptop-hp-20070823101740-s17kf9qa383wiuje
Code for "branch update" menuitem and toolbox. Typo fix

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
25
24
import gobject
26
25
import pango
27
26
 
28
27
import os.path
29
28
 
30
 
import bzrlib.errors as errors
31
 
from bzrlib import osutils
 
29
from bzrlib import errors, osutils
 
30
from bzrlib.trace import mutter
32
31
 
33
32
from dialog import error_dialog, question_dialog
34
33
from errors import show_bzr_error
35
 
from guifiles import GLADEFILENAME
 
34
 
 
35
try:
 
36
    import dbus
 
37
    import dbus.glib
 
38
    have_dbus = True
 
39
except ImportError:
 
40
    have_dbus = False
36
41
 
37
42
class CommitDialog(gtk.Dialog):
38
43
    """ New implementation of the Commit dialog. """
81
86
        
82
87
        # Create the widgets
83
88
        self._button_commit = gtk.Button(_("Comm_it"), use_underline=True)
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"))
 
89
        self._expander_files = gtk.Expander(_("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(_("Please specify a commit message:"))
 
95
        self._label_message = gtk.Label(_("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)
116
117
 
117
118
        if self._is_pending:
118
119
            self._scrolledwindow_merges.set_policy(gtk.POLICY_AUTOMATIC,
142
143
        self._vpaned_main.add2(self._vbox_message)
143
144
        
144
145
        self.vbox.pack_start(self._vpaned_main, True, True)
145
 
        if self._is_checkout:
 
146
        if self._is_checkout: 
 
147
            self._check_local = gtk.CheckButton(_("_Only commit locally"),
 
148
                                                use_underline=True)
146
149
            self.vbox.pack_start(self._check_local, False, False)
147
 
        self.vbox.pack_start(self._check_strict, False, False)
148
 
        
 
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
                
149
164
        # Create the file list
150
165
        self._create_file_view()
151
166
        # Create the pending merges
159
174
        
160
175
        # Display dialog
161
176
        self.vbox.show_all()
 
177
        
 
178
        # Default to Commit button
 
179
        self._button_commit.grab_default()
162
180
    
163
181
    def _on_treeview_files_row_activated(self, treeview, path, view_column):
164
182
        # FIXME: the diff window freezes for some reason
166
184
        (model, iter) = treeselection.get_selected()
167
185
        
168
186
        if iter is not None:
169
 
            from olive import DiffWindow
 
187
            from diff import DiffWindow
170
188
            
171
189
            _selected = model.get_value(iter, 1)
172
190
            
173
191
            diff = DiffWindow()
 
192
            diff.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
 
193
            diff.set_modal(True)
174
194
            parent_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision())
175
195
            diff.set_diff(self.wt.branch.nick, self.wt, parent_tree)
176
196
            try:
203
223
            local = self._check_local.get_active()
204
224
        else:
205
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
206
232
        
207
233
        try:
208
234
            self.wt.commit(message,
209
235
                       allow_pointless=False,
210
 
                       strict=self._check_strict.get_active(),
 
236
                       strict=False,
211
237
                       local=local,
212
238
                       specific_files=specific_files)
213
239
        except errors.PointlessCommit:
216
242
            if response == gtk.RESPONSE_YES:
217
243
                self.wt.commit(message,
218
244
                               allow_pointless=True,
219
 
                               strict=self._check_strict.get_active(),
 
245
                               strict=False,
220
246
                               local=local,
221
247
                               specific_files=specific_files)
222
248
        self.response(gtk.RESPONSE_OK)