--- /dev/null
+ABX.TO BARRICK GOLD CORP COM NPV 39.13 May 8 Up 0.58 (1.50%) 4,547,656
+ACM-A.TO ASTRAL MEDIA INC CLASS'A'NON-VT 30.00 May 8 Down 0.26 (0.86%) 127,401
+ACO-X.TO ATCO LTD CLASS I NON-VOTING COM 35.35 May 8 Down 0.35 (0.98%) 56,390
+AEM.TO AGNICO EAGLE MINES COM NPV 57.22 May 8 Up 1.12 (2.00%) 941,214
+AER.TO AEROPLAN INCOME FD 9.02 May 8 Up 0.27 (3.09%) 726,526
+AET-UN.TO ARC ENERGY TRUST TRUST UNITS 17.40 May 8 Up 0.79 (4.76%) 1,628,693
+AGF-B.TO AGF MANAGEMENT LTD CLASS'B'NON- 13.05 May 8 Up 0.50 (3.98%) 218,905
+AGI.TO ALAMOS GOLD INC COM NPV 8.25 May 8 Down 0.12 (1.43%) 492,555
+AGU.TO AGRIUM INC COM NPV 52.00 May 8 Down 0.46 (0.88%) 1,028,580
+ALA-UN.TO ALTAGAS INCOME TST TRUST UNITS 16.23 May 8 Up 0.53 (3.38%) 417,418
+ARE.TO AECON GROUP INC. COM NPV 11.82 May 8 Down 0.14 (1.17%) 339,422
+ARZ.TO AURIZON MINES COM NPV 4.80 May 8 Up 0.21 (4.58%) 446,280
+ATD-B.TO ALIMENTATION COUCHE-TARD INC 13.58 May 8 Up 0.18 (1.34%) 249,599
+AVN-UN.TO ADVANTAGE ENERGY I TRUST UNITS 4.20 May 8 Up 0.21 (5.26%) 804,537
+AXC.TO ADDAX PETROLEUM COM NPV 38.15 May 8 Up 4.37 (12.94%) 883,743
+BA-UN.TO BELL ALIANT REGIONAL COMM INC F 24.18 May 8 Down 0.02 (0.08%) 167,131
+BAM-A.TO BROOKFIELD ASSET MGMT INC 21.22 May 8 Up 1.05 (5.21%) 1,121,243
+BBD-B.TO BOMBARDIER INC CLASS'B'S/VTG NP 4.16 May 8 Up 0.12 (2.97%) 8,797,732
+BCE.TO BCE INC COM NPV 24.67 May 8 Down 0.23 (0.92%) 4,635,476
+BEI-UN.TO BOARDWALK R/EST IN TRUST UNITS 30.43 May 8 Up 1.11 (3.79%) 103,884
+BFC.TO BFI CANADA LTD 11.90 May 8 Up 0.26 (2.23%) 830,950
+BIR.TO BIRCHCLIFF ENERGY LTD 6.88 May 8 Up 0.22 (3.30%) 1,362,352
+BMO.TO BK OF MONTREAL COM NPV 44.70 May 8 Up 1.53 (3.54%) 2,285,097
+BNP-UN.TO BONAVISTA ENERGY T TRUST UNITS 19.41 May 8 Up 0.91 (4.92%) 278,706
+BNS.TO BK OF NOVA SCOTIA COM NPV 37.66 May 8 Up 1.54 (4.26%) 3,033,259
+BPO.TO BROOKFIELD PROPERT COM NPV 9.84 May 8 Up 0.43 (4.57%) 973,437
+BTE-UN.TO BAYTEX ENERGY TR 18.60 May 8 Up 0.79 (4.44%) 372,932
+BVF.TO BIOVAIL CORP COM NPV 13.08 May 8 Up 0.92 (7.57%) 1,659,974
+CAE.TO CAE INC COM NPV 8.28 May 8 Up 0.33 (4.15%) 322,969
+CAR-UN.TO CANADIAN APT PPTYS REAL ESTA 12.75 May 8 0.00 (0.00%) 174,345
+CCA.TO COGECO CABLE INC 29.25 May 8 Down 0.39 (1.32%) 137,657
+CCL-B.TO CCL INDUSTRIES INC 'B'NON-VTG C 23.00 May 8 Down 1.55 (6.31%) 797,922
+CCO.TO CAMECO CORP COM NPV 29.69 May 8 Up 0.51 (1.75%) 1,065,167
+CFP.TO CANFOR CORPORATION COM NPV 6.58 May 8 Up 0.23 (3.62%) 125,628
+CGX-UN.TO CINEPLEX GALAXY IN SBI NPV 15.24 May 8 Up 0.02 (0.13%) 111,256
+CIX.TO CI FINL INC 17.55 May 8 Up 1.10 (6.69%) 717,635
+CJR-B.TO CORUS ENTERTAINMNT CLASS 'B' NO 16.34 May 8 Up 0.53 (3.35%) 171,920
+CLC-UN.TO CML HLTHCARE INC UNITS 13.50 May 8 Up 0.20 (1.50%) 171,331
+CLS.TO CELESTICA INC. SV 7.26 May 8 Down 0.11 (1.49%) 653,858
+CM.TO CANADIAN IMP BANK COM NPV 61.19 May 8 Up 2.24 (3.80%) 1,506,395
+CNQ.TO CDN NAT RES COM NPV 63.44 May 8 Up 3.10 (5.14%) 3,260,549
+CNR.TO CDN NATL RAILWAYS COM NPV 49.20 May 8 Down 0.36 (0.73%) 1,139,984
+COM.TO CARDIOME PHARMA CO COM NPV 5.18 May 8 Up 0.16 (3.19%) 117,493
+COS-UN.TO CANADIAN OIL SANDS TRUST UNITS 29.90 May 8 Up 1.55 (5.47%) 1,680,617
+CP.TO CAN PACIFIC RYS COM NPV 44.82 May 8 Up 1.00 (2.28%) 701,252
+CPG-UN.TO CRESCENT PT ENERGY TR 30.00 May 8 Up 0.39 (1.32%) 972,385
+CR.TO CREW ENERGY INC 6.74 May 8 Up 0.42 (6.65%) 1,141,462
+CSH-UN.TO CHARTWELL SENIORS TRUST UNITS 5.00 May 8 Up 0.28 (5.93%) 402,879
+CTC-A.TO CANADIAN TIRE CORP LTD CL A NV 50.42 May 8 Up 0.02 (0.04%) 241,306
+CU.TO CDN UTILITIES CLASS'A'COM NON-V
+CUF-UN.TO COMINAR REAL ESTAT TRUST UNITS 14.69 May 8 Up 0.08 (0.55%) 185,939
+CWB.TO CDN WESTERN BANK COM NPV 14.27 May 8 Up 0.07 (0.49%) 311,988
+CWI-UN.TO CONSUMERS' WATERHE TRUST UNITS 6.90 May 8 Down 0.10 (1.43%) 219,181
+CWT-UN.TO CALLOWAY REAL ESTA TRUST UNITS 13.05 May 8 Up 0.95 (7.85%) 605,850
+DAY-UN.TO DAYLIGHT RESOURCES COM NPV 7.80 May 8 Up 0.26 (3.45%) 1,513,186
+DC-A.TO DUNDEE CORPORATION 'A'SUB-VTG N 7.28 May 8 Up 0.50 (7.37%) 146,563
+DHF-UN.TO DAVIS HENDERSON INCOME FD 14.09 May 8 Up 0.13 (0.93%) 196,289
+DII-B.TO DOREL INDUSTRIES CLASS'B'SUB VT 22.75 May 8 Up 0.75 (3.41%) 73,222
+ECA.TO ENCANA CORP COM NPV 65.42 May 8 Up 4.10 (6.69%) 3,736,847
+EFX-UN.TO ENERFLEX SYSTEMS I TRUST UNITS 11.15 May 8 Up 0.20 (1.83%) 98,788
+EGU.TO EURO GOLDFIELDS COM NPV 3.19 May 8 Up 0.07 (2.24%) 85,522
+ELD.TO ELDORADO GOLD CORP COM NPV 9.75 May 8 Down 0.30 (2.99%) 3,440,913
+EMA.TO EMERA INC COM NPV 19.96 May 8 Down 0.05 (0.25%) 163,557
+EMP-A.TO EMPIRE CO CLASS'A'N/VTG COM NPV 47.50 May 8 Down 0.50 (1.04%) 124,910
+ENB.TO ENBRIDGE INC COM NPV 36.82 May 8 Down 0.60 (1.60%) 1,535,674
+EP-UN.TO EPCOR POWER L.P. SBI NPV 13.67 May 8 Up 0.29 (2.17%) 120,974
+EQN.TO EQUINOX MINERALS COM NPV 2.58 May 8 Up 0.08 (3.20%) 4,205,460
+ERF-UN.TO ENERPLUS RES FUND TRUST UNITS-S 27.20 May 8 Up 1.46 (5.67%) 660,229
+ESI.TO ENSIGN ENERGY SVS COM NPV 14.80 May 8 Up 0.64 (4.52%) 157,230
+EXE-UN.TO EXTENDICARE REAL I TRUST UNITS 5.50 May 8 Up 0.25 (4.76%) 365,159
+FCE-UN.TO FORT CHICAGO ENERG CL 'A' UNITS 7.28 May 8 Up 0.08 (1.11%) 2,078,685
+FFH.TO FAIRFAX FINL HLDGS SUB-VTG COM 323.10 May 8 Up 9.91 (3.16%) 40,400
+FGL.TO FORZANI GROUP CLASS'A'COM NPV
+FM.TO 1ST QUANTUM MINLS COM NPV
+FNV.TO FRANCO NEVADA CORP COM NPV
+FNX.TO FNX MINING CO INC COM NPV
+FRU-UN.TO FREEHOLD ROYALTY T TRUST UNITS
+FSV.TO FIRSTSERVICE CORP SUB-VTG COM N
+FTS.TO FORTIS INC COM NPV
+FTT.TO FINNING INTL INC COM NPV
+G.TO GOLDCORP INC COM NPV
+GAM.TO GAMMON GOLD INC COM NPV
+GIB-A.TO CGI GROUP INC CL A SV
+GIL.TO GILDAN ACTIVEWEAR COM NPV
+GNA.TO GERDAU AMERISTEEL CORP
+GWO.TO GREAT WEST LIFECO COM NPV
+HBM.TO HUDBAY MINERALS IN COM NPV
+HCG.TO HOME CAPITAL GROUP COM NPV
+HPX.TO HIGHPINE OIL & GAS COM NPV
+HR-UN.TO H&R REAL ESTATE INVT TR
+HSE.TO HUSKY ENERGY INC COM NPV
+HTE-UN.TO HARVEST ENERGY TR TRUST UNITS
+IAG.TO INDL ALLIANCE INS COM NPV
+IGM.TO IGM FINANCIAL INC COM NPV
+IIC.TO ING CANADA INC COM NPV
+IMG.TO IAMGOLD CORP COM NPV
+IMN.TO INMET MINING CORP COM NPV
+IMO.TO IMPERIAL OIL COM NPV
+INN-UN.TO INNVEST REAL ESTAT TRUST UNITS
+IPL-UN.TO INTER PIPELINE FD CLASS'A'LTD P
+IVN.TO IVANHOE MINES COM NPV
+JAZ-UN.TO JAZZ AIR INCOME FD TRUST UNITS
+K.TO KINROSS GOLD CORP
+KEY-UN.TO KEYERA FACILITIES TRUST UNITS
+KHD.TO CANADIAN HYDRO DEV COM NPV
+L.TO LOBLAWS COS LTD COM NPV
+LB.TO LAURENTIAN BNK CDA COM CAD1
+LIF-UN.TO LABRADOR IRON ORE TRUST UNITS
+LUN.TO LUNDIN MINING CORP COM NPV
+MBT.TO MANITOBA TELECOM S COM NPV
+MDA.TO MACDONALD DETTWILE COM NPV
+MDI.TO MAJOR DRILLING INC COM NPV
+MDS.TO MDS INC COM NPV
+MFC.TO MANULIFE FINL CORP COM NPV
+MFI.TO MAPLE LEAF FOODS COM NPV
+MFL.TO MINEFINDERS CORP COM NPV
+MG-A.TO MAGNA INTERNATIONAL INC CL A SV
+MRU-A.TO METRO INC CL A SV
+MX.TO METHANEX CORP COM NPV
+NA.TO NATL BK OF CANADA COM NPV
+NAE-UN.TO NAL OIL & GAS TST TRUST UNITS
+NCX.TO NOVA CHEMICALS COM NPV
+NGD.TO NEW GOLD INC COM NPV
+NKO.TO NIKO RESOURCES COM NPV
+NPI-UN.TO NORTHLAND PWR INC TRUST UNIT
+NVA.TO NUVISTA ENERGY COM NPV
+NWF-UN.TO NORTH WEST CO UNIT TRUST
+NXY.TO NEXEN INC COM NPV
+OCX.TO ONEX CORPORATION SV
+OSK.TO OSISKO MINING CORP
+OTC.TO OPEN TEXT CO COM NPV
+PAA.TO PAN AMER SILVER COM NPV
+PBG.TO PETROBANK ENERGY & COM NPV
+PCA.TO PETRO CANADA COM NPV
+PD-UN.TO PRECISION DRILLING TR
+PEY-UN.TO PEYTO ENERGY TRUST UNIT TRUST
+PGF-UN.TO PENGROWTH ENERGY T SBI NPV
+PIF-UN.TO PEMBINA PIPELINE INCOME TRUST U
+PJC-A.TO JEAN COUTU GROUP CLASS'A'SUB VT
+PMT-UN.TO PARAMOUNT ENERGY TRUST UNITS
+PMZ-UN.TO PRIMARIS RETAIL RE TRUST UNITS
+POT.TO POTASH CORP SASK COM NPV
+POW.TO POWER CORP CDA
+PRE.TO PACIFIC RUBIALES ENERGY CORP
+PRQ.TO PROGRESS ENERGY RESOURCES CORP
+PSI.TO PASON SYSTEM INCOR COM NPV
+PVE-UN.TO PROVIDENT ENERGY T TRUST UNITS
+PWF.TO POWER FINL CORP COM NPV
+PWT-UN.TO PENN WEST ENERGY TR
+QBR-B.TO QUEBECOR INC CLASS'B'SUB VTG NP
+QUA.TO QUADRA MINING COM NPV
+RBA.TO RITCHIE BROS AUCTIONEERS
+RBI.TO RED BACK MNG LTD COM NPV
+RCI-B.TO ROGERS COMMUNICATIONS INC. CL B
+REF-UN.TO CDN REAL EST INV T TRUST UNITS
+REI-UN.TO RIOCAN REAL ESTATE TRUST UNITS
+RET-A.TO REITMANS(CANADA) CLASS'A'NON VT
+RIM.TO RESEARCH IN MOTION LTD
+RON.TO RONA INC COM NPV
+RUS.TO RUSSEL METALS INC COM NPV
+RY.TO ROYAL BK OF CANADA COM NPV
+S.TO SHERRITT INTL CORP COM NPV
+SAP.TO SAPUTO INC
+SC.TO SHOPPERS DRUG MART COM NPV
+SCC.TO SEARS CANADA INC COM NPV
+SCL-A.TO SHAWCOR LTD
+SIF-UN.TO ENERGY SAVINGS INC UNITS
+SJR-B.TO SHAW COMMUNICATION 'B'CNV NPV
+SLF.TO SUN LIFE FINL INC COM NPV
+SLW.TO SILVER WHEATON COR COM NPV
+SNC.TO SNC-LAVALIN GROUP COM NPV
+SPB.TO SUPERIOR PLUS INCOME FD
+SSO.TO SILVER STD RES INC COM NPV
+STN.TO STANTEC INC COM NPV
+SU.TO SUNCOR ENERGY INC
+SVM.TO SILVERCORP METALS INC
+SVY.TO SAVANNA ENERGY SER COM NPV
+SXC.TO SXC HEALTH SOLUTIO COM NPV
+T.TO TELUS CORPORATION COM NPV
+TA.TO TRANSALTA CORP MTN COM NPV
+TCK-B.TO TECK COMINCO LIMITED CL B SV
+TCL-A.TO TRANSCONTINENTAL INC A
+TCM.TO THOMPSON CREEK MET COM NPV
+TCW.TO TRICAN WELL SERVIC COM NPV
+TD.TO TORONTO-DOMINION COM NPV
+TDG.TO TRINIDAD ENERGY SVCS INCOME
+TFI.TO TRANSFORCE INCOME FD
+THI.TO Tim Hortons Inc
+TIH.TO TOROMONT INDUSTRIE COM STK NPV
+TLM.TO TALISMAN ENERGY IN COM NPV
+TNX.TO TANZANIAN ROYALTY COM NPV
+TOG.TO TRISTAR OIL & GAS COM NPV
+TRE.TO SINO-FOREST CORP COM NPV
+TRI.TO THOMSON REUTERS CORP
+TRP.TO TRANSCANADA CORP COM NPV
+TRZ-B.TO TRANSAT AT INC COM NPV VTG SHS
+TS-B.TO TORSTAR CLASS'B'N/VTG COM NPV
+UTS.TO UTS ENERGY CORP COM NPV
+UUU.TO Uranium One Inc
+VET-UN.TO VERMILION ENERGY TRUST UNITS
+VT.TO VITERRA INC
+WFT.TO WEST FRASER TIMBER COM NPV
+WJA.TO WESTJET AIRLINES COM VOTING SHA
+WN.TO WESTON (GEORGE) COM NPV
+WTE-UN.TO WESTSHORE TERMINAL TRUST UNIT
+X.TO TMX GROUP INC/GROUPE TMX INC
+YLO-UN.TO YELLOW PAGES INCOM TRUST UNITS
+YRI.TO YAMANA GOLD INC COM NPV
HILDON = True
except:
HILDON = False
-
+
try:
import osso
OSSO = True
- osso_c = osso.Context("net.yerga.stockthis", "0.1", False)
+ osso_c = osso.Context("net.yerga.stockthis", "0.2", False)
except:
- OSSO = False
+ OSSO = False
from marketdata import markets, idmarket, localmarkets, localids
running_locally = False
else:
running_locally = True
-
+
if running_locally:
imgdir = 'pixmaps/'
else:
if FREMANTLE:
self.window = hildon.StackableWindow()
else:
- self.window = hildon.Window()
- self.program.add_window(self.window)
+ self.window = hildon.Window()
+ self.program.add_window(self.window)
else:
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
- self.window.set_default_size(800, 480)
- self.window.set_title('StocksPy')
+ self.window.set_default_size(800, 480)
+ self.window.set_title('StockThis')
self.window.connect("destroy", gtk.main_quit)
self.window.connect("key-press-event", self.on_key_press)
self.window.connect("window-state-event", self.on_window_state_change)
self.window_in_fullscreen = False
-
+
if HILDON:
if FREMANTLE:
menu = hildon.AppMenu()
self.window.set_menu(menu)
about_menu = gtk.MenuItem("About")
about_menu.set_size_request(-1, 55)
-
+
about_menu.connect("activate", self.on_about)
- menu.append(about_menu)
+ menu.append(about_menu)
menu.show_all()
else:
#TODO: create a gtk.menubar
pass
-
-
+
+
vbox = gtk.VBox()
-
+
self.toolbar = gtk.HBox()
self.toolbar.set_property("no-show-all", True)
self.toolbar.hide()
self.toolbar.set_homogeneous(True)
self.toolbar.set_size_request(-1, 55)
-
+
self.markets_btn = gtk.Button('Markets')
self.markets_btn.connect("clicked", self.create_markets_view)
self.markets_btn.set_property("can_focus", False)
-
- self.components_btn = gtk.Button('Components')
+
+ self.components_btn = gtk.Button('Companies')
self.components_btn.connect("clicked", self.show_components_view)
- self.components_btn.set_property("can_focus", False)
-
+ self.components_btn.set_property("can_focus", False)
+
self.graph_btn = gtk.Button('Graphs')
self.graph_btn.connect("clicked", self.create_graphs_view)
self.graph_btn.set_property("can_focus", False)
-
+
self.refresh_btn = gtk.Button('Refresh')
self.refresh_btn.connect("clicked", self.refresh_stock_data)
self.refresh_btn.set_property("can_focus", False)
-
+
self.quotes_btn = gtk.Button('Quotes')
self.quotes_btn.connect("clicked", self.show_quotes_view)
- self.quotes_btn.set_property("can_focus", False)
-
- self.toolbar.pack_start(self.markets_btn)
+ self.quotes_btn.set_property("can_focus", False)
+
+ self.toolbar.pack_start(self.markets_btn)
self.toolbar.pack_start(self.components_btn)
self.toolbar.pack_start(self.graph_btn)
- self.toolbar.pack_start(self.quotes_btn)
- self.toolbar.pack_start(self.refresh_btn)
-
+ self.toolbar.pack_start(self.quotes_btn)
+ self.toolbar.pack_start(self.refresh_btn)
+
self.mainbox = gtk.VBox()
self.window.show_all()
- def create_markets_view(self, widget):
+ def create_markets_view(self, widget):
names = markets
ids = idmarket
self.toolbar.hide()
-
+
actual_view = self.mainbox.get_children()
if len(actual_view) > 0:
for a_widget in actual_view:
a_widget.destroy()
- self.marketsbox = gtk.VBox()
+ self.marketsbox = gtk.VBox()
lnames = len(names)
-
+
for i in range(lnames):
button = gtk.Button(names[i])
button.connect("clicked", self.create_components_view, ids[i])
button.set_size_request(-1, 65)
button.set_property("can_focus", False)
self.marketsbox.pack_start(button, True, True, 2)
-
+
self.mainbox.pack_start(self.marketsbox, True, True, 2)
self.mainbox.show_all()
kind = self.market_id
self.create_components_view(widget, kind)
- def create_components_view(self, widget, kind):
+ def create_components_view(self, widget, kind):
actual_view = self.mainbox.get_children()
for i in actual_view:
i.destroy()
-
+
self.market_id = kind
self.toolbar.show()
self.components_btn.hide()
self.refresh_btn.hide()
self.graph_btn.hide()
self.quotes_btn.hide()
-
+
names = localmarkets[idmarket.index(kind)]
ids = localids[idmarket.index(kind)]
-
+
self.compbox = gtk.VBox()
-
+
self.components_trv = gtk.TreeView()
-
+ self.components_trv.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_HORIZONTAL)
+
if not FREMANTLE:
selection = self.components_trv.get_selection()
selection.connect("changed", self.changed_selection, ids)
else:
self.components_trv.connect("row-activated", self.select_component, ids)
-
+
self.components_trv.set_rubber_banding(True)
- self.components_trv.set_headers_visible(False)
+ self.components_trv.set_headers_visible(False)
self.components_model = self.__create_components_model()
self.components_trv.set_model(self.components_model)
- self._components_trv_columns(self.components_trv)
+ self._components_trv_columns(self.components_trv)
self.add_initial_components(names, ids)
-
- self.compbox.pack_start(self.components_trv, True, True, 0)
+
+ self.compbox.pack_start(self.components_trv, True, True, 0)
self.mainbox.pack_start(self.compbox, True, True, 0)
self.mainbox.show_all()
def select_component(self, widget, path, column, ids):
self.create_quotes_view(widget,self.components_model[path][1] )
-
+
def changed_selection(self, widget, ids):
n, i, m = self.get_selected_from_treeview(self.components_trv, self.components_model, 1)
if n is not None:
self.create_quotes_view(widget, n)
-
+
def __create_components_model(self):
lstore = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
return lstore
- def _components_trv_columns(self, treeview):
+ def _components_trv_columns(self, treeview):
renderer = gtk.CellRendererText()
renderer.set_property('scale', 1.6)
#renderer.set_property("background", 'lightgray')
renderer.set_property("xpad", 15)
column = gtk.TreeViewColumn('Name', renderer, text=0)
column.set_expand(True)
- treeview.append_column(column)
-
+ treeview.append_column(column)
+
renderer = gtk.CellRendererText()
column = gtk.TreeViewColumn('IDS', renderer, text=1)
column.set_visible(False)
- treeview.append_column(column)
-
+ treeview.append_column(column)
+
def add_initial_components(self, kind, ids):
for i in range(len(kind)):
- niter = self.components_model.append()
- self.components_model.set(niter, 0, kind[i], 1, ids[i])
+ niter = self.components_model.append()
+ self.components_model.set(niter, 0, kind[i], 1, ids[i])
def get_selected_from_treeview(self, treeview, model, setting):
selection = treeview.get_selection()
self.components_btn.show()
self.markets_btn.show()
self.refresh_btn.show()
- self.graph_btn.show()
- self.quotes_btn.hide()
-
+ self.graph_btn.show()
+ self.quotes_btn.hide()
+
#actual_view = self.mainbox.get_children()
#actual_view[0].destroy()
-
+
try:
self.graphbox.destroy()
except:
pass
-
+
for i in range(len(localids)):
if kind in localids[i]:
- ind1, ind2 = i, localids[i].index(kind)
+ ind1, ind2 = i, localids[i].index(kind)
self.quotesbox = gtk.VBox()
- label1 = gtk.Label('')
- label1.set_markup('<b><big>'+localmarkets[ind1][ind2]+'</big></b>')
- color = gtk.gdk.color_parse("#03A5FF")
- label1.modify_fg(gtk.STATE_NORMAL, color)
+ self.titlelbl = gtk.Label('')
+ self.titlelbl.set_markup('<b><big>'+localmarkets[ind1][ind2]+'</big></b>')
+ color = gtk.gdk.color_parse("#03A5FF")
+ self.titlelbl.modify_fg(gtk.STATE_NORMAL, color)
self.databox = gtk.VBox()
-
+
self.imagebox = gtk.VBox()
- self.dataimg = gtk.Image()
+ self.dataimg = gtk.Image()
self.imagebox.pack_start(self.dataimg)
-
- self.show_data(kind)
-
+
+ self.show_data(kind)
+
hbox1 = gtk.HBox()
-
+
label2 = gtk.Label('')
label2.set_markup('<b><big>Price:</big></b>')
self.lprice = gtk.Label('')
-
+
hbox1.pack_start(label2, False, False, 50)
hbox1.pack_start(self.lprice, False, False, 185)
-
+
hbox2 = gtk.HBox()
label4 = gtk.Label('')
label4.set_markup('<b><big>Change:</big></b>')
self.lchange = gtk.Label('')
self.lpercent = gtk.Label('')
-
+
hbox2.pack_start(label4, False, False, 50)
- hbox2.pack_start(self.lchange , False, False, 145)
+ hbox2.pack_start(self.lchange , False, False, 145)
hbox2.pack_start(self.lpercent, False, False, 0)
-
+
hbox3 = gtk.HBox()
-
+
label7 = gtk.Label('')
label7.set_markup('<b><big>Volume:</big></b>')
self.lvolume = gtk.Label('')
-
+
hbox3.pack_start(label7, False, False, 50)
- hbox3.pack_start(self.lvolume , False, False, 145)
-
+ hbox3.pack_start(self.lvolume , False, False, 145)
+
hbox4 = gtk.HBox()
-
+
label9 = gtk.Label('')
label9.set_markup('<b><big>52 week high:</big></b>')
self.l52whigh = gtk.Label('')
-
+
hbox4.pack_start(label9, False, False, 50)
- hbox4.pack_start(self.l52whigh , False, False, 55)
-
+ hbox4.pack_start(self.l52whigh , False, False, 55)
+
hbox5 = gtk.HBox()
-
+
label11 = gtk.Label('')
label11.set_markup('<b><big>52 week low:</big></b>')
self.l52wlow = gtk.Label('')
-
+
hbox5.pack_start(label11, False, False, 50)
hbox5.pack_start(self.l52wlow , False, False, 70)
-
+
self.databox.pack_start(hbox1, True, True, 0)
self.databox.pack_start(hbox2, True, True, 0)
self.databox.pack_start(hbox3, True, True, 0)
self.databox.pack_start(hbox4, True, True, 0)
self.databox.pack_start(hbox5, True, True, 0)
-
- self.quotesbox.pack_start(label1, False, False, 0)
- self.quotesbox.pack_start(gtk.HSeparator(), False, False, 0)
- self.quotesbox.pack_start(self.databox, True, True, 0)
- self.quotesbox.pack_start(self.imagebox, True, True, 0)
+
+ self.quotesbox.pack_start(self.titlelbl, False, False, 0)
+ self.quotesbox.pack_start(gtk.HSeparator(), False, False, 0)
+ self.quotesbox.pack_start(self.databox, True, True, 0)
+ self.quotesbox.pack_start(self.imagebox, True, True, 0)
self.mainbox.pack_start(self.quotesbox, True, True, 0)
self.mainbox.show_all()
self.databox.hide()
thread.start_new_thread(self.get_data, (kind,))
- def get_data(self, kind):
+ def get_data(self, kind):
self.graph_btn.show()
self.refresh_btn.show()
- self.quotes_btn.hide()
-
+ self.quotes_btn.hide()
+
from ystockquote import ystockquote as yt
- data = yt.get_all(kind)
-
+ try:
+ data = yt.get_all(kind)
+ except:
+ print 'Failed to get internet data'
+ data = {'price': 'N/A', 'change': 'N/A', 'volume':'N/A',
+ '52_week_high': 'N/A', '52_week_low': 'N/A'}
+ self.titlelbl.set_markup('<b><big>Failed to get data</big></b>')
+
try:
ch_percent = 100.0 * float(data['change'])/float(data['price'])
except ValueError:
self.lprice.set_label(data['price'])
self.lchange.set_label(data['change'])
self.lpercent.set_label('%6.2f %%' % ch_percent)
-
+
if '-' in data['change']:
color = gtk.gdk.color_parse("#FF0000")
else:
- color = gtk.gdk.color_parse("#16EB78")
-
+ color = gtk.gdk.color_parse("#16EB78")
+
self.lpercent.modify_fg(gtk.STATE_NORMAL, color)
- self.lchange.modify_fg(gtk.STATE_NORMAL, color)
-
+ self.lchange.modify_fg(gtk.STATE_NORMAL, color)
+
self.lvolume.set_label(data['volume'])
self.l52whigh.set_label(data['52_week_high'])
self.l52wlow.set_label(data['52_week_low'])
-
- self.databox.show_all()
- self.imagebox.hide()
+
+ self.databox.show_all()
+ self.imagebox.hide()
def refresh_stock_data(self, widget):
self.show_data(self.stocks_id)
- def create_graphs_view(self, widget):
+ def create_graphs_view(self, widget):
self.graph_btn.hide()
self.refresh_btn.hide()
self.quotes_btn.show()
-
+
self.graph = gtk.Image()
-
+
kind = self.stocks_id
-
+
self.show_graph(None, '1d', kind)
-
+
for i in range(len(localids)):
if kind in localids[i]:
ind1, ind2 = i, localids[i].index(kind)
- #self.mainbox.destroy()
+ #self.mainbox.destroy()
#self.mainbox = gtk.VBox()
- #self.swin.add_with_viewport(self.mainbox)
-
+ #self.swin.add_with_viewport(self.mainbox)
+
actual_view = self.mainbox.get_children()
for a_widget in actual_view:
- a_widget.destroy()
+ a_widget.destroy()
self.graphbox = gtk.VBox()
- label1 = gtk.Label(localmarkets[ind1][ind2])
+ self.graphs_title = gtk.Label(localmarkets[ind1][ind2])
color = gtk.gdk.color_parse("#03A5FF")
- label1.modify_fg(gtk.STATE_NORMAL, color)
-
+ self.graphs_title.modify_fg(gtk.STATE_NORMAL, color)
+
hbox1 = gtk.HBox()
hbox1.set_size_request(-1, 55)
hbox1.set_homogeneous(True)
-
+
self.btn1d = gtk.Button('1d')
self.btn1d.set_property("can_focus", False)
self.btn1d.connect("clicked", self.show_graph, '1d', kind)
self.btnmax = gtk.Button('max')
self.btnmax.set_property("can_focus", False)
self.btnmax.connect("clicked", self.show_graph, 'max', kind)
-
+
hbox1.pack_start(self.btn1d)
- hbox1.pack_start(self.btn5d)
- hbox1.pack_start(self.btn3m)
- hbox1.pack_start(self.btn6m)
- hbox1.pack_start(self.btn1y)
- hbox1.pack_start(self.btn2y)
- hbox1.pack_start(self.btn5y)
- hbox1.pack_start(self.btnmax)
-
- self.graphbox.pack_start(label1, False, False, 2)
- self.graphbox.pack_start(hbox1, False, False, 0)
+ hbox1.pack_start(self.btn5d)
+ hbox1.pack_start(self.btn3m)
+ hbox1.pack_start(self.btn6m)
+ hbox1.pack_start(self.btn1y)
+ hbox1.pack_start(self.btn2y)
+ hbox1.pack_start(self.btn5y)
+ hbox1.pack_start(self.btnmax)
+
+ self.graphbox.pack_start(self.graphs_title, False, False, 2)
+ self.graphbox.pack_start(hbox1, False, False, 0)
self.graphbox.pack_start(self.graph, True, True, 5)
-
+
self.mainbox.pack_start(self.graphbox, False, False, 2)
- self.mainbox.show_all()
+ self.mainbox.show_all()
def show_graph(self, widget, option, kind):
import thread
def get_graph_data(self, option, kind):
if option == '1d':
url = 'http://uk.ichart.yahoo.com/b?s=%s' % kind
- elif option == '5d':
+ elif option == '5d':
url = 'http://uk.ichart.yahoo.com/w?s=%s' % kind
- elif option == '3m':
+ elif option == '3m':
url = 'http://chart.finance.yahoo.com/c/3m/s/%s' % kind.lower()
- elif option == '6m':
+ elif option == '6m':
url = 'http://chart.finance.yahoo.com/c/6m/s/%s' % kind.lower()
- elif option == '1y':
+ elif option == '1y':
url = 'http://chart.finance.yahoo.com/c/1y/s/%s' % kind.lower()
- elif option == '2y':
+ elif option == '2y':
url = 'http://chart.finance.yahoo.com/c/2y/s/%s' % kind.lower()
- elif option == '5y':
+ elif option == '5y':
url = 'http://chart.finance.yahoo.com/c/5y/s/%s' % kind.lower()
- elif option == 'max':
+ elif option == 'max':
url = 'http://chart.finance.yahoo.com/c/my/s/%s' % kind.lower()
-
- myimg = urllib2.urlopen(url)
- imgdata=myimg.read()
- pbl = gtk.gdk.PixbufLoader()
- pbl.write(imgdata)
+ try:
+ myimg = urllib2.urlopen(url)
+ imgdata=myimg.read()
+
+ pbl = gtk.gdk.PixbufLoader()
+ pbl.write(imgdata)
+
+ pbuf = pbl.get_pixbuf()
+ pbl.close()
+ self.graph.set_from_pixbuf(pbuf)
+ except:
+ print 'no internet data'
+ self.graphs_title.set_label('Failed to get data')
+ self.graph.destroy()
- pbuf = pbl.get_pixbuf()
- pbl.close()
-
- self.graph.set_from_pixbuf(pbuf)
#Functions for fullscreen
- def on_window_state_change(self, widget, event, *args):
+ def on_window_state_change(self, widget, event, *args):
if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
self.window_in_fullscreen = True
else:
self.window_in_fullscreen = False
#F6 fullscreen, F7 bigger font, F8 smaller font
- def on_key_press(self, widget, event, *args):
+ def on_key_press(self, widget, event, *args):
if event.keyval == gtk.keysyms.F6:
if self.window_in_fullscreen:
self.window.unfullscreen ()
else:
- self.window.fullscreen ()
+ self.window.fullscreen ()
def on_about(self, widget):
dialog = gtk.AboutDialog()
dialog.set_name("StockThis")
- dialog.set_version("0.1")
+ dialog.set_version("0.2")
dialog.set_copyright("Copyright © 2009")
dialog.set_website("http://stockthis.garage.maemo.org")
dialog.set_authors(["Daniel Martin Yerga <dyerga@gmail.com>"])
dialog.set_artists(["Logo by Daniel Martin Yerga"])
dialog.run()
dialog.destroy()
-
+
if __name__ == "__main__":
stockspy = StocksPy()
gtk.gdk.threads_enter()
gtk.main()
gtk.gdk.threads_leave()
-