+
+ def _tv_columns(self, treeview):
+ column = gtk.TreeViewColumn('ID', gtk.CellRendererText(), text=0)
+ column.set_visible(False)
+ treeview.append_column(column)
+
+ column = gtk.TreeViewColumn('Name', gtk.CellRendererText(), text=1)
+ treeview.append_column(column)
+
+ def __create_model(self, names, ids):
+ lstore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ for item in range(len(names)):
+ iter = lstore.append()
+ lstore.set(iter, 0, ids[item], 1, names[item])
+ return lstore
+
+ def main_toolbar(self, quotesview):
+ toolbar = gtk.HBox()
+ toolbar.set_homogeneous(True)
+
+ portfolio_btn = hildon.Button(fhsize, horbtn)
+ portfolio_btn.set_title("Portfolio")
+ portfolio_btn.connect("clicked", self.show_portfolio_view)
+
+ graph_btn = hildon.Button(fhsize, horbtn)
+ graph_btn.set_title("Graph")
+ graph_btn.connect("clicked", self.show_graph_view)
+
+ refresh_btn = hildon.Button(fhsize, horbtn)
+ refresh_btn.set_title("Refresh")
+ refresh_btn.connect("clicked", self.refresh_stock_data)
+
+ toolbar.pack_start(portfolio_btn)
+ if quotesview:
+ toolbar.pack_start(graph_btn)
+ toolbar.pack_start(refresh_btn)
+
+ toolbar.show_all()
+
+ return toolbar
+
+ def show_portfolio_view(self, widget):
+ #FIXME: get data from sqlite settings
+ data = [["SAN.MC", "BANCO SANTANDER R", "200", "-"],
+ ["BBVA.MC", "BBVA R", "300", "-"]]
+ win = hildon.StackableWindow()
+
+ vbox = gtk.VBox()
+
+ parea = hildon.PannableArea()
+ tv = hildon.GtkTreeView(ui_normal)
+ tv.set_headers_visible(True)
+ inmodel = self._create_portfolio_model(data)
+ #tv.connect("row-activated", self.show_instrument_view, inmodel)
+ tv.set_model(inmodel)
+ self._tv_portfolio_columns(tv)
+ parea.add(tv)
+
+ button = hildon.Button(fhsize, horbtn)
+ button.set_title("Refresh All")
+ button.connect("clicked", self.refresh_portfolio, tv, win, data)
+
+ vbox.pack_start(parea, True, True, 0)
+ vbox.pack_start(button, False, False, 0)
+ win.add(vbox)
+ win.show_all()
+
+ def refresh_portfolio(self, widget, tv, win, data):
+ import thread
+ winprogind(win, 1)
+ thread.start_new_thread(self._do_refresh_portfolio, (data, tv, win))
+
+
+ def _do_refresh_portfolio(self, data, tv, win):
+ for item in data:
+ item[3] = self.get_price(item[0])
+
+ model = self._create_portfolio_model(data)
+ tv.set_model(model)
+ winprogind(win, 0)
+
+ def get_price(self, symbol):
+ from ystockquote import ystockquote as yt
+ price = yt.get_price(symbol)
+
+ return price
+
+ def _create_portfolio_model(self, data):
+ lstore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING,
+ gobject.TYPE_STRING, gobject.TYPE_STRING)
+ for item in data:
+ iter = lstore.append()
+ lstore.set(iter, 0, item[0], 1, item[1], 2, item[2], 3, item[3])
+ return lstore
+
+ def _tv_portfolio_columns(self, treeview):
+ column = gtk.TreeViewColumn('ID', gtk.CellRendererText(), text=0)
+ column.set_visible(False)
+ treeview.append_column(column)
+
+ column = gtk.TreeViewColumn('Name', gtk.CellRendererText(), text=1)
+ column.set_property("expand", True)
+ treeview.append_column(column)
+
+ column = gtk.TreeViewColumn('Shares', gtk.CellRendererText(), text=2)
+ treeview.append_column(column)
+
+ column = gtk.TreeViewColumn('Price', gtk.CellRendererText(), text=3)
+ treeview.append_column(column)