From 0aa9a1fb143949216724844ebff1626f7775d1c8 Mon Sep 17 00:00:00 2001 From: Agustin Zubiaga Date: Fri, 13 Apr 2012 01:07:25 +0000 Subject: More simple: graph from clipboard --- diff --git a/activity.py b/activity.py index 185dcc3..97b7541 100644 --- a/activity.py +++ b/activity.py @@ -48,6 +48,7 @@ from sugar.datastore import datastore from charts import Chart from readers import StopWatchReader from readers import MeasureReader +from readers import ClipboardReader import simplegraphhelp # Mime types @@ -108,7 +109,8 @@ class ChartArea(gtk.DrawingArea): def _drag_data_received(self, w, context, x, y, data, info, time): if data and data.format == 8: io_file = StringIO(data.data) - self._parent.load_from_file(io_file) + reader = ClipboardReader(io_file) + self._parent._graph_from_reader(reader) context.finish(True, False, time) else: context.finish(False, False, time) diff --git a/readers.py b/readers.py index 0b19b80..7da8c08 100644 --- a/readers.py +++ b/readers.py @@ -127,3 +127,37 @@ class MeasureReader(): h_label = _('Samples') return v_label, h_label + + +class ClipboardReader(): + + def __init__(self, file): + """Import chart data from file.""" + + self._reader = csv.reader(file) + self.xlabel = "" + self.ylabel = "" + + def get_chart_data(self): + """Return data suitable for pyCHA.""" + + chart_data = [] + + for row in self._reader: + label, value = row[0].split(": ") + + if label == "XLabel": + self.xlabel = value + + elif label == "YLabel": + self.ylabel = value + + else: + chart_data.append((label, float(value))) + + return chart_data + + def get_labels_name(self): + """Return the h_label and y_label names.""" + + return self.xlabel, self.ylabel -- cgit v0.9.1