+ 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('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)
+
+ 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()
+ result = dialog.run()
+ if result == gtk.RESPONSE_OK:
+ dialog.destroy()
+ return True
+
+ dialog.destroy()
+ return False
+
+ def show_information_note(self, window, msg):
+ dialog = hildon.hildon_note_new_information(window, msg)
+ dialog.show_all()
+ result = dialog.run()
+ dialog.destroy()
+
+ def show_info_banner(self, widget, msg):
+ hildon.hildon_banner_show_information(widget, 'qgn_note_infoprint', msg)
+
+ def is_treeview_selected(self, treeview):
+ selection = treeview.get_selection()
+ if selection.count_selected_rows() == 0:
+ self.show_info_banner(treeview, 'No selected item')
+ return False
+ else:
+ return True
+
+class About:
+
+ def __init__(self, widget):
+ self.abdialog = gtk.Dialog()
+ self.abdialog.set_title("About StockThis")
+
+ notebook = gtk.Notebook()
+ notebook.set_show_tabs(False)
+ notebook.set_scrollable(False)
+ notebook.set_show_border(False)
+
+ # Description page #
+ vbox = gtk.VBox()
+
+ label = gtk.Label()
+ label.set_markup("<b><big>StockThis %s</big></b>" % VERSION)
+ vbox.pack_start(label, True, True, 0)
+
+ label = gtk.Label("Stocks application with big database")
+ vbox.pack_start(label, True, True, 0)
+
+ label = gtk.Label("GNU General Public License")
+ vbox.pack_start(label, True, True, 0)
+
+ url = "http://stockthis.garage.maemo.org"
+ webbtn = gtk.LinkButton(url, "Web")
+ vbox.pack_start(webbtn, True, True, 0)
+ gtk.link_button_set_uri_hook(self.launch_browser)
+
+ notebook.append_page(vbox, gtk.Label())
+
+ # Credits page #
+ vbox = gtk.VBox()
+ textview = hildon.TextView()
+ textview.set_cursor_visible(False)
+ textview.set_wrap_mode(gtk.WRAP_WORD)
+ text = "Written by Daniel Martin Yerga (dyerga@gmail.com)"
+ textview.get_buffer().set_text(text)
+
+ parea = hildon.PannableArea()
+ parea.add(textview)
+
+ vbox.pack_start(parea, True, True, 0)
+ notebook.append_page(vbox, gtk.Label())
+
+
+ # Donate page #
+ vbox = gtk.VBox()
+
+ textview = hildon.TextView()
+ textview.set_cursor_visible(False)
+ textview.set_wrap_mode(gtk.WRAP_WORD)
+ text = """StockThis is a free software application.
+Developing good software takes time and hard work.
+StockThis's author develops the program in his spare time.
+If you like the program and it's helpful, consider donating a small amount of money.
+Donations are a great incentive and help the developer feel that the hard work is appreciated.
+"""
+ textview.get_buffer().set_text(text)
+
+ parea = hildon.PannableArea()
+ parea.add(textview)
+
+ button = hildon.Button(fhsize, horbtn)
+ button.set_title("Make donation")
+ url = "http://stockthis.garage.maemo.org/donate.html"
+ button.connect("clicked", self.launch_browser, url)
+ vbox.pack_start(button, False, False, 0)
+ vbox.pack_start(parea, True, True, 0)
+
+ notebook.append_page(vbox, gtk.Label())
+
+ # Report page #
+ vbox = gtk.VBox()
+
+ textview = hildon.TextView()
+ textview.set_cursor_visible(False)
+ textview.set_wrap_mode(gtk.WRAP_WORD)
+ text = """StockThis is being improved thanks to bug reports that users have submitted. The author appreciates these reports.
+If the application is having an error when you're using it, you have two choices to report this error:
+1) Send the log from the button above (if there's an error in the log).
+2) Press the button and read how to report a bug."""
+ textview.get_buffer().set_text(text)
+
+ parea = hildon.PannableArea()
+ parea.add(textview)
+
+ hbox = gtk.HBox()
+ hbox.set_homogeneous(True)
+
+ button = hildon.Button(fhsize, horbtn)
+ button.set_title("Report error")
+ url = "http://stockthis.garage.maemo.org/reporting.html"
+ button.connect("clicked", self.launch_browser, url)
+ hbox.pack_start(button, True, True, 0)
+
+ button = hildon.Button(fhsize, horbtn)
+ button.set_title("Log")
+ button.connect("clicked", self.on_show_log)
+ hbox.pack_start(button, True, True, 0)
+
+ vbox.pack_start(hbox, False, False, 0)
+ vbox.pack_start(parea, True, True, 0)
+
+ notebook.append_page(vbox, gtk.Label())
+
+ # Rate page #
+ vbox = gtk.VBox()
+
+ textview = hildon.TextView()
+ textview.set_cursor_visible(False)
+ textview.set_wrap_mode(gtk.WRAP_WORD)
+ text = """The downloads section in maemo.org has a nice system where you can rate applications.
+If you consider StockThis a good application (or a bad one too), you could rate it in maemo.org site."""
+ textview.get_buffer().set_text(text)
+
+ button = hildon.Button(fhsize, horbtn)
+ button.set_title("Rate StockThis")
+ url = "http://maemo.org/downloads/product/Maemo5/stockthis"
+ button.connect("clicked", self.launch_browser, url)
+ image = gtk.Image()
+ image.set_from_file(imgdir + "maemoorg.png")
+ vbox.pack_start(button, False, False, 0)
+ vbox.pack_start(image, False, False, 5)
+ vbox.pack_start(textview, True, True, 0)
+
+ notebook.append_page(vbox, gtk.Label())
+
+ # Buttons #
+ self.abdialog.vbox.pack_start(notebook, True, True, 0)
+
+ hbox = gtk.HBox()
+
+ descbutton = hildon.GtkRadioButton(fhsize)
+ descbutton.set_mode(False)
+ descbutton.set_active(True)
+ descbutton.set_label('Description')
+ descbutton.connect("toggled", self.change_tab, notebook, 0)
+ hbox.pack_start(descbutton, True, True, 0)
+
+ button = hildon.GtkRadioButton(fhsize)
+ button.set_mode(False)
+ button.set_active(True)
+ button.set_label('Credits')
+ button.set_group(descbutton)
+ button.connect("toggled", self.change_tab, notebook, 1)
+ hbox.pack_start(button, True, True, 0)
+
+ button = hildon.GtkRadioButton(fhsize)
+ button.set_mode(False)
+ button.set_label('Donate')
+ button.set_group(descbutton)
+ button.connect("clicked", self.change_tab, notebook, 2)
+ hbox.pack_start(button, True, True, 0)
+
+ button = hildon.GtkRadioButton(fhsize)
+ button.set_mode(False)
+ button.set_label('Report')
+ button.set_group(descbutton)
+ button.connect("clicked", self.change_tab, notebook, 3)
+ hbox.pack_start(button, True, True, 0)
+
+ button = hildon.GtkRadioButton(fhsize)
+ button.set_mode(False)
+ button.set_label('Rate')
+ button.set_group(descbutton)
+ button.connect("clicked", self.change_tab, notebook, 4)
+ hbox.pack_start(button, True, True, 0)
+
+ self.abdialog.vbox.pack_start(hbox, False, False, 0)
+
+ self.abdialog.show_all()
+ self.abdialog.run()
+ self.abdialog.destroy()
+
+ def change_tab(self, widget, notebook, number):
+ notebook.set_current_page(number)
+
+ def launch_browser(self, widget, url):
+ import dbus
+ bus = dbus.SystemBus()
+ proxy = bus.get_object("com.nokia.osso_browser", "/com/nokia/osso_browser/request")
+ iface = dbus.Interface(proxy, 'com.nokia.osso_browser')
+
+ self.abdialog.destroy()
+
+ iface.open_new_window(url)
+
+ def on_show_log(self, widget):
+ Log(widget, logfile)
+
+
+class Log:
+
+ def __init__(self, widget, logfile):
+ #Log dialog UI
+ dialog = gtk.Dialog(title='Log', parent=None)
+
+ dialog.set_size_request(600, 350)
+
+ parea = hildon.PannableArea()
+ parea.set_property("mov-mode", hildon.MOVEMENT_MODE_BOTH)
+
+ textview = hildon.TextView()
+ textview.set_property("editable", False)
+ textview.set_property("wrap-mode", gtk.WRAP_WORD)
+
+ log = open(logfile, 'r')
+ logtext = log.read()
+ log.close()
+
+ textview.get_buffer().set_text(logtext)
+ parea.add(textview)
+
+ dialog.vbox.pack_start(parea, True, True, 0)
+
+ hbox = gtk.HBox()
+
+ save_btn = hildon.Button(fhsize, horbtn)
+ save_btn.set_title("Save")
+ save_btn.connect('clicked', self.save, logfile, dialog)
+
+ clear_btn = hildon.Button(fhsize, horbtn)
+ clear_btn.set_title("Clear")
+ clear_btn.connect('clicked', self.clear, textview, logfile)
+
+ send_btn = hildon.Button(fhsize, horbtn)
+ send_btn.set_title('Send')
+ send_btn.connect('clicked', self.send, dialog, logfile)
+
+ hbox.pack_start(save_btn, True, True, 0)
+ hbox.pack_start(clear_btn, True, True, 0)
+ hbox.pack_start(send_btn, True, True, 0)
+
+ dialog.vbox.pack_start(hbox, False, False, 0)
+
+ dialog.show_all()