Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activity.py131
-rw-r--r--charts.py5
-rw-r--r--icons/hbar.svg14
-rwxr-xr-xicons/line.svg2
-rw-r--r--icons/pie.svg20
-rw-r--r--icons/vbar.svg12
-rw-r--r--pycha/__init__.pyobin178 -> 178 bytes
-rw-r--r--pycha/bar.pyobin11625 -> 11625 bytes
-rw-r--r--pycha/chart.pyobin24966 -> 24966 bytes
-rw-r--r--pycha/color.pyobin5806 -> 5806 bytes
-rw-r--r--pycha/pie.pyobin10925 -> 10925 bytes
-rw-r--r--pycha/utils.pyobin704 -> 704 bytes
12 files changed, 131 insertions, 53 deletions
diff --git a/activity.py b/activity.py
index 77b17c7..f23380c 100644
--- a/activity.py
+++ b/activity.py
@@ -22,20 +22,34 @@
import gtk
import gobject
+import os
+
from sugar.activity import activity
from sugar.activity.widgets import ActivityToolbarButton
from sugar.activity.widgets import StopButton
from sugar.graphics.toolbarbox import ToolbarBox
from sugar.graphics.toolbutton import ToolButton
+from sugar.datastore import datastore
+
from pycha.color import basicColors as basic_colors
-from charts import Chart
+from charts import Chart, CHART_IMAGE
COLOR1 = gtk.gdk.Color("#224565")
COLOR2 = gtk.gdk.Color("#C0C0C0")
COLOR3 = gtk.gdk.Color("#D1E5EC")
+ACTIVITY_DIR = os.path.join(activity.get_activity_root(), "data/")
+CHART_FILE = os.path.join(ACTIVITY_DIR, "chart-1.png")
+num = 0
+
+while os.path.exists(CHART_FILE):
+ num += 1
+ CHART_FILE = os.path.join(ACTIVITY_DIR, "chart-" + str(num) + ".png")
+
+del num
+
class SimpleGraph(activity.Activity):
@@ -60,8 +74,23 @@ class SimpleGraph(activity.Activity):
self.toolbarbox = ToolbarBox()
self.activity_button = ActivityToolbarButton(self)
+ activity_btn_toolbar = self.activity_button.page
+
+ save_as_image = ToolButton("image")
+ save_as_image.connect("clicked", self.save_as_image)
+ save_as_image.set_tooltip("Save as image")
+ activity_btn_toolbar.insert(save_as_image, -1)
+
+ save_as_image.show()
+ activity_btn_toolbar.keep.hide()
+
self.toolbarbox.toolbar.insert(self.activity_button, 0)
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(False)
+ separator.set_expand(False)
+ self.toolbarbox.toolbar.insert(separator, -1)
+
self.add_v = ToolButton("gtk-add")
self.add_v.connect("clicked", self.add_value)
self.add_v.set_tooltip("Add a value")
@@ -72,11 +101,11 @@ class SimpleGraph(activity.Activity):
self.remove_v.connect("clicked", self.remove_value)
self.remove_v.set_tooltip("Remove the selected value")
- #self.toolbarbox.toolbar.insert(self.remove_v, -1)
+ self.toolbarbox.toolbar.insert(self.remove_v, -1)
separator = gtk.SeparatorToolItem()
- separator.set_draw(False)
- separator.set_expand(True)
+ separator.set_draw(True)
+ separator.set_expand(False)
self.toolbarbox.toolbar.insert(separator, -1)
self.add_vbar_chart = ToolButton("vbar")
@@ -89,21 +118,11 @@ class SimpleGraph(activity.Activity):
self.add_hbar_chart.set_tooltip("Create a horizontal bar chart")
self.toolbarbox.toolbar.insert(self.add_hbar_chart, -1)
- separator = gtk.SeparatorToolItem()
- separator.set_draw(True)
- separator.set_expand(False)
- self.toolbarbox.toolbar.insert(separator, -1)
-
self.add_line_chart = ToolButton("line")
self.add_line_chart.connect("clicked", self.add_chart_cb, "line")
self.add_line_chart.set_tooltip("Create a line chart")
self.toolbarbox.toolbar.insert(self.add_line_chart, -1)
- separator = gtk.SeparatorToolItem()
- separator.set_draw(True)
- separator.set_expand(False)
- self.toolbarbox.toolbar.insert(separator, -1)
-
self.add_pie_chart = ToolButton("pie")
self.add_pie_chart.connect("clicked", self.add_chart_cb, "pie")
self.add_pie_chart.set_tooltip("Create a pie chart")
@@ -159,7 +178,8 @@ class SimpleGraph(activity.Activity):
self.chart_data.append(("Unknown", "0"))
def remove_value(self, widget):
- self.remove_selected_value()
+ path = self.labels_and_values.remove_selected_value()
+ del self.chart_data[path]
def add_chart_cb(self, widget, type="vbar"):
self.current_chart = Chart(type)
@@ -172,15 +192,20 @@ class SimpleGraph(activity.Activity):
self.current_chart.set_title(self.chart_title)
self.current_chart.set_x_label(self.x_label)
self.current_chart.set_y_label(self.y_label)
- self.current_chart.set_bg_color(self.bg_color)
+ if self.bg_color != "#C0C0C0":
+ self.current_chart.set_bg_color(self.bg_color)
+
+ else:
+ self.current_chart.set_bg_color(None)
self.current_chart.set_color_scheme(color=self.chart_color)
self.current_chart.set_line_color(self.chart_line_color)
self.current_chart.connect("ready", lambda w, f:
- self.charts_area.set_from_file(f))
+ self.charts_area.set_from_file(f))
if self.current_chart.type == "pie":
self.current_chart.render(self)
- else: self.current_chart.render()
+ else:
+ self.current_chart.render()
def label_changed(self, tw, path, new_label):
path = int(path)
@@ -188,7 +213,7 @@ class SimpleGraph(activity.Activity):
def value_changed(self, tw, path, new_value):
path = int(path)
- self.chart_data[path] = (self.chart_data[path][0], float(new_value))
+ self.chart_data[path] = (self.chart_data[path][0], float(new_value))
def set_h_label(self, options, label):
self.x_label = label
@@ -208,6 +233,49 @@ class SimpleGraph(activity.Activity):
def set_chart_line_color(self, options, color):
self.chart_line_color = color
+ def save_as_image(self, widget):
+ if self.current_chart:
+ jobject = datastore.create()
+
+ jobject.metadata['title'] = self.chart_title
+ jobject.metadata['mime_type'] = "image/png"
+
+ image = open(CHART_IMAGE, "r")
+ jfile = open(CHART_FILE, "w")
+
+ jfile.write(image.read())
+
+ jfile.close()
+ image.close()
+
+ jobject.set_file_path(CHART_FILE)
+
+ datastore.write(jobject)
+
+ def write_file(self, file_path):
+ if self.current_chart:
+ jfile = open(file_path, "w")
+
+ jfile.write(self.chart_title + "\n")
+ jfile.write(self.x_label + "\n")
+ jfile.write(self.y_label + "\n")
+ jfile.write(self.bg_color + "\n")
+ jfile.write(self.chart_color + "\n")
+ jfile.write(self.chart_line_color + "\n")
+ jfile.write(self.current_chart.type + "\n")
+
+ string = ""
+ for item in self.chart_data:
+ print "Saving: %s : %s" % (item[0], str(item[-1]))
+ string += item[0] + ":" + str(item[1]) + ","
+
+ jfile.write(string)
+
+ jfile.close()
+
+ def read_file(self, file_path):
+ print file_path
+
class TreeView(gtk.TreeView):
@@ -252,7 +320,13 @@ class TreeView(gtk.TreeView):
print "Added: %s, Value: %s" % (label, value)
def remove_selected_value(self):
- self.remove(self.get_selection())
+ path, column = self.get_cursor()
+ path = path[0]
+
+ model, iter = self.get_selection().get_selected()
+ self.model.remove(iter)
+
+ return path
def label_changed(self, cell, path, new_text, model):
print "Change '%s' to '%s'" % (model[path][0], new_text)
@@ -376,6 +450,8 @@ class Options(gtk.VBox):
self.pack_start(hbox, False, True, 3)
+ self.set_size_request(400, 300)
+
self.show_all()
def color_selector(self, widget):
@@ -384,24 +460,27 @@ class Options(gtk.VBox):
if widget.id == 3:
box = gtk.HBox()
-
+
for color in basic_colors.keys():
btn = gtk.Button()
btn.set_size_request(40, 40)
btn.set_property("has-tooltip", True)
btn.set_property("tooltip-text", str(color).capitalize())
btn.color = gtk.gdk.Color(basic_colors[color])
- btn.connect("clicked", lambda w: selector.colorsel.set_current_color(w.color))
+ btn.connect("clicked", lambda w:
+ selector.colorsel.set_current_color(w.color))
btn.modify_bg(gtk.STATE_NORMAL, btn.color)
btn.modify_bg(gtk.STATE_PRELIGHT, btn.color)
box.pack_start(btn, False, True, 1)
-
+
selector.vbox.pack_end(box, False, True, 0)
selector.colorsel.set_current_color(COLOR1)
- elif widget.id == 2: selector.colorsel.set_current_color(COLOR3)
-
- elif widget.id == 1: selector.colorsel.set_current_color(COLOR2)
+ elif widget.id == 2:
+ selector.colorsel.set_current_color(COLOR3)
+
+ elif widget.id == 1:
+ selector.colorsel.set_current_color(COLOR2)
selector.get_color_selection().connect("color-changed",
self.color_changed, widget)
diff --git a/charts.py b/charts.py
index cf3d0da..dc31ad5 100644
--- a/charts.py
+++ b/charts.py
@@ -35,7 +35,7 @@ class Chart(gobject.GObject):
__gsignals__ = {
'ready': (gobject.SIGNAL_RUN_FIRST, None, [str])}
- def __init__(self, type="vertical", width=800, height=600):
+ def __init__(self, type="vertical", width=600, height=460):
gobject.GObject.__init__(self)
self.dataSet = None
@@ -112,7 +112,7 @@ class Chart(gobject.GObject):
chart = pycha.line.LineChart(self.surface, self.options)
elif self.type == "pie":
- self.options["legend"] = {"hide" : "False"}
+ self.options["legend"] = {"hide": "False"}
chart = pycha.pie.PieChart(self.surface, self.options)
print sg.chart_data
self.dataSet = [(data[0], [[0, data[1]]]) for data in sg.chart_data]
@@ -122,4 +122,3 @@ class Chart(gobject.GObject):
self.surface.write_to_png(CHART_IMAGE)
self.emit("ready", CHART_IMAGE)
-
diff --git a/icons/hbar.svg b/icons/hbar.svg
index 1d2c0b9..67815a5 100644
--- a/icons/hbar.svg
+++ b/icons/hbar.svg
@@ -15,7 +15,7 @@
viewBox="0 0 62 60"
id="svg2"
xml:space="preserve"
- inkscape:version="0.47 r22583"
+ inkscape:version="0.48.2 r9819"
sodipodi:docname="hbar.svg"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@@ -25,15 +25,15 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:window-width="1200"
- inkscape:window-height="868"
+ inkscape:window-width="1280"
+ inkscape:window-height="746"
id="namedview11"
showgrid="false"
inkscape:zoom="3.9333333"
inkscape:cx="31"
inkscape:cy="15.270191"
inkscape:window-x="0"
- inkscape:window-y="0"
+ inkscape:window-y="26"
inkscape:window-maximized="1"
inkscape:current-layer="g6167" /><metadata
id="metadata24"><rdf:RDF><cc:Work
@@ -68,20 +68,20 @@
x="139.8868"
y="-314.84146"
id="rect3001"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:25.09949684000000047;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:33.73588276000000263;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
transform="matrix(0,1,-1,0,0,0)" /><rect
width="154.12584"
height="328.53574"
x="-169.87132"
y="-433.55182"
id="rect3001-6"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:25.09949684000000047;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+ style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:33.73588276000000263;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
transform="matrix(0,1,-1,0,0,0)" /><rect
width="154.12584"
height="445.34848"
x="-137.9846"
y="104.88248"
id="rect3001-1"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:25.09949684000000047;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+ style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:33.73588276000000263;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
transform="matrix(0,-1,1,0,0,0)" /></g></g>
</g></svg> \ No newline at end of file
diff --git a/icons/line.svg b/icons/line.svg
index 1c32b34..30361c0 100755
--- a/icons/line.svg
+++ b/icons/line.svg
@@ -62,7 +62,7 @@
<g
transform="matrix(0.10822504,0,0,0.09945444,61.358446,34.085169)"
id="g6167"><path
- style="fill:#ffffff;stroke:#000000;stroke-width:25.09949684000000047;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
+ style="fill:none;stroke:#ffffff;stroke-width:33.73588276000000263;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
d="m 141.12179,-91.137049 4.6983,355.328359 429.89519,2.55632 L 573.36613,49.460501 413.62366,103.14321 366.64058,18.784677 253.88118,172.16383 141.12179,-91.137049"
id="path3053"
inkscape:path-effect="#path-effect3055"
diff --git a/icons/pie.svg b/icons/pie.svg
index b55f913..74803b0 100644
--- a/icons/pie.svg
+++ b/icons/pie.svg
@@ -63,43 +63,43 @@
transform="matrix(0.10822504,0,0,0.09945444,61.358446,34.085169)"
id="g6167"><polygon
points="59.094,124.29 60.043,126.32 61.062,128.33 62.141,130.29 63.277,132.21 64.484,134.11 65.742,135.96 67.059,137.77 68.445,139.54 69.883,141.26 71.371,142.94 72.918,144.55 74.508,146.13 76.156,147.65 77.855,149.12 79.594,150.53 81.383,151.89 83.223,153.18 85.09,154.41 86.996,155.58 88.945,156.7 122.34,95.941 53.07,96 53.07,96 53.098,98.238 53.207,100.49 53.387,102.71 53.645,104.94 53.961,107.16 54.359,109.37 54.828,111.57 55.367,113.73 55.977,115.89 56.656,118.03 57.406,120.14 58.215,122.23 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon9"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /><polygon
points="59.094,124.29 60.043,126.32 61.062,128.33 62.141,130.29 63.277,132.21 64.484,134.11 65.742,135.96 67.059,137.77 68.445,139.54 69.883,141.26 71.371,142.94 72.918,144.55 74.508,146.13 76.156,147.65 77.855,149.12 79.594,150.53 81.383,151.89 83.223,153.18 85.09,154.41 86.996,155.58 88.945,156.7 122.34,95.941 53.07,96 53.07,96 53.098,98.238 53.207,100.49 53.387,102.71 53.645,104.94 53.961,107.16 54.359,109.37 54.828,111.57 55.367,113.73 55.977,115.89 56.656,118.03 57.406,120.14 58.215,122.23 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon11"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /><polygon
points="117.52,165.13 119.81,165.26 122.11,165.3 124.42,165.27 126.71,165.17 129.01,164.98 131.3,164.73 133.59,164.4 135.85,163.99 138.1,163.5 140.34,162.95 142.55,162.31 144.75,161.61 146.92,160.82 149.05,159.97 151.16,159.05 153.24,158.05 155.29,157 157.3,155.87 159.27,154.68 161.2,153.42 163.08,152.09 122.33,96.004 89,156.76 89,156.76 91.039,157.82 93.105,158.83 95.215,159.77 97.344,160.64 99.512,161.43 101.7,162.15 103.91,162.81 106.13,163.38 108.38,163.88 110.65,164.3 112.93,164.66 115.22,164.93 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon17"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /><polygon
points="117.52,165.13 119.81,165.26 122.11,165.3 124.42,165.27 126.71,165.17 129.01,164.98 131.3,164.73 133.59,164.4 135.85,163.99 138.1,163.5 140.34,162.95 142.55,162.31 144.75,161.61 146.92,160.82 149.05,159.97 151.16,159.05 153.24,158.05 155.29,157 157.3,155.87 159.27,154.68 161.2,153.42 163.08,152.09 122.33,96.004 89,156.76 89,156.76 91.039,157.82 93.105,158.83 95.215,159.77 97.344,160.64 99.512,161.43 101.7,162.15 103.91,162.81 106.13,163.38 108.38,163.88 110.65,164.3 112.93,164.66 115.22,164.93 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon19"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /><polygon
points="182.42,130.69 183.51,128.73 184.53,126.76 185.48,124.74 186.37,122.69 187.2,120.62 187.96,118.52 188.65,116.4 189.26,114.25 189.81,112.09 190.29,109.91 190.69,107.71 191.03,105.51 191.3,103.3 191.5,101.07 191.63,98.848 191.68,96.621 191.66,94.383 191.57,92.156 191.41,89.93 191.18,87.711 190.88,85.504 190.51,83.305 190.06,81.117 189.54,78.949 188.96,76.793 188.3,74.656 122.37,96.086 163.15,152.09 163.15,152.09 164.94,150.75 166.68,149.35 168.38,147.9 170.02,146.4 171.61,144.84 173.16,143.23 174.66,141.57 176.1,139.86 177.48,138.11 178.8,136.32 180.07,134.48 181.28,132.6 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon25"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /><polygon
points="182.42,130.69 183.51,128.73 184.53,126.76 185.48,124.74 186.37,122.69 187.2,120.62 187.96,118.52 188.65,116.4 189.26,114.25 189.81,112.09 190.29,109.91 190.69,107.71 191.03,105.51 191.3,103.3 191.5,101.07 191.63,98.848 191.68,96.621 191.66,94.383 191.57,92.156 191.41,89.93 191.18,87.711 190.88,85.504 190.51,83.305 190.06,81.117 189.54,78.949 188.96,76.793 188.3,74.656 122.37,96.086 163.15,152.09 163.15,152.09 164.94,150.75 166.68,149.35 168.38,147.9 170.02,146.4 171.61,144.84 173.16,143.23 174.66,141.57 176.1,139.86 177.48,138.11 178.8,136.32 180.07,134.48 181.28,132.6 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon27"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /><polygon
points="173.54,49.172 171.97,47.516 170.34,45.918 168.67,44.371 166.95,42.871 165.18,41.441 163.36,40.062 161.5,38.746 159.59,37.496 157.65,36.309 155.67,35.18 153.65,34.121 151.59,33.133 149.51,32.203 147.4,31.355 145.26,30.566 143.09,29.859 140.91,29.223 138.7,28.645 136.48,28.156 134.24,27.727 131.98,27.379 129.72,27.109 127.44,26.91 125.18,26.781 122.89,26.734 120.61,26.754 118.33,26.852 116.06,27.02 113.79,27.27 122.48,96.059 188.34,74.566 188.34,74.566 187.6,72.418 186.8,70.281 185.92,68.184 184.97,66.105 183.95,64.066 182.87,62.059 181.72,60.09 180.5,58.16 179.23,56.273 177.9,54.426 176.5,52.629 175.04,50.871 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon33"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /><polygon
points="173.54,49.172 171.97,47.516 170.34,45.918 168.67,44.371 166.95,42.871 165.18,41.441 163.36,40.062 161.5,38.746 159.59,37.496 157.65,36.309 155.67,35.18 153.65,34.121 151.59,33.133 149.51,32.203 147.4,31.355 145.26,30.566 143.09,29.859 140.91,29.223 138.7,28.645 136.48,28.156 134.24,27.727 131.98,27.379 129.72,27.109 127.44,26.91 125.18,26.781 122.89,26.734 120.61,26.754 118.33,26.852 116.06,27.02 113.79,27.27 122.48,96.059 188.34,74.566 188.34,74.566 187.6,72.418 186.8,70.281 185.92,68.184 184.97,66.105 183.95,64.066 182.87,62.059 181.72,60.09 180.5,58.16 179.23,56.273 177.9,54.426 176.5,52.629 175.04,50.871 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon35"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /><polygon
points="86.598,36.609 84.711,37.797 82.863,39.035 81.055,40.332 79.297,41.68 77.578,43.098 75.898,44.566 74.281,46.086 72.703,47.652 71.184,49.27 69.707,50.938 68.289,52.656 66.93,54.414 65.633,56.211 64.383,58.059 63.195,59.938 62.078,61.855 61.02,63.812 60.02,65.801 59.082,67.82 58.215,69.867 57.418,71.934 56.68,74.043 56.012,76.16 55.414,78.297 54.887,80.453 54.43,82.633 54.043,84.82 53.727,87.027 53.477,89.234 53.297,91.453 53.188,93.672 53.16,95.898 122.49,95.898 113.71,27.207 113.71,27.207 111.51,27.523 109.31,27.902 107.13,28.359 104.98,28.879 102.83,29.477 100.71,30.133 98.613,30.859 96.535,31.656 94.488,32.516 92.461,33.445 90.473,34.445 88.516,35.492 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon41"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /><polygon
points="86.598,36.609 84.711,37.797 82.863,39.035 81.055,40.332 79.297,41.68 77.578,43.098 75.898,44.566 74.281,46.086 72.703,47.652 71.184,49.27 69.707,50.938 68.289,52.656 66.93,54.414 65.633,56.211 64.383,58.059 63.195,59.938 62.078,61.855 61.02,63.812 60.02,65.801 59.082,67.82 58.215,69.867 57.418,71.934 56.68,74.043 56.012,76.16 55.414,78.297 54.887,80.453 54.43,82.633 54.043,84.82 53.727,87.027 53.477,89.234 53.297,91.453 53.188,93.672 53.16,95.898 122.49,95.898 113.71,27.207 113.71,27.207 111.51,27.523 109.31,27.902 107.13,28.359 104.98,28.879 102.83,29.477 100.71,30.133 98.613,30.859 96.535,31.656 94.488,32.516 92.461,33.445 90.473,34.445 88.516,35.492 "
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.57725498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:8.84039648000000078;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10.43299960999999954;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="polygon43"
transform="matrix(0,3.8499225,3.7825849,0,-4.7739308,-389.7198)" /></g></g>
</g></svg> \ No newline at end of file
diff --git a/icons/vbar.svg b/icons/vbar.svg
index 0b74b4c..6601d02 100644
--- a/icons/vbar.svg
+++ b/icons/vbar.svg
@@ -16,7 +16,7 @@
id="svg2"
xml:space="preserve"
inkscape:version="0.48.2 r9819"
- sodipodi:docname="bar.svg"><sodipodi:namedview
+ sodipodi:docname="vbar.svg"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
@@ -62,17 +62,17 @@
x="152.98723"
y="79.540161"
id="rect3001"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:25.09949684;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><rect
+ style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:33.73588276000000263;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><rect
width="141.63542"
height="357.50836"
- x="292.43243"
+ x="297.13074"
y="-49.16283"
id="rect3001-6"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:25.09949684;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /><rect
+ style="fill:none;stroke:#ffffff;stroke-width:33.73588181000000219;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /><rect
width="141.63542"
height="484.62247"
- x="428.2272"
+ x="439.97296"
y="-176.27692"
id="rect3001-1"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:25.09949684;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /></g></g>
+ style="fill:none;stroke:#ffffff;stroke-width:33.73588181000000219;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /></g></g>
</g></svg> \ No newline at end of file
diff --git a/pycha/__init__.pyo b/pycha/__init__.pyo
index 7e9aa3c..5f9a458 100644
--- a/pycha/__init__.pyo
+++ b/pycha/__init__.pyo
Binary files differ
diff --git a/pycha/bar.pyo b/pycha/bar.pyo
index ff60b2e..3c9afea 100644
--- a/pycha/bar.pyo
+++ b/pycha/bar.pyo
Binary files differ
diff --git a/pycha/chart.pyo b/pycha/chart.pyo
index 60be0fc..f6c5b2b 100644
--- a/pycha/chart.pyo
+++ b/pycha/chart.pyo
Binary files differ
diff --git a/pycha/color.pyo b/pycha/color.pyo
index 2914c8c..78225ea 100644
--- a/pycha/color.pyo
+++ b/pycha/color.pyo
Binary files differ
diff --git a/pycha/pie.pyo b/pycha/pie.pyo
index 77daa2a..6f7c2be 100644
--- a/pycha/pie.pyo
+++ b/pycha/pie.pyo
Binary files differ
diff --git a/pycha/utils.pyo b/pycha/utils.pyo
index 84606ff..6a9a614 100644
--- a/pycha/utils.pyo
+++ b/pycha/utils.pyo
Binary files differ