Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activity.py4
-rw-r--r--readers.py34
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)
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