def __init__(self, *args): QtGui.QMainWindow.__init__(self, *args) self.ui = Ui_LabtoolsQt() # Main paths self.data_location = str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.DataLocation)) self.data_location = self.data_location.split('Local')[0] + '/Local/' self.home_location = str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation)) self.temp_location = str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.TempLocation)) self.app_location = self.data_location + '/LabtoolsQt/' self.images_location = self.app_location + '/images/' self.mm = {'Silicondioxide(SiO2)': 60.1, 'Sodium-Dodecyl-Sulfate(C12H25NaO4S)': 288.4, 'Sodiumchloride(NaCl)': 58.5, 'Calciumcarbide(CaC2)': 64.1, 'Propane(C3H8)': 44.1, 'Hydrogenperoxide(H2O2)': 34.0, 'Potassiumnitrate(KNO3)': 101.1, 'Calciumhydroxide(Ca(OH)2)': 74.1, 'Arsenictrioxide(Arsenic(III)oxide)(As2O3)': 198.0, 'Pentane(C5H12)': 72.1, 'Sulfane(H2S)': 34.1, 'Ammoniumsulfate((NH4)2SO4)': 132.1, 'Lead(IV)oxide(PbO2)': 239.0, 'Lead(II)oxide(PbO)': 223.2, 'Ammoniumchloride(NH4Cl)': 53.5, 'Bariumhydroxide(Ba(OH)2)': 171.4, 'Calciumchloride(CaCl2)': 111.0, 'Calciumfluoride(CaF2)': 78.0, 'Nitrogendioxide(NO2)': 46.0, 'Potassiumpermanganate(KMnO4)': 158.0, 'Sodiumhydroxide(NaOH)': 40.0, 'Magnesiumchloride(MgCl2)': 95.2, 'Copper(II)sulfate(CuSO4)': 159.6, 'Copper(II)chloride(CuCl2)': 134.4, 'Zincoxide(ZnO)': 81.4, 'Carbondisulfide(CS2)': 76.1, 'Sodiumcarbonate(Na2CO3)': 106.0, 'Lead(II)iodide(PbI2)': 58.1, 'Lead(II)chloride(PbCl2)': 60.1, 'Aluminiumhydroxide(Al(OH)3)': 78.0, 'Hydrogenfluoride(HF)': 20.0, 'Lead(II)sulfide(PbS)': 98.1, 'Silverchloride(AgCl)': 143.3, 'Hydrochloricacid(HCl(Hydrogenchloride(HCl))': 36.5, 'Sodiumnitrate(NaNO3)': 85.0, 'Chromium(III)chloride(CrCl3)': 158.0, 'TRIS(C4H11NO3)': 121.14, 'Ammoniumnitrate(NH4NO3)': 80.0, 'Boric-acid(H3BO3)': 61.8, 'Urea(CO(NH2)2)': 60.1, 'Methanol(CH3OH)': 32.0, 'Cobalt(II)chloride(CoCl2)': 130.0, 'Iron(III)chloride(FeCl3)': 162.2, 'Orthophosphoricacid(H3PO4)': 98.0, 'Formicacid(HCHO)': 46.0, 'Calciumsulfate(Gypsum)(CaSO4)': 136.1, 'Glucose': 180.0, 'Hydrobromicacid(HBr)': 80.9, 'Chromium(III)oxide(Cr2O3)': 152.0, 'Nitricoxide(NO)': 30.0, 'Magnesiumsulfate(MgSO4)': 120.4, 'Benzene(C6H6)': 78.1, 'Potassiumhydroxide(KOH)': 56.1, 'Hydroiodicacid(HI)': 127.9, 'Chromium(II)chloride(CrCl2(alsochromouschlori)': 123.0, 'Lead(II)sulfate(Pb(SO4))': 64.1, 'Carbonmonoxide(CO)': 28.0, 'Aluminiumsulfate(Al2(SO4)3)': 342.1, 'Ethane(C2H6)': 30.1, 'Bariumchloride(BaCl2)': 208.2, 'Potassiumcarbonate(K2CO3)': 138.2, 'Butane(C4H10)': 58.1, 'Potassiumbromide(KBr)': 119.0, 'Tetrachloromethane(CCl4)': 153.8, 'Aluminiumchloride(AlCl3)': 133.3, 'Bariumsulfate(BaSO4)': 233.0, 'Chloroform(CHCl3)': 119.4, 'Phenol(C6H5OH)': 94.1, 'Magnesiumoxide(MgO)': 40.3, 'Bariumcarbonate(BaCO3)': 197.0, 'Silvernitrate(AgNO3)': 169.9, 'Zincsulfide(ZnS)': 97.4, 'Aluminiumoxide(Al2O3)': 101.9, 'Ethene(C2H4)': 28.1, 'Carbondioxide(CO2)': 44.0, 'Ethanol(C2H5OH)': 46.1, 'Formaldehyde': 30.0, 'Lead(II)nitrate(Pb(NO3)2)': 331.2, 'Silveriodide(AgI)': 234.8, 'Potassiumchloride(KCl)': 74.6, 'Ammonia(NH3)': 17.0, 'Hexane(C6H14)': 86.2, 'Methane(CH4)': 16.0, 'Copper(II)oxide(CuO)': 79.5, 'Ethanal(Acetaldehyde)(CH3CHO)': 44.1, 'Glycine': 75.1, 'Iron(II,III)oxide(Fe3O4)': 231.5, 'Ethanoicacid(CH3COOH)': 60.1, 'Iron(III)oxide(Fe2O3)': 159.7, 'Zincchloride(ZnCl2)': 136.3, 'Iron(II)oxide(FeO)': 72.0} try: self.create_folders() self.copying_files() # Logging self.log_file = self.app_location + '/logging_labtools.txt' logging.basicConfig(filename=self.log_file, level=logging.DEBUG) except (IOError, OSError): logging.debug(time.strftime("%d.%m.%Y um %H:%M:%S Uhr")) logging.debug(str(platform.system()+platform.release())) logging.exception('Got exception on main handler') raise self.ui.setupUi(self) self.create_connects() self.update_combo()
def __init__(self, *args): QtGui.QMainWindow.__init__(self, *args) self.ui = Ui_LabtoolsQt() # Main paths self.data_location = str( QtGui.QDesktopServices.storageLocation( QtGui.QDesktopServices.DataLocation)) self.data_location = self.data_location.split('Local')[0] + '/Local/' self.home_location = str( QtGui.QDesktopServices.storageLocation( QtGui.QDesktopServices.HomeLocation)) self.temp_location = str( QtGui.QDesktopServices.storageLocation( QtGui.QDesktopServices.TempLocation)) self.app_location = self.data_location + '/LabtoolsQt/' self.images_location = self.app_location + '/images/' self.mm = { 'Silicondioxide(SiO2)': 60.1, 'Sodium-Dodecyl-Sulfate(C12H25NaO4S)': 288.4, 'Sodiumchloride(NaCl)': 58.5, 'Calciumcarbide(CaC2)': 64.1, 'Propane(C3H8)': 44.1, 'Hydrogenperoxide(H2O2)': 34.0, 'Potassiumnitrate(KNO3)': 101.1, 'Calciumhydroxide(Ca(OH)2)': 74.1, 'Arsenictrioxide(Arsenic(III)oxide)(As2O3)': 198.0, 'Pentane(C5H12)': 72.1, 'Sulfane(H2S)': 34.1, 'Ammoniumsulfate((NH4)2SO4)': 132.1, 'Lead(IV)oxide(PbO2)': 239.0, 'Lead(II)oxide(PbO)': 223.2, 'Ammoniumchloride(NH4Cl)': 53.5, 'Bariumhydroxide(Ba(OH)2)': 171.4, 'Calciumchloride(CaCl2)': 111.0, 'Calciumfluoride(CaF2)': 78.0, 'Nitrogendioxide(NO2)': 46.0, 'Potassiumpermanganate(KMnO4)': 158.0, 'Sodiumhydroxide(NaOH)': 40.0, 'Magnesiumchloride(MgCl2)': 95.2, 'Copper(II)sulfate(CuSO4)': 159.6, 'Copper(II)chloride(CuCl2)': 134.4, 'Zincoxide(ZnO)': 81.4, 'Carbondisulfide(CS2)': 76.1, 'Sodiumcarbonate(Na2CO3)': 106.0, 'Lead(II)iodide(PbI2)': 58.1, 'Lead(II)chloride(PbCl2)': 60.1, 'Aluminiumhydroxide(Al(OH)3)': 78.0, 'Hydrogenfluoride(HF)': 20.0, 'Lead(II)sulfide(PbS)': 98.1, 'Silverchloride(AgCl)': 143.3, 'Hydrochloricacid(HCl(Hydrogenchloride(HCl))': 36.5, 'Sodiumnitrate(NaNO3)': 85.0, 'Chromium(III)chloride(CrCl3)': 158.0, 'TRIS(C4H11NO3)': 121.14, 'Ammoniumnitrate(NH4NO3)': 80.0, 'Boric-acid(H3BO3)': 61.8, 'Urea(CO(NH2)2)': 60.1, 'Methanol(CH3OH)': 32.0, 'Cobalt(II)chloride(CoCl2)': 130.0, 'Iron(III)chloride(FeCl3)': 162.2, 'Orthophosphoricacid(H3PO4)': 98.0, 'Formicacid(HCHO)': 46.0, 'Calciumsulfate(Gypsum)(CaSO4)': 136.1, 'Glucose': 180.0, 'Hydrobromicacid(HBr)': 80.9, 'Chromium(III)oxide(Cr2O3)': 152.0, 'Nitricoxide(NO)': 30.0, 'Magnesiumsulfate(MgSO4)': 120.4, 'Benzene(C6H6)': 78.1, 'Potassiumhydroxide(KOH)': 56.1, 'Hydroiodicacid(HI)': 127.9, 'Chromium(II)chloride(CrCl2(alsochromouschlori)': 123.0, 'Lead(II)sulfate(Pb(SO4))': 64.1, 'Carbonmonoxide(CO)': 28.0, 'Aluminiumsulfate(Al2(SO4)3)': 342.1, 'Ethane(C2H6)': 30.1, 'Bariumchloride(BaCl2)': 208.2, 'Potassiumcarbonate(K2CO3)': 138.2, 'Butane(C4H10)': 58.1, 'Potassiumbromide(KBr)': 119.0, 'Tetrachloromethane(CCl4)': 153.8, 'Aluminiumchloride(AlCl3)': 133.3, 'Bariumsulfate(BaSO4)': 233.0, 'Chloroform(CHCl3)': 119.4, 'Phenol(C6H5OH)': 94.1, 'Magnesiumoxide(MgO)': 40.3, 'Bariumcarbonate(BaCO3)': 197.0, 'Silvernitrate(AgNO3)': 169.9, 'Zincsulfide(ZnS)': 97.4, 'Aluminiumoxide(Al2O3)': 101.9, 'Ethene(C2H4)': 28.1, 'Carbondioxide(CO2)': 44.0, 'Ethanol(C2H5OH)': 46.1, 'Formaldehyde': 30.0, 'Lead(II)nitrate(Pb(NO3)2)': 331.2, 'Silveriodide(AgI)': 234.8, 'Potassiumchloride(KCl)': 74.6, 'Ammonia(NH3)': 17.0, 'Hexane(C6H14)': 86.2, 'Methane(CH4)': 16.0, 'Copper(II)oxide(CuO)': 79.5, 'Ethanal(Acetaldehyde)(CH3CHO)': 44.1, 'Glycine': 75.1, 'Iron(II,III)oxide(Fe3O4)': 231.5, 'Ethanoicacid(CH3COOH)': 60.1, 'Iron(III)oxide(Fe2O3)': 159.7, 'Zincchloride(ZnCl2)': 136.3, 'Iron(II)oxide(FeO)': 72.0 } try: self.create_folders() self.copying_files() # Logging self.log_file = self.app_location + '/logging_labtools.txt' logging.basicConfig(filename=self.log_file, level=logging.DEBUG) except (IOError, OSError): logging.debug(time.strftime("%d.%m.%Y um %H:%M:%S Uhr")) logging.debug(str(platform.system() + platform.release())) logging.exception('Got exception on main handler') raise self.ui.setupUi(self) self.create_connects() self.update_combo()
class MyMainWindow(QtGui.QMainWindow): def __init__(self, *args): QtGui.QMainWindow.__init__(self, *args) self.ui = Ui_LabtoolsQt() # Main paths self.data_location = str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.DataLocation)) self.data_location = self.data_location.split('Local')[0] + '/Local/' self.home_location = str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation)) self.temp_location = str(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.TempLocation)) self.app_location = self.data_location + '/LabtoolsQt/' self.images_location = self.app_location + '/images/' self.mm = {'Silicondioxide(SiO2)': 60.1, 'Sodium-Dodecyl-Sulfate(C12H25NaO4S)': 288.4, 'Sodiumchloride(NaCl)': 58.5, 'Calciumcarbide(CaC2)': 64.1, 'Propane(C3H8)': 44.1, 'Hydrogenperoxide(H2O2)': 34.0, 'Potassiumnitrate(KNO3)': 101.1, 'Calciumhydroxide(Ca(OH)2)': 74.1, 'Arsenictrioxide(Arsenic(III)oxide)(As2O3)': 198.0, 'Pentane(C5H12)': 72.1, 'Sulfane(H2S)': 34.1, 'Ammoniumsulfate((NH4)2SO4)': 132.1, 'Lead(IV)oxide(PbO2)': 239.0, 'Lead(II)oxide(PbO)': 223.2, 'Ammoniumchloride(NH4Cl)': 53.5, 'Bariumhydroxide(Ba(OH)2)': 171.4, 'Calciumchloride(CaCl2)': 111.0, 'Calciumfluoride(CaF2)': 78.0, 'Nitrogendioxide(NO2)': 46.0, 'Potassiumpermanganate(KMnO4)': 158.0, 'Sodiumhydroxide(NaOH)': 40.0, 'Magnesiumchloride(MgCl2)': 95.2, 'Copper(II)sulfate(CuSO4)': 159.6, 'Copper(II)chloride(CuCl2)': 134.4, 'Zincoxide(ZnO)': 81.4, 'Carbondisulfide(CS2)': 76.1, 'Sodiumcarbonate(Na2CO3)': 106.0, 'Lead(II)iodide(PbI2)': 58.1, 'Lead(II)chloride(PbCl2)': 60.1, 'Aluminiumhydroxide(Al(OH)3)': 78.0, 'Hydrogenfluoride(HF)': 20.0, 'Lead(II)sulfide(PbS)': 98.1, 'Silverchloride(AgCl)': 143.3, 'Hydrochloricacid(HCl(Hydrogenchloride(HCl))': 36.5, 'Sodiumnitrate(NaNO3)': 85.0, 'Chromium(III)chloride(CrCl3)': 158.0, 'TRIS(C4H11NO3)': 121.14, 'Ammoniumnitrate(NH4NO3)': 80.0, 'Boric-acid(H3BO3)': 61.8, 'Urea(CO(NH2)2)': 60.1, 'Methanol(CH3OH)': 32.0, 'Cobalt(II)chloride(CoCl2)': 130.0, 'Iron(III)chloride(FeCl3)': 162.2, 'Orthophosphoricacid(H3PO4)': 98.0, 'Formicacid(HCHO)': 46.0, 'Calciumsulfate(Gypsum)(CaSO4)': 136.1, 'Glucose': 180.0, 'Hydrobromicacid(HBr)': 80.9, 'Chromium(III)oxide(Cr2O3)': 152.0, 'Nitricoxide(NO)': 30.0, 'Magnesiumsulfate(MgSO4)': 120.4, 'Benzene(C6H6)': 78.1, 'Potassiumhydroxide(KOH)': 56.1, 'Hydroiodicacid(HI)': 127.9, 'Chromium(II)chloride(CrCl2(alsochromouschlori)': 123.0, 'Lead(II)sulfate(Pb(SO4))': 64.1, 'Carbonmonoxide(CO)': 28.0, 'Aluminiumsulfate(Al2(SO4)3)': 342.1, 'Ethane(C2H6)': 30.1, 'Bariumchloride(BaCl2)': 208.2, 'Potassiumcarbonate(K2CO3)': 138.2, 'Butane(C4H10)': 58.1, 'Potassiumbromide(KBr)': 119.0, 'Tetrachloromethane(CCl4)': 153.8, 'Aluminiumchloride(AlCl3)': 133.3, 'Bariumsulfate(BaSO4)': 233.0, 'Chloroform(CHCl3)': 119.4, 'Phenol(C6H5OH)': 94.1, 'Magnesiumoxide(MgO)': 40.3, 'Bariumcarbonate(BaCO3)': 197.0, 'Silvernitrate(AgNO3)': 169.9, 'Zincsulfide(ZnS)': 97.4, 'Aluminiumoxide(Al2O3)': 101.9, 'Ethene(C2H4)': 28.1, 'Carbondioxide(CO2)': 44.0, 'Ethanol(C2H5OH)': 46.1, 'Formaldehyde': 30.0, 'Lead(II)nitrate(Pb(NO3)2)': 331.2, 'Silveriodide(AgI)': 234.8, 'Potassiumchloride(KCl)': 74.6, 'Ammonia(NH3)': 17.0, 'Hexane(C6H14)': 86.2, 'Methane(CH4)': 16.0, 'Copper(II)oxide(CuO)': 79.5, 'Ethanal(Acetaldehyde)(CH3CHO)': 44.1, 'Glycine': 75.1, 'Iron(II,III)oxide(Fe3O4)': 231.5, 'Ethanoicacid(CH3COOH)': 60.1, 'Iron(III)oxide(Fe2O3)': 159.7, 'Zincchloride(ZnCl2)': 136.3, 'Iron(II)oxide(FeO)': 72.0} try: self.create_folders() self.copying_files() # Logging self.log_file = self.app_location + '/logging_labtools.txt' logging.basicConfig(filename=self.log_file, level=logging.DEBUG) except (IOError, OSError): logging.debug(time.strftime("%d.%m.%Y um %H:%M:%S Uhr")) logging.debug(str(platform.system()+platform.release())) logging.exception('Got exception on main handler') raise self.ui.setupUi(self) self.create_connects() self.update_combo() def create_connects(self): """Connect events.""" self.ui.pushButton.clicked.connect(self.start_ligation) self.ui.pushButton_2.clicked.connect(self.start_solution) self.ui.pushButton_5.clicked.connect(self.start_mixer) self.ui.actionAbout.triggered.connect(self.show_about_message) self.ui.actionDocumentation.triggered.connect(self.show_help) def create_folders(self): """Create important folders of siFi in the data path.""" location_folders = [self.app_location, self.images_location] for folder in location_folders: if not os.path.exists(folder): os.mkdir(folder) def copying_files(self): """Copy important files of siFi in the data path.""" to_copy_folders = os.listdir(os.getcwd() + '/to_copy/') for folder in to_copy_folders: to_copy_files = os.listdir(os.getcwd() + '/to_copy/' + folder) for files in to_copy_files: if not files.startswith('.'): if not os.path.exists(self.app_location + '/' + folder + '/' + files): if not folder.startswith('.'): shutil.copyfile(os.getcwd() + '/to_copy/' + folder + '/' + files, self.app_location + '/' + folder + '/' + files) def update_combo(self): """Append all compounds to the combobox.""" comp_list = [] for compound in self.mm.keys(): comp_list.append(compound) comp_list.sort() self.ui.comboBox.addItems(comp_list) #================================================================================================================ def is_empty(self, widget_lst): """Checks whether a text widget is empty and return False, otherwise return true.""" for widget in widget_lst: if widget == '': return False def start_ligation(self): """Starts ligation calculator.""" is_empty = self.is_empty([self.ui.lineEdit.text(), self.ui.lineEdit_2.text(), self.ui.lineEdit_3.text(), self.ui.lineEdit_4.text(), self.ui.lineEdit_5.text(), self.ui.lineEdit_6.text()]) if is_empty is False: message = ('Please insert a value', 'Error') else: info_message = calculate_reactions.calc_ligation(int(self.ui.lineEdit.text()), int(self.ui.lineEdit_2.text()), float(self.ui.lineEdit_3.text()), float(self.ui.lineEdit_4.text()), int(self.ui.lineEdit_5.text()), float(self.ui.lineEdit_6.text())) message = (info_message, 'Results') self.show_info_message(message[0], message[1]) def start_solution(self): """Starts solution calculator.""" is_empty = self.is_empty([self.ui.lineEdit_13.text(), self.ui.lineEdit_14.text(), self.ui.spinBox.value()]) if is_empty is False: message = ('Please insert a value', 'Error') else: info_message = calculate_reactions.calc_solution(str(self.ui.comboBox.currentText()), float(self.ui.lineEdit_13.text()), float(self.ui.lineEdit_14.text()), int(self.ui.spinBox.value()), self.mm) message = (info_message, 'Results') self.show_info_message(message[0], message[1]) def start_mixer(self): """Starts mixer calculator.""" is_empty = self.is_empty([self.ui.lineEdit_15.text(), self.ui.lineEdit_16.text(), self.ui.lineEdit_17.text()]) if is_empty is False: message = ('Please insert a value', 'Error') else: info_message = calculate_reactions.calc_dilution(float(self.ui.lineEdit_15.text()), float(self.ui.lineEdit_16.text()), float(self.ui.lineEdit_17.text()), str(self.ui.comboBox_2.currentText()), str(self.ui.comboBox_3.currentText()), str(self.ui.comboBox_4.currentText())) message = (info_message, 'Results') self.show_info_message(message[0], message[1]) def show_info_message(self, message, msg_type): """Shows a message dialog.""" QtGui.QMessageBox.information(self, msg_type, """<p style="font-family: 'Comic Sans MS'; font-size:14pt; color:#2E9AFE">""" + message + """</p>""") def show_about_message(self): """Shows about box.""" self.w = AboutPopup(self.images_location) self.w.setGeometry(QtCore.QRect(100, 100, 610, 350)) self.w.show() def show_help(self): """Show help.""" webbrowser.open("labtools.ipk-gatersleben.de/help/LabtoolsQt/LabtoolsQt.html")
class MyMainWindow(QtGui.QMainWindow): def __init__(self, *args): QtGui.QMainWindow.__init__(self, *args) self.ui = Ui_LabtoolsQt() # Main paths self.data_location = str( QtGui.QDesktopServices.storageLocation( QtGui.QDesktopServices.DataLocation)) self.data_location = self.data_location.split('Local')[0] + '/Local/' self.home_location = str( QtGui.QDesktopServices.storageLocation( QtGui.QDesktopServices.HomeLocation)) self.temp_location = str( QtGui.QDesktopServices.storageLocation( QtGui.QDesktopServices.TempLocation)) self.app_location = self.data_location + '/LabtoolsQt/' self.images_location = self.app_location + '/images/' self.mm = { 'Silicondioxide(SiO2)': 60.1, 'Sodium-Dodecyl-Sulfate(C12H25NaO4S)': 288.4, 'Sodiumchloride(NaCl)': 58.5, 'Calciumcarbide(CaC2)': 64.1, 'Propane(C3H8)': 44.1, 'Hydrogenperoxide(H2O2)': 34.0, 'Potassiumnitrate(KNO3)': 101.1, 'Calciumhydroxide(Ca(OH)2)': 74.1, 'Arsenictrioxide(Arsenic(III)oxide)(As2O3)': 198.0, 'Pentane(C5H12)': 72.1, 'Sulfane(H2S)': 34.1, 'Ammoniumsulfate((NH4)2SO4)': 132.1, 'Lead(IV)oxide(PbO2)': 239.0, 'Lead(II)oxide(PbO)': 223.2, 'Ammoniumchloride(NH4Cl)': 53.5, 'Bariumhydroxide(Ba(OH)2)': 171.4, 'Calciumchloride(CaCl2)': 111.0, 'Calciumfluoride(CaF2)': 78.0, 'Nitrogendioxide(NO2)': 46.0, 'Potassiumpermanganate(KMnO4)': 158.0, 'Sodiumhydroxide(NaOH)': 40.0, 'Magnesiumchloride(MgCl2)': 95.2, 'Copper(II)sulfate(CuSO4)': 159.6, 'Copper(II)chloride(CuCl2)': 134.4, 'Zincoxide(ZnO)': 81.4, 'Carbondisulfide(CS2)': 76.1, 'Sodiumcarbonate(Na2CO3)': 106.0, 'Lead(II)iodide(PbI2)': 58.1, 'Lead(II)chloride(PbCl2)': 60.1, 'Aluminiumhydroxide(Al(OH)3)': 78.0, 'Hydrogenfluoride(HF)': 20.0, 'Lead(II)sulfide(PbS)': 98.1, 'Silverchloride(AgCl)': 143.3, 'Hydrochloricacid(HCl(Hydrogenchloride(HCl))': 36.5, 'Sodiumnitrate(NaNO3)': 85.0, 'Chromium(III)chloride(CrCl3)': 158.0, 'TRIS(C4H11NO3)': 121.14, 'Ammoniumnitrate(NH4NO3)': 80.0, 'Boric-acid(H3BO3)': 61.8, 'Urea(CO(NH2)2)': 60.1, 'Methanol(CH3OH)': 32.0, 'Cobalt(II)chloride(CoCl2)': 130.0, 'Iron(III)chloride(FeCl3)': 162.2, 'Orthophosphoricacid(H3PO4)': 98.0, 'Formicacid(HCHO)': 46.0, 'Calciumsulfate(Gypsum)(CaSO4)': 136.1, 'Glucose': 180.0, 'Hydrobromicacid(HBr)': 80.9, 'Chromium(III)oxide(Cr2O3)': 152.0, 'Nitricoxide(NO)': 30.0, 'Magnesiumsulfate(MgSO4)': 120.4, 'Benzene(C6H6)': 78.1, 'Potassiumhydroxide(KOH)': 56.1, 'Hydroiodicacid(HI)': 127.9, 'Chromium(II)chloride(CrCl2(alsochromouschlori)': 123.0, 'Lead(II)sulfate(Pb(SO4))': 64.1, 'Carbonmonoxide(CO)': 28.0, 'Aluminiumsulfate(Al2(SO4)3)': 342.1, 'Ethane(C2H6)': 30.1, 'Bariumchloride(BaCl2)': 208.2, 'Potassiumcarbonate(K2CO3)': 138.2, 'Butane(C4H10)': 58.1, 'Potassiumbromide(KBr)': 119.0, 'Tetrachloromethane(CCl4)': 153.8, 'Aluminiumchloride(AlCl3)': 133.3, 'Bariumsulfate(BaSO4)': 233.0, 'Chloroform(CHCl3)': 119.4, 'Phenol(C6H5OH)': 94.1, 'Magnesiumoxide(MgO)': 40.3, 'Bariumcarbonate(BaCO3)': 197.0, 'Silvernitrate(AgNO3)': 169.9, 'Zincsulfide(ZnS)': 97.4, 'Aluminiumoxide(Al2O3)': 101.9, 'Ethene(C2H4)': 28.1, 'Carbondioxide(CO2)': 44.0, 'Ethanol(C2H5OH)': 46.1, 'Formaldehyde': 30.0, 'Lead(II)nitrate(Pb(NO3)2)': 331.2, 'Silveriodide(AgI)': 234.8, 'Potassiumchloride(KCl)': 74.6, 'Ammonia(NH3)': 17.0, 'Hexane(C6H14)': 86.2, 'Methane(CH4)': 16.0, 'Copper(II)oxide(CuO)': 79.5, 'Ethanal(Acetaldehyde)(CH3CHO)': 44.1, 'Glycine': 75.1, 'Iron(II,III)oxide(Fe3O4)': 231.5, 'Ethanoicacid(CH3COOH)': 60.1, 'Iron(III)oxide(Fe2O3)': 159.7, 'Zincchloride(ZnCl2)': 136.3, 'Iron(II)oxide(FeO)': 72.0 } try: self.create_folders() self.copying_files() # Logging self.log_file = self.app_location + '/logging_labtools.txt' logging.basicConfig(filename=self.log_file, level=logging.DEBUG) except (IOError, OSError): logging.debug(time.strftime("%d.%m.%Y um %H:%M:%S Uhr")) logging.debug(str(platform.system() + platform.release())) logging.exception('Got exception on main handler') raise self.ui.setupUi(self) self.create_connects() self.update_combo() def create_connects(self): """Connect events.""" self.ui.pushButton.clicked.connect(self.start_ligation) self.ui.pushButton_2.clicked.connect(self.start_solution) self.ui.pushButton_5.clicked.connect(self.start_mixer) self.ui.actionAbout.triggered.connect(self.show_about_message) self.ui.actionDocumentation.triggered.connect(self.show_help) def create_folders(self): """Create important folders of siFi in the data path.""" location_folders = [self.app_location, self.images_location] for folder in location_folders: if not os.path.exists(folder): os.mkdir(folder) def copying_files(self): """Copy important files of siFi in the data path.""" to_copy_folders = os.listdir(os.getcwd() + '/to_copy/') for folder in to_copy_folders: to_copy_files = os.listdir(os.getcwd() + '/to_copy/' + folder) for files in to_copy_files: if not files.startswith('.'): if not os.path.exists(self.app_location + '/' + folder + '/' + files): if not folder.startswith('.'): shutil.copyfile( os.getcwd() + '/to_copy/' + folder + '/' + files, self.app_location + '/' + folder + '/' + files) def update_combo(self): """Append all compounds to the combobox.""" comp_list = [] for compound in self.mm.keys(): comp_list.append(compound) comp_list.sort() self.ui.comboBox.addItems(comp_list) #================================================================================================================ def is_empty(self, widget_lst): """Checks whether a text widget is empty and return False, otherwise return true.""" for widget in widget_lst: if widget == '': return False def start_ligation(self): """Starts ligation calculator.""" is_empty = self.is_empty([ self.ui.lineEdit.text(), self.ui.lineEdit_2.text(), self.ui.lineEdit_3.text(), self.ui.lineEdit_4.text(), self.ui.lineEdit_5.text(), self.ui.lineEdit_6.text() ]) if is_empty is False: message = ('Please insert a value', 'Error') else: info_message = calculate_reactions.calc_ligation( int(self.ui.lineEdit.text()), int(self.ui.lineEdit_2.text()), float(self.ui.lineEdit_3.text()), float(self.ui.lineEdit_4.text()), int(self.ui.lineEdit_5.text()), float(self.ui.lineEdit_6.text())) message = (info_message, 'Results') self.show_info_message(message[0], message[1]) def start_solution(self): """Starts solution calculator.""" is_empty = self.is_empty([ self.ui.lineEdit_13.text(), self.ui.lineEdit_14.text(), self.ui.spinBox.value() ]) if is_empty is False: message = ('Please insert a value', 'Error') else: info_message = calculate_reactions.calc_solution( str(self.ui.comboBox.currentText()), float(self.ui.lineEdit_13.text()), float(self.ui.lineEdit_14.text()), int(self.ui.spinBox.value()), self.mm) message = (info_message, 'Results') self.show_info_message(message[0], message[1]) def start_mixer(self): """Starts mixer calculator.""" is_empty = self.is_empty([ self.ui.lineEdit_15.text(), self.ui.lineEdit_16.text(), self.ui.lineEdit_17.text() ]) if is_empty is False: message = ('Please insert a value', 'Error') else: info_message = calculate_reactions.calc_dilution( float(self.ui.lineEdit_15.text()), float(self.ui.lineEdit_16.text()), float(self.ui.lineEdit_17.text()), str(self.ui.comboBox_2.currentText()), str(self.ui.comboBox_3.currentText()), str(self.ui.comboBox_4.currentText())) message = (info_message, 'Results') self.show_info_message(message[0], message[1]) def show_info_message(self, message, msg_type): """Shows a message dialog.""" QtGui.QMessageBox.information( self, msg_type, """<p style="font-family: 'Comic Sans MS'; font-size:14pt; color:#2E9AFE">""" + message + """</p>""") def show_about_message(self): """Shows about box.""" self.w = AboutPopup(self.images_location) self.w.setGeometry(QtCore.QRect(100, 100, 610, 350)) self.w.show() def show_help(self): """Show help.""" webbrowser.open( "labtools.ipk-gatersleben.de/help/LabtoolsQt/LabtoolsQt.html")