163
163
kind_changed = _('kind changed')
165
165
# The store holds:
166
# [file_id, real path, checkbox, display path, changes type]
166
# [file_id, real path, checkbox, display path, changes type, message]
167
167
# _iter_changes returns:
168
168
# (file_id, (path_in_source, path_in_target),
169
169
# changed_content, versioned, parent, name, kind,
172
172
# The first entry is always the 'whole tree'
173
store.append([None, None, True, 'All Files', ''])
173
store.append([None, None, True, 'All Files', '', ''])
174
174
# should we pass specific_files?
175
175
self._wt.lock_read()
176
176
self._basis_tree.lock_read()
226
226
assert False, "How did we get here?"
228
store.append([file_id, real_path, True, display_path, change_type])
228
store.append([file_id, real_path, True, display_path,
230
231
self._basis_tree.unlock()
231
232
self._wt.unlock()
233
234
self._treeview_files.set_model(store)
235
self._last_selected_file = None
234
236
self._treeview_files.set_cursor(0)
236
238
def _fill_in_diff(self):
335
337
gobject.TYPE_BOOLEAN, # [2] checkbox
336
338
gobject.TYPE_STRING, # [3] display path
337
339
gobject.TYPE_STRING, # [4] changes type
340
gobject.TYPE_STRING, # [5] commit message
339
342
self._files_store = liststore
340
343
self._treeview_files.set_model(liststore)
432
435
self._file_message_text_view.set_accepts_tab(False)
433
436
self._file_message_text_view.show()
435
self._file_message_expander = gtk.Expander(_('Per File Message'))
438
self._file_message_expander = gtk.Expander(_('File commit message'))
436
439
self._file_message_expander.add(file_message_box)
437
440
file_message_box.show()
438
441
self._add_to_right_table(self._file_message_expander, 1, False)
462
465
def _on_treeview_files_cursor_changed(self, treeview):
463
466
treeselection = treeview.get_selection()
464
(model, iterable) = treeselection.get_selected()
467
(model, selection) = treeselection.get_selected()
466
if iterable is not None:
467
path, display_path = model.get(iterable, 1, 3) # Get the real_path attribute
469
if selection is not None:
470
path, display_path = model.get(selection, 1, 3)
468
471
self._diff_label.set_text(_('Diff for ') + display_path)
470
473
self._diff_view.show_diff(None)
472
475
self._diff_view.show_diff([path])
476
self._update_per_file_info(selection)
478
def _save_current_file_message(self):
479
if self._last_selected_file is None:
480
return # Nothing to save
481
text_buffer = self._file_message_text_view.get_buffer()
482
cur_text = text_buffer.get_text(text_buffer.get_start_iter(),
483
text_buffer.get_end_iter())
484
last_selected = self._files_store.get_iter(self._last_selected_file)
485
self._files_store.set_value(last_selected, 5, cur_text)
487
def _update_per_file_info(self, selection):
488
# The node is changing, so cache the current message
489
self._save_current_file_message()
490
text_buffer = self._file_message_text_view.get_buffer()
491
file_id, display_path, message = self._files_store.get(selection, 0, 3, 5)
492
if file_id is None: # Whole tree
493
self._file_message_expander.set_label(_('File commit message'))
494
self._file_message_expander.set_expanded(False)
495
self._file_message_expander.set_sensitive(False)
496
text_buffer.set_text('')
497
self._last_selected_file = None
499
self._file_message_expander.set_label(_('Commit message for ')
501
self._file_message_expander.set_expanded(True)
502
self._file_message_expander.set_sensitive(True)
503
text_buffer.set_text(message)
504
self._last_selected_file = self._files_store.get_path(selection)
475
507
def _rev_to_pending_info(rev):