Model Editor Component

class modelEditor.ModelEditor.ModelEditorclass
  • Initialise the layout for dockarea
  • Use QVBoxLayout, QSplitter, QGridLayout to define the layout
  • Initalise directory to save new models, savepathtest = ‘library/deviceModelLibrary’
  • Initialise buttons and options ====>
    • Name Function Called
  • New opennew
  • Edit openedit
  • Save savemodelfile
  • Upload converttoxml
  • Add addparameters
  • Remove removeparameter
  • Diode diode_click
  • BJT bjt_click
  • MOS mos_click
  • JFET jfet_click
  • IGBT igbt_click
  • Magnetic Core magnetic_click
addparameters()
  • 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
bjt_click()
  • Set states for other elements
  • Initialise types combo box elements
    • NPN
    • PNP
  • Open the default type in the table
  • Add an event listener for type-selection event
converttoxml()
  • Called when upload button clicked
  • Used to read file form a certain location for .lib extension
  • Accordingly parse it and extract modelname and modelref
  • Also extract param value pairs
  • Take input the name of the library you want to save it as
  • Save it in User Libraries with the given name,

and input from uploaded file

createXML(model_name)
  • Create .xml and .lib file if new model is being created
  • Save it in the corresponding compoenent directory, example Diode, IGBT..
  • For each component, separate folder is there
  • Check the contents of .lib and .xml file to understand their structure
createtable(modelfile)
  • Set states for other components
  • Initialise QTable widget
  • Set options for QTable widget
  • Place QTable widget, using self.grid.addWidget
  • Select the .xml file from the modelfile passed as .lib
  • Use ET (xml.etree.ElementTree) to parse the xml file
  • Extract data from the XML and store it in modeldict
  • Show the extracted data in QTableWidget
  • Can edit QTable inplace, connect edit_modeltable function for editing
diode_click()
  • Call function, openfiletype, which opens the table view for Diode specs
  • Set states for other elements
  • Diode has no types, so hide that
edit_modeltable()
  • Called when editing model inplace in QTableWidget
  • Set states of other components
  • Get data from the modeltable of the selected row
  • Edit name and value as per needed
  • Add the val name pair in the modeldict
igbt_click()
  • Set states for other elements
  • Initialise types combo box elements
    • N-IGBT
    • P-IGBT
  • Open the default type in the table
  • Add an event listener for type-selection event
jfet_click()
  • Set states for other elements
  • Initialise types combo box elements
    • N-JFET
    • P-JFET
  • Open the default type in the table
  • Add an event listener for type-selection event
magnetic_click()
  • Set states for other elements
  • Initialise types combo box elements
  • Open the default type in the table
  • Add an event listener for type-selection event
  • No types here, only one view
mos_click()
  • Set states for other elements
  • Initialise types combo box elements
    • NMOS(Level-1 5um)
    • NMOS(Level-3 0.5um)
  • Open the default type in the table
  • Add an event listener for type-selection event
openedit()
  • When Edit button clicked, this function called
  • Set states for other buttons accordingly
  • Open the file selector box with path as deviceModelLibrary

and filetype set as .lib, save it in self.editfile - Create table for the selected .lib file using self.createtable(path) - Handle exception of no file selected

openfiletype(filetype)
  • Select path for the filetype passed
  • Accordingly call createtable(path) to draw tables usingg QTable
  • Check for the state of button before rendering
opennew()
  • To create New Model file
  • Change state of other buttons accordingly, ex. enable diode, bjt, …
  • Validate filename created, to check if one already exists
removeparameter()
  • Get the index of the current selected item
  • Remove the whole row from QTable Widget
  • Remove the param,value pair from modeldict
savemodelfile()
  • Called when save functon clicked
  • If new file created, call createXML file
  • Else call savethefile
savethefile(editfile)
  • This function save the editing in the model table
  • Create .lib and .xml file for the editfile path and replace them
  • Also print Updated Library with libpath in the command window
setfiletype(text)
  • Triggered when each type selected
  • Get the type clicked, from text
  • Open appropriate table using openfiletype(filetype)
validation(text)
  • This function checks if the file (xml type) with the name already exists
  • Accordingly show error message