home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / invest / chart.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  6.4 KB  |  176 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import gtk
  5. import gtk.gdk as gtk
  6. import gtk.glade as gtk
  7. import gobject
  8. import egg.trayicon as egg
  9. import gnomevfs
  10. import os
  11. import invest
  12. from gettext import gettext as _
  13. from invest import *
  14. import sys
  15. from os.path import join
  16.  
  17. class FinancialChart:
  18.     
  19.     def __init__(self, ui):
  20.         self.ui = ui
  21.         win = ui.get_widget('window')
  22.         win.set_title(_('Financial Chart'))
  23.         
  24.         try:
  25.             pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(join(invest.ART_DATA_DIR, 'invest-16.png'), -1, -1)
  26.             win.set_icon(pixbuf)
  27.             pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(join(invest.ART_DATA_DIR, 'invest.svg'), 96, 96)
  28.             self.ui.get_widget('plot').set_from_pixbuf(pixbuf)
  29.         except Exception:
  30.             msg = None
  31.  
  32.         for widget in [
  33.             't',
  34.             'q']:
  35.             ui.get_widget(widget).set_active(0)
  36.         
  37.         symbolentry = ui.get_widget('s')
  38.         
  39.         refresh_chart_callback = lambda w: self.on_refresh_chart()
  40.         for widgets, signal in [
  41.             (('pm5', 'pm10', 'pm20', 'pm50', 'pm100', 'pm200', 'pe5', 'pe10', 'pe20', 'pe50', 'pe100', 'pe200', 'pb', 'pp', 'ps', 'pv', 'ar', 'af', 'ap', 'aw', 'am', 'ass', 'afs', 'av', 'avm'), 'toggled'),
  42.             (('t', 'q'), 'changed'),
  43.             (('s',), 'activate')]:
  44.             for widget in widgets:
  45.                 ui.get_widget(widget).connect(signal, refresh_chart_callback)
  46.             
  47.         
  48.         ui.get_widget('progress').hide()
  49.         self.autorefresh_id = 0
  50.         ui.get_widget('autorefresh').connect('toggled', self.on_autorefresh_toggled)
  51.  
  52.     
  53.     def on_refresh_chart(self, from_timer = False):
  54.         tickers = self.ui.get_widget('s').get_text()
  55.         if tickers.strip() == '':
  56.             return True
  57.         
  58.         if from_timer and not ustime.hour_between(9, 16):
  59.             return True
  60.         
  61.         tickers = _[1]
  62.         win = self.ui.get_widget('window')
  63.         title = _('Financial Chart - %s')
  64.         titletail = ''
  65.         for ticker in tickers:
  66.             titletail += '%s / ' % ticker
  67.         
  68.         title = title % titletail
  69.         win.set_title(title[:-3])
  70.         opt = ''
  71.         for ticker in tickers[1:]:
  72.             opt += '&c=%s' % ticker
  73.         
  74.         p = ''
  75.         for name, param in [
  76.             ('pm5', 5),
  77.             ('pm10', 10),
  78.             ('pm20', 20),
  79.             ('pm50', 50),
  80.             ('pm100', 100),
  81.             ('pm200', 200),
  82.             ('pe5', 5),
  83.             ('pe10', 10),
  84.             ('pe20', 20),
  85.             ('pe50', 50),
  86.             ('pe100', 100),
  87.             ('pe200', 200),
  88.             ('pb', ''),
  89.             ('pp', ''),
  90.             ('ps', ''),
  91.             ('pv', '')]:
  92.             if self.ui.get_widget(name).get_active():
  93.                 p += '%s%s,' % (name[1], param)
  94.                 continue
  95.             []
  96.         
  97.         a = ''
  98.         for name, param in [
  99.             ('ar', 14),
  100.             ('af', 14),
  101.             ('ap', 12),
  102.             ('aw', 14),
  103.             ('am', '26-12-9'),
  104.             ('ass', ''),
  105.             ('afs', ''),
  106.             ('av', ''),
  107.             ('avm', '')]:
  108.             if self.ui.get_widget(name).get_active():
  109.                 a += '%s%s,' % (name[1:], param)
  110.                 continue
  111.             []
  112.         
  113.         url = CHART_BASE_URL % {
  114.             's': tickers[0],
  115.             't': self.ui.get_widget('t').get_active_text(),
  116.             'q': self.ui.get_widget('q').get_active_text(),
  117.             'l': 'off',
  118.             'z': 'l',
  119.             'p': p,
  120.             'a': a,
  121.             'opt': opt }
  122.         progress = self.ui.get_widget('progress')
  123.         progress.set_text(_('Opening Chart'))
  124.         progress.show()
  125.         gnomevfs.async.open(url, (lambda h, e: self.on_chart_open(h, e, url)))
  126.         self.on_autorefresh_toggled(self.ui.get_widget('autorefresh'))
  127.         return True
  128.  
  129.     
  130.     def on_chart_open(self, handle, exc_type, url):
  131.         progress = self.ui.get_widget('progress')
  132.         progress.set_text(_('Downloading Chart'))
  133.         if not exc_type:
  134.             loader = gtk.gdk.PixbufLoader()
  135.             handle.read(GNOMEVFS_CHUNK_SIZE, self.on_chart_read, (loader, url))
  136.         else:
  137.             handle.close((lambda : pass))
  138.             progress.set_text('')
  139.  
  140.     
  141.     def on_chart_read(self, handle, data, exc_type, bytes_requested, udata):
  142.         (loader, url) = udata
  143.         progress = self.ui.get_widget('progress')
  144.         progress.set_text(_('Reading Chart chunk'))
  145.         if not exc_type:
  146.             loader.write(data)
  147.         
  148.         if exc_type:
  149.             loader.close()
  150.             handle.close((lambda : pass))
  151.             self.ui.get_widget('plot').set_from_pixbuf(loader.get_pixbuf())
  152.             progress.set_text(url)
  153.         else:
  154.             progress.set_text(_('Downloading Chart'))
  155.             handle.read(GNOMEVFS_CHUNK_SIZE, self.on_chart_read, udata)
  156.  
  157.     
  158.     def on_autorefresh_toggled(self, autorefresh):
  159.         if self.autorefresh_id != 0:
  160.             gobject.source_remove(self.autorefresh_id)
  161.             self.autorefresh_id = 0
  162.         
  163.         if autorefresh.get_active():
  164.             self.autorefresh_id = gobject.timeout_add(AUTOREFRESH_TIMEOUT, self.on_refresh_chart, True)
  165.         
  166.  
  167.  
  168.  
  169. def show_chart(tickers):
  170.     ui = gtk.glade.XML(os.path.join(invest.GLADE_DATA_DIR, 'financialchart.glade'))
  171.     chart = FinancialChart(ui)
  172.     ui.get_widget('s').set_text(' '.join(tickers))
  173.     chart.on_refresh_chart()
  174.     return ui.get_widget('window')
  175.  
  176.