[dots/remove-assistant: 17/38] Do not edit directly on the table editor treeview. Use a dialog
- From: Fernando Herrera de las Heras <fherrera src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dots/remove-assistant: 17/38] Do not edit directly on the table editor treeview. Use a dialog
- Date: Thu, 15 Jul 2010 21:08:24 +0000 (UTC)
commit fbdb4faf43b4b145f1f9ca924afdfe8c3c3ce51f
Author: Fernando Herrera <fherrera onirica com>
Date: Fri Jul 9 15:50:00 2010 +0200
Do not edit directly on the table editor treeview. Use a dialog
dots/table_editor.py | 134 +++++++++++++++++++++++++++++++------------------
1 files changed, 85 insertions(+), 49 deletions(-)
---
diff --git a/dots/table_editor.py b/dots/table_editor.py
index bd93dc6..6ab2ceb 100755
--- a/dots/table_editor.py
+++ b/dots/table_editor.py
@@ -166,76 +166,112 @@ for line in lines:
line = line.replace("\t", " ")
if line == '' or line[0] == '#' or line[0] == '<' or line[0] == '\n':
continue
- elements = line.split(" ")
+ sep = line.find(" ")
entry = {}
- entry['opcode'] = elements[0]
- i = 1
- comment = False
- for element in elements[1:]:
- element = element.rstrip(" \t\n")
- # FIXME: Can be an element 3 a legitimate # (ie: not a comment)?
- if (element == " " or element == "") or (element == "#" and i >= 3):
- entry['comment'] = ' '.join(elements[i+1:])
- break
- entry['element' + str(i)] = element
- i = i + 1
+ entry['opcode'] = line[:sep]
+ entry['operands'] = line[sep+1:].rstrip(" \t\n")
entries.append (entry)
for e in entries:
print "op=" + e['opcode']
- print "\telement1=" + e['element1']
- if "element2" in e:
- print "\telement2=" + e['element2']
- if "element3" in e:
- print "\telement3=" + e['element3']
- if "comment" in e:
- print "\tcomment=" + e['comment']
+ print "\toperands=" + e['operands']
+import gtk
+def row_clicked(view, event):
+ if event.type != gtk.gdk._2BUTTON_PRESS:
+ return
+ selection = view.get_selection();
+ model, iter = selection.get_selected()
+ opcode = model.get_value (iter, 0)
+ operands = model.get_value (iter, 1)
+ operands_list = operands.split(" ")
+ operands_list.reverse()
+ print "Operands: " + operands
+ if operands_list is None:
+ operands_list = [ operands ]
+ print "Operands list: "
+ for l in operands_list: print "\t" + l
+ dialog = gtk.Dialog ("Edit op", None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
+ vbox = gtk.VBox (False, 6)
+ hbox = gtk.HBox (False, 6)
+ label = gtk.Label ("opcode:")
+ combo = gtk.ComboBox()
+ model = gtk.ListStore (str)
+ for k in opcodes.keys():
+ iter = model.append ([k])
+ if k == opcode:
+ thisiter = iter
-import gtk
+ cell = gtk.CellRendererText()
+ combo.pack_start(cell, True)
+ combo.add_attribute(cell, 'text', 0)
+ combo.set_model (model)
+ combo.set_active_iter (thisiter)
+
+ hbox.pack_start (label)
+ hbox.pack_start (combo)
+ vbox.pack_start (hbox)
+
+ schema = opcodes[opcode]
+ for s in schema:
+ print s
+ hbox = gtk.HBox (False, 6)
+ label = gtk.Label (s)
+ entry = gtk.Entry()
+ operand = ""
+ while operand == "": operand = operands_list.pop()
+ entry.set_text (operand)
+ hbox.pack_start (label)
+ hbox.pack_start (entry)
+ vbox.pack_start (hbox)
+
+ if len(operands_list) > 0:
+ hbox = gtk.HBox (False, 6)
+ label = gtk.Label ("Comments")
+ entry = gtk.Entry()
+ operands_list.reverse()
+ entry.set_text (" ".join (operands_list).lstrip(" "))
+ hbox.pack_start (label)
+ hbox.pack_start (entry)
+ vbox.pack_start (hbox)
+
+
+
+
+ dialog.get_content_area().add (vbox)
+ dialog.show_all()
+ response = dialog.run()
+ dialog.destroy()
+
+
+
+
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_title("Basic TreeView Example")
window.set_size_request(600, 600)
-liststore = gtk.ListStore(str, str, str, str, str)
+liststore = gtk.ListStore(str, str)
for e in entries:
- iter = liststore.append ([e['opcode'], e['element1'], None, None, None])
- if "element2" in e:
- liststore.set_value(iter, 2, e['element2'])
- if "element3" in e:
- liststore.set_value(iter, 3, e['element3'])
- if "comment" in e:
- liststore.set_value(iter, 4, e['comment'])
+ iter = liststore.append ([e['opcode'], e['operands']])
treeview = gtk.TreeView(liststore)
-tvcolumn = gtk.TreeViewColumn('Column 0')
+tvcolumn = gtk.TreeViewColumn('opcode')
treeview.append_column(tvcolumn)
-cell = gtk.CellRendererCombo()
-combomodel = gtk.ListStore(str)
-for o in opcodes.keys():
- combomodel.append ([o])
-cell.set_property ("editable", True)
-cell.set_property ("editable-set", True)
-cell.set_property ("model", combomodel)
-cell.set_property ("text-column", 0)
-cell.connect ("edited", cell_edited, liststore, 0)
-
+cell = gtk.CellRendererText()
tvcolumn.pack_start(cell, True)
tvcolumn.add_attribute(cell, 'text', 0)
-for i in [1,2,3]:
- tvcolumn = gtk.TreeViewColumn('Column ' + str(i))
- treeview.append_column(tvcolumn)
- cell = gtk.CellRendererText()
- cell.set_property ("editable", True)
- cell.set_property ("editable-set", True)
- cell.connect ("editing-started", cell_started_editing, liststore, i)
- cell.connect ("edited", cell_edited, liststore, i)
- tvcolumn.pack_start(cell, True)
- tvcolumn.add_attribute(cell, 'text', i)
+tvcolumn = gtk.TreeViewColumn('operands')
+treeview.append_column(tvcolumn)
+cell = gtk.CellRendererText()
+tvcolumn.pack_start(cell, True)
+tvcolumn.add_attribute(cell, 'text', 1)
+
+treeview.connect("button-press-event", row_clicked)
scrolledwindow = gtk.ScrolledWindow ()
scrolledwindow.add(treeview)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]