/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
 
27
28
import os.path
28
29
 
29
 
from bzrlib import errors, osutils
30
 
from bzrlib.trace import mutter
 
30
import bzrlib.errors as errors
 
31
from bzrlib import osutils
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)