/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-07-21 13:16:33 UTC
  • mto: This revision was merged to the branch mainline in revision 248.
  • Revision ID: matkor@laptop-hp-20070721131633-t40kxs20j1q2fvvc
Context menu "Remove and delete added"
Acts like "Remove" but also deletes file locally.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
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(_("_Local only commit (works in checkouts)"),
84
 
                                                use_underline=True)
85
 
        self._check_strict = gtk.CheckButton(_("_Strict commit (fails if unknown files are present)"),
86
 
                                             use_underline=True)
87
 
        self._expander_files = gtk.Expander(_("Please select the file(s) to commit"))
 
89
        self._expander_files = gtk.Expander(_("File(s) to commit"))
88
90
        self._vpaned_main = gtk.VPaned()
89
91
        self._scrolledwindow_files = gtk.ScrolledWindow()
90
92
        self._scrolledwindow_message = gtk.ScrolledWindow()
91
93
        self._treeview_files = gtk.TreeView()
92
94
        self._vbox_message = gtk.VBox()
93
 
        self._label_message = gtk.Label(_("Please specify a commit message:"))
 
95
        self._label_message = gtk.Label(_("Commit message:"))
94
96
        self._textview_message = gtk.TextView()
95
97
        
96
98
        if self._is_pending:
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)