Advertisement
Guest User

Untitled

a guest
Mar 30th, 2013
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.46 KB | None | 0 0
  1. #!/usr/bin/python3
  2. from models import *
  3. from componentUI import *
  4. from gi.repository import Gtk
  5. from sqlalchemy import create_engine
  6. from utils import get_active_dir
  7. import copy
  8.  
  9. class MainWindow():
  10.     window, builder = None, None
  11.     productsListStore, componentsListStore = None, None
  12.     productsTreeView, componentsTreeView = None, None
  13.  
  14.     engine, session, sessionMaker = None, None, None
  15.  
  16.     def __init__(self):
  17.         # Initiate Window
  18.         builder = self.builder = Gtk.Builder()
  19.         self.builder.add_from_file(get_active_dir() + "/ui/main.glade")
  20.         self.window = self.builder.get_object("mainWindow")
  21.  
  22.         # Connect Signals
  23.         self.destroy = Gtk.main_quit
  24.         self.builder.connect_signals(self)
  25.  
  26.         # Get controls.
  27.         self.productsListStore = self.builder.get_object("productsListStore")
  28.         self.componentsListStore = builder.get_object("componentsListStore")
  29.         self.productsTreeView = self.builder.get_object("productsTreeView")
  30.         self.componentsTreeView = self.builder.get_object("componentsTreeView")
  31.  
  32.     def run(self):
  33.         self.engine = create_engine('sqlite:///'+ get_active_dir() + '/treeoflife.sqlite3.db')
  34.         Base.metadata.create_all(self.engine)
  35.  
  36.         self.sessionMaker = sessionmaker(bind=self.engine)
  37.         self.session = self.sessionMaker()
  38.  
  39.         self.fillListStores()
  40.         print("done filling")
  41.         self.window.show_all()
  42.         Gtk.main()
  43.  
  44.     def fillListStores(self):
  45.         compList = self.componentsListStore
  46.         components = self.session.query(Component)
  47.         for component in components.order_by(Component.component_type):
  48.             compList.append(self.generateComponentRow(component))
  49.  
  50.     def generateComponentRow(self, component):
  51.         compRow = [None] * 12  # len(self.componentsListStore)
  52.         compRow[0] = component.id
  53.         compRow[1] = component.component_type
  54.         compRow[2] = component.description
  55.         compRow[3] = component.package
  56.         compRow[4] = component.value
  57.         compRow[5] = component.manufacturer
  58.         compRow[6] = component.manufacturer_pn
  59.         print(compRow)
  60.         return compRow
  61.  
  62.     #~~~~~~ Signal Handlers ~~~~~~#
  63.  
  64.     def add_component_clicked(self, button):
  65.         dialog = CreateComponentDialog(self.window, ["IN", "DI"])
  66.         result = dialog.run()
  67.         print(result)
  68.         if result == 1:
  69.             component = dialog.get_component()
  70.             self.session.add(component)
  71.             self.session.commit()
  72.             self.componentsListStore.append(self.generateComponentRow(component))
  73.             dir(self.componentsListStore)
  74.         dialog.destroy()
  75.  
  76.     def on_row_doubleclick(self, treeview, path, view_column, *args):
  77.         row_id = self.componentsListStore[path][0]
  78.         component = self.session.query(Component).\
  79.                     filter(Component.id == row_id)[0]
  80.         viewDetails = ViewComponentDialog(self.window, component)
  81.         response = viewDetails.run()
  82.         print("Row Activated:\t" + repr(component))
  83.         if response == 1:     # Edit
  84.             pass
  85.         elif response == 2:   # Clone
  86.             clone = copy.copy(component)
  87.             self.session.add(clone)
  88.             self.session.commit()
  89.         elif response == 3:   # Delete
  90.             self.session.delete(component)
  91.             self.session.commit()
  92. def main():
  93.     window = MainWindow()
  94.     window.run()
  95. if (__name__ == "__main__"):
  96.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement