def __nameLineSlot(self):
     if DEBUG:
         print("__nameLineSlot(self)")
     qstring = self.__nameLine.text()
     text = str(qstring)
     if self.__toolMode:
         if len(text):
             matkey = Elements.getMaterialKey(text)
         if matkey is not None:
             self.setCurrent(matkey)
             #Disable everything
             self.__disableInput()
         elif text in Elements.ElementList:
             self.__disableInput()
             name = Elements.Element[text]['name']
             self._current['Comment'] = name[0].upper() + name[1:]
             self._current['CompoundList'] = [text + "1"]
             self._current['CompoundFraction'] = [1.0]
             self._current['Density'] = Elements.Element[text]['density']
             self._fillValues()
             self._updateCurrent()
             self.__nameLine.setText("%s" % text)
         else:
             self._current['Comment'] = text
             self.__numberSpin.setEnabled(True)
             self.__table.setEnabled(True)
             self.__densityLine.setEnabled(True)
             self.__thicknessLine.setEnabled(True)
     else:
         self._current['Comment'] = text
 def fixup(self, qstring):
     if qstring is None:
         return None
     text = str(qstring)
     key = Elements.getMaterialKey(text)
     if key is not None:
         return qt.QString(key)
     else:
         return qstring
 def __tableSlot(self, row, col):
     if self.__fillingValues: return
     if QTVERSION < '4.0.0':
         qstring = self.__table.text(row, col)
     else:
         item = self.__table.item(row, col)
         if item is not None:
             if DEBUG:
                 print("table item is None")
             qstring = item.text()
         else:
             qstring = ""
     if col == 0:
         compound = str(qstring)
         if Elements.isValidFormula(compound):
             pass
         else:
             matkey = Elements.getMaterialKey(compound)
             if matkey is not None:
                 if QTVERSION < '4.0.0':
                     self.__table.setText(row, col, matkey)
                 else:
                     item.setText(matkey)
             else:
                 msg = qt.QMessageBox(self.__table)
                 msg.setIcon(qt.QMessageBox.Critical)
                 msg.setText("Invalid Formula %s" % compound)
                 if QTVERSION < '4.0.0':
                     msg.exec_loop()
                 else:
                     msg.exec_()
                 self.__table.setCurrentCell(row, col)
                 return
     else:
         try:
             float(str(qstring))
         except:
             msg = qt.QMessageBox(self.__table)
             msg.setIcon(qt.QMessageBox.Critical)
             msg.setText("Invalid Float")
             if QTVERSION < '4.0.0':
                 msg.exec_loop()
             else:
                 msg.exec_()
             self.__table.setCurrentCell(row, col)
             return
     self._updateCurrent()
 def _checkDensityThickness(self, text, row):
     try:
         currentDensity = float(str(self.text(row, 3)))
     except:
         currentDensity = 0.0
     try:
         currentThickness = float(str(self.text(row, 4)))
     except:
         currentThickness = 0.0
     defaultDensity = -1.0
     defaultThickness = -0.1
     #check if default density is there
     if Elements.isValidFormula(text):
         #check if single element
         if text in Elements.Element.keys():
             defaultDensity = Elements.Element[text]['density']
         else: 
             elts = [ w for w in re.split('[0-9]', text) if w != '']
             nbs = [ int(w) for w in re.split('[a-zA-Z]', text) if w != '']
             if len(elts) == 1 and len(nbs) == 1:
                 defaultDensity = Elements.Element[elts[0]]['density']
     elif Elements.isValidMaterial(text):
         key = Elements.getMaterialKey(text)
         if key is not None:
             if 'Density' in Elements.Material[key]:
                 defaultDensity = Elements.Material[key]['Density']
             if 'Thickness' in Elements.Material[key]:
                 defaultThickness = Elements.Material[key]['Thickness'] 
     if defaultDensity >= 0.0:
         self.setText(row, 3, "%g" % defaultDensity)
     elif currentDensity <= 0:
         # should not be better to raise an exception if the
         # entered density or thickness were negative?
         self.setText(row, 3, "%g" % 1.0)
     if defaultThickness >= 0.0:
         self.setText(row, 4, "%g" % defaultThickness)
     elif currentThickness <= 0.0:
         # should not be better to raise an exception if the
         # entered density or thickness were negative?
         self.setText(row, 4, "%g" % 0.1)
 def setCurrent(self, matkey0):
     if DEBUG: "setCurrent(self, matkey0) ", matkey0
     matkey = Elements.getMaterialKey(matkey0)
     if matkey is not None:
         if self.__toolMode:
             #make sure the material CANNOT be modified
             self._current = copy.deepcopy(Elements.Material[matkey])
             if self.__table.isEnabled():
                 self.__disableInput()
         else:
             self._current = Elements.Material[matkey]
     else:
         self._setCurrentDefault()
         if not self.__toolMode:
             Elements.Material[matkey0] = self._current
     self.__numberSpin.setFocus()
     try:
         self._fillValues()
         self._updateCurrent()
     finally:
         if self.__toolMode:
             self.__nameLine.setText("%s" % matkey)
         self.__fillingValues = False
    def __tableSlot2(self, row, col):
        if self.__fillingValues: return
        if self.__lastRow is None:
            self.__lastRow = row

        if self.__lastColumn is None:
            self.__lastColumn = col

        if QTVERSION < '4.0.0':
            qstring = self.__table.text(self.__lastRow, self.__lastColumn)
        else:
            item = self.__table.item(self.__lastRow, self.__lastColumn)
            if item is None:
                item = qt.QTableWidgetItem("", qt.QTableWidgetItem.Type)
                self.__table.setItem(self.__lastRow, self.__lastColumn, item)
            qstring = item.text()

        if self.__lastColumn == 0:
            compound = str(qstring)
            if Elements.isValidFormula(compound):
                pass
            else:
                matkey = Elements.getMaterialKey(compound)
                if matkey is not None:
                    if QTVERSION < '4.0.0':
                        self.__table.setText(self.__lastRow, self.__lastColumn,
                                             matkey)
                    else:
                        item = self.__table.item(self.__lastRow,
                                                 self.__lastColumn)
                        if item is None:
                            item = qt.QTableWidgetItem(
                                matkey, qt.QTableWidgetItem.Type)
                            self.__table.setItem(self.__lastRow,
                                                 self.__lastColumn, item)
                        else:
                            item.setText(matkey)
                else:
                    msg = qt.QMessageBox(self.__table)
                    msg.setIcon(qt.QMessageBox.Critical)
                    msg.setText("Invalid Formula %s" % compound)
                    if QTVERSION < '4.0.0':
                        msg.exec_loop()
                    else:
                        msg.exec_()
                    self.__table.setCurrentCell(self.__lastRow,
                                                self.__lastColumn)
                    return
        else:
            try:
                float(str(qstring))
            except:
                msg = qt.QMessageBox(self.__table)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Invalid Float")
                if QTVERSION < '4.0.0':
                    msg.exec_loop()
                else:
                    msg.exec_()
                self.__table.setCurrentCell(self.__lastRow, self.__lastColumn)
                return
        self._updateCurrent()