diff options
-rw-r--r-- | activity.py | 4 | ||||
-rw-r--r-- | readers.py | 34 |
2 files changed, 37 insertions, 1 deletions
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) @@ -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 |