summaryrefslogtreecommitdiff
path: root/src/main/python/utils/Container.py
diff options
context:
space:
mode:
authorbrenda-br2023-03-02 15:49:11 +0530
committerbrenda-br2023-03-02 15:49:11 +0530
commit7af3526e105cc330422f8742ec5edec1c4a0a98f (patch)
treec00e283eaa3f67c64f66c828f518bb74abe55752 /src/main/python/utils/Container.py
parent78624489cbff516cc4d15b0df738c6c2fe4f8a8d (diff)
downloadChemical-Simulator-GUI-7af3526e105cc330422f8742ec5edec1c4a0a98f.tar.gz
Chemical-Simulator-GUI-7af3526e105cc330422f8742ec5edec1c4a0a98f.tar.bz2
Chemical-Simulator-GUI-7af3526e105cc330422f8742ec5edec1c4a0a98f.zip
Restructuring Finalized for App Bundling
Diffstat (limited to 'src/main/python/utils/Container.py')
-rw-r--r--src/main/python/utils/Container.py250
1 files changed, 0 insertions, 250 deletions
diff --git a/src/main/python/utils/Container.py b/src/main/python/utils/Container.py
deleted file mode 100644
index 486169f..0000000
--- a/src/main/python/utils/Container.py
+++ /dev/null
@@ -1,250 +0,0 @@
-from collections import defaultdict
-import datetime
-import pickle
-import os,sys
-
-current = os.path.dirname(os.path.realpath(__file__))
-parent = os.path.dirname(current)
-parentPath = os.path.dirname(parent)
-sys.path.append(parentPath)
-
-from python.OMChem.Flowsheet import Flowsheet
-from python.utils.ComponentSelector import *
-from python.utils.Graphics import NodeItem, Graphics, dock_widget_lst
-from python.DockWidgets.DockWidget import DockWidget
-
-class Container():
- def __init__(self,msgbrowser, graphicsView):
- self.unit_operations = []
- self.thermo_package = None
- self.compounds = None
- self.flowsheet = None
- self.conn = defaultdict(list)
- self.op=defaultdict(list)
- self.ip=defaultdict(list)
- self.msg = msgbrowser
- self.graphicsView = graphicsView
- self.msg.setText("")
- self.opl=[]
- self.result=[]
- self.graphics = Graphics(self.unit_operations, self.graphicsView)
- self.scene = self.graphics.get_scene()
-
- def current_time(self):
- now = datetime.datetime.now()
- time = str(now.hour) + ":" + str(now.minute) + ":" +str(now.second)
- return time
-
- def add_unit_operation(self, obj):
- box = None
- self.obj = obj
- self.scene = self.graphics.get_scene()
- box = self.graphics.create_node_item(self.obj, self)
- if box is not None:
- self.scene.addItem(box)
- box.setPos(2500-30, 2500-30)
-
- if(obj in self.unit_operations):
- pass
- else:
- self.unit_operations.append(obj)
- data = self.unit_operations[:]
- data.append(compound_selected)
- push('Undo', data)
- self.msg.append("<span style=\"color:blue\">["+str(self.current_time())+"]<b> "+obj.name+" </b>is instantiated .""</span>")
-
- '''
- Deletes the selected item from the canvas and also the objects created for that type.
- '''
- def delete(self,l):
- for item in l:
- self.scene.removeItem(item)
- for i in dock_widget_lst:
- if i.name == item.name:
- i.hide()
- del i
- break
-
- if hasattr(item,'input'):
- for x in item.input:
- if x.new_line:
- self.scene.removeItem(x.new_line)
- del x.new_line
- if x.other_line:
- self.scene.removeItem(x.other_line)
- del x.other_line
- if hasattr(item,'output'):
- for x in item.output:
- if x.new_line:
- self.scene.removeItem(x.new_line)
- del x.new_line
- if x.other_line:
- self.scene.removeItem(x.other_line)
- del x.other_line
- if hasattr(item,'obj'):
- self.unit_operations.remove(item.obj)
- for k in list(self.conn):
- if item.obj==k:
- del self.conn[k]
- elif item.obj in self.conn[k]:
- self.conn[k].remove(item.obj)
- self.msg.append("<span style=\"color:blue\">["+str(self.current_time())+"]<b> "+item.obj.name+" </b>is deleted .""</span>")
- del item.obj
- del item
-
- clean_file('Redo')
- data = self.unit_operations[:]
- data.append(compound_selected)
- push('Undo', data)
-
- def fetch_object(self,name):
- for i in self.unit_operations:
- if(i.name==name):
- return i
-
- def add_compounds(self,comp):
- self.compounds = comp
-
- def update_compounds(self):
- self.graphics.update_compounds()
-
- def add_thermo_package(self,thermo):
- self.thermo_package = thermo
-
- def msg_browser(self):
- std = self.flowsheet.stdout.decode("utf-8")
- if(std):
- stdout = str(std)
- stdout = stdout.replace("\n","<br/>")
- self.msg.append("<span style=\"color:green\">"+stdout+"</span>")
-
- stde = self.flowsheet.stderr.decode("utf-8")
- if(stde):
- stdout = str(stde)
- stdout = stdout.replace("\n","<br/>")
- self.msg.append("<span style=\"color:red\">"+stdout+"</span>")
-
- def simulate(self,mode):
-
- self.disableInterfaceforSimulation(True)
-
- for i in self.graphics.scene.items():
- if (isinstance(i, NodeItem)):
- try:
- i.dock_widget.clear_results()
- except AttributeError:
- pass
-
- #print("SIMULATE")
- #print(mode)
- self.compounds = compound_selected
- self.flowsheet = Flowsheet()
- self.flowsheet.add_compound_list([c[:c.index('(')] for c in self.compounds])
- #print("######## connection master#########\n",self.conn)
- for i in self.unit_operations :
- self.flowsheet.add_unit_operations(i)
-
-
- if mode=='SM':
- self.msg.append("<span>["+str(self.current_time())+"] Simulating in <b>Sequential</b> mode ... </span>")
- self.flowsheet.simulate_SM(self.ip,self.op)
- self.msg_browser()
- self.result=self.flowsheet.result_data
-
- elif mode=='EQN':
- self.msg.append("<span>["+str(self.current_time())+"] Simulating in <b>equation</b> mode ... </span>")
- self.flowsheet.simulate_EQN(self.msg)
- self.result=self.flowsheet.result_data
-
- if(len(self.result)== 4):
- #self.msg_browser()
- self.msg.append("<span style=\"color:green\">["+str(self.current_time())+"] Simulation <b>Successful.</b></span>")
- else:
- self.msg.append("<span style=\"color:red\">["+str(self.current_time())+"] Simulation <b>Failed.</b></span>")
- #print("under Eqn mode simulation")
-
- if(len(self.result)== 4):
- DockWidget.show_result(NodeItem.get_dock_widget())
-
- for i in self.graphics.scene.items():
- if (isinstance(i, NodeItem) and i.type == 'MaterialStream'):
- i.update_tooltip_selectedVar()
- no_input_lines = len(i.input[0].in_lines)
- no_output_lines = len(i.output[0].out_lines)
- if(no_input_lines>0): #Checks if material stream is input or output stream if it is output stream it continues
- i.obj.disableInputDataTab(i.dock_widget)
-
- self.disableInterfaceforSimulation(False)
-
- def enableToolbar(self,status):
- self.graphicsView.parent().parent().actionNew.setProperty('enabled',status)
- self.graphicsView.parent().parent().actionZoomIn.setProperty('enabled',status)
- self.graphicsView.parent().parent().actionZoomOut.setProperty('enabled',status)
- self.graphicsView.parent().parent().actionResetZoom.setProperty('enabled',status)
- self.graphicsView.parent().parent().actionEquationOriented.setProperty('enabled',status)
- self.graphicsView.parent().parent().actionTerminate.setProperty('enabled',not status)
- self.graphicsView.parent().parent().actionSelectCompounds.setProperty('enabled',status)
-
- def disableInterfaceforSimulation(self,status):
- self.graphicsView.parent().parent().menubar.setProperty('enabled',not status)
- self.enableToolbar(not status)
- self.graphicsView.parent().parent().dockWidget.setProperty('enabled',not status)
- self.graphicsView.setInteractive(not status)
- if status:
- QApplication.instance().setOverrideCursor(QCursor(Qt.WaitCursor))
- else:
- QApplication.instance().restoreOverrideCursor()
- QApplication.instance().setOverrideCursor(QCursor(Qt.ArrowCursor))
-
-def flat_list(lst):
- flat_lst=[]
- for sublist in lst:
- for item in sublist:
- flat_lst.append(item)
- return flat_lst
-
-def push(file_name, data):
- with open(f"{file_name}.dat", "ab") as obj:
- pickle.dump(data, obj)
-
-def clean_file(file_name):
- with open(f"{file_name}.dat", "wb") as clean:
- pass
-
-def pop(file_name):
- last_command = None
- if os.stat(f"{file_name}.dat").st_size != 0:
- commands = []
- with open(f"{file_name}.dat", "rb") as objs:
- while True:
- try:
- command = pickle.load(objs)
- commands.append(command)
- except EOFError:
- break
-
- last_command = commands[-1]
- commands.remove(commands[-1])
- if len(commands) != 0:
- with open(f"{file_name}.dat", "wb") as updated_data:
- for i in range(len(commands)):
- pickle.dump(commands[i], updated_data)
- else:
- clean_file(file_name)
-
- return last_command
-
-def get_last_list(file_name):
- commands = []
- if os.stat(f"{file_name}.dat").st_size != 0:
- with open(f"{file_name}.dat", "rb") as objs:
- while True:
- try:
- command = pickle.load(objs)
- commands.append(command)
- except EOFError:
- break
- if len(commands) is not 0:
- return commands[-1]
- else:
- return None