[Pkg-bazaar-commits] ./bzr-gtk/unstable r54: Add GTK+ dialog for commit. Available as 'bzr gcommit'
Jelmer Vernooij
jelmer at samba.org
Fri Apr 10 07:16:08 UTC 2009
------------------------------------------------------------
revno: 54
committer: Jelmer Vernooij <jelmer at samba.org>
timestamp: Sat 2006-05-20 17:44:48 +0200
message:
Add GTK+ dialog for commit. Available as 'bzr gcommit'
modified:
__init__.py
commit/__init__.py
commit/gcommit.py
-------------- next part --------------
=== modified file '__init__.py'
--- a/__init__.py 2006-05-19 22:25:52 +0000
+++ b/__init__.py 2006-05-20 15:44:48 +0000
@@ -17,4 +17,5 @@
"""GTK+ frontends to Bazaar commands """
import viz
import annotate
+import commit
import gdiff
=== modified file 'commit/__init__.py'
--- a/commit/__init__.py 2006-05-19 22:45:58 +0000
+++ b/commit/__init__.py 2006-05-20 15:44:48 +0000
@@ -51,14 +51,10 @@
if file_id is None:
raise NotVersionedError(filename)
- dialog = GCommitDialog()
- dialog.connect("destroy", lambda w: gtk.main_quit())
+ dialog = GCommitDialog(wt)
dialog.set_title(path + " - Commit")
- dialog.show()
-
- gtk.main()
-
- Commit().commit(working_tree=wt,message=dialog.message,
+ if dialog.run() != gtk.RESPONSE_CANCEL:
+ Commit().commit(working_tree=wt,message=dialog.message,
specific_files=dialog.specific_files)
register_command(cmd_gcommit)
=== modified file 'commit/gcommit.py'
--- a/commit/gcommit.py 2006-05-19 22:45:58 +0000
+++ b/commit/gcommit.py 2006-05-20 15:44:48 +0000
@@ -19,14 +19,88 @@
import gobject
import gtk
import pango
+from bzrlib.delta import compare_trees
-class GCommitDialog(gtk.Window):
+class GCommitDialog(gtk.Dialog):
""" Commit Dialog """
- def __init__(self):
- gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
+ def __init__(self, tree):
+ gtk.Dialog.__init__(self)
+
+ self.set_default_size(400, 400)
+
+ self.old_tree = tree.branch.repository.revision_tree(tree.branch.last_revision())
+ self.pending_merges = tree.pending_merges()
+ self.delta = compare_trees(self.old_tree, tree)
self._create()
+ def _create_file_view(self):
+ self.file_store = gtk.ListStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.file_view = gtk.TreeView(self.file_store)
+ self.file_view.append_column(gtk.TreeViewColumn("Change",gtk.CellRendererToggle(),active=0))
+ self.file_view.append_column(gtk.TreeViewColumn("Path",gtk.CellRendererText(),text=1))
+ self.file_view.append_column(gtk.TreeViewColumn("Type",gtk.CellRendererText(),text=2))
+
+ for path, id, kind in self.delta.added:
+ self.file_store.append([ True, path, "Added" ])
+
+ for path, id, kind in self.delta.removed:
+ self.file_store.append([ True, path, "Removed" ])
+
+ for oldpath, newpath, id, kind, text_modified, meta_modified in self.delta.renamed:
+ self.file_store.append([ True, oldpath, "Renamed"])
+
+ for path, id, kind, text_modified, meta_modified in self.delta.modified:
+ self.file_store.append([ True, path, "Modified"])
+
+ self.file_view.show()
+
+ def _get_specific_files(self):
+ ret = []
+ it = self.file_store.get_iter_first()
+ while it:
+ if self.file_store.get_value(it, 0):
+ ret.append(self.file_store.get_value(it,1))
+ it = self.file_store.iter_next(it)
+
+ return ret
+
+ specific_files = property(_get_specific_files)
+
+ def _create_pending_merge_view(self, merges):
+ self.pending_merge_store = gtk.ListStore(gobject.TYPE_STRING)
+ for revid in merges:
+ self.pending_merge_store.append([revid])
+ self.pending_merge_view = gtk.TreeView(self.pending_merge_store)
+ self.pending_merge_view.show()
+
+ def _create_message_box(self):
+ self.message_entry = gtk.TextView()
+ self.message_entry.show()
+ return self.message_entry
+
+ def _get_message(self):
+ buffer = self.message_entry.get_buffer()
+ return buffer.get_text(buffer.get_start_iter(),buffer.get_end_iter())
+
+ message = property(_get_message)
+
def _create(self):
- pass
+ # Show list of changed files with checkboxes
+ self._create_file_view()
+ self.vbox.set_spacing(2)
+ self.vbox.pack_start(self.file_view, expand=True, fill=True)
+
+ # If_ there are any pending merges, show list of pending merges
+ if self.pending_merges:
+ self._create_pending_merge_view(self.pending_merges)
+ self.vbox.pack_start(self.pending_merge_view, expand=True, fill=True)
+
+ # Show box where user can add comments
+ self._create_message_box()
+ self.vbox.pack_start(self.message_entry, expand=True, fill=True)
+
+ # Commit, Cancel buttons
+ self.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, "_Commit", gtk.RESPONSE_OK)
+
More information about the Pkg-bazaar-commits
mailing list