Exemplo n.º 1
0
 def __tableSlot(self,row, col):
     if self.__fillingValues:
         return
     item = self.__table.item(row, col)
     if item is not None:
         _logger.debug("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:
                 item.setText(matkey)
             else:
                 msg=qt.QMessageBox(self.__table)
                 msg.setIcon(qt.QMessageBox.Critical)
                 msg.setText("Invalid Formula %s" % compound)
                 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")
             msg.exec_()
             self.__table.setCurrentCell(row, col)
             return
     self._updateCurrent()
Exemplo n.º 2
0
 def __nameLineSlot(self):
     _logger.debug("__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
Exemplo n.º 3
0
 def __nameLineSlot(self):
     _logger.debug("__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
Exemplo n.º 4
0
 def __tableSlot(self,row, col):
     if self.__fillingValues:
         return
     item = self.__table.item(row, col)
     if item is not None:
         _logger.debug("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:
                 item.setText(matkey)
             else:
                 msg=qt.QMessageBox(self.__table)
                 msg.setIcon(qt.QMessageBox.Critical)
                 msg.setText("Invalid Formula %s" % compound)
                 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")
             msg.exec_()
             self.__table.setCurrentCell(row, col)
             return
     self._updateCurrent()
Exemplo n.º 5
0
 def setCurrent(self, matkey0):
     _logger.debug("setCurrent(self, matkey0=%s)", matkey0)
     matkey = Elements.getMaterialKey(matkey0)
     if self._default == {}:
         firstTime = True
     else:
         firstTime = False
     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
     if firstTime:
         self.__table.resizeColumnToContents(0)
Exemplo n.º 6
0
 def fixup(self, qstring):
     if qstring is None:
         return None
     text = str(qstring)
     key  = Elements.getMaterialKey(text)
     if key is not None:
         return QString(key)
     else:
         return qstring
Exemplo n.º 7
0
 def fixup(self, qstring):
     if qstring is None:
         return None
     text = str(qstring)
     key  = Elements.getMaterialKey(text)
     if key is not None:
         return QString(key)
     else:
         return qstring
Exemplo n.º 8
0
    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

        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:
                    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)
                    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")
                msg.exec_()
                self.__table.setCurrentCell(self.__lastRow, self.__lastColumn)
                return
        self._updateCurrent()
Exemplo n.º 9
0
    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

        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:
                    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)
                    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")
                msg.exec_()
                self.__table.setCurrentCell(self.__lastRow, self.__lastColumn)
                return
        self._updateCurrent()
Exemplo n.º 10
0
 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)
Exemplo n.º 11
0
 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)
Exemplo n.º 12
0
 def setCurrent(self, matkey0):
     _logger.debug("setCurrent(self, matkey0=%s)", 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
Exemplo n.º 13
0
 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