def show_portfolio_view(self, widget):
data = settings.load_portfolio(settingsdb)
+ for item in data:
+ item.append('-')
+ item.append('-')
win = hildon.StackableWindow()
self.create_menu(win)
dlg.run()
dlg.destroy()
-
def add_item(self, widget, dlg, button, entry1, entry2):
symbol = entry2.get_text()
name = entry1.get_text()
def refresh_portfolio(self, widget, tv, win):
data = settings.load_portfolio(settingsdb)
+ for item in data:
+ item.append('-')
+ item.append('-')
import thread
winprogind(win, 1)
thread.start_new_thread(self._do_refresh_portfolio, (data, tv, win))
def _do_refresh_portfolio(self, data, tv, win):
+ print data
for item in data:
- item[3] = self.get_price(item[0])
+ item[3], item[4] = self.get_portfolio_data(item[0])
+ try:
+ ch_percent = \
+ 100.0 * float(item[4])/(float(item[3]) - \
+ float(item[4]))
+ except ValueError:
+ ch_percent = 0.0
+ item[5] = '%6.2f %%' % ch_percent
+
+
+ print data
self.portfolio_model = self._create_portfolio_model(data)
tv.set_model(self.portfolio_model)
winprogind(win, 0)
- def get_price(self, symbol):
+ def get_portfolio_data(self, symbol):
from ystockquote import ystockquote as yt
try:
- price = yt.get_price(symbol)
- return price
+ data = yt.get_all(symbol)
+ return data['price'], data['change']
except:
logger.exception("Getting price from Yahoo: %s" % symbol)
- return "N/A"
+ return "-", "-"
def _create_portfolio_model(self, data):
lstore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING,
- gobject.TYPE_STRING, gobject.TYPE_STRING)
+ gobject.TYPE_STRING, 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])
+ if '+' in item[4]:
+ color = 'green'
+ else:
+ color = 'red'
+ lstore.set(iter, 0, item[0], 1, item[1], 2, item[2], 3, item[3],
+ 4, item[4], 5, item[5], 6, color)
return lstore
def _tv_portfolio_columns(self, treeview):
column = gtk.TreeViewColumn('Price', gtk.CellRendererText(), text=3)
treeview.append_column(column)
+ column = gtk.TreeViewColumn('Change', gtk.CellRendererText(), text=4)
+ treeview.append_column(column)
+
+
+ renderer = gtk.CellRendererText()
+ renderer.set_property("foreground-set", True)
+ column = gtk.TreeViewColumn('%', renderer, text=5, foreground=6)
+ treeview.append_column(column)
+
def show_confirmation(self, window, msg):
dialog = hildon.hildon_note_new_confirmation(window, msg)
dialog.show_all()