Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- from models import *
- from componentUI import *
- from gi.repository import Gtk
- from sqlalchemy import create_engine
- from utils import get_active_dir
- import copy
- class MainWindow():
- window, builder = None, None
- productsListStore, componentsListStore = None, None
- productsTreeView, componentsTreeView = None, None
- engine, session, sessionMaker = None, None, None
- def __init__(self):
- # Initiate Window
- builder = self.builder = Gtk.Builder()
- self.builder.add_from_file(get_active_dir() + "/ui/main.glade")
- self.window = self.builder.get_object("mainWindow")
- # Connect Signals
- self.destroy = Gtk.main_quit
- self.builder.connect_signals(self)
- # Get controls.
- self.productsListStore = self.builder.get_object("productsListStore")
- self.componentsListStore = builder.get_object("componentsListStore")
- self.productsTreeView = self.builder.get_object("productsTreeView")
- self.componentsTreeView = self.builder.get_object("componentsTreeView")
- def run(self):
- self.engine = create_engine('sqlite:///'+ get_active_dir() + '/treeoflife.sqlite3.db')
- Base.metadata.create_all(self.engine)
- self.sessionMaker = sessionmaker(bind=self.engine)
- self.session = self.sessionMaker()
- self.fillListStores()
- print("done filling")
- self.window.show_all()
- Gtk.main()
- def fillListStores(self):
- compList = self.componentsListStore
- components = self.session.query(Component)
- for component in components.order_by(Component.component_type):
- compList.append(self.generateComponentRow(component))
- def generateComponentRow(self, component):
- compRow = [None] * 12 # len(self.componentsListStore)
- compRow[0] = component.id
- compRow[1] = component.component_type
- compRow[2] = component.description
- compRow[3] = component.package
- compRow[4] = component.value
- compRow[5] = component.manufacturer
- compRow[6] = component.manufacturer_pn
- print(compRow)
- return compRow
- #~~~~~~ Signal Handlers ~~~~~~#
- def add_component_clicked(self, button):
- dialog = CreateComponentDialog(self.window, ["IN", "DI"])
- result = dialog.run()
- print(result)
- if result == 1:
- component = dialog.get_component()
- self.session.add(component)
- self.session.commit()
- self.componentsListStore.append(self.generateComponentRow(component))
- dir(self.componentsListStore)
- dialog.destroy()
- def on_row_doubleclick(self, treeview, path, view_column, *args):
- row_id = self.componentsListStore[path][0]
- component = self.session.query(Component).\
- filter(Component.id == row_id)[0]
- viewDetails = ViewComponentDialog(self.window, component)
- response = viewDetails.run()
- print("Row Activated:\t" + repr(component))
- if response == 1: # Edit
- pass
- elif response == 2: # Clone
- clone = copy.copy(component)
- self.session.add(clone)
- self.session.commit()
- elif response == 3: # Delete
- self.session.delete(component)
- self.session.commit()
- def main():
- window = MainWindow()
- window.run()
- if (__name__ == "__main__"):
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement