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 / preferences.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  4.7 KB  |  146 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. from gettext import gettext as _
  5. from os.path import join
  6. import gtk
  7. import gtk.glade as gtk
  8. import gobject
  9. import gconf
  10. import invest
  11. from gettext import gettext as _
  12. import cPickle
  13.  
  14. class PrefsDialog:
  15.     
  16.     def __init__(self, applet):
  17.         self.glade = gtk.glade.XML(join(invest.GLADE_DATA_DIR, 'prefs-dialog.glade'))
  18.         self.dialog = self.glade.get_widget('preferences')
  19.         self.treeview = self.glade.get_widget('stocks')
  20.         self.glade.get_widget('add').connect('clicked', self.on_add_stock)
  21.         self.glade.get_widget('add').connect('activate', self.on_add_stock)
  22.         self.glade.get_widget('remove').connect('clicked', self.on_remove_stock)
  23.         self.glade.get_widget('remove').connect('activate', self.on_remove_stock)
  24.         self.treeview.connect('key-press-event', self.on_tree_keypress)
  25.         store = gtk.ListStore(str, int, float, float)
  26.         self.treeview.set_model(store)
  27.         self.model = store
  28.         
  29.         def on_cell_edited(cell, path, new_text, col, typ):
  30.             
  31.             try:
  32.                 store[path][col] = typ(new_text)
  33.             except:
  34.                 pass
  35.  
  36.  
  37.         
  38.         def get_cell_data(column, cell, model, iter, data):
  39.             (typ, col) = data
  40.             if typ == int:
  41.                 cell.set_property('text', '%d' % typ(model[iter][col]))
  42.             elif typ == float:
  43.                 cell.set_property('text', '%.2f' % typ(model[iter][col]))
  44.             else:
  45.                 cell.set_property('text', typ(model[iter][col]))
  46.  
  47.         cell_description = gtk.CellRendererText()
  48.         cell_description.set_property('editable', True)
  49.         cell_description.connect('edited', on_cell_edited, 0, str)
  50.         column_description = gtk.TreeViewColumn(_('Symbol'), cell_description)
  51.         column_description.set_attributes(cell_description, text = 0)
  52.         self.treeview.append_column(column_description)
  53.         cell_description = gtk.CellRendererText()
  54.         cell_description.set_property('editable', True)
  55.         cell_description.connect('edited', on_cell_edited, 1, int)
  56.         column_description = gtk.TreeViewColumn(_('Amount'), cell_description)
  57.         column_description.set_cell_data_func(cell_description, get_cell_data, (int, 1))
  58.         self.treeview.append_column(column_description)
  59.         cell_description = gtk.CellRendererText()
  60.         cell_description.set_property('editable', True)
  61.         cell_description.connect('edited', on_cell_edited, 2, float)
  62.         column_description = gtk.TreeViewColumn(_('Price'), cell_description)
  63.         column_description.set_cell_data_func(cell_description, get_cell_data, (float, 2))
  64.         self.treeview.append_column(column_description)
  65.         cell_description = gtk.CellRendererText()
  66.         cell_description.set_property('editable', True)
  67.         cell_description.connect('edited', on_cell_edited, 3, float)
  68.         column_description = gtk.TreeViewColumn(_('Commission'), cell_description)
  69.         column_description.set_cell_data_func(cell_description, get_cell_data, (float, 3))
  70.         self.treeview.append_column(column_description)
  71.         for key, purchases in invest.STOCKS.items():
  72.             for purchase in purchases:
  73.                 store.append([
  74.                     key,
  75.                     purchase['amount'],
  76.                     purchase['bought'],
  77.                     purchase['comission']])
  78.             
  79.         
  80.         
  81.         try:
  82.             pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(join(invest.ART_DATA_DIR, 'invest-16.png'), -1, -1)
  83.             self.dialog.set_icon(pixbuf)
  84.         except Exception:
  85.             msg = None
  86.  
  87.         self.sync_ui()
  88.  
  89.     
  90.     def show_run_hide(self):
  91.         self.dialog.show_all()
  92.         self.dialog.run()
  93.         self.dialog.destroy()
  94.         invest.STOCKS = { }
  95.         
  96.         def save_symbol(model, path, iter):
  97.             if model[iter][0] not in invest.STOCKS:
  98.                 invest.STOCKS[model[iter][0]] = []
  99.             
  100.             invest.STOCKS[model[iter][0]].append({
  101.                 'amount': int(model[iter][1]),
  102.                 'bought': float(model[iter][2]),
  103.                 'comission': float(model[iter][3]) })
  104.  
  105.         self.model.foreach(save_symbol)
  106.         
  107.         try:
  108.             cPickle.dump(invest.STOCKS, file(invest.STOCKS_FILE, 'w'))
  109.             print 'Stocks written to file'
  110.         except Exception:
  111.             msg = None
  112.             print 'Could not save stocks file:', msg
  113.  
  114.  
  115.     
  116.     def sync_ui(self):
  117.         pass
  118.  
  119.     
  120.     def on_add_stock(self, w):
  121.         self.treeview.get_model().append([
  122.             'GOOG',
  123.             0,
  124.             0,
  125.             0])
  126.  
  127.     
  128.     def on_remove_stock(self, w):
  129.         (model, paths) = self.treeview.get_selection().get_selected_rows()
  130.         for path in paths:
  131.             model.remove(model.get_iter(path))
  132.         
  133.  
  134.     
  135.     def on_tree_keypress(self, w, event):
  136.         if event.keyval == 65535:
  137.             self.on_remove_stock(self, w)
  138.         
  139.         return False
  140.  
  141.  
  142.  
  143. def show_preferences(applet):
  144.     PrefsDialog(applet).show_run_hide()
  145.  
  146.