/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:
100
100
            self._vpaned_list = gtk.VPaned()
101
101
            self._scrolledwindow_merges = gtk.ScrolledWindow()
102
102
            self._treeview_merges = gtk.TreeView()
103
 
            self._scrolledwindow_merges.set_policy(gtk.POLICY_AUTOMATIC,
104
 
                                                   gtk.POLICY_AUTOMATIC)
105
103
 
106
104
        # Set callbacks
107
105
        self._button_commit.connect('clicked', self._on_commit_clicked)
115
113
        self._textview_message.modify_font(pango.FontDescription("Monospace"))
116
114
        self.set_default_size(500, 500)
117
115
        self._vpaned_main.set_position(200)
118
 
        self._button_commit.set_flags(gtk.CAN_DEFAULT)
119
116
 
 
117
        if self._is_pending:
 
118
            self._scrolledwindow_merges.set_policy(gtk.POLICY_AUTOMATIC,
 
119
                                                   gtk.POLICY_AUTOMATIC)
 
120
            self._treeview_files.set_sensitive(False)
 
121
        
120
122
        # Construct the dialog
121
123
        self.action_area.pack_end(self._button_commit)
122
124
        
140
142
        self._vpaned_main.add2(self._vbox_message)
141
143
        
142
144
        self.vbox.pack_start(self._vpaned_main, True, True)
143
 
        if self._is_checkout: 
144
 
            self._check_local = gtk.CheckButton(_("_Only commit locally"),
145
 
                                                use_underline=True)
 
145
        if self._is_checkout:
146
146
            self.vbox.pack_start(self._check_local, False, False)
147
 
            if have_dbus:
148
 
                bus = dbus.SystemBus()
149
 
                proxy_obj = bus.get_object('org.freedesktop.NetworkManager', 
150
 
                              '/org/freedesktop/NetworkManager')
151
 
                dbus_iface = dbus.Interface(
152
 
                        proxy_obj, 'org.freedesktop.NetworkManager')
153
 
                try:
154
 
                    # 3 is the enum value for STATE_CONNECTED
155
 
                    self._check_local.set_active(dbus_iface.state() != 3)
156
 
                except dbus.DBusException, e:
157
 
                    # Silently drop errors. While DBus may be 
158
 
                    # available, NetworkManager doesn't necessarily have to be
159
 
                    mutter("unable to get networkmanager state: %r" % e)
160
 
                
 
147
        self.vbox.pack_start(self._check_strict, False, False)
 
148
        
161
149
        # Create the file list
162
150
        self._create_file_view()
163
151
        # Create the pending merges
171
159
        
172
160
        # Display dialog
173
161
        self.vbox.show_all()
174
 
        
175
 
        # Default to Commit button
176
 
        self._button_commit.grab_default()
177
162
    
178
163
    def _on_treeview_files_row_activated(self, treeview, path, view_column):
179
164
        # FIXME: the diff window freezes for some reason
181
166
        (model, iter) = treeselection.get_selected()
182
167
        
183
168
        if iter is not None:
184
 
            from diff import DiffWindow
 
169
            from olive import DiffWindow
185
170
            
186
171
            _selected = model.get_value(iter, 1)
187
172
            
188
173
            diff = DiffWindow()
189
 
            diff.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
190
 
            diff.set_modal(True)
191
174
            parent_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision())
192
175
            diff.set_diff(self.wt.branch.nick, self.wt, parent_tree)
193
176
            try:
220
203
            local = self._check_local.get_active()
221
204
        else:
222
205
            local = False
223
 
 
224
 
        if list(self.wt.unknowns()) != []:
225
 
            response = question_dialog(_("Commit with unknowns?"),
226
 
               _("Unknown files exist in the working tree. Commit anyway?"))
227
 
            if response == gtk.RESPONSE_NO:
228
 
                return
229
206
        
230
207
        try:
231
208
            self.wt.commit(message,
232
209
                       allow_pointless=False,
233
 
                       strict=False,
 
210
                       strict=self._check_strict.get_active(),
234
211
                       local=local,
235
212
                       specific_files=specific_files)
236
213
        except errors.PointlessCommit:
239
216
            if response == gtk.RESPONSE_YES:
240
217
                self.wt.commit(message,
241
218
                               allow_pointless=True,
242
 
                               strict=False,
 
219
                               strict=self._check_strict.get_active(),
243
220
                               local=local,
244
221
                               specific_files=specific_files)
245
222
        self.response(gtk.RESPONSE_OK)
317
294
        crt = gtk.CellRendererToggle()
318
295
        crt.set_property("activatable", True)
319
296
        crt.connect("toggled", self._toggle_commit, self._file_store)
320
 
        commit_column = gtk.TreeViewColumn(_('Commit'), crt, active=0)
321
 
        if self._is_pending:
322
 
            commit_column.set_visible(False)
323
 
        self._treeview_files.append_column(commit_column)
 
297
        self._treeview_files.append_column(gtk.TreeViewColumn(_('Commit'),
 
298
                                     crt, active=0))
324
299
        self._treeview_files.append_column(gtk.TreeViewColumn(_('Path'),
325
300
                                     gtk.CellRendererText(), text=1))
326
301
        self._treeview_files.append_column(gtk.TreeViewColumn(_('Type'),