Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/points_list.py
diff options
context:
space:
mode:
authorAlan Aguiar <alanjas@hotmail.com>2013-12-25 15:45:47 (GMT)
committer Alan Aguiar <alanjas@hotmail.com>2013-12-25 15:45:47 (GMT)
commitc962744b7ecd6d86001963e2e6dfb31a8eb0fd93 (patch)
treeb5c5aea06d63246960995d711bbac30c2d33f2d8 /points_list.py
parente9604b14c66a9f1ed77f63f03604e9920edaca44 (diff)
basic add
Diffstat (limited to 'points_list.py')
-rw-r--r--points_list.py120
1 files changed, 120 insertions, 0 deletions
diff --git a/points_list.py b/points_list.py
new file mode 100644
index 0000000..23c8f18
--- /dev/null
+++ b/points_list.py
@@ -0,0 +1,120 @@
+
+import gtk
+import gobject
+
+from gettext import gettext as _
+
+class Data(gtk.TreeView):
+
+ __gsignals__ = {
+ 'label-changed': (gobject.SIGNAL_RUN_FIRST, None, [str, str], ),
+ 'value-changed': (gobject.SIGNAL_RUN_FIRST, None, [str, str], ), }
+
+ def __init__(self, activity):
+
+ gtk.TreeView.__init__(self)
+
+ self.model = gtk.ListStore(str, str)
+ self.set_model(self.model)
+
+ # Label column
+
+ column = gtk.TreeViewColumn(_("Label"))
+ label = gtk.CellRendererText()
+ label.set_property('editable', True)
+ label.connect("edited", self._label_changed, self.model)
+
+ column.pack_start(label)
+ column.set_attributes(label, text=0)
+ self.append_column(column)
+
+ # Value column
+
+ column = gtk.TreeViewColumn(_("Value"))
+ value = gtk.CellRendererText()
+ value.set_property('editable', True)
+ value.connect("edited", self._value_changed, self.model, activity)
+
+ column.pack_start(value)
+ column.set_attributes(value, text=1)
+
+ self.append_column(column)
+ self.set_enable_search(False)
+
+ self.show_all()
+
+ def add_value(self, label, value):
+ selected = self.get_selection().get_selected()[1]
+ if not selected:
+ path = 0
+
+ elif selected:
+ path = self.model.get_path(selected)[0] + 1
+
+ iter = self.model.insert(path, [label, value])
+
+ self.set_cursor(self.model.get_path(iter),
+ self.get_column(1),
+ True)
+
+
+
+ return path
+
+ def remove_selected_value(self):
+ path, column = self.get_cursor()
+ path = path[0]
+
+ model, iter = self.get_selection().get_selected()
+ self.model.remove(iter)
+
+ return path
+
+ def update_selected_value(self, data):
+ path, column = self.get_cursor()
+ path = path[0]
+ self.model[path][0] = data
+ #self.emit("label-changed", str(path), data)
+ print 'remover', path, column
+
+ def _label_changed(self, cell, path, new_text, model):
+
+
+ model[path][0] = new_text
+
+ self.emit("label-changed", str(path), new_text)
+
+ def _value_changed(self, cell, path, new_text, model, activity):
+
+
+ is_number = True
+ number = new_text.replace(",", ".")
+ try:
+ float(number)
+ except ValueError:
+ is_number = False
+
+ if is_number:
+ decimals = utils.get_decimals(str(float(number)))
+ new_text = locale.format('%.' + decimals + 'f', float(number))
+ model[path][1] = str(new_text)
+
+ self.emit("value-changed", str(path), number)
+
+ elif not is_number:
+ alert = Alert()
+
+ alert.props.title = _('Invalid Value')
+ alert.props.msg = \
+ _('The value must be a number (integer or decimal)')
+
+ ok_icon = Icon(icon_name='dialog-ok')
+ alert.add_button(gtk.RESPONSE_OK, _('Ok'), ok_icon)
+ ok_icon.show()
+
+ alert.connect('response', lambda a, r: activity.remove_alert(a))
+
+ activity.add_alert(alert)
+
+ alert.show()
+