added proper about dlg, and fixed bug refreshing quotes view
authorDaniel Martin Yerga <yerga@yerga-desktop.(none)>
Thu, 6 Aug 2009 15:53:10 +0000 (17:53 +0200)
committerDaniel Martin Yerga <yerga@yerga-desktop.(none)>
Thu, 6 Aug 2009 15:53:10 +0000 (17:53 +0200)
TODO
changelog
debian/changelog
debian/control
debian/postinst
marketdata.py
pixmaps/maemoorg.png [new file with mode: 0644]
setup.py
stockthis.desktop
stockthis.py

diff --git a/TODO b/TODO
index 9d334fd..0f78f22 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,7 +1,3 @@
- * Sort markets for countries, and better categorizing
- of the different markets, indices, currencies, etc.
- * Add favorites and create favorites view (portfolios). -> refresh automatically
- * Improve the alignment of the labels in quotes view.
  * Improve currencies (get change and other data).
  * Add more instruments.
 
index 9d1fe19..a51635b 100644 (file)
--- a/changelog
+++ b/changelog
@@ -1,3 +1,13 @@
+2009-08-06  Daniel Martín Yerga  <dyerga@gmail.com>
+
+    * stockthis.py: Added proper About dialog.
+    Fixed: Not refreshing quotes-view when back from portfolio-view.
+
+2009-07-31  Daniel Martín Yerga  <dyerga@gmail.com>
+
+    * stockthis.py, marketdata.py: Reorganized the initial screen.
+    Better titles for the windows.
+
 2009-07-29  Daniel Martín Yerga  <dyerga@gmail.com>
 
     * stockthis.py: Getting and saving data from portfolio settings.
index b618e66..61b400f 100644 (file)
@@ -1,3 +1,14 @@
+stockthis (0.3~alpha1) fremantle; urgency=low
+
+    * New Fremantle UI.
+    * Added portfolio section.
+    * Reorganized initial screen.
+    * Added BOVESPA patch by Bruno Gomes.
+    * Fix: Some IBEX35 values had changed.
+    * Better titles for the windows.
+
+ -- Daniel Martin Yerga <dyerga@gmail.com>  Fri, 31 Jul 2009 17:30:33 +0200
+
 stockthis (0.2-1) unstable; urgency=low
 
   * Added some instruments suggested by M. W.
@@ -18,10 +29,10 @@ stockthis (0.2-1) unstable; urgency=low
 
   * Added mibtel, ftse250 markets.
 
- -- Daniel Martin Yerga <dyerga@gmail.com>  Wed, 20 May 2008 19:30:33 +0200
+ -- Daniel Martin Yerga <dyerga@gmail.com>  Wed, 20 May 2009 19:30:33 +0200
 
 stockthis (0.1-1) unstable; urgency=low
 
   * First Version
 
- -- Daniel Martin Yerga <dyerga@gmail.com>  Thu, 30 Apr 2008 20:30:33 +0200
+ -- Daniel Martin Yerga <dyerga@gmail.com>  Thu, 30 Apr 2009 20:30:33 +0200
index fc19906..8b90ed3 100644 (file)
@@ -2,16 +2,16 @@ Source: stockthis
 Section: user/office
 Priority: optional
 Maintainer: Daniel Martín Yerga <dyerga@gmail.com>
-Build-Depends: debhelper (>= 4.0.0), python2.5-dev, python2.5-distutils
+Build-Depends: debhelper (>= 4.0.0), python-dev
 Standards-Version: 3.6.2
 
 Package: stockthis
 XB-Maemo-Display-Name: StockThis
 Architecture: all
-Depends: python2.5, python2.5-hildon, python2.5-gtk2, python-ystockquote
+Depends: python, python-hildon, python-gtk2, python-ystockquote
 Description: A stocks application.
- StockThis is a simple application to show quotes from the most important world markets. 
- Also, it shows  graphs with the changes in different amount of time. 
+ StockThis is a simple application to show quotes from the most important world markets.
+ Also, it shows  graphs with the changes in different amount of time.
  It gets data from Yahoo Finance.
 XB-Maemo-Icon-26:
  iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c
index f6557ee..b56f8e4 100755 (executable)
@@ -6,17 +6,11 @@
 ## ----------------------------------------------------------------------
 set -e
 
-MAEMO_SELECT_MENU=/usr/bin/maemo-select-menu-location
-
 chmod +x /usr/bin/stockthis
 
 oldversion="$2"
 if [ -z "$oldversion" ]; then
-  if [ -f $MAEMO_SELECT_MENU ]
-  then 
-    maemo-select-menu-location stockthis.desktop
-  fi
-  gtk-update-icon-cache -f /usr/share/icons/hicolor  
+  gtk-update-icon-cache -f /usr/share/icons/hicolor
 fi
 
 exit 0
index 4006526..c515441 100644 (file)
@@ -1,13 +1,5 @@
-markets = ["Dow Jones Industrial", "NASDAQ 100", "S&P 500", "Bovespa", "IBEX35", "SPANISH MERCADO CONTINUO", "IBEX NUEVO MERCADO", "FTSE 100", "FTSE 250", "EURO STOXX 50", "S&P / MIB INDX", "MIB 30", "MIDEX", "MIBTEL", "S&P/TSX Composite index", "US Indices", "European Indices", "Other Markets Indices", "Currencies", "Exchange-Traded Funds"]
-idmarket = ["dow", "nasdaq", "sp500", "bvsp", "ibex35", "mc", "ibexnm", "ftse100", "ftse250", "eurostoxx50", "spmib", "mib30", "midex", "mibtel", "tsx", "usindex", "eurindex", "othindex", "currency", "etf"]
-
-#EUROSTOXX50:
-eurostoxx50_symbols=['AABA.AS', 'ACA.PA', 'AGN.AS', 'AH.AS', 'AI.PA', 'AIB.IR', 'ALV.DE', 'BAS.DE', 'BAY.DE', 'BBVA.MC', 'BN.PA', 'BNP.PA', 'CA.PA', 'ALU.PA', 'CS.PA', 'DAI.DE', 'DBK.DE', 'DTE.DE', 'ELE.MC', 'ENEL.MI', 'ENI.MI', 'EOA.DE', 'FORA.AS', 'FP.PA', 'FTE.PA', 'G.MI', 'GLE.PA', 'BIBE.MC', 'ING.AS', 'ISP.MI', 'LG.PA', 'MC.PA', 'MUV2.DE', 'NOA3.DE', 'OR.PA', 'PHIA.AS', 'REP.MC', 'RNO.PA', 'RWE.DE', 'SAN.MC', 'SAN.PA', 'SAP.DE', 'SGO.PA', 'SIE.DE', 'SZE.PA', 'TEF.MC', 'TIT.MI', 'UCG.MI', 'UNA.AS', 'VIV.PA']
-eurostoxx50_names=['ABN AMRO HOLDING', 'CREDIT AGRICOLE', 'AEGON', 'AHOLD', 'AIR LIQUIDE', 'ALLIED IRISH BANKS', 'ALLIANZ N', 'BASF', 'BAYER', 'BBVA R', 'DANONE', 'BNP PARIBAS', 'CARREFOUR', 'ALCATEL-LUCENT', 'AXA', 'DAIMLER N', 'DEUTSCHE BANK N', 'DEUTSCHE TELEKOM N', 'ENDESA', 'ENEL', 'ENI', 'E.ON AG', 'FORTIS', 'TOTAL', 'FRANCE TELECOM', 'GENERALI', 'STE GENERALE-A-', 'IBERDROLA', 'ING GROEP', 'INTESA SANPAOLO', 'LAFARGE', 'LVMH', 'MUENCH RUECKVERS N', 'NOKIA', "L'OREAL", 'ROY.PHILIPS ELECTR', 'REPSOL YPF', 'RENAULT', 'RWE -A-', 'BANCO SANTANDER R', 'SANOFI-AVENTIS', 'SAP', 'SAINT GOBAIN', 'SIEMENS N', 'SUEZ (ROMPUS)', 'TELEFONICA', 'TELECOM ITALIA', 'UNICREDIT', 'UNILEVER CERT', 'VIVENDI']
-
-#IBEX35
-ibex35_symbols=['ABE.MC', 'ABG.MC', 'ACS.MC', 'ACX.MC', 'ANA.MC', 'BBVA.MC', 'BKT.MC', 'BME.MC', 'TEF.MC', 'BTO.MC', 'CIN.MC', 'CRI.MC', 'ELE.MC', 'ENG.MC', 'FCC.MC', 'FER.MC', 'GAM.MC', 'GAS.MC', 'GRF.MC', 'BIBE.MC', 'IBLA.MC', 'IBR.MC', 'IDR.MC', 'ITX.MC', 'MAP.MC', 'OHL.MC', 'POP.MC', 'REE.MC', 'REP.MC', 'SAB.MC', 'SAN.MC', 'SYV.MC', 'BTL.MC', 'TRE.MC', 'UNF.MC']
-ibex35_names=['ABERTIS -A-', 'ABENGOA', 'ACS', 'ACERINOX', 'ACCIONA', 'BBVA R', 'BANKINTER R', 'BME', 'TELEFONICA', 'BANESTO R', 'CINTRA', 'CRIT.CAIXACORP', 'ENDESA', 'ENAGAS', 'FCC', 'GRUPO FERROVIAL', 'GAMESA', 'GAS NATURAL SDG', 'GRIFOLS A', 'IBERDROLA', 'IBERIA', 'IBERDROLA RENOVABLE', 'INDRA SISTEMAS -A-', 'INDITEX R', 'MAPFRE', 'HUARTE LAIN', 'BANCO POPULAR R', 'RED EL CORPORACION', 'REPSOL YPF', 'BANCO SABADELL R', 'BANCO SANTANDER R', 'SACYR VALLEHERMOSO', 'TELECINCO', 'TECNICAS REUNIDAS', 'UNION FENOSA']
+main = ["Markets indices", "US Markets", "European Markets", "Other Markets", "Currencies", "Exchange-Traded Funds"]
+idmain = ["indices", "usm", "eum", "om", "currency", "etf"]
 
 #DOW JONES
 dow_jones_symbols=['AA', 'AXP', 'BA', 'BAC', 'C', 'CAT', 'CVX', 'DD', 'DIS', 'GE', 'GM', 'HD', 'HPQ', 'IBM', 'INTC', 'JNJ', 'JPM', 'KFT', 'KO', 'MCD', 'MMM', 'MRK', 'MSFT', 'PFE', 'PG', 'T', 'UTX', 'VZ', 'WMT', 'XOM']
@@ -17,6 +9,18 @@ dow_jones_names=['ALCOA INC', 'AMER EXPRESS INC', 'BOEING CO', 'BK OF AMERICA CP
 nasdaq_symbols=['AAPL', 'ADBE', 'ADP', 'ADSK', 'AKAM', 'ALTR', 'AMAT', 'AMGN', 'AMZN', 'APOL', 'ATVI', 'BBBY', 'BIDU', 'BIIB', 'BRCM', 'CA', 'CELG', 'CEPH', 'CHKP', 'CHRW', 'CMCSA', 'COST', 'CSCO', 'CTAS', 'CTSH', 'CTXS', 'DELL', 'DISH', 'DTV', 'EBAY', 'ERTS', 'ESRX', 'EXPD', 'EXPE', 'FAST', 'FISV', 'FLEX', 'FLIR', 'FSLR', 'FWLT', 'GENZ', 'GILD', 'GOOG', 'GRMN', 'HANS', 'HOLX', 'HSIC', 'IACI', 'ILMN', 'INFY', 'INTC', 'INTU', 'ISRG', 'JAVA', 'JBHT', 'JNPR', 'JOYG', 'KLAC', 'LBTYA', 'LIFE', 'LINTA', 'LLTC', 'LOGI', 'LRCX', 'MCHP', 'MICC', 'MRVL', 'MSFT', 'MXIM', 'NIHD', 'NTAP', 'NVDA', 'NWSA', 'ORCL', 'ORLY', 'PAYX', 'PCAR', 'PDCO', 'PPDI', 'QCOM', 'RIMM', 'ROST', 'RYAAY', 'SBUX', 'SHLD', 'SIAL', 'SPLS', 'SRCL', 'STLD', 'STX', 'SYMC', 'TEVA', 'URBN', 'VRSN', 'VRTX', 'WCRX', 'WYNN', 'XLNX', 'XRAY', 'YHOO']
 nasdaq_names=['Apple Inc.', 'Adobe Systems Incorporated', 'Automatic Data Processing, Inc.', 'Autodesk, Inc.', 'Akamai Technologies, Inc.', 'Altera Corporation', 'Applied Materials, Inc.', 'Amgen Inc.', 'Amazon.com, Inc.', 'Apollo Group, Inc.', 'Activision Blizzard, Inc', 'Bed Bath & Beyond Inc.', 'Baidu, Inc.', 'Biogen Idec Inc', 'Broadcom Corporation', 'CA Inc.', 'Celgene Corporation', 'Cephalon, Inc.', 'Check Point Software Technologi', 'C.H. Robinson Worldwide, Inc.', 'Comcast Corporation', 'Costco Wholesale Corporation', 'Cisco Systems, Inc.', 'Cintas Corporation', 'Cognizant Technology Solutions', 'Citrix Systems, Inc.', 'Dell Inc.', 'DISH Network Corporation', 'The DIRECTV Group, Inc.', 'eBay Inc.', 'Electronic Arts Inc.', 'Express Scripts, Inc.', 'Expeditors International of Was', 'Expedia, Inc.', 'Fastenal Company', 'Fiserv, Inc.', 'Flextronics International Ltd.', 'FLIR Systems, Inc.', 'First Solar, Inc.', 'Foster Wheeler AG.', 'Genzyme Corporation', 'Gilead Sciences, Inc.', 'Google Inc.', 'Garmin Ltd.', 'Hansen Natural Corporation', 'Hologic, Inc.', 'Henry Schein, Inc.', 'IAC/InterActiveCorp', 'Illumina, Inc.', 'Infosys Technologies Limited', 'Intel Corporation', 'Intuit Inc.', 'Intuitive Surgical, Inc.', 'Sun Microsystems, Inc.', 'J.B. Hunt Transport Services, I', 'Juniper Networks, Inc.', 'Joy Global Inc.', 'KLA-Tencor Corporation', 'Liberty Global, Inc.', 'Life Technologies Corporation', 'Liberty Media Corporation', 'Linear Technology Corporation', 'Logitech International S.A.', 'Lam Research Corporation', 'Microchip Technology Incorporat', 'Millicom International Cellular', 'Marvell Technology Group, Ltd.', 'Microsoft Corporation', 'Maxim Integrated Products, Inc.', 'NII Holdings, Inc.', 'NetApp, Inc.', 'NVIDIA Corporation', 'News Corporation', 'Oracle Corporation', "O'Reilly Automotive, Inc.", 'Paychex, Inc.', 'PACCAR Inc.', 'Patterson Companies Inc.', 'Pharmaceutical Product Developm', 'QUALCOMM Incorporated', 'Research In Motion Limited', 'Ross Stores, Inc.', 'Ryanair Holdings plc', 'Starbucks Corporation', 'Sears Holdings Corporation', 'Sigma-Aldrich Corporation', 'Staples, Inc.', 'Stericycle, Inc.', 'Steel Dynamics, Inc.', 'Seagate Technology', 'Symantec Corporation', 'Teva Pharmaceutical Industries', 'Urban Outfitters, Inc.', 'VeriSign, Inc.', 'Vertex Pharmaceuticals Incorpor', 'Warner Chilcott Limited', 'Wynn Resorts, Limited', 'Xilinx, Inc.', 'DENTSPLY International Inc.', 'Yahoo! Inc.']
 
+#S&P 500
+sp500_symbols=['A', 'AA', 'AAPL', 'ABC', 'ABT', 'ACS', 'ADBE', 'ADI', 'ADM', 'ADP', 'ADSK', 'AEE', 'AEP', 'AES', 'AET', 'AFL', 'AGN', 'AIG', 'AIV', 'AIZ', 'AKAM', 'AKS', 'ALL', 'ALTR', 'AMAT', 'AMD', 'AMGN', 'AMP', 'AMT', 'AMZN', 'AN', 'ANF', 'AOC', 'APA', 'APC', 'APD', 'APH', 'APOL', 'ATI', 'AVB', 'AVP', 'AVY', 'AXP', 'AYE', 'AZO', 'BA', 'BAC', 'BAX', 'BBBY', 'BBT', 'BBY', 'BCR', 'BDK', 'BDX', 'BEN', 'BF-B', 'BHI', 'BIG', 'BIIB', 'BJS', 'BK', 'BLL', 'BMC', 'BMS', 'BMY', 'BNI', 'BRCM', 'BSX', 'BTU', 'BXP', 'C', 'CA', 'CAG', 'CAH', 'CAM', 'CAT', 'CB', 'CBE', 'CBG', 'CBS', 'CCE', 'CCL', 'CEG', 'CELG', 'CEPH', 'CF', 'CHK', 'CHRW', 'CI', 'CIEN', 'CINF', 'CIT', 'CL', 'CLX', 'CMA', 'CMCSA', 'CME', 'CMI', 'CMS', 'CNP', 'CNX', 'COF', 'COG', 'COH', 'COL', 'COP', 'COST', 'COV', 'CPB', 'CPWR', 'CRM', 'CSC', 'CSCO', 'CSX', 'CTAS', 'CTL', 'CTSH', 'CTX', 'CTXS', 'CVG', 'CVH', 'CVS', 'CVX', 'D', 'DD', 'DE', 'DELL', 'DF', 'DFS', 'DGX', 'DHI', 'DHR', 'DIS', 'DNB', 'DNR', 'DO', 'DOV', 'DOW', 'DPS', 'DRI', 'DTE', 'DTV', 'DUK', 'DVA', 'DVN', 'DYN', 'EBAY', 'ECL', 'ED', 'EFX', 'EIX', 'EK', 'EL', 'EMC', 'EMN', 'EMR', 'EOG', 'EP', 'EQ', 'EQR', 'EQT', 'ERTS', 'ESRX', 'ESV', 'ETFC', 'ETN', 'ETR', 'EXC', 'EXPD', 'EXPE', 'F', 'FAST', 'FCX', 'FDO', 'FDX', 'FE', 'FHN', 'FII', 'FIS', 'FISV', 'FITB', 'FLIR', 'FLR', 'FLS', 'FO', 'FPL', 'FRX', 'FTR', 'GAS', 'GCI', 'GD', 'GE', 'GENZ', 'GILD', 'GIS', 'GLW', 'GM', 'GME', 'GNW', 'GOOG', 'GPC', 'GPS', 'GR', 'GS', 'GT', 'GWW', 'HAL', 'HAR', 'HAS', 'HBAN', 'HCBK', 'HCN', 'HCP', 'HD', 'HES', 'HIG', 'HNZ', 'HOG', 'HON', 'HOT', 'HPQ', 'HRB', 'HRL', 'HRS', 'HSP', 'HST', 'HSY', 'HUM', 'IBM', 'ICE', 'IFF', 'IGT', 'INTC', 'INTU', 'IP', 'IPG', 'IR', 'IRM', 'ISRG', 'ITT', 'ITW', 'IVZ', 'JAVA', 'JBL', 'JCI', 'JCP', 'JDSU', 'JEC', 'JNJ', 'JNPRJNS', 'JPM', 'JWN', 'K', 'KBH', 'KEY', 'KFT', 'KG', 'KIM', 'KLAC', 'KMB', 'KO', 'KR', 'KSS', 'L', 'LEG', 'LEN', 'LH', 'LIFE', 'LLL', 'LLTC', 'LLY', 'LM', 'LMT', 'LNC', 'LO', 'LOW', 'LSI', 'LTD', 'LUK', 'LUV', 'LXK', 'M', 'MA', 'MAR', 'MAS', 'MAT', 'MBI', 'MCD', 'MCHP', 'MCK', 'MCO', 'MDP', 'MDT', 'MEE', 'MET', 'MFE', 'MHP', 'MHS', 'MI', 'MIL', 'MKC', 'MMC', 'MMM', 'MO', 'MOLX', 'MON', 'MOT', 'MRK', 'MRO', 'MS', 'MSFT', 'MTB', 'MTW', 'MU', 'MUR', 'MWV', 'MWW', 'MYL', 'NBL', 'NBR', 'NDAQ', 'NEM', 'NI', 'NKE', 'NOC', 'NOV', 'NOVL', 'NSC', 'NSM', 'NTAP', 'NTRS', 'NU', 'NUE', 'NVDA', 'NVLS', 'NWL', 'NWSA', 'NYT', 'NYX', 'ODP', 'OI', 'OMC', 'ORCL', 'ORLY', 'OXY', 'PAYX', 'PBCT', 'PBG', 'PBI', 'PCAR', 'PCG', 'PCL', 'PCP', 'PDCO', 'PEG', 'PEP', 'PFE', 'PFG', 'PG', 'PGN', 'PGR', 'PH', 'PHM', 'PKI', 'PLD', 'PLL', 'PM', 'PNC', 'PNW', 'POM', 'PPG', 'PPL', 'PRU', 'PSA', 'PTV', 'PX', 'PXD', 'Q', 'QCOM', 'QLGC', 'R', 'RAI', 'RDC', 'RF', 'RHI', 'RL', 'ROK', 'RRC', 'RRD', 'RSG', 'RSH', 'RTN', 'RX', 'S', 'SBUX', 'SCG', 'SCHW', 'SE', 'SEE', 'SGP', 'SHLD', 'SHW', 'SIAL', 'SII', 'SJM', 'SLB', 'SLE', 'SLM', 'SNA', 'SNDK', 'SNI', 'SO', 'SPG', 'SPLS', 'SRCL', 'SRE', 'STI', 'STJ', 'STR', 'STT', 'STZ', 'SUN', 'SVU', 'SWK', 'SWN', 'SWY', 'SYK', 'SYMC', 'SYY', 'T', 'TAP', 'TDC', 'TE', 'TEG', 'TEL', 'TER', 'TGT', 'THC', 'TIE', 'TIF', 'TJX', 'TLAB', 'TMK', 'TMO', 'TROW', 'TRV', 'TSN', 'TSO', 'TSS', 'TWC', 'TWX', 'TXN', 'TXT', 'UNH', 'UNM', 'UNP', 'UPS', 'USB', 'UTX', 'VAR', 'VFC', 'VIA-B', 'VLO', 'VMC', 'VNO', 'VRSN', 'VTR', 'VZ', 'WAG', 'WAT', 'WEC', 'WFC', 'WFMI', 'WFR', 'WHR', 'WIN', 'WLP', 'WMB', 'WMI', 'WMT', 'WPI', 'WPO', 'WU', 'WY', 'WYE', 'WYN', 'WYNN', 'X', 'XEL', 'XL', 'XLNX', 'XOM', 'XRAY', 'XRX', 'XTO', 'YHOO', 'YUM', 'ZION', 'ZMH']
+sp500_names=['AGILENT TECH INC', 'ALCOA INC', 'Apple Inc.', 'AMERISOURCEBERGEN CP', 'ABBOTT LABORATORIES', 'AFFILIATED COMP SVCS', 'Adobe Systems Incorporated', 'ANALOG DEVICES', 'ARCHER DANIELS MDLND', 'Automatic Data Processing, Inc.', 'Autodesk, Inc.', 'AMEREN CP', 'AMER ELECTRIC POW CO', 'AES CORPORATION', 'AETNA INC. NEW', 'A F L A C INC', 'ALLERGAN INC', 'AMER INTL GROUP INC', 'APT INV & MNGMNT CO', 'ASSURANT INC', 'Akamai Technologies, Inc.', 'A K STEEL HLDG CORP', 'ALLSTATE CP', 'Altera Corporation', 'Applied Materials, Inc.', 'ADV MICRO DEVICES', 'Amgen Inc.', 'AMERIPRISE FINANCIAL', 'AMER TOWER CP', 'Amazon.com, Inc.', 'AUTONATION INC', 'ABERCROMBIE & FITCH', 'AON CORP', 'APACHE CP', 'ANADARKO PETROLEUM', 'AIR PRODUCTS CHEM', 'AMPHENOL CP', 'Apollo Group, Inc.', 'ALLEGHENY TECH NEW', 'AVALONBAY CMTYS', 'AVON PRODUCTS INC', 'AVERY DENNISON CP', 'AMER EXPRESS INC', 'ALLEGHENY ENERGY INC', 'AUTOZONE INC', 'BOEING CO', 'BK OF AMERICA CP', 'BAXTER INTL INC', 'Bed Bath & Beyond Inc.', 'BB&T CP', 'BEST BUY CO INC', 'BARD C R INC', 'BLACK DECKER CP', 'BECTON DICKINSON CO', 'FRANKLIN RES INC', 'BROWN FORMAN INC B', 'BAKER HUGHES INTL', 'BIG LOTS INC', 'Biogen Idec Inc', 'BJ SERVICES CO', 'BANK OF NY MELLON CP', 'BALL CP', 'B M C SOFTWARE', 'BEMIS CO INC', 'BRISTOL MYERS SQIBB', 'BURLINGTN N SANTE FE', 'Broadcom Corporation', 'BOSTON SCIENTIFIC CP', 'PEABODY ENERGY CORP', 'BOSTON PPTYS INC', 'CITIGROUP INC', 'CA Inc.', 'CONAGRA FOOD INC', 'CARDINAL HEALTH INC', 'CAMERON INTL CP', 'CATERPILLAR INC', 'CHUBB CP THE', 'COOPER INDS CL A', 'CB RICHARD ELLIS GRP', 'CBS CORP CL B', 'COCA COLA ENTRPR INC', 'CARNIVAL CORP', 'CONSTELLATION ENGY', 'Celgene Corporation', 'Cephalon, Inc.', 'CF IND HLDGS INC', 'CHESAPEAKE ENERGY CP', 'C.H. Robinson Worldwide, Inc.', 'CIGNA CP', 'Ciena Corporation', 'Cincinnati Financial Corporatio', 'CIT GROUP INC (DEL)', 'COLGATE PALMOLIVE', 'CLOROX CO', 'COMERICA INC', 'Comcast Corporation', 'CME Group Inc.', 'CUMMINS INC', 'CMS ENERGY CP', 'CENTERPOINT ENERGY', 'CONS ENERGY INC', 'CAPITAL ONE FINANCIA', 'CABOT OIL GAS CP', 'COACH INC', 'ROCKWELL COLLINS INC', 'CONOCOPHILLIPS', 'Costco Wholesale Corporation', 'COVIDIEN LTD', 'CAMPBELL SOUP CO', 'Compuware Corporation', 'SALESFORCE.COM INC', 'COMPUTER SCIENCES CP', 'Cisco Systems, Inc.', 'C S X CP', 'Cintas Corporation', 'CENTURYTEL INC', 'Cognizant Technology Solutions ', 'CENTEX CP', 'Citrix Systems, Inc.', 'CONVERGYS CP', 'COVENTRY HLTH CARE', 'CVS CAREMARK CP', 'CHEVRON CORP', 'DOMINION RES NEW', 'DU PONT E I DE NEM', 'DEERE CO', 'Dell Inc.', 'DEAN FOODS CO', 'DISCOVER FIN SVCS', 'QUEST DIAGNOSTC', 'D R HORTON INC', 'DANAHER CP', 'WALT DISNEY-DISNEY C', 'THE NEW D&B CORP', 'DENBURY RES INC (HLD', 'DIAMOND OFFSHORE DRL', 'DOVER CP', 'DOW CHEMICAL', 'DR PEPPER SNAPPLE GP', 'DARDEN RESTAURANTS', 'D T E ENERGY CO HLDG', 'The DIRECTV Group, Inc.', 'DUKE ENERGY CP HL CO', 'DAVITA INC', 'DEVON ENERGY CP (OK)', 'DYNEGY INC CL A NEW', 'eBay Inc.', 'ECOLAB INC', 'CONS EDISON INC', 'EQUIFAX INC', 'EDISON INTL', 'EASTMAN KODAK CO', 'ESTEE LAUDER COS INC', 'E M C CP', 'EASTMAN CHEM CO', 'EMERSON ELEC CO', 'EOG RESOURCES INC', 'EL PASO CORPORATION', 'EMBARQ CORP', 'EQUITY RESIDENTAL', 'EQT CORPORATION', 'Electronic Arts Inc.', 'Express Scripts, Inc.', 'ENSCO INTL INC', 'E', 'EATON CP', 'ENTERGY CP', 'EXELON CORPORATION', 'Expeditors International of Was', 'Expedia, Inc.', 'FORD MOTOR CO', 'Fastenal Company', 'FREEPORT MCMORAN B', 'FAMILY DOLLAR STORES', 'FEDEX CORP', 'FIRSTENERGY CP', 'FIRST HORIZON NTL CP', 'FEDERATED INV INC', 'FIDELITY NAT INF SVC', 'Fiserv, Inc.', 'Fifth Third Bancorp', 'FLIR Systems, Inc.', 'FLUOR CP (NEW)', 'FLOWSERVE CP', 'FORTUNE BRANDS INC', 'F P L GROUP INC', 'FOREST LABS CL A', 'FRONTIER COMMUN CP', 'NICOR INC', 'GANNETT CO INC', 'GEN DYNAMICS CP', 'GEN ELECTRIC CO', 'Genzyme Corporation', 'Gilead Sciences, Inc.', 'GEN MILLS INC', 'CORNING INC', 'GEN MOTORS', 'GAMESTOP CORP', 'GENWORTH FINANCIAL', 'Google Inc.', 'GENUINE PARTS CO', 'GAP INC', 'GOODRICH CORPORATION', 'GOLDMAN SACHS GRP', 'GOODYEAR TIRE RUBBER', 'GRAINGER W W INC', 'HALLIBURTON CO', 'HARMAN INTL INDS', 'HASBRO INC', 'Huntington Bancshares Incorpora', 'Hudson City Bancorp, Inc.', 'HEALTH CARE REIT', 'HCP, INC.', 'HOME DEPOT INC', 'HESS CP', 'HARTFORD FIN SVC', 'HEINZ H J CO', 'HARLEY DAVIDSON', 'HONEYWELL INTL INC', 'STARWOOD HOTELS&RES', 'HEWLETT PACKARD CO', 'H R BLOCK INC', 'HORMEL FOODS CP', 'HARRIS CP', 'HOSPIRA INC', 'HOST HOTELS & RESORT', 'THE HERSHEY COMPANY', 'HUMANA INC', 'INTL BUSINESS MACH', 'INTERCNTNTLEXCHANGE', 'INTL FLAVORS FRAG', 'INTL GAME TECH', 'Intel Corporation', 'Intuit Inc.', 'INTL PAPER', 'INTERPUBLIC GROUP', 'INGERSOLL RAND LTD A', 'IRON MOUNTAIN (DEL)', 'Intuitive Surgical, Inc.', 'I T T CORPORATION', 'ILL TOOL WORKS INC', 'INVESCO PLC NEW', 'Sun Microsystems, Inc.', 'JABIL CIRCUIT INC', 'JOHNSON CONTROLS INC', 'PENNEY J C CO HOLDIN', 'JDS Uniphase Corporation', 'JACOBS ENGINEERNG GP', 'JOHNSON AND JOHNS DC', 'JANUS CAP GP CMN STK', 'JP MORGAN CHASE CO', 'NORDSTROM INC', 'KELLOGG CO', 'KB HOME', 'KEYCORP', 'KRAFT FOODS INC', 'KING PHARMACEUTICALS', 'KIMCO REALTY CP', 'KLA-Tencor Corporatio', 'KIMBERLY CLARK CP', 'COCA COLA CO THE', 'KROGER CO', 'KOHLS CP', 'LOEWS CP', 'LEGGETT PLATT INC', 'LENNAR CP CL A', 'LABORATORY CORP NEW', 'Life Technologies Corporation', 'L-3 COMM HLDGS INC', 'Linear Technology Corporation', 'LILLY ELI CO', 'LEGG MASON INC', 'LOCKHEED MARTIN CP', 'LINCOLN NATL CP', 'LORILLARD, INC', 'LOWES COMPANIES', 'LSI CORPORATION', 'LIMITED BRANDS INC', 'LEUCADIA NATL CP', 'SOUTHWEST AIRLINES', 'LEXMARK INTL INC', "MACY'S INC", 'MASTERCARD INC', 'MARRIOT INT CL A', 'MASCO CP', 'MATTEL INC', 'M B I A INC', 'MCDONALDS CP', 'Microchip Technology Incorporat', 'MCKESSON CORP', "MOODY'S CORP", 'MEREDITH CP', 'MEDTRONIC INC', 'MASSEY ENERGY CO', 'METLIFE INC', 'MCAFEE, INC', 'MCGRAW HILL COS THE', 'MEDCOHEALTH SOLUTNS', 'NEW M&I CORPORATION', 'MILLIPORE CP', 'MCCORMICK & CO', 'MARSH MCLENNAN CO', '3M COMPANY', 'ALTRIA GROUP INC', 'Molex Incorporated', 'MONSANTO COMPANY', 'MOTOROLA INC', 'MERCK CO INC', 'MARATHON OIL CORP', 'MORGAN STANLEY', 'Microsoft Corporation', 'M&T BANK CORP', 'MANITOWOC CO INC', 'MICRON TECHNOLOGY', 'MURPHY OIL CP HLDG', 'MEADWESTVACO CORP', 'MONSTER WORLDWIDE', 'Mylan Inc.', 'NOBLE ENERGY INC', 'NABORS INDS INC NEW', 'The NASDAQ OMX Group, Inc.', 'NEWMONT MIN CP (HLDG', 'NISOURCE INC HLDG CO', 'NIKE INC CL B', 'NORTHROP GRUM HOL CO', 'NATL OILWELL VARCO', 'Novell, Inc.', 'NORFOLK SO CP', 'NATL SEMICONDUCTOR', 'NetApp, Inc.', 'Northern Trust Corporation', 'NORTHEAST UTIL', 'NUCOR CP', 'NVIDIA Corporation', 'Novellus Systems, Inc.', 'NEWELL RUBBERMAID', 'News Corporation', 'N Y TIMES CL A', 'NYSE EURONEXT', 'OFFICE DEPOT INC', 'OWENS ILLINOIS', 'OMNICOM GP INC', 'Oracle Corporation', "O'Reilly Automotive, Inc.", 'OCCIDENTAL PET', 'Paychex, Inc.', "People's United Financial, Inc.", 'PEPSI BOTTLING GRP', 'PITNEY BOWES INC', 'PACCAR Inc.', 'PG&E CP', 'PLUM CREEK TIM REIT', 'PRECISION CASTPARTS', 'Patterson Companies Inc.', 'PUB ENTRPR GP', 'PEPSICO INC', 'PFIZER INC', 'PRINCIPAL FINL GROUP', 'PROCTER GAMBLE CO', 'PROGRESS ENERGY INC', 'PROGRESSIVE CP', 'PARKER HANNIFIN CP', 'PULTE HOMES, INC.', 'PERKIN ELMER INC', 'PROLOGIS SBI', 'PALL CP', 'PHILIP MORRIS INTL', 'P N C FIN SVCS GR', 'PINNACLE WEST CAP', 'PEPCO HOLDINGS INC', 'P P G IND', 'PPL CORP', 'PRUDENTIAL FINCL INC', 'PUBLIC STG', 'PACTIV CORP', 'PRAXAIR INC', 'PIONEER NATURAL RES', 'QWEST COMM INTL INC', 'QUALCOMM Incorporated', 'QLogic Corporation', 'RYDER SYSTEM INC', 'REYNOLDS AMERICAN', 'ROWAN COS INC', 'REGIONS FINANCIAL CP', 'ROBERT HALF INTL INC', 'RALPH LAUREN POLO CP', 'ROCKWELL AUTOMAT INC', 'RANGE RES CORP', 'RR DONNELLEY SONS', 'REPUBLIC SVCS INC', 'RADIOSHACK CORP', 'RAYTHEON CO (NEW)', 'IMS HEALTH INC', 'SPRINT NXTEL CP', 'Starbucks Corporation', 'SCANA CP NEW', 'The Charles Schwab Corporation', 'SPECTRA ENERGY', 'SEALED AIR CP NEW', 'SCHERING PLOUGH CP', 'Sears Holdings Corporation', 'SHERWIN WILLIAMS CO', 'Sigma-Aldrich Corporation', 'SMITH INTL INC', 'SMUCKERS J M NEW', 'SCHLUMBERGER LTD', 'SARA LEE CP', 'SLM CORPORATION', 'SNAP ON INC', 'SanDisk Corporation', 'SCRIPPS NETWORKS INT', 'SOUTHERN CO', 'SIMON PPTY GRP INC', 'Staples, Inc.', 'Stericycle, Inc.', 'SEMPRA ENERGY', 'SUNTRUST BANKS', 'ST. JUDE MEDICAL', 'QUESTAR CP', 'STATE STREET CP', 'CONSTELLATION BRD A', 'SUNOCO INC', 'SUPERVALU INC', 'STANLEY WORKS THE', 'SOUTHWESTERN ENERGY', 'SAFEWAY STORES INC', 'STRYKER CP', 'Symantec Corporation', 'SYSCO CP', 'AT&T INC.', 'MOLSON COORS CO CL B', 'TERADATA CORP', 'TECO ENERGY INC', 'INTEGRYS ENERGY GRP', 'TYCO ELECTRONICS', 'TERADYNE INC', 'TARGET CP', 'TENET HLTHCRE CP', 'TITANIUM METALS CORP', 'TIFFANY AND CO', 'T J X COS INC', 'Tellabs, Inc.', 'TORCHMARK CP', 'THERMO FISHER SCIENT', 'T. Rowe Price Group, Inc.', 'THE TRAVELERS CO', 'TYSON FOODS INC CL A', 'TESORO CORP', 'TOTAL SYSTEM SVC INC', 'TIME WARNER CABLE', 'TIME WARNER INC NEW', 'TEXAS INSTRUMENTS', 'TEXTRON INC', 'UNITEDHEALTH GROUP', 'UNUM GROUP', 'UNION PACIFIC', 'UNITED PARCEL SVC', 'US BANCORP', 'UNITED TECH', 'VARIAN MED SYS INC', 'V F CP', 'VIACOM INC CL B', 'VALERO ENERGY CP', 'VULCAN MATERIALS HC', 'VORNADO REALTY TRUST', 'VeriSign, Inc.', 'VENTAS INC', 'VERIZON COMMUN', 'WALGREEN CO', 'WATERS CP', 'WISCONSIN ENERGY CP', 'WELLS FARGO & CO NEW', 'Whole Foods Market, Inc.', 'MEMC ELECTRONIC MTRL', 'WHIRLPOOL CP', 'WINDSTREAM CORP', 'WELLPOINT INC.', 'WILLIAMS COS', 'WASTE MGMT INC', 'WAL MART STORES', 'WATSON PHARMACEUTCLS', 'WASHINGTN POST CO B', 'WESTERN UNION COMPAN', 'WEYERHAEUSER CO', 'WYETH', 'WYNDHAM WORLDWIDE', 'Wynn Resorts, Limited', 'UNITED STATES STEEL', 'XCEL ENERGY INC', 'XL CAPITAL LTD', 'Xilinx, Inc.', 'EXXON MOBIL CP', 'DENTSPLY International Inc.', 'XEROX CP', 'XTO ENERGY INC', 'Yahoo! Inc.', 'YUM BRANDS INC', 'Zions Bancorporation', 'ZIMMER HOLDINGS INC']
+
+#EUROSTOXX50:
+eurostoxx50_symbols=['AABA.AS', 'ACA.PA', 'AGN.AS', 'AH.AS', 'AI.PA', 'AIB.IR', 'ALV.DE', 'BAS.DE', 'BAY.DE', 'BBVA.MC', 'BN.PA', 'BNP.PA', 'CA.PA', 'ALU.PA', 'CS.PA', 'DAI.DE', 'DBK.DE', 'DTE.DE', 'ELE.MC', 'ENEL.MI', 'ENI.MI', 'EOA.DE', 'FORA.AS', 'FP.PA', 'FTE.PA', 'G.MI', 'GLE.PA', 'BIBE.MC', 'ING.AS', 'ISP.MI', 'LG.PA', 'MC.PA', 'MUV2.DE', 'NOA3.DE', 'OR.PA', 'PHIA.AS', 'REP.MC', 'RNO.PA', 'RWE.DE', 'SAN.MC', 'SAN.PA', 'SAP.DE', 'SGO.PA', 'SIE.DE', 'SZE.PA', 'TEF.MC', 'TIT.MI', 'UCG.MI', 'UNA.AS', 'VIV.PA']
+eurostoxx50_names=['ABN AMRO HOLDING', 'CREDIT AGRICOLE', 'AEGON', 'AHOLD', 'AIR LIQUIDE', 'ALLIED IRISH BANKS', 'ALLIANZ N', 'BASF', 'BAYER', 'BBVA R', 'DANONE', 'BNP PARIBAS', 'CARREFOUR', 'ALCATEL-LUCENT', 'AXA', 'DAIMLER N', 'DEUTSCHE BANK N', 'DEUTSCHE TELEKOM N', 'ENDESA', 'ENEL', 'ENI', 'E.ON AG', 'FORTIS', 'TOTAL', 'FRANCE TELECOM', 'GENERALI', 'STE GENERALE-A-', 'IBERDROLA', 'ING GROEP', 'INTESA SANPAOLO', 'LAFARGE', 'LVMH', 'MUENCH RUECKVERS N', 'NOKIA', "L'OREAL", 'ROY.PHILIPS ELECTR', 'REPSOL YPF', 'RENAULT', 'RWE -A-', 'BANCO SANTANDER R', 'SANOFI-AVENTIS', 'SAP', 'SAINT GOBAIN', 'SIEMENS N', 'SUEZ (ROMPUS)', 'TELEFONICA', 'TELECOM ITALIA', 'UNICREDIT', 'UNILEVER CERT', 'VIVENDI']
+
+#IBEX35
+ibex35_symbols=['ABE.MC', 'ABG.MC', 'ACS.MC', 'ACX.MC', 'ANA.MC', 'BBVA.MC', 'BKT.MC', 'BME.MC', 'TEF.MC', 'BTO.MC', 'CIN.MC', 'CRI.MC', 'ELE.MC', 'ENG.MC', 'FCC.MC', 'FER.MC', 'GAM.MC', 'GAS.MC', 'GRF.MC', 'BIBE.MC', 'IBLA.MC', 'IBR.MC', 'IDR.MC', 'ITX.MC', 'MAP.MC', 'OHL.MC', 'POP.MC', 'REE.MC', 'REP.MC', 'SAB.MC', 'SAN.MC', 'SYV.MC', 'BTL.MC', 'TRE.MC', 'UNF.MC']
+ibex35_names=['ABERTIS -A-', 'ABENGOA', 'ACS', 'ACERINOX', 'ACCIONA', 'BBVA R', 'BANKINTER R', 'BME', 'TELEFONICA', 'BANESTO R', 'CINTRA', 'CRIT.CAIXACORP', 'ENDESA', 'ENAGAS', 'FCC', 'GRUPO FERROVIAL', 'GAMESA', 'GAS NATURAL SDG', 'GRIFOLS A', 'IBERDROLA', 'IBERIA', 'IBERDROLA RENOVABLE', 'INDRA SISTEMAS -A-', 'INDITEX R', 'MAPFRE', 'HUARTE LAIN', 'BANCO POPULAR R', 'RED EL CORPORACION', 'REPSOL YPF', 'BANCO SABADELL R', 'BANCO SANTANDER R', 'SACYR VALLEHERMOSO', 'TELECINCO', 'TECNICAS REUNIDAS', 'UNION FENOSA']
+
 #IBEXNM
 ibexnm_symbols=['ABG.MC', 'AMP.MC', 'AVZ.MC', 'BIO.MC', 'BMA.MC', 'TEC.MC', 'IDR.MC', 'JAZ.MC', 'NTC.MC', 'TPI.MC', 'ZEL.MC']
 ibexnm_names=['ABENGOA', 'AMPER', 'AVANZIT', 'PULEVA BIOTECH', 'BEFESA ', 'TECNOCOM', 'INDRA SISTEMAS -A-', 'JAZZTEL', 'NATRACEUTICAL', 'YELL PUBLICIDAD', 'ZELTIA']
@@ -50,9 +54,6 @@ mibtel_names=['A2A', 'ACEA', 'ACOTEL GROUP', 'ACQUE POTABILI', 'ACSM-AGAM', 'ACT
 midex_symbols=['ACE.MI', 'AT.MI', 'AZM.MI', 'BEN.MI', 'BIL.MI', 'BNS.MI', 'CASS.MI', 'CE.MI', 'CRG.MI', 'CVAL.MI', 'EDN.MI', 'EN.MI', 'ERG.MI', 'ES.MI', 'EXO.MI', 'FWB.MI', 'GEM.MI', 'HER.MI', 'IND.MI', 'IRD.MI', 'MI.MI', 'MT.MI', 'PG.MI', 'RCS.MI', 'REC.MI', 'SIS.MI', 'SRS.MI', 'TIS.MI', 'TOD.MI']
 midex_names=['ACEA', 'AUTOSTRADA TO-MI', 'AZIMUT HOLDING', 'BENETTON GROUP', 'BANCA ITALEASE', 'BENI STABILI', 'CATTOLICA ASS', 'CREDITO EMILIANO', 'BANCA CARIGE', 'CRED. VALTELLINESE', 'EDISON', 'ENIA', 'ERG', "GR EDIT L'ESPRESSO", 'EXOR', 'FASTWEB', 'GEMINA', 'HERA', 'INDESIT COMPANY', 'IRIDE', 'MILANO ASS.', 'MAIRE TECNIMONT', 'SEAT PAGINE GIALLE', 'RCS MEDIAGROUP', 'RECORDATI', 'SIAS', 'SARAS', 'TISCALI', "TOD'S"]
 
-#S&P 500
-sp500_symbols=['A', 'AA', 'AAPL', 'ABC', 'ABT', 'ACS', 'ADBE', 'ADI', 'ADM', 'ADP', 'ADSK', 'AEE', 'AEP', 'AES', 'AET', 'AFL', 'AGN', 'AIG', 'AIV', 'AIZ', 'AKAM', 'AKS', 'ALL', 'ALTR', 'AMAT', 'AMD', 'AMGN', 'AMP', 'AMT', 'AMZN', 'AN', 'ANF', 'AOC', 'APA', 'APC', 'APD', 'APH', 'APOL', 'ATI', 'AVB', 'AVP', 'AVY', 'AXP', 'AYE', 'AZO', 'BA', 'BAC', 'BAX', 'BBBY', 'BBT', 'BBY', 'BCR', 'BDK', 'BDX', 'BEN', 'BF-B', 'BHI', 'BIG', 'BIIB', 'BJS', 'BK', 'BLL', 'BMC', 'BMS', 'BMY', 'BNI', 'BRCM', 'BSX', 'BTU', 'BXP', 'C', 'CA', 'CAG', 'CAH', 'CAM', 'CAT', 'CB', 'CBE', 'CBG', 'CBS', 'CCE', 'CCL', 'CEG', 'CELG', 'CEPH', 'CF', 'CHK', 'CHRW', 'CI', 'CIEN', 'CINF', 'CIT', 'CL', 'CLX', 'CMA', 'CMCSA', 'CME', 'CMI', 'CMS', 'CNP', 'CNX', 'COF', 'COG', 'COH', 'COL', 'COP', 'COST', 'COV', 'CPB', 'CPWR', 'CRM', 'CSC', 'CSCO', 'CSX', 'CTAS', 'CTL', 'CTSH', 'CTX', 'CTXS', 'CVG', 'CVH', 'CVS', 'CVX', 'D', 'DD', 'DE', 'DELL', 'DF', 'DFS', 'DGX', 'DHI', 'DHR', 'DIS', 'DNB', 'DNR', 'DO', 'DOV', 'DOW', 'DPS', 'DRI', 'DTE', 'DTV', 'DUK', 'DVA', 'DVN', 'DYN', 'EBAY', 'ECL', 'ED', 'EFX', 'EIX', 'EK', 'EL', 'EMC', 'EMN', 'EMR', 'EOG', 'EP', 'EQ', 'EQR', 'EQT', 'ERTS', 'ESRX', 'ESV', 'ETFC', 'ETN', 'ETR', 'EXC', 'EXPD', 'EXPE', 'F', 'FAST', 'FCX', 'FDO', 'FDX', 'FE', 'FHN', 'FII', 'FIS', 'FISV', 'FITB', 'FLIR', 'FLR', 'FLS', 'FO', 'FPL', 'FRX', 'FTR', 'GAS', 'GCI', 'GD', 'GE', 'GENZ', 'GILD', 'GIS', 'GLW', 'GM', 'GME', 'GNW', 'GOOG', 'GPC', 'GPS', 'GR', 'GS', 'GT', 'GWW', 'HAL', 'HAR', 'HAS', 'HBAN', 'HCBK', 'HCN', 'HCP', 'HD', 'HES', 'HIG', 'HNZ', 'HOG', 'HON', 'HOT', 'HPQ', 'HRB', 'HRL', 'HRS', 'HSP', 'HST', 'HSY', 'HUM', 'IBM', 'ICE', 'IFF', 'IGT', 'INTC', 'INTU', 'IP', 'IPG', 'IR', 'IRM', 'ISRG', 'ITT', 'ITW', 'IVZ', 'JAVA', 'JBL', 'JCI', 'JCP', 'JDSU', 'JEC', 'JNJ', 'JNPRJNS', 'JPM', 'JWN', 'K', 'KBH', 'KEY', 'KFT', 'KG', 'KIM', 'KLAC', 'KMB', 'KO', 'KR', 'KSS', 'L', 'LEG', 'LEN', 'LH', 'LIFE', 'LLL', 'LLTC', 'LLY', 'LM', 'LMT', 'LNC', 'LO', 'LOW', 'LSI', 'LTD', 'LUK', 'LUV', 'LXK', 'M', 'MA', 'MAR', 'MAS', 'MAT', 'MBI', 'MCD', 'MCHP', 'MCK', 'MCO', 'MDP', 'MDT', 'MEE', 'MET', 'MFE', 'MHP', 'MHS', 'MI', 'MIL', 'MKC', 'MMC', 'MMM', 'MO', 'MOLX', 'MON', 'MOT', 'MRK', 'MRO', 'MS', 'MSFT', 'MTB', 'MTW', 'MU', 'MUR', 'MWV', 'MWW', 'MYL', 'NBL', 'NBR', 'NDAQ', 'NEM', 'NI', 'NKE', 'NOC', 'NOV', 'NOVL', 'NSC', 'NSM', 'NTAP', 'NTRS', 'NU', 'NUE', 'NVDA', 'NVLS', 'NWL', 'NWSA', 'NYT', 'NYX', 'ODP', 'OI', 'OMC', 'ORCL', 'ORLY', 'OXY', 'PAYX', 'PBCT', 'PBG', 'PBI', 'PCAR', 'PCG', 'PCL', 'PCP', 'PDCO', 'PEG', 'PEP', 'PFE', 'PFG', 'PG', 'PGN', 'PGR', 'PH', 'PHM', 'PKI', 'PLD', 'PLL', 'PM', 'PNC', 'PNW', 'POM', 'PPG', 'PPL', 'PRU', 'PSA', 'PTV', 'PX', 'PXD', 'Q', 'QCOM', 'QLGC', 'R', 'RAI', 'RDC', 'RF', 'RHI', 'RL', 'ROK', 'RRC', 'RRD', 'RSG', 'RSH', 'RTN', 'RX', 'S', 'SBUX', 'SCG', 'SCHW', 'SE', 'SEE', 'SGP', 'SHLD', 'SHW', 'SIAL', 'SII', 'SJM', 'SLB', 'SLE', 'SLM', 'SNA', 'SNDK', 'SNI', 'SO', 'SPG', 'SPLS', 'SRCL', 'SRE', 'STI', 'STJ', 'STR', 'STT', 'STZ', 'SUN', 'SVU', 'SWK', 'SWN', 'SWY', 'SYK', 'SYMC', 'SYY', 'T', 'TAP', 'TDC', 'TE', 'TEG', 'TEL', 'TER', 'TGT', 'THC', 'TIE', 'TIF', 'TJX', 'TLAB', 'TMK', 'TMO', 'TROW', 'TRV', 'TSN', 'TSO', 'TSS', 'TWC', 'TWX', 'TXN', 'TXT', 'UNH', 'UNM', 'UNP', 'UPS', 'USB', 'UTX', 'VAR', 'VFC', 'VIA-B', 'VLO', 'VMC', 'VNO', 'VRSN', 'VTR', 'VZ', 'WAG', 'WAT', 'WEC', 'WFC', 'WFMI', 'WFR', 'WHR', 'WIN', 'WLP', 'WMB', 'WMI', 'WMT', 'WPI', 'WPO', 'WU', 'WY', 'WYE', 'WYN', 'WYNN', 'X', 'XEL', 'XL', 'XLNX', 'XOM', 'XRAY', 'XRX', 'XTO', 'YHOO', 'YUM', 'ZION', 'ZMH']
-sp500_names=['AGILENT TECH INC', 'ALCOA INC', 'Apple Inc.', 'AMERISOURCEBERGEN CP', 'ABBOTT LABORATORIES', 'AFFILIATED COMP SVCS', 'Adobe Systems Incorporated', 'ANALOG DEVICES', 'ARCHER DANIELS MDLND', 'Automatic Data Processing, Inc.', 'Autodesk, Inc.', 'AMEREN CP', 'AMER ELECTRIC POW CO', 'AES CORPORATION', 'AETNA INC. NEW', 'A F L A C INC', 'ALLERGAN INC', 'AMER INTL GROUP INC', 'APT INV & MNGMNT CO', 'ASSURANT INC', 'Akamai Technologies, Inc.', 'A K STEEL HLDG CORP', 'ALLSTATE CP', 'Altera Corporation', 'Applied Materials, Inc.', 'ADV MICRO DEVICES', 'Amgen Inc.', 'AMERIPRISE FINANCIAL', 'AMER TOWER CP', 'Amazon.com, Inc.', 'AUTONATION INC', 'ABERCROMBIE & FITCH', 'AON CORP', 'APACHE CP', 'ANADARKO PETROLEUM', 'AIR PRODUCTS CHEM', 'AMPHENOL CP', 'Apollo Group, Inc.', 'ALLEGHENY TECH NEW', 'AVALONBAY CMTYS', 'AVON PRODUCTS INC', 'AVERY DENNISON CP', 'AMER EXPRESS INC', 'ALLEGHENY ENERGY INC', 'AUTOZONE INC', 'BOEING CO', 'BK OF AMERICA CP', 'BAXTER INTL INC', 'Bed Bath & Beyond Inc.', 'BB&T CP', 'BEST BUY CO INC', 'BARD C R INC', 'BLACK DECKER CP', 'BECTON DICKINSON CO', 'FRANKLIN RES INC', 'BROWN FORMAN INC B', 'BAKER HUGHES INTL', 'BIG LOTS INC', 'Biogen Idec Inc', 'BJ SERVICES CO', 'BANK OF NY MELLON CP', 'BALL CP', 'B M C SOFTWARE', 'BEMIS CO INC', 'BRISTOL MYERS SQIBB', 'BURLINGTN N SANTE FE', 'Broadcom Corporation', 'BOSTON SCIENTIFIC CP', 'PEABODY ENERGY CORP', 'BOSTON PPTYS INC', 'CITIGROUP INC', 'CA Inc.', 'CONAGRA FOOD INC', 'CARDINAL HEALTH INC', 'CAMERON INTL CP', 'CATERPILLAR INC', 'CHUBB CP THE', 'COOPER INDS CL A', 'CB RICHARD ELLIS GRP', 'CBS CORP CL B', 'COCA COLA ENTRPR INC', 'CARNIVAL CORP', 'CONSTELLATION ENGY', 'Celgene Corporation', 'Cephalon, Inc.', 'CF IND HLDGS INC', 'CHESAPEAKE ENERGY CP', 'C.H. Robinson Worldwide, Inc.', 'CIGNA CP', 'Ciena Corporation', 'Cincinnati Financial Corporatio', 'CIT GROUP INC (DEL)', 'COLGATE PALMOLIVE', 'CLOROX CO', 'COMERICA INC', 'Comcast Corporation', 'CME Group Inc.', 'CUMMINS INC', 'CMS ENERGY CP', 'CENTERPOINT ENERGY', 'CONS ENERGY INC', 'CAPITAL ONE FINANCIA', 'CABOT OIL GAS CP', 'COACH INC', 'ROCKWELL COLLINS INC', 'CONOCOPHILLIPS', 'Costco Wholesale Corporation', 'COVIDIEN LTD', 'CAMPBELL SOUP CO', 'Compuware Corporation', 'SALESFORCE.COM INC', 'COMPUTER SCIENCES CP', 'Cisco Systems, Inc.', 'C S X CP', 'Cintas Corporation', 'CENTURYTEL INC', 'Cognizant Technology Solutions ', 'CENTEX CP', 'Citrix Systems, Inc.', 'CONVERGYS CP', 'COVENTRY HLTH CARE', 'CVS CAREMARK CP', 'CHEVRON CORP', 'DOMINION RES NEW', 'DU PONT E I DE NEM', 'DEERE CO', 'Dell Inc.', 'DEAN FOODS CO', 'DISCOVER FIN SVCS', 'QUEST DIAGNOSTC', 'D R HORTON INC', 'DANAHER CP', 'WALT DISNEY-DISNEY C', 'THE NEW D&B CORP', 'DENBURY RES INC (HLD', 'DIAMOND OFFSHORE DRL', 'DOVER CP', 'DOW CHEMICAL', 'DR PEPPER SNAPPLE GP', 'DARDEN RESTAURANTS', 'D T E ENERGY CO HLDG', 'The DIRECTV Group, Inc.', 'DUKE ENERGY CP HL CO', 'DAVITA INC', 'DEVON ENERGY CP (OK)', 'DYNEGY INC CL A NEW', 'eBay Inc.', 'ECOLAB INC', 'CONS EDISON INC', 'EQUIFAX INC', 'EDISON INTL', 'EASTMAN KODAK CO', 'ESTEE LAUDER COS INC', 'E M C CP', 'EASTMAN CHEM CO', 'EMERSON ELEC CO', 'EOG RESOURCES INC', 'EL PASO CORPORATION', 'EMBARQ CORP', 'EQUITY RESIDENTAL', 'EQT CORPORATION', 'Electronic Arts Inc.', 'Express Scripts, Inc.', 'ENSCO INTL INC', 'E', 'EATON CP', 'ENTERGY CP', 'EXELON CORPORATION', 'Expeditors International of Was', 'Expedia, Inc.', 'FORD MOTOR CO', 'Fastenal Company', 'FREEPORT MCMORAN B', 'FAMILY DOLLAR STORES', 'FEDEX CORP', 'FIRSTENERGY CP', 'FIRST HORIZON NTL CP', 'FEDERATED INV INC', 'FIDELITY NAT INF SVC', 'Fiserv, Inc.', 'Fifth Third Bancorp', 'FLIR Systems, Inc.', 'FLUOR CP (NEW)', 'FLOWSERVE CP', 'FORTUNE BRANDS INC', 'F P L GROUP INC', 'FOREST LABS CL A', 'FRONTIER COMMUN CP', 'NICOR INC', 'GANNETT CO INC', 'GEN DYNAMICS CP', 'GEN ELECTRIC CO', 'Genzyme Corporation', 'Gilead Sciences, Inc.', 'GEN MILLS INC', 'CORNING INC', 'GEN MOTORS', 'GAMESTOP CORP', 'GENWORTH FINANCIAL', 'Google Inc.', 'GENUINE PARTS CO', 'GAP INC', 'GOODRICH CORPORATION', 'GOLDMAN SACHS GRP', 'GOODYEAR TIRE RUBBER', 'GRAINGER W W INC', 'HALLIBURTON CO', 'HARMAN INTL INDS', 'HASBRO INC', 'Huntington Bancshares Incorpora', 'Hudson City Bancorp, Inc.', 'HEALTH CARE REIT', 'HCP, INC.', 'HOME DEPOT INC', 'HESS CP', 'HARTFORD FIN SVC', 'HEINZ H J CO', 'HARLEY DAVIDSON', 'HONEYWELL INTL INC', 'STARWOOD HOTELS&RES', 'HEWLETT PACKARD CO', 'H R BLOCK INC', 'HORMEL FOODS CP', 'HARRIS CP', 'HOSPIRA INC', 'HOST HOTELS & RESORT', 'THE HERSHEY COMPANY', 'HUMANA INC', 'INTL BUSINESS MACH', 'INTERCNTNTLEXCHANGE', 'INTL FLAVORS FRAG', 'INTL GAME TECH', 'Intel Corporation', 'Intuit Inc.', 'INTL PAPER', 'INTERPUBLIC GROUP', 'INGERSOLL RAND LTD A', 'IRON MOUNTAIN (DEL)', 'Intuitive Surgical, Inc.', 'I T T CORPORATION', 'ILL TOOL WORKS INC', 'INVESCO PLC NEW', 'Sun Microsystems, Inc.', 'JABIL CIRCUIT INC', 'JOHNSON CONTROLS INC', 'PENNEY J C CO HOLDIN', 'JDS Uniphase Corporation', 'JACOBS ENGINEERNG GP', 'JOHNSON AND JOHNS DC', 'JANUS CAP GP CMN STK', 'JP MORGAN CHASE CO', 'NORDSTROM INC', 'KELLOGG CO', 'KB HOME', 'KEYCORP', 'KRAFT FOODS INC', 'KING PHARMACEUTICALS', 'KIMCO REALTY CP', 'KLA-Tencor Corporatio', 'KIMBERLY CLARK CP', 'COCA COLA CO THE', 'KROGER CO', 'KOHLS CP', 'LOEWS CP', 'LEGGETT PLATT INC', 'LENNAR CP CL A', 'LABORATORY CORP NEW', 'Life Technologies Corporation', 'L-3 COMM HLDGS INC', 'Linear Technology Corporation', 'LILLY ELI CO', 'LEGG MASON INC', 'LOCKHEED MARTIN CP', 'LINCOLN NATL CP', 'LORILLARD, INC', 'LOWES COMPANIES', 'LSI CORPORATION', 'LIMITED BRANDS INC', 'LEUCADIA NATL CP', 'SOUTHWEST AIRLINES', 'LEXMARK INTL INC', "MACY'S INC", 'MASTERCARD INC', 'MARRIOT INT CL A', 'MASCO CP', 'MATTEL INC', 'M B I A INC', 'MCDONALDS CP', 'Microchip Technology Incorporat', 'MCKESSON CORP', "MOODY'S CORP", 'MEREDITH CP', 'MEDTRONIC INC', 'MASSEY ENERGY CO', 'METLIFE INC', 'MCAFEE, INC', 'MCGRAW HILL COS THE', 'MEDCOHEALTH SOLUTNS', 'NEW M&I CORPORATION', 'MILLIPORE CP', 'MCCORMICK & CO', 'MARSH MCLENNAN CO', '3M COMPANY', 'ALTRIA GROUP INC', 'Molex Incorporated', 'MONSANTO COMPANY', 'MOTOROLA INC', 'MERCK CO INC', 'MARATHON OIL CORP', 'MORGAN STANLEY', 'Microsoft Corporation', 'M&T BANK CORP', 'MANITOWOC CO INC', 'MICRON TECHNOLOGY', 'MURPHY OIL CP HLDG', 'MEADWESTVACO CORP', 'MONSTER WORLDWIDE', 'Mylan Inc.', 'NOBLE ENERGY INC', 'NABORS INDS INC NEW', 'The NASDAQ OMX Group, Inc.', 'NEWMONT MIN CP (HLDG', 'NISOURCE INC HLDG CO', 'NIKE INC CL B', 'NORTHROP GRUM HOL CO', 'NATL OILWELL VARCO', 'Novell, Inc.', 'NORFOLK SO CP', 'NATL SEMICONDUCTOR', 'NetApp, Inc.', 'Northern Trust Corporation', 'NORTHEAST UTIL', 'NUCOR CP', 'NVIDIA Corporation', 'Novellus Systems, Inc.', 'NEWELL RUBBERMAID', 'News Corporation', 'N Y TIMES CL A', 'NYSE EURONEXT', 'OFFICE DEPOT INC', 'OWENS ILLINOIS', 'OMNICOM GP INC', 'Oracle Corporation', "O'Reilly Automotive, Inc.", 'OCCIDENTAL PET', 'Paychex, Inc.', "People's United Financial, Inc.", 'PEPSI BOTTLING GRP', 'PITNEY BOWES INC', 'PACCAR Inc.', 'PG&E CP', 'PLUM CREEK TIM REIT', 'PRECISION CASTPARTS', 'Patterson Companies Inc.', 'PUB ENTRPR GP', 'PEPSICO INC', 'PFIZER INC', 'PRINCIPAL FINL GROUP', 'PROCTER GAMBLE CO', 'PROGRESS ENERGY INC', 'PROGRESSIVE CP', 'PARKER HANNIFIN CP', 'PULTE HOMES, INC.', 'PERKIN ELMER INC', 'PROLOGIS SBI', 'PALL CP', 'PHILIP MORRIS INTL', 'P N C FIN SVCS GR', 'PINNACLE WEST CAP', 'PEPCO HOLDINGS INC', 'P P G IND', 'PPL CORP', 'PRUDENTIAL FINCL INC', 'PUBLIC STG', 'PACTIV CORP', 'PRAXAIR INC', 'PIONEER NATURAL RES', 'QWEST COMM INTL INC', 'QUALCOMM Incorporated', 'QLogic Corporation', 'RYDER SYSTEM INC', 'REYNOLDS AMERICAN', 'ROWAN COS INC', 'REGIONS FINANCIAL CP', 'ROBERT HALF INTL INC', 'RALPH LAUREN POLO CP', 'ROCKWELL AUTOMAT INC', 'RANGE RES CORP', 'RR DONNELLEY SONS', 'REPUBLIC SVCS INC', 'RADIOSHACK CORP', 'RAYTHEON CO (NEW)', 'IMS HEALTH INC', 'SPRINT NXTEL CP', 'Starbucks Corporation', 'SCANA CP NEW', 'The Charles Schwab Corporation', 'SPECTRA ENERGY', 'SEALED AIR CP NEW', 'SCHERING PLOUGH CP', 'Sears Holdings Corporation', 'SHERWIN WILLIAMS CO', 'Sigma-Aldrich Corporation', 'SMITH INTL INC', 'SMUCKERS J M NEW', 'SCHLUMBERGER LTD', 'SARA LEE CP', 'SLM CORPORATION', 'SNAP ON INC', 'SanDisk Corporation', 'SCRIPPS NETWORKS INT', 'SOUTHERN CO', 'SIMON PPTY GRP INC', 'Staples, Inc.', 'Stericycle, Inc.', 'SEMPRA ENERGY', 'SUNTRUST BANKS', 'ST. JUDE MEDICAL', 'QUESTAR CP', 'STATE STREET CP', 'CONSTELLATION BRD A', 'SUNOCO INC', 'SUPERVALU INC', 'STANLEY WORKS THE', 'SOUTHWESTERN ENERGY', 'SAFEWAY STORES INC', 'STRYKER CP', 'Symantec Corporation', 'SYSCO CP', 'AT&T INC.', 'MOLSON COORS CO CL B', 'TERADATA CORP', 'TECO ENERGY INC', 'INTEGRYS ENERGY GRP', 'TYCO ELECTRONICS', 'TERADYNE INC', 'TARGET CP', 'TENET HLTHCRE CP', 'TITANIUM METALS CORP', 'TIFFANY AND CO', 'T J X COS INC', 'Tellabs, Inc.', 'TORCHMARK CP', 'THERMO FISHER SCIENT', 'T. Rowe Price Group, Inc.', 'THE TRAVELERS CO', 'TYSON FOODS INC CL A', 'TESORO CORP', 'TOTAL SYSTEM SVC INC', 'TIME WARNER CABLE', 'TIME WARNER INC NEW', 'TEXAS INSTRUMENTS', 'TEXTRON INC', 'UNITEDHEALTH GROUP', 'UNUM GROUP', 'UNION PACIFIC', 'UNITED PARCEL SVC', 'US BANCORP', 'UNITED TECH', 'VARIAN MED SYS INC', 'V F CP', 'VIACOM INC CL B', 'VALERO ENERGY CP', 'VULCAN MATERIALS HC', 'VORNADO REALTY TRUST', 'VeriSign, Inc.', 'VENTAS INC', 'VERIZON COMMUN', 'WALGREEN CO', 'WATERS CP', 'WISCONSIN ENERGY CP', 'WELLS FARGO & CO NEW', 'Whole Foods Market, Inc.', 'MEMC ELECTRONIC MTRL', 'WHIRLPOOL CP', 'WINDSTREAM CORP', 'WELLPOINT INC.', 'WILLIAMS COS', 'WASTE MGMT INC', 'WAL MART STORES', 'WATSON PHARMACEUTCLS', 'WASHINGTN POST CO B', 'WESTERN UNION COMPAN', 'WEYERHAEUSER CO', 'WYETH', 'WYNDHAM WORLDWIDE', 'Wynn Resorts, Limited', 'UNITED STATES STEEL', 'XCEL ENERGY INC', 'XL CAPITAL LTD', 'Xilinx, Inc.', 'EXXON MOBIL CP', 'DENTSPLY International Inc.', 'XEROX CP', 'XTO ENERGY INC', 'Yahoo! Inc.', 'YUM BRANDS INC', 'Zions Bancorporation', 'ZIMMER HOLDINGS INC']
 
 #TORONTO
 
@@ -62,6 +63,25 @@ tsx_names=['BARRICK GOLD CORP COM NPV', "ASTRAL MEDIA INC CLASS'A'NON-VT", 'ATCO
 bvsp_symbols = ["ALLL11.SA", "AMBV4.SA", "ARCZ6.SA", "BBAS3.SA", "BBDC4.SA", "BNCA3.SA", "BRAP4.SA", "BRKM5.SA", "BRTO4.SA", "BRTP3.SA", "BRTP4.SA", "BTOW3.SA", "BVMF3.SA", "CCRO3.SA", "CESP6.SA", "CGAS5.SA", "CLSC6.SA", "CMIG4.SA", "CPFE3.SA", "CPLE6.SA", "CRUZ3.SA", "CSAN3.SA", "CSNA3.SA", "CYRE3.SA", "DURA4.SA", "ELET3.SA", "ELET6.SA", "ELPL6.SA", "EMBR3.SA", "GFSA3.SA", "GGBR4.SA", "GOAU4.SA", "GOLL4.SA", "ITSA4.SA", "JBSS3.SA", "KLBN4.SA", "LAME4.SA", "LIGT3.SA", "LREN3.SA", "NATU3.SA", "NETC4.SA", "PCAR4.SA", "PETR3.SA", "PETR4.SA", "PRGA3.SA", "RDCD3.SA", "RSID3.SA", "SBSP3.SA", "SDIA4.SA", "TAMM4.SA", "TCSL3.SA", "TCSL4.SA", "TLPP4.SA", "TMAR5.SA", "TNLP3.SA", "TNLP4.SA", "TRPL4.SA", "UGPA4.SA", "USIM3.SA", "USIM5.SA", "VALE3.SA", "VALE5.SA", "VCPA4.SA", "VIVO4.SA"]
 bvsp_names = ["ALL AMER LAT-UNT N2", "AMBEV -PN", "ARACRUZ -PNB N1", "BRASIL -ON ED NM", "BRADESCO -PN N1", "NOSSA CAIXA -ON NM", "BRADESPAR -PN N1", "BRASKEM -PNA N1", "BRASIL TELEC-PN N1", "BRASIL T PAR-ON N1", "BRASIL T PAR-PN N1", "B2W VAREJO -ON NM", "BMF BOVESPA -ON EJ NM", "CCR RODOVIAS-ON NM", "CESP -PNB EJ N1", "COMGAS -PNA", "CELESC -PNB N2", "CEMIG -PN N1", "CPFL ENERGIA-ON NM", "COPEL -PNB N1", "SOUZA CRUZ -ON ED", "COSAN -ON NM", "SID NACIONAL-ON", "CYRELA REALT-ON NM", "DURATEX -PN N1", "ELETROBRAS -ON N1", "ELETROBRAS -PNB EJ N1", "ELETROPAULO -PNB N2", "EMBRAER -ON NM", "GAFISA -ON NM", "GERDAU -PN N1", "GERDAU MET -PN N1", "GOL -PN N2", "ITAUSA -PN N1", "JBS -ON NM", "KLABIN S/A -PN ED N1", "LOJAS AMERIC-PN", "LIGHT S/A -ON NM", "LOJAS RENNER-ON NM", "NATURA -ON NM", "NET -PN N2", "P.ACUCAR-CBD-PN N1", "PETROBRAS -ON", "PETROBRAS -PN", "PERDIGAO S/A-ON NM", "REDECARD -ON NM", "ROSSI RESID -ON NM", "SABESP -ON NM", "SADIA S/A -PN N1", "TAM S/A -PN N2", "TIM PART S/A-ON", "TIM PART S/A-PN", "TELESP -PN ED", "TELEMAR N L -PNA", "TELEMAR -ON", "TELEMAR -PN", "TRAN PAULIST-PN N1", "ULTRAPAR -PN N1", "USIMINAS -ON N1", "USIMINAS -PNA N1", "VALE R DOCE -ON N1", "VALE R DOCE -PNA N1", "V C P -PN N1", "VIVO -PN"]
 
+#### MARKETS ####
+
+indexesnames = ["US indices", "European Indices", "Other Markets Indices"]
+idindexes = ["usindex", "eurindex", "othindex"]
+
+usmarkets = ["Dow Jones Industrial", "NASDAQ 100", "S&P 500"]
+idusmarkets = ["dow", "nasdaq", "sp500"]
+
+eumarkets = ["IBEX35", "SPANISH MERCADO CONTINUO", "IBEX NUEVO MERCADO", "FTSE 100", "FTSE 250", "EURO STOXX 50", "S&P / MIB INDX", "MIB 30", "MIDEX", "MIBTEL"]
+ideumarkets = ["ibex35", "mc", "ibexnm", "ftse100", "ftse250", "eurostoxx50", "spmib", "mib30", "midex", "mibtel"]
+
+otmarkets = ["Bovespa", "S&P/TSX Composite index"]
+idotmarkets = ["bvsp", "tsx"]
+
+#### INDEXES ####
+
+indexesnames = ["US indices", "European Indices", "Other Markets Indices"]
+idindexes = ["usindex", "eurindex", "othindex"]
+
 usindex_symbols = ["^DJI", "^NDX", "^GSPC", "^RUT"]
 usindex_names = ["Dow Jones Industrial Average", "NASDAQ-100", "S&P 500 INDEX", "RUSSELL 2000 INDEX"]
 
@@ -71,11 +91,33 @@ eurindex_names = ["UK FTSE 100", "GERMAN DAX", "FRANCE CAC 40", "SPANISH IBEX 35
 othindex_symbols = ["^BVSP", "^N225", "^HSI", "^TWII", "^BSESN", "^STI", "^JKSE"]
 othindex_names = ["BRASIL IBOVESPA", "JAPAN NIKKEI 225", "HONG KONG HANG SENG INDEX", "TAIWAN TSEC WEIGHTED INDEX", "INDIA BSE SENSEX", "SINGAPORE STRAITS TIMES INDEX", "INDONESIA COMPOSITE INDEX"]
 
+#### OTHER INSTRUMENTS ####
+
 currency_symbols = ["EURUSD=X", "EURGBP=X", "EURCHF=X", "EURSEK=X", "GBPUSD=X", "USDJPY=X", "USDCHF=X", "AUDUSD=X", "USDCAD=X"]
 currency_names = ["EUR/USD", "EUR/GBP", "EUR/CHF", "EUR/SEK", "GBP/USD", "USD/JPY", "USD/CHF", "AUD/USD", "USD/CAD"]
 
 etf_symbols = ["IXC", "IXN", "ICLN", "IXJ", "IXG", "IOO", "EWD", "EEM", "FXI", "BKF", "THD"]
 etf_names = ["iShares S&P Global Energy", "iShares S&P Global Technology", "iShares S&P Global Clean Energy Index", "iShares S&P Global Healthcare", "iShares S&P Global Financials", "iShares S&P Global 100 Index", "iShares MSCI Sweden Index", "iShares MSCI Emerging Markets Index", "iShares FTSE/Xinhua China 25 Index", "iShares MSCI BRIC Index", "iShares MSCI Thailand Invest Mkt Index"]
 
-localmarkets = [dow_jones_names, nasdaq_names, sp500_names, bvsp_names, ibex35_names, mc_names, ibexnm_names, ftse100_names, ftse250_names, eurostoxx50_names, spmib_names, mib30_names, midex_names, mibtel_names, tsx_names, usindex_names, eurindex_names, othindex_names, currency_names, etf_names]
-localids = [dow_jones_symbols, nasdaq_symbols, sp500_symbols, bvsp_symbols, ibex35_symbols, mc_symbols, ibexnm_symbols, ftse100_symbols, ftse250_symbols, eurostoxx50_symbols, spmib_symbols, mib30_symbols, midex_symbols, mibtel_symbols, tsx_symbols, usindex_symbols, eurindex_symbols, othindex_symbols, currency_symbols, etf_symbols]
+
+## GET ALL LISTS ##
+
+localmarkets = [indexesnames, usmarkets, eumarkets, otmarkets, currency_names,
+    etf_names]
+localids = [idindexes, idusmarkets, ideumarkets, idotmarkets, currency_symbols,
+    etf_symbols]
+
+wnamesindexes = [usindex_names, eurindex_names, othindex_names]
+widsindexes = [usindex_symbols, eurindex_symbols, othindex_symbols]
+
+omnames = [bvsp_names, tsx_names]
+omsymbols = [bvsp_symbols, tsx_symbols]
+
+eunames = [ibex35_names, mc_names, ibexnm_names, ftse100_names, ftse250_names,
+    eurostoxx50_names, spmib_names, mib30_names, midex_names, mibtel_names]
+eusymbols = [ibex35_symbols, mc_symbols, ibexnm_symbols, ftse100_symbols,
+    ftse250_symbols, eurostoxx50_symbols, spmib_symbols, mib30_symbols,
+    midex_symbols, mibtel_symbols]
+
+usnames = [dow_jones_names, nasdaq_names, sp500_names]
+ussymbols = [dow_jones_symbols, nasdaq_symbols, sp500_symbols]
diff --git a/pixmaps/maemoorg.png b/pixmaps/maemoorg.png
new file mode 100644 (file)
index 0000000..7bdae8f
Binary files /dev/null and b/pixmaps/maemoorg.png differ
index 4050da8..aa451af 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -11,7 +11,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA  02110-1301, USA.
 #
 
@@ -19,24 +19,24 @@ from distutils.core import setup
 
 # files to install
 inst_desktop = ['stockthis.desktop']
-inst_py = ['stockthis.py', 'marketdata.py']
-pixmaps = ['pixmaps/loading.gif', 'pixmaps/stockthis.png']
-inst_dbus = ['stockthis.service']
+inst_py = ['stockthis.py', 'marketdata.py', 'settings.py']
+pixmaps = ['pixmaps/stockthis.png']
+#inst_dbus = ['stockthis.service']
 inst_icon = ['stockthis.png']
 inst_icon_sca = ['pixmaps/stockthis.png']
 
 data_files = [
   ('share/applications/hildon', inst_desktop),
-  ('share/stockthis',   inst_py), 
+  ('share/stockthis',   inst_py),
   ('share/stockthis/pixmaps',   pixmaps),
   ('share/icons/hicolor/26x26/hildon/',   inst_icon),
   ('share/icons/hicolor/scalable/hildon/',   inst_icon_sca),
-  ('share/dbus-1/services',   inst_dbus),
+  #('share/dbus-1/services',   inst_dbus),
 ]
 
 setup(
   name         = 'stockthis',
-  version      = '0.1',
+  version      = '0.3',
   description  = 'Stocks application',
   author       = 'Daniel Martin Yerga',
   author_email = 'dyerga@gmail.com',
index 2b14d72..d04220f 100644 (file)
@@ -9,6 +9,5 @@ Icon=stockthis
 X-Icon-path=/usr/share/icons
 X-Window-Icon=stockthis
 X-HildonDesk-ShowInToolbar=true
-X-Osso-Service=net.yerga.stockthis
-X-Osso-Type=application/x-executable
-
+#X-Osso-Service=net.yerga.stockthis
+#X-Osso-Type=application/x-executable
index 578af6d..5f6892e 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2.5
 # -*- coding: UTF8 -*-
 # Copyright (C) 2008 by Daniel Martin Yerga
 # <dyerga@gmail.com>
@@ -28,7 +28,7 @@ import hildon
 #import osso
 #osso_c = osso.Context("net.yerga.stockthis", "0.3", False)
 
-from marketdata import markets, idmarket, localmarkets, localids
+import marketdata
 import settings
 
 
@@ -69,17 +69,19 @@ class StocksPy:
         menu = hildon.AppMenu()
         self.window.set_app_menu(menu)
         button = gtk.Button("About")
-        button.connect("clicked", self.on_about)
+        button.connect("clicked", About)
         menu.append(button)
         menu.show_all()
 
         vbox = gtk.VBox()
-        toolbar = self.main_toolbar(False, False)
+        toolbar = self.main_toolbar(False, False, None, '', '')
 
         parea = hildon.PannableArea()
         tv = hildon.GtkTreeView(ui_normal)
-        inmodel = self.__create_model(markets, idmarket)
-        tv.connect("row-activated", self.show_instrument_view, inmodel)
+        inmodel = self.__create_model(marketdata.main, marketdata.idmain)
+        tv.connect("row-activated", self.show_instrument_view, inmodel,
+                    marketdata.localmarkets, marketdata.localids,
+                    marketdata.idmain)
         tv.set_model(inmodel)
         self._tv_columns(tv)
         parea.add(tv)
@@ -91,16 +93,17 @@ class StocksPy:
         self.window.add(vbox)
         self.window.show_all()
 
-    def show_instrument_view(self, widget, path, column, inmodel):
+    def show_instrument_view(self, widget, path, column, inmodel, names,
+        ids, mindex):
         market = inmodel[path][0]
-
-        names = localmarkets[idmarket.index(market)]
-        ids = localids[idmarket.index(market)]
+        names = names[mindex.index(market)]
+        ids = ids[mindex.index(market)]
 
         window = hildon.StackableWindow()
+        window.set_title("StockThis - " + inmodel[path][1])
 
         vbox = gtk.VBox()
-        toolbar = self.main_toolbar(False, False)
+        toolbar = self.main_toolbar(False, False, None, '', '')
 
         parea = hildon.PannableArea()
         tv = hildon.GtkTreeView(ui_normal)
@@ -117,25 +120,57 @@ class StocksPy:
         window.add(vbox)
         window.show_all()
 
-
     def show_quotes_view(self, widget, path, column, model, portfolio):
         quote = model[path][0], model[path][1]
+        print "quote:", quote[0]
+        #('EURUSD=X', 'EUR/USD')
+
+        #Currencies and ETFs should show the list now -> view = True
+        #Other items show a new list with options
+        view = False
+        for i in marketdata.localids[(len(marketdata.localids)-2):]:
+            for j in i:
+                if quote[0] == j:
+                    print j
+                    view = True
+
+        if not view:
+            if quote[0] in marketdata.idindexes:
+                self.show_instrument_view(widget, path, column, model,
+                                        marketdata.wnamesindexes,
+                                        marketdata.widsindexes,
+                                        marketdata.idindexes)
+                return
+            if quote[0] in marketdata.idotmarkets:
+                self.show_instrument_view(widget, path, column, model,
+                                        marketdata.omnames,
+                                        marketdata.omsymbols,
+                                        marketdata.idotmarkets)
+                return
+            if quote[0] in marketdata.ideumarkets:
+                self.show_instrument_view(widget, path, column, model,
+                                        marketdata.eunames,
+                                        marketdata.eusymbols,
+                                        marketdata.ideumarkets)
+                return
+            if quote[0] in marketdata.idusmarkets:
+                self.show_instrument_view(widget, path, column, model,
+                                        marketdata.usnames,
+                                        marketdata.ussymbols,
+                                        marketdata.idusmarkets)
+                return
 
-        self.stocks_id = quote[0]
-        self.stocks_name = quote[1]
-        print quote
 
-        self.quotes_win = hildon.StackableWindow()
+        win = hildon.StackableWindow()
+        win.set_title("StockThis - Quotes View - " + quote[1])
 
         vbox = gtk.VBox()
-        toolbar = self.main_toolbar(True, portfolio)
 
-
-        self.titlelbl = gtk.Label('')
-        self.titlelbl.set_markup('<b><big>' + quote[1].replace('&', '') +
+        ltitle = gtk.Label('')
+        ltitle.set_markup('<b><big>' + quote[1].replace('&', '') +
                                  '</big></b>')
         color = gtk.gdk.color_parse("#03A5FF")
-        self.titlelbl.modify_fg(gtk.STATE_NORMAL, color)
+        ltitle.modify_fg(gtk.STATE_NORMAL, color)
 
         parea = hildon.PannableArea()
 
@@ -144,43 +179,43 @@ class StocksPy:
         hbox = gtk.HBox()
         label = gtk.Label('')
         label.set_markup('<b><big>Price:</big></b>')
-        self.lprice = gtk.Label('')
+        lprice = gtk.Label('')
         hbox.pack_start(label, False, False, 20)
-        hbox.pack_start(self.lprice, False, False, 245)
+        hbox.pack_start(lprice, False, False, 245)
         vbox1.pack_start(hbox, True, True, 0)
 
         hbox = gtk.HBox()
         label = gtk.Label('')
         label.set_markup('<b><big>Change:</big></b>')
-        self.lchange = gtk.Label('')
-        self.lpercent = gtk.Label('')
+        lchange = gtk.Label('')
+        lpercent = gtk.Label('')
         hbox.pack_start(label, False, False, 20)
-        hbox.pack_start(self.lchange, False, False, 205)
-        hbox.pack_start(self.lpercent, False, False, 0)
+        hbox.pack_start(lchange, False, False, 205)
+        hbox.pack_start(lpercent, False, False, 0)
         vbox1.pack_start(hbox, True, True, 0)
 
         hbox = gtk.HBox()
         label = gtk.Label('')
         label.set_markup('<b><big>Volume:</big></b>')
-        self.lvolume = gtk.Label('')
+        lvolume = gtk.Label('')
         hbox.pack_start(label, False, False, 20)
-        hbox.pack_start(self.lvolume, False, False, 207)
+        hbox.pack_start(lvolume, False, False, 207)
         vbox1.pack_start(hbox, True, True, 0)
 
         hbox = gtk.HBox()
         label = gtk.Label('')
         label.set_markup('<b><big>52 week high:</big></b>')
-        self.l52whigh = gtk.Label('')
+        l52whigh = gtk.Label('')
         hbox.pack_start(label, False, False, 20)
-        hbox.pack_start(self.l52whigh, False, False, 110)
+        hbox.pack_start(l52whigh, False, False, 110)
         vbox1.pack_start(hbox, True, True, 0)
 
         hbox = gtk.HBox()
         label = gtk.Label('')
         label.set_markup('<b><big>52 week low:</big></b>')
-        self.l52wlow = gtk.Label('')
+        l52wlow = gtk.Label('')
         hbox.pack_start(label, False, False, 20)
-        hbox.pack_start(self.l52wlow, False, False, 125)
+        hbox.pack_start(l52wlow, False, False, 125)
         vbox1.pack_start(hbox, True, True, 0)
 
         hbox = gtk.HBox()
@@ -189,37 +224,37 @@ class StocksPy:
                 "900", "1000"]
         selector = self.create_selector(data, True)
         button1.set_selector(selector)
-        button1.set_title("Shares")
+        button1.set_title("Your shares")
         #FIXME: Improve as it's shown you have a component in your portfolio
-        shares = self.get_shares_from_symbol()
+        shares = self.get_shares_from_symbol(quote[0])
         button1.set_value(shares)
         hbox.pack_start(button1, True, True, 0)
 
         button = hildon.Button(fhsize, horbtn)
         button.set_title("Add to Portfolio")
-        button.connect("clicked", self.add_to_portfolio, button1)
+        button.connect("clicked", self.add_to_portfolio, button1, quote[0], quote[1])
         hbox.pack_start(button, True, True, 0)
 
         hbox1 = gtk.HBox()
         label = gtk.Label('')
         label.set_markup('<b><big>Shares:</big></b>')
-        self.shares = gtk.Label(shares)
+        lshares = gtk.Label(shares)
         hbox1.pack_start(label, False, False, 20)
-        hbox1.pack_start(self.shares, False, False, 215)
+        hbox1.pack_start(lshares, False, False, 215)
 
         hbox2 = gtk.HBox()
         label = gtk.Label('')
         label.set_markup('<b><big>Holdings Value:</big></b>')
-        self.holdingsvalue = gtk.Label("")
+        holdingsvalue = gtk.Label("")
         hbox2.pack_start(label, False, False, 20)
-        hbox2.pack_start(self.holdingsvalue, False, False, 85)
+        hbox2.pack_start(holdingsvalue, False, False, 85)
 
         hbox3 = gtk.HBox()
         label = gtk.Label('')
         label.set_markup("<b><big>Day's Value Change:</big></b>")
-        self.dayvaluechange = gtk.Label("")
+        dayvaluechange = gtk.Label("")
         hbox3.pack_start(label, False, False, 20)
-        hbox3.pack_start(self.dayvaluechange, False, False, 10)
+        hbox3.pack_start(dayvaluechange, False, False, 10)
 
         if not portfolio:
             vbox1.pack_start(hbox, False, False, 0)
@@ -230,41 +265,44 @@ class StocksPy:
 
         parea.add_with_viewport(vbox1)
 
-        vbox.pack_start(self.titlelbl, False, False, 0)
+        widgets = [win, ltitle, lprice, lchange,  lpercent, lvolume, l52whigh, l52wlow, lshares, holdingsvalue, dayvaluechange]
+
+        toolbar = self.main_toolbar(True, portfolio, widgets, quote[0], quote[1])
+
+        vbox.pack_start(ltitle, False, False, 0)
         vbox.pack_start(gtk.HSeparator(), False, False, 0)
         vbox.pack_start(parea, True, True, 0)
         vbox.pack_start(gtk.HSeparator(), False, False, 5)
         vbox.pack_start(toolbar, False, False, 0)
 
-        self.quotes_win.add(vbox)
-        self.quotes_win.show_all()
-        self.show_data(quote[0], self.quotes_win, shares)
 
-    def get_shares_from_symbol(self):
+        win.add(vbox)
+        win.show_all()
+        self.show_data(quote[0], widgets, shares)
+
+    def get_shares_from_symbol(self, symbol):
         portfolio_data = settings.load_portfolio(settingsdb)
         shares = "0"
         for item in portfolio_data :
-            if self.stocks_id in item:
+            if symbol in item:
                 shares = item[2]
         return shares
 
-    def add_to_portfolio(self, widget, button):
+    def add_to_portfolio(self, widget, button, symbol, name):
         shares = button.get_value()
-        self.stocks_id
-        self.stocks_name
 
         portfolio = settings.load_portfolio(settingsdb)
         index = "None"
         for item in portfolio:
-            if self.stocks_id in item:
+            if symbol in item:
                 index = portfolio.index(item)
 
-        item = [self.stocks_id, self.stocks_name, shares, '-']
+        item = [symbol, name, shares, '-']
 
         if index is "None":
             settings.insert_new_item_to_portfolio(settingsdb, item)
         else:
-            settings.delete_item_from_portfolio(settingsdb, self.stocks_id)
+            settings.delete_item_from_portfolio(settingsdb, symbol)
             settings.insert_new_item_to_portfolio(settingsdb, item)
 
         self.show_info_banner(widget, "Added to portfolio")
@@ -280,20 +318,22 @@ class StocksPy:
 
         return selector
 
-    def show_data(self, quote, win, shares):
+    def show_data(self, symbol, widgets, shares):
         import thread
-        winprogind(win, 1)
-        thread.start_new_thread(self.get_data, (quote, win, shares))
+        winprogind(widgets[0], 1)
+        thread.start_new_thread(self.get_data, (symbol, widgets, shares))
 
-    def get_data(self, quote, win, shares):
+    def get_data(self, symbol, widgets, shares):
         from ystockquote import ystockquote as yt
+        win, ltitle, lprice, lchange,  lpercent, lvolume, l52whigh, l52wlow, lshares, holdingsvalue, dayvaluechange = widgets
+
         try:
-            data = yt.get_all(quote)
+            data = yt.get_all(symbol)
         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>')
+            ltitle.set_markup('<b><big>Failed to get data</big></b>')
 
         try:
             ch_percent = \
@@ -302,21 +342,21 @@ class StocksPy:
         except ValueError:
             ch_percent = 0.0
 
-        self.lprice.set_label(data['price'])
-        self.lchange.set_label(data['change'])
-        self.lpercent.set_label('%6.2f %%' % ch_percent)
+        lprice.set_label(data['price'])
+        lchange.set_label(data['change'])
+        lpercent.set_label('%6.2f %%' % ch_percent)
 
         if '-' in data['change']:
             color = gtk.gdk.color_parse("#FF0000")
         else:
             color = gtk.gdk.color_parse("#16EB78")
 
-        self.lpercent.modify_fg(gtk.STATE_NORMAL, color)
-        self.lchange.modify_fg(gtk.STATE_NORMAL, color)
+        lpercent.modify_fg(gtk.STATE_NORMAL, color)
+        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'])
+        lvolume.set_label(data['volume'])
+        l52whigh.set_label(data['52_week_high'])
+        l52wlow.set_label(data['52_week_low'])
 
         try:
             daychange = float(shares)*float(data['change'])
@@ -327,26 +367,27 @@ class StocksPy:
         except ValueError:
             holdvalue = 'N/A'
 
-        self.dayvaluechange.set_label(str(daychange))
-        self.holdingsvalue.set_label(str(holdvalue))
+        dayvaluechange.set_label(str(daychange))
+        holdingsvalue.set_label(str(holdvalue))
 
         winprogind(win, 0)
 
-    def refresh_stock_data(self, widget, portfolio):
+    def refresh_stock_data(self, widget, portfolio, widgets, symbol):
         if portfolio:
-            shares = self.get_shares_from_symbol()
+            shares = self.get_shares_from_symbol(symbol)
         else:
             shares = "0"
 
-        self.show_data(self.stocks_id, self.quotes_win, shares)
+        self.show_data(symbol, widgets, shares)
 
-    def show_graph_view(self, widget):
+    def show_graph_view(self, widget, symbol, name):
         win = hildon.StackableWindow()
+        win.set_title("StockThis - Graph View - " + name)
 
         vbox = gtk.VBox()
-        toolbar = self.main_toolbar(False, True)
+        toolbar = self.main_toolbar(False, True, None, '', '')
 
-        self.graphs_title = gtk.Label(self.stocks_name)
+        self.graphs_title = gtk.Label(name)
         color = gtk.gdk.color_parse("#03A5FF")
         self.graphs_title.modify_fg(gtk.STATE_NORMAL, color)
 
@@ -357,42 +398,42 @@ class StocksPy:
 
         button = hildon.Button(fhsize, horbtn)
         button.set_label('1d')
-        button.connect("clicked", self.show_graph, '1d', win)
+        button.connect("clicked", self.show_graph, '1d', win, symbol)
         hbox.pack_start(button)
 
         button = hildon.Button(fhsize, horbtn)
         button.set_label('5d')
-        button.connect("clicked", self.show_graph, '5d', win)
+        button.connect("clicked", self.show_graph, '5d', win, symbol)
         hbox.pack_start(button)
 
         button = hildon.Button(fhsize, horbtn)
         button.set_label('3m')
-        button.connect("clicked", self.show_graph, '3m', win)
+        button.connect("clicked", self.show_graph, '3m', win, symbol)
         hbox.pack_start(button)
 
         button = hildon.Button(fhsize, horbtn)
         button.set_label('6m')
-        button.connect("clicked", self.show_graph, '6m', win)
+        button.connect("clicked", self.show_graph, '6m', win, symbol)
         hbox.pack_start(button)
 
         button = hildon.Button(fhsize, horbtn)
         button.set_label('1y')
-        button.connect("clicked", self.show_graph, '1y', win)
+        button.connect("clicked", self.show_graph, '1y', win, symbol)
         hbox.pack_start(button)
 
         button = hildon.Button(fhsize, horbtn)
         button.set_label('2y')
-        button.connect("clicked", self.show_graph, '2y', win)
+        button.connect("clicked", self.show_graph, '2y', win, symbol)
         hbox.pack_start(button)
 
         button = hildon.Button(fhsize, horbtn)
         button.set_label('5y')
-        button.connect("clicked", self.show_graph, '5y', win)
+        button.connect("clicked", self.show_graph, '5y', win, symbol)
         hbox.pack_start(button)
 
         button = hildon.Button(fhsize, horbtn)
         button.set_label('Max')
-        button.connect("clicked", self.show_graph, 'max', win)
+        button.connect("clicked", self.show_graph, 'max', win, symbol)
         hbox.pack_start(button)
 
         vbox1 = gtk.VBox()
@@ -412,31 +453,30 @@ class StocksPy:
         win.add(vbox)
         win.show_all()
 
-        self.show_graph(None, '1d', win)
+        self.show_graph(None, '1d', win, symbol)
 
-    def show_graph(self, widget, option, win):
+    def show_graph(self, widget, option, win, symbol):
         import thread
         winprogind(win, 1)
-        thread.start_new_thread(self.get_graph_data, (option, win))
+        thread.start_new_thread(self.get_graph_data, (option, win, symbol))
 
-    def get_graph_data(self, option, win):
-        kind = self.stocks_id
+    def get_graph_data(self, option, win, symbol):
         if option == '1d':
-            url = 'http://uk.ichart.yahoo.com/b?s=%s' % kind
+            url = 'http://uk.ichart.yahoo.com/b?s=%s' % symbol
         elif option == '5d':
-            url = 'http://uk.ichart.yahoo.com/w?s=%s' % kind
+            url = 'http://uk.ichart.yahoo.com/w?s=%s' % symbol
         elif option == '3m':
-            url = 'http://chart.finance.yahoo.com/c/3m/s/%s' % kind.lower()
+            url = 'http://chart.finance.yahoo.com/c/3m/s/%s' % symbol.lower()
         elif option == '6m':
-            url = 'http://chart.finance.yahoo.com/c/6m/s/%s' % kind.lower()
+            url = 'http://chart.finance.yahoo.com/c/6m/s/%s' % symbol.lower()
         elif option == '1y':
-            url = 'http://chart.finance.yahoo.com/c/1y/s/%s' % kind.lower()
+            url = 'http://chart.finance.yahoo.com/c/1y/s/%s' % symbol.lower()
         elif option == '2y':
-            url = 'http://chart.finance.yahoo.com/c/2y/s/%s' % kind.lower()
+            url = 'http://chart.finance.yahoo.com/c/2y/s/%s' % symbol.lower()
         elif option == '5y':
-            url = 'http://chart.finance.yahoo.com/c/5y/s/%s' % kind.lower()
+            url = 'http://chart.finance.yahoo.com/c/5y/s/%s' % symbol.lower()
         elif option == 'max':
-            url = 'http://chart.finance.yahoo.com/c/my/s/%s' % kind.lower()
+            url = 'http://chart.finance.yahoo.com/c/my/s/%s' % symbol.lower()
 
         try:
             myimg = urllib2.urlopen(url)
@@ -469,7 +509,7 @@ class StocksPy:
             lstore.set(iter, 0, ids[item], 1, names[item])
         return lstore
 
-    def main_toolbar(self, quotesview, portfolio):
+    def main_toolbar(self, quotesview, portfolio, widgets, symbol, name):
         toolbar = gtk.HBox()
         toolbar.set_homogeneous(True)
 
@@ -479,11 +519,12 @@ class StocksPy:
 
         graph_btn = hildon.Button(fhsize, horbtn)
         graph_btn.set_title("Graph")
-        graph_btn.connect("clicked", self.show_graph_view)
+        graph_btn.connect("clicked", self.show_graph_view, symbol, name)
 
         refresh_btn = hildon.Button(fhsize, horbtn)
         refresh_btn.set_title("Refresh")
-        refresh_btn.connect("clicked", self.refresh_stock_data, portfolio)
+        refresh_btn.connect("clicked", self.refresh_stock_data, portfolio,
+                            widgets, symbol)
 
         if not portfolio:
             toolbar.pack_start(portfolio_btn)
@@ -499,6 +540,7 @@ class StocksPy:
         data = settings.load_portfolio(settingsdb)
 
         win = hildon.StackableWindow()
+        win.set_title("StockThis - Portfolio")
 
         vbox = gtk.VBox()
 
@@ -646,20 +688,133 @@ class StocksPy:
         else:
             return True
 
-    def on_about(self, widget):
-        dialog = gtk.AboutDialog()
-        dialog.set_name("StockThis")
-        dialog.set_version("0.3")
-        dialog.set_copyright("Copyright © 2009")
-        dialog.set_website("http://stockthis.garage.maemo.org")
-        dialog.set_authors(["Daniel Martin Yerga <dyerga@gmail.com>"])
-        logo = gtk.gdk.pixbuf_new_from_file(imgdir + "stockthis.png")
-        dialog.set_logo(logo)
-        dialog.set_license("This program is released under the GNU\nGeneral Public License. Please visit \nhttp://www.gnu.org/copyleft/gpl.html\nfor details.")
-        dialog.set_artists(["Logo by Daniel Martin Yerga"])
+class About:
+
+    def __init__(self, widget):
+        dialog = gtk.Dialog(title='About', parent=None, flags=0)
+        dialog.set_has_separator(False)
+        dialog.set_size_request(-1, 400)
+
+        self.info_lb = gtk.Label()
+        self.info_lb.set_line_wrap(True)
+
+        hbox1 = gtk.HBox()
+
+        button = hildon.Button(fhsize, horbtn)
+        button.set_title('Description')
+        button.connect("clicked", self.show_info, 'description')
+        hbox1.pack_start(button, True, True, 0)
+
+        button = hildon.Button(fhsize, horbtn)
+        button.set_title('Credits')
+        button.connect("clicked", self.show_info, 'credits')
+        hbox1.pack_start(button, True, True, 0)
+
+        button = hildon.Button(fhsize, horbtn)
+        button.set_title('License')
+        button.connect("clicked", self.show_info, 'license')
+        hbox1.pack_start(button, True, True, 0)
+
+        button = hildon.Button(fhsize, horbtn)
+        button.set_title('Donate')
+        button.connect("clicked", self.show_info, 'donate')
+        hbox1.pack_start(button, True, True, 0)
+
+        button = hildon.Button(fhsize, horbtn)
+        button.set_title('Report ')
+        button.connect("clicked", self.show_info, 'report')
+        hbox1.pack_start(button, True, True, 0)
+
+        button = hildon.Button(fhsize, horbtn)
+        button.set_title(' Vote ')
+        button.connect("clicked", self.show_info, 'vote')
+        hbox1.pack_start(button, True, True, 0)
+
+        self.action_btn = hildon.Button(fhsize, horbtn)
+        self.image = gtk.Image()
+
+        self.show_info(None, 'description')
+
+        dialog.vbox.pack_start(self.action_btn, False, False, 0)
+        dialog.vbox.pack_start(self.image, False, False, 5)
+        dialog.vbox.pack_start(self.info_lb, True, True, 0)
+        dialog.vbox.pack_start(hbox1, False, False, 0)
+
+        dialog.show_all()
+        self.action_btn.hide()
+        self.image.hide()
         dialog.run()
         dialog.destroy()
 
+    def do_action(self, widget, action):
+        import webbrowser
+        if action == "donate":
+            url = "http://stockthis.garage.maemo.org/donate.html"
+        elif action == "report":
+            url = "http://stockthis.garage.maemo.org/reporting.html"
+        elif action == "vote":
+            url = "http://maemo.org/downloads/product/stockthis"
+        webbrowser.open_new(url)
+
+    def show_info(self, widget, kind):
+        if kind == 'license':
+            self.action_btn.hide()
+            self.image.hide()
+            info = """<small><b>StockThis</b> is free software. It's using a GPL version 2 license or at your election any later version.
+
+Logo by Daniel Martin Yerga.
+</small>"""
+        elif kind == 'credits':
+            self.action_btn.hide()
+            self.image.hide()
+            info = """<small><b>Written by</b> Daniel Martin Yerga (dyerga@gmail.com)
+
+<b>Thanks</b> to everyone who has reported bugs, suggestions, giving spirits, critiques, writing blog articles about StockThis, and so on. Like always the list is extremely big and for not forget anybody, THANKS TO ALL!</small>"""
+        elif kind == 'description':
+            self.action_btn.hide()
+            self.image.hide()
+            info = """<b><big>StockThis 0.3</big></b>
+
+<i>StockThis is a stocks application for Maemo</i>
+
+<b>Web Page</b>:
+stockthis.garage.maemo.org"""
+
+        elif kind == 'donate':
+            self.action_btn.show()
+            self.image.hide()
+            self.action_btn.set_title('I want donate')
+            self.action_btn.connect("clicked", self.do_action, "donate")
+            info = """<small><b>StockThis</b> is a free (and gratis) software application.
+Developing good software takes time and hard work.
+
+<b>StockThis's author</b> develops the program in him 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 to feel that the hard work is appreciated.</small>
+"""
+
+        elif kind == 'report':
+            self.action_btn.show()
+            self.image.hide()
+            self.action_btn.set_title('Report bug')
+            self.action_btn.connect("clicked", self.do_action, "report")
+            info = """<small>StockThis is being improved thanks to bug reports. The author appreciates very much all these reports.
+If the application is raising an error when you're using it, you have two choices to report this error:
+1) Send the log from the application menu (if there's an error in the log).
+2) Write a bug report in the bugtracker of StockThis with as much information as possible (especially the log from the menu).</small>"""
+
+        elif kind == 'vote':
+            self.action_btn.show()
+            self.image.show()
+            self.image.set_from_file(imgdir + "maemoorg.png")
+            self.action_btn.set_title('Vote for StockThis')
+            self.action_btn.connect("clicked", self.do_action, "vote")
+            info = """<small>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.</small>"""
+
+        self.info_lb.set_markup(info)
+
+
 if __name__ == "__main__":
     stockspy = StocksPy()
     gtk.gdk.threads_enter()