def trackSubcircuit(self): """ This function is use to keep track of all Subcircuit widget """ sending_btn = self.sender() #print "Object Called is ",sending_btn.objectName() self.widgetObjCount = int(sending_btn.objectName()) self.subfile = str( QtGui.QFileDialog.getExistingDirectory(self, "Open Subcircuit", "res/SubcircuitLibrary")) self.reply = self.obj_validation.validateSub( self.subfile, self.numPorts[self.widgetObjCount - 1]) if self.reply == "True": #Setting Library to Text Edit Line self.entry_var[self.widgetObjCount].setText(self.subfile) self.subName = self.subDetail[self.widgetObjCount] #Storing to track it during conversion self.obj_trac.subcircuitTrack[self.subName] = self.subfile elif self.reply == "PORT": self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( "Please select a Subcircuit with correct number of ports.") self.msg.setWindowTitle("Error Message") self.msg.show() elif self.reply == "DIREC": self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( "Please select a valid Subcircuit directory (Containing '.sub' file)." ) self.msg.setWindowTitle("Error Message") self.msg.show()
def createProject(self): print "Create Project Called" self.workspace = self.obj_appconfig.default_workspace['workspace'] self.projName = self.projEdit.text() self.projName = str(self.projName).rstrip().lstrip( ) #Remove leading and trailing space self.projDir = os.path.join(self.workspace, str(self.projName)) print "Project Name:", self.projName #Validation for newProject if self.projName == "": self.reply = "NONE" else: self.reply = self.obj_validation.validateNewproj(str(self.projDir)) #Checking Validations Response if self.reply == "VALID": print "Validated : Creating project directory" #create project directory try: os.mkdir(self.projDir) self.close() self.projFile = os.path.join(self.projDir, self.projName + ".proj") f = open(self.projFile, "w") except: print "Some Thing Wrong" self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( 'Unable to create project. Please make sure you have write permission on ' + self.workspace) self.msg.setWindowTitle("Error Message") f.write("schematicFile " + self.projName + ".sch\n") f.close() #Now Change the current working project self.obj_appconfig.current_project['ProjectName'] = self.projDir elif self.reply == "CHECKEXIST": print "Project already exist" self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( 'The project "' + self.projName + '" already exist.Please select the different name or delete existing project' ) self.msg.setWindowTitle("Error Message") elif self.reply == "CHECKNAME": print "Name is not proper" self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( 'The project name should not contain space between them') self.msg.setWindowTitle("Error Message") elif self.reply == "NONE": print "Empyt Project Name" self.msg = QtGui.QErrorMessage(self) self.msg.showMessage('The project name cannot be empty') self.msg.setWindowTitle("Error Message")
def open_OMedit(self): """ This function call ngspice to OM edit converter and then launch OM edit. """ self.obj_appconfig.print_info('OM edit is called') self.projDir = self.obj_appconfig.current_project["ProjectName"] if self.projDir != None: if self.obj_validation.validateCirOut(self.projDir): self.projName = os.path.basename(self.projDir) self.ngspiceNetlist = os.path.join(self.projDir, self.projName + ".cir.out") self.modelicaNetlist = os.path.join(self.projDir, self.projName + ".mo") """ try: #Creating a command for Ngspice to Modelica converter self.cmd1 = "python ../ngspicetoModelica/NgspicetoModelica.py "+self.ngspiceNetlist self.obj_workThread1 = Worker.WorkerThread(self.cmd1) self.obj_workThread1.start() if self.obj_validation.validateTool("OMEdit"): #Creating command to run OMEdit self.cmd2 = "OMEdit "+self.modelicaNetlist self.obj_workThread2 = Worker.WorkerThread(self.cmd2) self.obj_workThread2.start() else: self.msg = QtGui.QMessageBox() self.msgContent = "There was an error while opening OMEdit.<br/>\ Please make sure OpenModelica is installed in your system. <br/>\ To install it on Linux : Go to <a href=https://www.openmodelica.org/download/download-linux>OpenModelica Linux</a> and install nigthly build release.<br/>\ To install it on Windows : Go to <a href=https://www.openmodelica.org/download/download-windows>OpenModelica Windows</a> and install latest version.<br/>" self.msg.setTextFormat(QtCore.Qt.RichText) self.msg.setText(self.msgContent) self.msg.setWindowTitle("Missing OpenModelica") self.obj_appconfig.print_info(self.msgContent) self.msg.exec_() except Exception as e: self.msg = QtGui.QErrorMessage() self.msg.showMessage('Unable to convert NgSpice netlist to Modelica netlist :'+str(e)) self.msg.setWindowTitle("Ngspice to Modelica conversion error") self.obj_appconfig.print_error(str(e)) """ self.obj_Mainview.obj_dockarea.modelicaEditor(self.projDir) else: self.msg = QtGui.QErrorMessage() self.msg.showMessage( 'Current project does not contain any ngspice file. Please create ngspice file with extension .cir.out' ) self.msg.setWindowTitle("Missing Ngspice netlist") else: self.msg = QtGui.QErrorMessage() self.msg.showMessage( 'Please select the project first. You can either create new project or open existing project' ) self.msg.setWindowTitle("Error Message")
def trackSubcircuitWithoutButton(self, iter_value, path_value): self.widgetObjCount = iter_value self.subfile = path_value self.reply = self.obj_validation.validateSub( self.subfile, self.numPorts[self.widgetObjCount - 1]) if self.reply == "True": #Setting Library to Text Edit Line self.entry_var[self.widgetObjCount].setText(self.subfile) self.subName = self.subDetail[self.widgetObjCount] #Storing to track it during conversion self.obj_trac.subcircuitTrack[self.subName] = self.subfile elif self.reply == "PORT": self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( "Please select a Subcircuit with correct number of ports.") self.msg.setWindowTitle("Error Message") self.msg.show() elif self.reply == "DIREC": self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( "Please select a valid Subcircuit directory (Containing '.sub' file)." ) self.msg.setWindowTitle("Error Message") self.msg.show()
def open_ngspice(self): """ This Function execute ngspice on current project """ self.projDir = self.obj_appconfig.current_project["ProjectName"] if self.projDir != None: self.obj_Mainview.obj_dockarea.ngspiceEditor(self.projDir) time.sleep(2) #Need permanent solution #Calling Python Plotting try: self.obj_Mainview.obj_dockarea.plottingEditor() except Exception as e: self.msg = QtGui.QErrorMessage(None) self.msg.showMessage('Error while opening python plotting Editor. Please look at console for more details ') print "Exception Message:",str(e) self.obj_appconfig.print_error('Exception Message : ' + str(e)) self.msg.setWindowTitle("Error Message") else: self.msg = QtGui.QErrorMessage() self.msg.showMessage('Please select the project first. You can either create new project or open existing project') self.msg.setWindowTitle("Error Message")
def startmerge(self): mergeok = self.checkinput() if mergeok == "OK": argu = ["mergedata", self.filename] result = json.loads( Leash.initcommand(self.app.options, argu, self.app.netconf)) print result if result['result'] == "Error" or result['result'] == "ServerError": errormessage = QtGui.QErrorMessage(parent=self.app) errormessage.setWindowTitle("Server Error") errormessage.setMinimumSize(400, 300) errormessage.showMessage(result['data']["Error"]) else: self.localmergetstatusthread.start() self.statusfield.clear() self.writeToStatus( "\n\n******************************************") tempstr = str(datetime.now().strftime( self.timeformat)) + ": Datamerge has started!" self.writeToStatus(tempstr) self.writeToStatus( "******************************************") self.submitlabel.setText("Merging data!") self.submitbutton.setEnabled(False) self.app.submitbutton.setEnabled(False) else: errormessage = QtGui.QErrorMessage(parent=self.app) errormessage.setWindowTitle("Configuration Error") errormessage.setMinimumSize(400, 300) errormessage.showMessage(mergeok)
def trackSubcircuitWithoutButton(self, iter_value, path_value): """ - Same as trackSubcircuit, but here the count value is passed directly without using any button as in `Add` - This is triggered only once, initally """ self.widgetObjCount = iter_value self.subfile = path_value self.reply = self.obj_validation.validateSub( self.subfile, self.numPorts[self.widgetObjCount - 1]) if self.reply == "True": # Setting Library to Text Edit Line self.entry_var[self.widgetObjCount].setText(self.subfile) self.subName = self.subDetail[self.widgetObjCount] # Storing to track it during conversion self.obj_trac.subcircuitTrack[self.subName] = self.subfile elif self.reply == "PORT": self.msg = QtGui.QErrorMessage(self) self.msg.setModal(True) self.msg.setWindowTitle("Error Message") self.msg.showMessage( "Please select a Subcircuit with correct number of ports.") self.msg.exec_() elif self.reply == "DIREC": self.msg = QtGui.QErrorMessage(self) self.msg.setModal(True) self.msg.setWindowTitle("Error Message") self.msg.showMessage( "Please select a valid Subcircuit directory " "(Containing '.sub' file).") self.msg.exec_()
def executeMemoryQuery(self): value = self.comboBox.currentIndex() execPath = os.path.abspath( os.path.dirname(sys.modules['__main__'].__file__)) if value == 0: #mem-image if int(self.lineEdit.text()) >= 0: retVal = os.popen( str(execPath + os.sep + 'memAnalyzer -f ' + self.dumpFile + ' -o tempOut.tmp -e ' + self.lineEdit.text() + ' -d 0 -m ' + self.lineEdit_2.text() + ' -w ' + self.lineEdit_6.text() + ' 2>&1')) else: retVal = os.popen( str(execPath + os.sep + 'memAnalyzer -f ' + self.dumpFile + ' -o tempOut.tmp -d 0 -m ' + self.lineEdit_2.text() + ' -w ' + self.lineEdit_6.text() + ' 2>&1')) #print(str('./memAnalyzer -f ' + self.dumpFile + ' -o tempOut.tmp -e ' + self.lineEdit.text() + ' -d 0 -m ' + self.lineEdit_2.text() + ' -w ' + self.lineEdit_6.text() + ' 2>&1')) if retVal.readline() != '': errorDialog = QtGui.QErrorMessage(self.mainWin) errorDialog.showMessage('Error in reading the memory dump: ' + retVal.readline()) else: self.textEdit.clear() try: self.textEdit.setPlainText('\n'.join( open('tempOut.tmp').readlines())) except Exception, e: errorDialog = QtGui.QErrorMessage(self.mainWin) errorDialog.showMessage( 'Error in reading the memory dump: ' + str(e))
def createSub(self): """ This function create command to call kicad to Ngspice converter. """ print "Openinig Kicad-to-Ngspice converter from Subcircuit Module" self.projDir = self.obj_appconfig.current_subcircuit["SubcircuitName"] #Validating if current project is available or not if self.obj_validation.validateKicad(self.projDir): #Checking if project has .cir file or not if self.obj_validation.validateCir(self.projDir): #print "CIR file present" self.projName = os.path.basename(self.projDir) self.project = os.path.join(self.projDir,self.projName) var1=self.project+".cir" var2="sub" self.obj_dockarea.kicadToNgspiceEditor(var1,var2) else: self.msg = QtGui.QErrorMessage(None) self.msg.showMessage('The subcircuit does not contain any Kicad netlist file for conversion.') self.msg.setWindowTitle("Error Message") else: self.msg = QtGui.QErrorMessage(None) self.msg.showMessage('Please select the subcircuit first. You can either create new subcircuit or open existing subcircuit') self.msg.setWindowTitle("Error Message")
def createSubcircuit(self, subName): """ This function create Subcircuit related directories and files """ self.create_schematic = subName #Checking if Workspace already exist or not self.schematic_path = (os.path.join(os.path.abspath('..'), 'SubcircuitLibrary', self.create_schematic)) #Validation for new subcircuit if self.schematic_path == "": self.reply = "NONE" else: self.reply = self.obj_validation.validateNewproj( str(self.schematic_path)) #Checking Validations Response if self.reply == "VALID": print "Validated : Creating subcircuit directory" try: os.mkdir(self.schematic_path) self.schematic = os.path.join(self.schematic_path, self.create_schematic) self.cmd = "eeschema " + self.schematic + ".sch" self.obj_workThread = Worker.WorkerThread(self.cmd) self.obj_workThread.start() self.close() except: #print "Some Thing Went Wrong" self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( 'Unable to create subcircuit. Please make sure you have write permission on ' + self.schematic_path) self.msg.setWindowTitle("Error Message") self.obj_appconfig.current_subcircuit[ 'SubcircuitName'] = self.schematic_path elif self.reply == "CHECKEXIST": #print "Project already exist" self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( 'The subcircuit "' + self.create_schematic + '" already exist.Please select the different name or delete existing subcircuit' ) self.msg.setWindowTitle("Error Message") elif self.reply == "CHECKNAME": #print "Name is not proper" self.msg = QtGui.QErrorMessage(self) self.msg.showMessage( 'The subcircuit name should not contain space between them') self.msg.setWindowTitle("Error Message") elif self.reply == "NONE": self.msg = QtGui.QErrorMessage(self) self.msg.showMessage('The subcircuit name cannot be empty') self.msg.setWindowTitle("Error Message")
def openKicadToNgspice(self): """ This function create command to validate and then call KicadToNgSPice converter from DockArea file @params @return """ print("Function: Open Kicad to Ngspice Converter") self.projDir = self.obj_appconfig.current_project["ProjectName"] try: self.obj_appconfig.print_info( 'Kicad to Ngspice Conversion is called') self.obj_appconfig.print_info('Current Project is ' + self.projDir) except BaseException: pass # Validating if current project is available or not if self.obj_validation.validateKicad(self.projDir): # Checking if project has .cir file or not if self.obj_validation.validateCir(self.projDir): self.projName = os.path.basename(self.projDir) self.project = os.path.join(self.projDir, self.projName) # Creating a command to run """ self.cmd = ("python3 ../kicadtoNgspice/KicadtoNgspice.py " + "self.project+".cir ") self.obj_workThread = Worker.WorkerThread(self.cmd) self.obj_workThread.start() """ var = self.project + ".cir" self.obj_dockarea.kicadToNgspiceEditor(var) else: self.msg = QtGui.QErrorMessage() self.msg.setModal(True) self.msg.setWindowTitle("Error Message") self.msg.showMessage( 'The project does not contain any Kicad netlist file ' + 'for conversion.') self.obj_appconfig.print_error( 'The project does not contain any Kicad netlist file ' + 'for conversion.') self.msg.exec_() else: self.msg = QtGui.QErrorMessage() self.msg.setModal(True) self.msg.setWindowTitle("Error Message") self.msg.showMessage( 'Please select the project first. You can either ' + 'create new project or open existing project') self.msg.exec_() self.obj_appconfig.print_warning( 'Please select the project first. You can either ' + 'create new project or open existing project')
def duplicate_current_pack(self): current_pack = self.current_pack( ) # Need to be saved since it changes within this function's for loop new_name, ok = QtGui.QInputDialog.getText( self, "Duplicate Group", 'Enter name of duplicated group:', text=current_pack if current_pack else "") if ok: if not any(rein.pack == new_name for rein in self.unit_data.reinforcements): counter = 0 for idx, unit in enumerate(self.unit_data.reinforcements): if unit.pack == current_pack: counter += 1 created_unit = unit.copy() created_unit.pack = new_name created_unit.event_id = counter created_unit.position = unit.position # Make sure position is copied over self.unit_data.add_reinforcement(created_unit) self.add_unit(created_unit) self.window.update_view() else: # Show pop-up QtGui.QErrorMessage().showMessage( "Must use new name for duplicated group!")
def __init__(self, parent=None): super().__init__(parent) # attributes self.setupUi(self) # ------- SITE DIALOG CONSTRUCTOR ARGS ----- # self.facade = face.Facade() self.dsite = SiteDialog() # Actions self.actionSiteTable.triggered.connect(self.site_display) # Custom Signals self.dsite.site_unlocks.connect(self.site_complete_enable) self.dsite.update_data # ------ SESSION DIALOG CONSTRUCTOR ARGS ----- # # Dialog boxes for user feedback self.dsession = logicsess.SessionDialog() self.error = QtGui.QErrorMessage() self.message = QtGui.QMessageBox # Custom signals self.dsession.raw_data_model.connect(self.update_data_model) # actions self.actionStart_Session.triggered.connect(self.session_display) self.mdiArea.addSubWindow(self.subwindow_2) self.mdiArea.addSubWindow(self.subwindow_1) metadf = read_csv(rootpath + end + 'data' + end + 'Cataloged_Data_Current_sorted.csv', encoding='iso-8859-11') metamodel = view.PandasTableModel( metadf[['global_id', 'lter', 'title', 'site_metadata']]) self.tblViewMeta.setModel(metamodel)
def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) # Facade set up for the taxa dialog # box. These inputs will have been already # logged in the computer in order to # reach this phase self.facade = face.Facade() self.facade.input_register(metahandle) self.facade.meta_verify() self.facade.input_register(filehandle) self.facade.load_data() self.facade.input_register(sitehandle) sitelevels = self.facade._data['SITE'].drop_duplicates( ).values.tolist() self.facade.register_site_levels(sitelevels) self.facade.input_register(taxahandle) self.sitelabel = None # Actions self.btnAddsite.clicked.connect(self.submit_change) self.btnSaveClose.clicked.connect(self.submit_change) self.btnCancel.clicked.connect(self.close) # Update boxes/preview box self.message = QtGui.QMessageBox self.error = QtGui.QErrorMessage()
def Choose_File(self): if self.File_Selector_Box.count() == 0: self.slpath = QtGui.QFileDialog.getOpenFileNames( self, 'Choose Scanalyzer File', '', "csv (*.csv)", QtGui.QFileDialog.DontUseNativeDialog) if self.slpath: self.statusBar().showMessage("Scanalyzer CSV valid.") self.File_Selector_Box.addItems(self.slpath) self.Import_Data() self.Select_File() else: self.additional_files = QtGui.QFileDialog.getOpenFileNames( self, 'Choose Scanalyzer File', '', "csv (*.csv)", QtGui.QFileDialog.DontUseNativeDialog) duplicates = [] for file in self.additional_files: if file in self.slpath: self.additional_files.remove(file) duplicates.append(file) if len(duplicates) > 0: self.Error = QtGui.QErrorMessage(self) self.Error.setWindowTitle('Error: Duplicate File!') self.Error.showMessage( 'A file with that name has already been loaded.') self.slpath.extend(self.additional_files) if self.slpath: self.statusBar().showMessage("Scanalyzer CSV's are Valid") self.File_Selector_Box.clear() self.Update_Labels() self.Import_Data()
def updateGraph(self): self.settings_widget.setDisabled(True) loading_win = LoadingWindow() start_date = self.start_date.dateTime().toPyDateTime() end_date = self.end_date.dateTime().toPyDateTime() new_time = [i for i in self.times if (i >= start_date and i < end_date)] index = self.times.index(new_time[0]), self.times.index(new_time[-1]) new_target = self.target[index[0]:index[1]+1] new_predict = self.predict[index[0]:index[1]+1] try: smoothing_window = int(self.smooth_spin.value()) except: error_window = QtGui.QErrorMessage(self) error_window.showMessage("Smoothing window must be integer value.") else: if smoothing_window > 0: self.canvas.updateData( new_time, moving_average(new_target, smoothing_window), moving_average(new_predict, smoothing_window)) else: self.canvas.updateData(new_time, new_target, new_predict) self.statusBar().showMessage("Graphing complete.", 5000) if self.anomaly_box.checkState() == QtCore.Qt.Checked: self.showAnomalies() else: self.canvas.clearSpans() self.canvas.fig.tight_layout() self.canvas.draw() self.settings_widget.setEnabled(True) loading_win.close()
def device_changed(self, device): # save current stream in case we need to restore it previous_stream = self.stream previous_device = self.device self.device = self.audiobackend.output_devices[device] self.stream = self.open_output_stream(self.device) self.logger.push("Trying to write to output device #%d" % (device)) if self.test_output_stream(self.stream): self.logger.push("Success") previous_stream.close() success = True else: self.logger.push("Fail") self.stream.close() self.stream = previous_stream self.device = previous_device success = False self.settings_dialog.comboBox_outputDevice.setCurrentIndex(device) if not success: # Note: the error message is a child of the settings dialog, so that # that dialog remains on top when the error message is closed error_message = QtGui.QErrorMessage(self.settings_dialog) error_message.setWindowTitle("Output device error") error_message.showMessage( "Impossible to use the selected output device, reverting to the previous one" )
def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) # Place holders for user inputs self.taxalned = {} self.taxackbox = {} self.taxacreate = {} self.available = None self.null = None self.saved = False # Place holder: Data Model/ Data model view self.taxamodel = None self.viewEdit = view.PandasTableModelEdit # Placeholders: Data tables self.taxa_table = None # Placeholder: Director (table builder), log self.taxadirector = None self._log = None # Placeholder for maindata Orms self.taxaorms = {} # Actions self.btnTaxasubmit.clicked.connect(self.submit_change) self.btnSaveClose.clicked.connect(self.submit_change) self.btnCancel.clicked.connect(self.close) # Update boxes/preview box self.message = QtGui.QMessageBox self.error = QtGui.QErrorMessage() self.preview = prev.TablePreview()
def addparameters(self): ''' - Called when `Add` button clicked beside QTableWidget - Open up dialog box to enter parameter and value accordingly - Validate if parameter already in list of parameters - Accordingly add parameter and value in modeldict as well as table - text1 => parameter, text2 => value ''' text1, ok = QtGui.QInputDialog.getText(self, 'Parameter', 'Enter Parameter') if ok: if text1 in list(self.modeldict.keys()): self.msg = QtGui.QErrorMessage(self) self.msg.setModal(True) self.msg.setWindowTitle("Error Message") self.msg.showMessage("The paramaeter " + text1 + " is already in the list") self.msg.exec_() return text2, ok = QtGui.QInputDialog.getText(self, 'Value', 'Enter Value') if ok: currentRowCount = self.modeltable.rowCount() self.modeltable.insertRow(currentRowCount) self.modeltable.setItem(currentRowCount, 0, QTableWidgetItem(text1)) self.modeltable.setItem(currentRowCount, 1, QTableWidgetItem(text2)) self.modeldict[str(text1)] = str(text2) else: pass else: pass
def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) # Facade set up self.facade = face.Facade() self.facade.input_register(meta_handle_1_count) self.facade.meta_verify() self.facade.input_register(file_handle_split_columns) self.facade.load_data() self.previous_click = False # Place holders for user inputs self.splitcolumnlned = {} # Place holder: Data Model/ Data model view self.splitcolumnmodel = None self.viewEdit = view.PandasTableModelEdit(None) # Placeholders: Data tables self.splitcolumntable = None # Actions self.btnPreview.clicked.connect(self.submit_change) self.btnSaveClose.clicked.connect(self.submit_change) self.btnCancel.clicked.connect(self.close) # Update boxes/preview box self.message = QtGui.QMessageBox self.error = QtGui.QErrorMessage() self.preview = tprev.TablePreview()
def set_image(self, image_file): self.image = QtGui.QImage(image_file) if self.image.width() % 16 != 0 or self.image.height() % 16 != 0: QtGui.QErrorMessage().showMessage("Image width and/or height is not divisible by 16!") return self.view.clear_scene() self.view.set_new_image(image_file)
def messagePost(self, publish): #print str(self.timeStamp.dateTime().toString('yyyy-mm-dd hh:mm:ss')) clist = self.categoryList.selectedItems() categories = [] for item in clist: categories.append(str(item.text())) if self.commentCheckBox.checkState(): comment = 1 else: comment = 0 #self.content = {'title':str(self.titleTxt.text()),'description':str(self.blogTxt.toHtml())[214:-14],'categories':categories,'dateCreated': str(self.timeStamp.dateTime().toString('yyyymmddThh:mm:ss')),'mt_allow_comments':comment} desc = str(self.blogTxt.toPlainText()) self.content = { 'title': str(self.titleTxt.text()), 'description': desc, 'categories': categories, 'mt_allow_comments': comment } try: postid = self.server.metaWeblog.newPost(1, self.username, self.password, self.content, publish) qm = QtGui.QMessageBox.information( self, 'Done:)', 'Blog updated with postid %s' % (postid)) self.clearAll() except xmlrpclib.Fault, e: qm = QtGui.QErrorMessage(self) qm.showMessage(e.faultString)
def change_mode(self): """ - This function is used for changing mode of operation for KiCad. \ - There are three modes of operation : - online - offline - disable - If none of the KiCad tools (associated with eSim) are \ open, then validate this mode by calling the function \ `validate_mode` and depending on online_flag, swap \ appropriate fp-lib-table files. - If any of the KiCad tools (associated with eSim) is open, \ then ask user to close all these tools. - If `online_flag` is `None`, then disable this feature. @params @return None """ if not self.obj_kicad.check_open_schematic(): self.validate_mode() if self.online_flag is True: os.rename( self.obj_appconfig.kicad_path + "/fp-lib-table", self.obj_appconfig.kicad_path + "/fp-lib-table-online") os.rename( self.obj_appconfig.kicad_path + "/fp-lib-table-offline", self.obj_appconfig.kicad_path + "/fp-lib-table") self.switchmode.setIcon(QtGui.QIcon('images/offline.png')) self.switchmode.setText('<b>Go Online</b>') self.switchmode.setEnabled(True) self.online_flag = False elif self.online_flag is False: os.rename( self.obj_appconfig.kicad_path + "/fp-lib-table", self.obj_appconfig.kicad_path + "/fp-lib-table-offline") os.rename( self.obj_appconfig.kicad_path + "/fp-lib-table-online", self.obj_appconfig.kicad_path + "/fp-lib-table") self.switchmode.setIcon(QtGui.QIcon('images/online.png')) self.switchmode.setText('<b>Go Offline</b>') self.switchmode.setEnabled(True) self.online_flag = True elif self.online_flag is None: self.switchmode.setIcon(QtGui.QIcon('images/disable.png')) self.switchmode.setText( '<b>Mode switching has been ' + 'disabled. Default mode set to offline</b>.') self.switchmode.setEnabled(False) else: self.msg = QtGui.QErrorMessage() self.msg.setWindowTitle("Error Message") self.msg.setModal(True) self.msg.showMessage('Please save and close all the Kicad ' + 'windows first, then change the mode') self.msg.exec_()
def addparameters(self): ''' This function is used to add new parameter in the table ''' text1, ok = QtGui.QInputDialog.getText(self, 'Parameter', 'Enter Parameter') if ok: if text1 in self.modeldict.keys(): self.msg = QtGui.QErrorMessage(self) self.msg.showMessage("The paramaeter " + text1 + " is already in the list") self.msg.setWindowTitle("Error Message") return text2, ok = QtGui.QInputDialog.getText(self, 'Value', 'Enter Value') if ok: currentRowCount = self.modeltable.rowCount() self.modeltable.insertRow(currentRowCount) self.modeltable.setItem(currentRowCount, 0, QTableWidgetItem(text1)) self.modeltable.setItem(currentRowCount, 1, QTableWidgetItem(text2)) self.modeldict[str(text1)] = str(text2) else: pass else: pass
def open_nghdl(self): """ This function calls NGHDL option in left-tool-bar. It uses validateTool() method from Validation.py: - If 'nghdl' is present in executables list then it passes command 'nghdl -e' to WorkerThread class of Worker.py. - If 'nghdl' is not present, then it shows error message. """ print("Function : NGHDL") self.obj_appconfig.print_info('NGHDL is called') if self.obj_validation.validateTool('nghdl'): self.cmd = 'nghdl -e' self.obj_workThread = Worker.WorkerThread(self.cmd) self.obj_workThread.start() else: self.msg = QtGui.QErrorMessage() self.msg.setModal(True) self.msg.setWindowTitle('NGHDL Error') self.msg.showMessage('Error while opening NGHDL. ' + 'Please make sure it is installed') self.obj_appconfig.print_error('Error while opening NGHDL. ' + 'Please make sure it is installed') self.msg.exec_()
def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) # Placeholders # user input for dialog box # logging class self.siteini = None self._log = None self._data = None self.sitelned = None # Placeholders: # Site Table from Raw data # and Site Table after edits self.site_table_data_to_upload_to_db = None self.sitetabledata = None self.sitelevels_submit_block = None self.sitelevels_change_block = None self.sitelevels_updated = None # Place holder for sqlalchemy Orms self.siteorms = {} # Viewer Classes (editable and not) self.viewEdit = view.PandasTableModelEdit self.view = view.PandasTableModel # Placeholders for data model classes for viewers: # Original data model # Database query model # Data model if updated from query self.sitetablemodel = None self.sitequerymodel = None self.querycheck = None self.updated_from_query_matches = False # User facade composed from main window self.facade = None self.lter = None # Table Director to build site table from # Builder classes self.sitedirector = None self.siteloc = {'study_site_key': None} self.saved = [] # Status Message self.error = QtGui.QErrorMessage() self.message = QtGui.QMessageBox self.preview_validate = chg.TablePreview() self.preview_validate.btnAccept.clicked.connect(self.validated) self.preview_validate.btnCancel.clicked.connect( self.preview_validate.close) # Signals and slots self.btnSiteID.clicked.connect(self.submit_change) self.btnSaveClose.clicked.connect(self.save_close) self.btnSkip.clicked.connect(self.close) self.btnChange.clicked.connect(self.change_site_label) self.btnUpdate.clicked.connect(self.update_data) self.previous_save = False
def openSchematic(self): """ This function create command to open Kicad schematic """ print "Function : Open Kicad Schematic" self.projDir = self.obj_appconfig.current_project["ProjectName"] try: self.obj_appconfig.print_info( 'Kicad Schematic is called for project ' + self.projDir) except: pass #Validating if current project is available or not if self.obj_validation.validateKicad(self.projDir): #print "calling Kicad schematic ",self.projDir self.projName = os.path.basename(self.projDir) self.project = os.path.join(self.projDir, self.projName) #Creating a command to run self.cmd = "eeschema " + self.project + ".sch " self.obj_workThread = Worker.WorkerThread(self.cmd) self.obj_workThread.start() else: self.msg = QtGui.QErrorMessage(None) self.msg.showMessage( 'Please select the project first. You can either create new project or open existing project' ) self.obj_appconfig.print_warning( 'Please select the project first. You can either create new project or open existing project' ) self.msg.setWindowTitle("Error Message")
def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.facade = None self.mainini = None # Place holder: Data Model/ Data model view self.mainmodel = None self.viewEdit = view.PandasTableModelEdit self.form_entries = None # Placeholders: Data tables self.project_table = None # Placeholder: Director (table builder), log self.maindirector = None self._log = None # Actions self.btnPreview.clicked.connect(self.submit_change) self.btnSaveClose.clicked.connect(self.submit_change) self.btnCancel.clicked.connect(self.close) self.preview = tprev.TablePreview() self.message = QtGui.QMessageBox self.error = QtGui.QErrorMessage()
def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) # Facade set up for the taxa dialog # box. These inputs will have been already # logged in the computer in order to # reach this phase # Place holders for user inputs self.obslned = {} self.obsckbox = {} self.obsraw = {} self.available = None self.null = None # Place holder: Data Model/ Data model view self.obsmodel = None self.viewEdit = view.PandasTableModelEdit # Placeholders: Data tables self.obstable = None # Placeholder: Director (table builder), log self.obsdirector = None self._log = None # Placeholder for maindata Orms self.obsorms = {} # Actions self.btnPreview.clicked.connect(self.submit_change) self.btnSaveClose.clicked.connect(self.submit_change) self.btnCancel.clicked.connect(self.close) self.tablename = None self.table = None # Update boxes/preview box self.message = QtGui.QMessageBox self.error = QtGui.QErrorMessage() self.preview = prev.TablePreview()
def loadui(self,reconnectresult): self.mainWindow=super(LeashUI,self) self.mainWindow.setWindowTitle(self.netconf["Name"]+" SAXS Leash") self.appdir=os.path.dirname(__file__)+os.sep self.mainWindow.setWindowIcon(QtGui.QIcon(self.appdir+"icons"+os.sep+"program.png")) self.tab=QtGui.QTabWidget() self.calib=QtGui.QWidget() self.caliblayout=QtGui.QHBoxLayout() self.calib.setLayout(self.caliblayout) self.calibeditor=calibeditor.calibeditor(self) self.caliblayout.addWidget(self.calibeditor) self.submitlayout=QtGui.QVBoxLayout() self.caliblayout.addLayout(self.submitlayout) self.queuestatuslabel=QtGui.QLabel("No queue on server.") self.filestatuslabel=QtGui.QLabel("") self.submitbutton=QtGui.QPushButton("Start Server Queue") self.submitlayout.addWidget(self.queuestatuslabel) self.submitlayout.addWidget( self.filestatuslabel) self.submitlayout.addWidget(self.submitbutton) self.submitlayout.addStretch() self.tab.addTab( self.calib , "Calib") self.plotpanel=plotpanel.plotpanel(self.tab) plottab=self.tab.addTab( self.plotpanel , "Plots") self.histpanel=histpanel.histpanel(self) self.tab.addTab( self.histpanel , "History") self.mainWindow.setCentralWidget (self.tab ) self.connect(self.submitbutton,QtCore.SIGNAL('clicked()'),self.startqueue) self.connect(self.calibeditor.model,QtCore.SIGNAL("dataChanged(QModelIndex,QModelIndex)"),self.statusmodified) self.errormessage=QtGui.QErrorMessage() self.menue=leashmenue.menueitems(self) self.connect(self.calibeditor.model, QtCore.SIGNAL("fileNameChanged()"),self.updatewindowtitle) self.plotthread=plotdatathread.plotthread(self) self.connect(self.plotthread,QtCore.SIGNAL("plotdata(QString)"),self.plotpanel.plot) self.connect(self.plotthread,QtCore.SIGNAL("plotdata(QString)"),self.histpanel.plot) self.connect(self.plotthread,QtCore.SIGNAL("histupdate(QString)"),self.histpanel.timestep) if not self.localserver: self.checkServerCalibchanged=checkServerCalibchanged.checkServerCalibChangedThread(self) self.connect(self.plotthread,QtCore.SIGNAL("ServerQueueTimeChanged()"), self.checkServerCalibchanged.start) self.connect(self.checkServerCalibchanged,QtCore.SIGNAL("ServerQueueChanged(QString)"),self.notifyServerChange) if reconnectresult and reconnectresult["result"]=="cal": self.calibeditor.model.loadservercalib(reconnectresult) self.calibeditor.reset() self.mainWindow.setWindowTitle(self.netconf["Name"]+" SAXS Leash: Server Calibration") self.setqueuesynced() elif len(self.args)>0: filename=self.args[0] self.calibeditor.model.loadfile(filename) self.calibeditor.reset() self.mainWindow.setWindowTitle(self.netconf["Name"]+" SAXS Leash: "+filename) self.menue.appendrecentfile(filename) self.plotthread.start() self.consolidatepanel=consolidatepanel.consolidatepanel(self) self.tab.addTab( self.consolidatepanel , "Consolidate")