def value(self) : if (self.cacheIsDirty): self.cacheIsDirty = False formulaStr = self.formula() if (formulaStr.startsWith('\'')): self.cachedValue = formulaStr.mid(1) elif (formulaStr.startsWith('=')): self.cachedValue = self.Invalid expr = QString(formulaStr.mid(1)) expr.replace(" ", "") expr.append(QChar.Null) pos = int(0) cachedValue = self.evalExpression(expr, pos) if (expr[pos] != QChar.Null): cachedValue = self.Invalid else: pass ok = bool(False) # double d = formulaStr.toDouble(&ok) # if (ok) # cachedValue = d # else # cachedValue = formulaStr # return self.cachedValue
def __init__(self, text, parent = None): super(ReportWindow, self).__init__(parent, layoutCls = QGridLayout) self.setWindowTitle("Fehler!") self.infoLabel = QLabel(self) self.infoLabel.setText("Ein Fehler ist aufegtretten. Bitte senden Sie den unteren Text an <a href=\"mailto:[email protected]\">[email protected]</a>!") self.infoLabel.setTextFormat(Qt.RichText) self.infoLabel.setTextInteractionFlags(Qt.TextBrowserInteraction) self.infoLabel.setOpenExternalLinks(True) self.text = text self.textArea = QTextEdit(self) self.textArea.setPlainText(text) self.textArea.setReadOnly(True) self.okBtn = QPushButton(QString.fromUtf8("Meldung schließen"), self) self.okBtn.clicked.connect(self.close) self.copyBtn = QPushButton(QString.fromUtf8("Text kopieren"), self) self.copyBtn.clicked.connect(self.copy) self.myLayout.addWidget(self.infoLabel, 0,0,1,2) self.myLayout.addWidget(self.textArea, 1,0,1,2) self.myLayout.addWidget(self.copyBtn, 2,0,1,1) self.myLayout.addWidget(self.okBtn, 2,1,1,1)
def __pack_cpk(self, csv, cpk): self.progress.setValue(0) self.progress.setMaximum(1000) self.progress.setLabelText("Building %s" % cpk) process = QProcess() process.start("tools/cpkmakec", [csv, cpk, "-align=2048", "-mode=FILENAME"]) percent = 0 while not process.waitForFinished(100): output = QString(process.readAll()) output = output.split("\n", QString.SkipEmptyParts) for line in output: line = common.qt_to_unicode(line) match = OUTPUT_RE.search(line) if match == None: continue percent = float(match.group(1)) * 1000 self.progress.setValue(percent) percent += 1
def saveProjectAs(self): ''' Save the project configuration under a different name ''' try: # get the location for the new config file on disk start_dir = paths.OPUS_PROJECT_CONFIGS_PATH configDialog = QFileDialog() filter_str = QString("*.xml") fd = configDialog.getSaveFileName(self,QString("Save As..."), QString(start_dir), filter_str) # Check for cancel if not fd: return filename = QString(fd) # append xml extension if no extension was given if not filename.endsWith('.xml') and len(filename.split('.')) == 1: filename = filename + '.xml' if not self.saveProject(filename): return # hack: open the project right after save to properly change the # 'active project' related parameters self.openProject(filename) except: errorMessage = formatExceptionInfo(custom_message = \ 'Unexpected error saving config') QMessageBox.warning(self, 'Warning', errorMessage)
def parameterValues(self): params = QString() for widget in self.widget.children(): vals = widget.parameterValues() if not vals is None: params.append(QStringList(vals.values()).join("")) return {self.id:params}
def get_cdrom_drives(): drives = [] cdinfo = QFile(LINUX_CDROM_INFO) if cdinfo.open(QIODevice.ReadOnly | QIODevice.Text): drive_names = [] drive_audio_caps = [] line = cdinfo.readLine() while not line.isEmpty(): if line.indexOf(':') != -1: key, values = line.split(':') if key == 'drive name': drive_names = QString(values).trimmed().split(QRegExp("\\s+"), QString.SkipEmptyParts) elif key == 'Can play audio': drive_audio_caps = [v == '1' for v in QString(values).trimmed().split(QRegExp("\\s+"), QString.SkipEmptyParts)] line = cdinfo.readLine() # Show only drives that are capable of playing audio for drive in drive_names: if drive_audio_caps[drive_names.indexOf(drive)]: device = u'/dev/%s' % drive symlink_target = QFile.symLinkTarget(device) if symlink_target != '': device = symlink_target drives.append(device) return sorted(drives)
def on_addLexerButton_clicked(self): """ Private slot to add the lexer association displayed to the list. """ ext = self.editorFileExtEdit.text() if ext.startsWith(self.extsep): ext.replace(self.extsep, "") lexer = self.editorLexerCombo.currentText() if lexer in self.extras: pygmentsLexer = self.pygmentsLexerCombo.currentText() if pygmentsLexer.isEmpty(): lexer = pygmentsLexer else: lexer = QString("Pygments|%1").arg(pygmentsLexer) if not ext.isEmpty() and not lexer.isEmpty(): itmList = self.editorLexerList.findItems(\ ext, Qt.MatchFlags(Qt.MatchExactly), 0) if itmList: index = self.editorLexerList.indexOfTopLevelItem(itmList[0]) itm = self.editorLexerList.takeTopLevelItem(index) del itm itm = QTreeWidgetItem(self.editorLexerList, QStringList() << ext << lexer) self.editorFileExtEdit.clear() self.editorLexerCombo.setCurrentIndex(0) self.pygmentsLexerCombo.setCurrentIndex(0) self.editorLexerList.sortItems(self.editorLexerList.sortColumn(), self.editorLexerList.header().sortIndicatorOrder())
def _rename(self, src, dest): prefix = unicode(self.path.toUtf8()) src = QString(os.path.join(unicode(src.toUtf8()), prefix)) dest = QString(os.path.join(unicode(dest.toUtf8()), prefix)) f = QFile(src) return f.rename(dest)
def saveVariable(self): items = self.workspaceTree.selectedIndexes() if len(items) < 1: return False item = self.workspaceTree.model().getItem(items[0]) name = item.data(0) parent = item.parent() names = [name] while not parent is None: names.append(QString(parent.data(0))) parent = parent.parent() if len(names) > 1: names.pop(-1) name = names[-1] fd = QFileDialog(self.parent, "Save data to file", os.path.join(str(robjects.r.getwd()[0]), unicode(name)+".Rdata"), "R data file (*.Rdata)") fd.setAcceptMode(QFileDialog.AcceptSave) if not fd.exec_() == QDialog.Accepted: return False files = fd.selectedFiles() selectedFile = files.first() if selectedFile.length() == 0: return False suffix = QString(fd.selectedNameFilter()) index1 = suffix.lastIndexOf("(")+2 index2 = suffix.lastIndexOf(")") suffix = suffix.mid(index1, index2-index1) if not selectedFile.endsWith(suffix): selectedFile.append(suffix) commands = QString('save(%s, file="%s")' % (name,selectedFile)) self.runCommand(commands)
def createMap(filename): """ Creates a Python dictionary from a CSV file. The CSV file must be semicolon separated (";") and must not contain quotes. """ # Open the CSV file file = QFile( "%s/%s" % (basedir,filename)) file.open(QIODevice.OpenMode(QIODevice.ReadOnly)) map = {} # Read all lines while True: qByteArray = file.readLine() # Break the while loop when the end is reached if qByteArray.size() == 0: break # Remove the trailing end line line = QString(qByteArray).remove(QRegExp("\n")) # Split the line list = line.split(";") # Set the key and value to the map map[str(list[0].toUpper().toUtf8())] = str(list[1].toUtf8()) return map
def update_treasury_data(self): start = self.startDate.date() start = QDateTime(start, self.timeStart).toPyDateTime() end = self.endDate.date() end = QDateTime(end, self.timeEnd).toPyDateTime() total = self.guild.get_total_in_week(start, end) self.depositDate_txt.setText(str(total)) rank = self.treasuryRankBox.currentText() text = self.treasuryNameEntry.text().toLower() memlist = [] self.treasuryMemberList.clear() for i in self.guild.data: compare = i.lower() compare = QString(compare) mem_total = 0 for j in self.guild.data[i].get_deposits_in_dates(start, end): mem_total += j[1] if mem_total and compare.startsWith(text) and (self.guild.data[i].rank == rank or rank == "All"): memlist.append(i) memlist = sorted(memlist, key=lambda x: self.guild.data[x].rank_val, reverse=True) for i in memlist: if not i in self.guild.get_members_in_guild().keys(): i += ' (left)' self.treasuryMemberList.addItem(i) self.update_member_deposits()
def processBuffer(self, buff): printer = QString() for char in buff: if (char > "\x20" and char < "\x7e") or (self.isMetaChar(char)): printer.append(char) return printer
def send_to_process(self, qstr): if not isinstance(qstr, QString): qstr = QString(qstr) if not qstr.endsWith('\n'): qstr.append('\n') self.process.write(qstr.toLocal8Bit()) self.process.waitForBytesWritten(-1)
def execSql( self, strQuery ): strQuery = QString(strQuery) query = QSqlQuery( self.sqlDatabase() ) if query.exec_( strQuery ) != True: print "Failed execute ", strQuery.toLatin1().data(), ' error:' , query.lastError().databaseText().toLatin1().data() return query
def checkLocation(self, str, base, type): offset = QString(str) off = offset.toULongLong(base) if off[1]: if type == "Offset": if off[1] < self.heditor.filesize: return off[0] else: print "Offset too high" return -1 elif type == "Page": if off[1] < self.heditor.pages: return off[0] else: print "Page too high" return -1 elif type == "Block": if off[1] < self.heditor.blocks: return off[0] else: print "Block too high" return -1 else: return -1 else: return -1 return -1
def runStatusFromThread(self): status = self.runThread.estimationguielement.estimation._compute_progress() self.progressBar.setValue(status["percentage"]) newString = QString(status["message"]) newString.leftJustified(60) self.statusLabel.setText(newString) self.logFileKey = self.runThread.estimationguielement.estimation._get_current_log(self.logFileKey)
def start(self): #reads the info in the widgets and calls the sql command command = self.command for i,item in enumerate(self.dlg.ui.widgets): if type(item)==type(QTextEdit()): text=unicode(item.toPlainText()) elif type(item)==type(QLineEdit()): text=unicode(item.text()) elif type(item)==type(QDoubleSpinBox()): text=unicode(item.value()) elif type(item)==type(QComboBox()): text=unicode(item.currentText()) elif isinstance(item, RListWidget): items=item.selectedItems() text=QString() for j in items: text.append(j.text()+item.spDelimiter()) text.remove(-1,1) else: try: text=unicode(item.currentText()) except: text="Error loading widget." command = command.replace("|"+unicode(i+1)+"|",text) self.runCommand(command) self.dlg.close()
class SaxMovieHandler(QXmlDefaultHandler): def __init__(self, movies): super(SaxMovieHandler, self).__init__() self.movies = movies self.text = QString() self.error = None def clear(self): self.year = None self.minutes = None self.acquired = None self.title = None self.notes = None def startElement(self, namespaceURI, localName, qName, attributes): if qName == "MOVIE": self.clear() self.year = intFromQStr(attributes.value("YEAR")) self.minutes = intFromQStr(attributes.value("MINUTES")) ymd = attributes.value("ACQUIRED").split("-") if ymd.count() != 3: raise ValueError("invalid acquired date {0}".format( str(attributes.value("ACQUIRED")))) self.acquired = QDate(intFromQStr(ymd[0]), intFromQStr(ymd[1]), intFromQStr(ymd[2])) elif qName in ("TITLE", "NOTES"): self.text = QString() return True def characters(self, text): self.text += text return True def endElement(self, namespaceURI, localName, qName): if qName == "MOVIE": if (self.year is None or self.minutes is None or self.acquired is None or self.title is None or self.notes is None or self.title.isEmpty()): raise ValueError("incomplete movie record") self.movies.add(Movie(self.title, self.year, self.minutes, self.acquired, decodedNewlines(self.notes))) self.clear() elif qName == "TITLE": self.title = self.text.trimmed() elif qName == "NOTES": self.notes = self.text.trimmed() return True def fatalError(self, exception): self.error = "parse error at line {0} column {1}: {2}".format( exception.lineNumber(), exception.columnNumber(), exception.message()) return False
def selectFile(self): #selectedFileName = QtGui.QFileDialog.getOpenFileName(self,"Open file",QtCore.QDir.currentPath(), "SVG files (*.svg);;All files (*.*)", QtCore.QString("SVG files (*.svg)")); selectedFileName = QFileDialog.getOpenFileName(self, "Open file", expanduser("~"), "SVG files (*.svg)", QString("SVG files (*.svg)")); if selectedFileName: foldername = QString(selectedFileName) foldername.remove(QRegExp("^.*/")).remove(QRegExp("\.[^\.]*$")) self.openFileLineEdit.setText(selectedFileName) self.folderNameLineEdit.setText(foldername)
def getText(node): child = node.firstChild() text = QString() while not child.isNull(): if child.nodeType() == QDomNode.TextNode: text += child.toText().data() child = child.nextSibling() return text.trimmed()
def find(self, name): location = QString(robjects.r.help(unicode(name))[0]) regexp = QRegExp(r"(library.*)") start = regexp.indexIn(location) end = location.lastIndexOf("/") name = location[end+1:] location = location[start-1:]+".html" location.replace("help", "html") self.help_open(location, name, location)
def toPython(string): """ Little helper function to workaround MS Windows unicode support """ qstring = QString(string) if os.name == 'nt': return str(qstring.toAscii()) else: return unicode(qstring)
def run(self, context, match): """ Have KDE open the query in the browser. """ urlString = QString("http://www.haskell.org/hoogle/?hoogle=") # Apparently Hoogle doesn't like percent encoded URLs. # urlString.append(QUrl.toPercentEncoding(match.data().toString())) urlString.append(match.data().toString()) QDesktopServices().openUrl(QUrl(urlString))
def data(self, role): if role == Qt.DisplayRole: if self.nodesCount : return QString.fromUtf8(self.__tag.name() + ' (' + str(self.nodesCount) + ')') else: return QString.fromUtf8(self.__tag.name()) elif role == Qt.BackgroundRole: color = self.__tag.color() return QColor(color.r, color.g, color.b) return QListWidgetItem.data(self, role)
def paint(self, painter, option, widget=None): # Draw id painter.save() robot_id = QString('?') robot_id.setNum(self.robot.uid) painter.setBrush(BLACK) painter.setPen(BLACK) painter.setFont(QFont('Courier', 132, 2)) painter.drawText(-90, -90, robot_id) painter.restore()
def copy(self): ''' Copy the table selection to the clipboard At this point, works only for single line selection ''' selection = self.selectionModel() indexes = selection.selectedIndexes() indexes.sort() previous = indexes.pop(0) data = self.model().data(previous) text = data.toString() selected_text = QString(text) for current in indexes: if current.row() != previous.row(): selected_text.append('\n') else: selected_text.append('\t') data = self.model().data(current) text = data.toString() selected_text.append(text) previous = current selected_text.append('\n') QApplication.clipboard().setText(selected_text)
def paintEvent(self, event=None): font = QFont(self.font()) font.setPointSize(font.pointSize() - 1) fm = QFontMetricsF(font) fracWidth = fm.width(FractionSlider.WSTRING) indent = fm.boundingRect("9").width() / 2.0 if not X11: fracWidth *= 1.5 span = self.width() - (FractionSlider.XMARGIN * 2) value = self.__numerator / float(self.__denominator) painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.setRenderHint(QPainter.TextAntialiasing) painter.setPen(self.palette().color(QPalette.Mid)) painter.setBrush(self.palette().brush( QPalette.AlternateBase)) painter.drawRect(self.rect()) segColor = QColor(Qt.green).dark(120) segLineColor = segColor.dark() painter.setPen(segLineColor) painter.setBrush(segColor) painter.drawRect(FractionSlider.XMARGIN, FractionSlider.YMARGIN, span, fm.height()) textColor = self.palette().color(QPalette.Text) segWidth = span / self.__denominator segHeight = fm.height() * 2 nRect = fm.boundingRect(FractionSlider.WSTRING) x = FractionSlider.XMARGIN yOffset = segHeight + fm.height() for i in range(self.__denominator + 1): painter.setPen(segLineColor) painter.drawLine(x, FractionSlider.YMARGIN, x, segHeight) painter.setPen(textColor) y = segHeight rect = QRectF(nRect) rect.moveCenter(QPointF(x, y + fm.height() / 2.0)) painter.drawText(rect, Qt.AlignCenter, QString.number(i)) y = yOffset rect.moveCenter(QPointF(x, y + fm.height() / 2.0)) painter.drawText(rect, Qt.AlignCenter, QString.number(self.__denominator)) painter.drawLine(QPointF(rect.left() + indent, y), QPointF(rect.right() - indent, y)) x += segWidth span = int(span) y = FractionSlider.YMARGIN - 0.5 triangle = [QPointF(value * span, y), QPointF((value * span) + (2 * FractionSlider.XMARGIN), y), QPointF((value * span) + FractionSlider.XMARGIN, fm.height())] painter.setPen(Qt.yellow) painter.setBrush(Qt.darkYellow) painter.drawPolygon(QPolygonF(triangle))
def copy(self): ''' Copy the table selection to the clipboard ''' selection = self.selectionModel() indexes = selection.selectedIndexes() indexes.sort() previous = indexes.pop(0) data = self.model().data(previous) try: text = data.toString() except: text = str(data) selected_text = QString(text) for current in indexes: if current.row() != previous.row(): selected_text.append('\n') else: selected_text.append('\t') data = self.model().data(current) try: text = data.toString() except: text = str(data) selected_text.append(text) previous = current selected_text.append('\n') QApplication.clipboard().setText(selected_text)
def startCommand(self, isofile): print "startCommand" b=QString("cdrecord -v -pad speed=8 dev=/dev/cdrom "+isofile) a=b.split(" ") self.process.start(a.first(), a.mid(1)) if self.process.exitCode(): print "exitCode" self.resetButtons() return
def save_html(outObj, uiObj, dictBeamData, dictColData, reportsummary, filename): fileName = (filename) myfile = open(fileName, "w") myfile.write(t('! DOCTYPE html')) myfile.write(t('html')) myfile.write(t('head')) myfile.write( t('link type="text/css" rel="stylesheet" href="mystyle.css"/')) myfile.write(t('/head')) myfile.write(t('body')) #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& # DATA PARAMS #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #Project summary data companyname = str(reportsummary["ProfileSummary"]['CompanyName']) companylogo = str(reportsummary["ProfileSummary"]['CompanyLogo']) groupteamname = str(reportsummary["ProfileSummary"]['Group/TeamName']) designer = str(reportsummary["ProfileSummary"]['Designer']) projecttitle = str(reportsummary['ProjectTitle']) subtitle = str(reportsummary['Subtitle']) jobnumber = str(reportsummary['JobNumber']) method = str(reportsummary['Method']) addtionalcomments = str(reportsummary['AdditionalComments']) #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #FinPlate Main Data connectivity = str(uiObj['Member']['Connectivity']) shear_load = str(uiObj['Load']['ShearForce (kN)']) column_sec = str(uiObj['Member']['ColumSection']) beam_sec = str(uiObj['Member']['BeamSection']) plateThick = str(uiObj['Plate']['Thickness (mm)']) boltType = str(uiObj['Bolt']['Type']) boltGrade = str(uiObj['Bolt']['Grade']) boltDia = str(uiObj['Bolt']['Diameter (mm)']) #'Size (mm)' weld_Thick = str(uiObj['Weld']['Size (mm)']) beamdepth = str(int(round(outObj['Plate']['beamdepth'], 1))) beamflangethk = str(int(round(outObj['Plate']['beamflangethk'], 1))) beamrootradius = str(int(round(outObj['Plate']['beamrootradius'], 1))) platethk = str(int(round(outObj['Plate']['platethk'], 1))) blockshear = str(int(round(outObj['Plate']['blockshear'], 1))) colflangethk = str(int(round(outObj['Plate']["colflangethk"], 1))) colrootradius = str(int(round(outObj['Plate']['colrootradius']))) plateWidth = str(int(round(outObj['Plate']['width'], 1))) plateLength = str(int(round(outObj['Plate']['height'], 1))) weldSize = str(int(round(outObj['Weld']['thickness'], 1))) plateDimension = plateLength + 'X' + plateWidth + 'X' + plateThick noOfBolts = str(outObj['Bolt']['numofbolts']) noOfRows = str(outObj['Bolt']['numofrow']) noOfCol = str(outObj['Bolt']['numofcol']) edge = str(int(round(outObj['Bolt']['edge'], 1))) gauge = str(int(round(outObj['Bolt']['gauge'], 1))) pitch = str(int(round(outObj['Bolt']['pitch'], 1))) end = str(int(round(outObj['Bolt']['enddist'], 1))) weld_strength = str(round(float(outObj['Weld']['weldstrength'] / 1000), 3)) moment_demand = str(outObj['Plate']['externalmoment']) gap = '20' beam_tw = str(float(dictBeamData[QString("tw")])) bolt_fu = str(outObj['Bolt']['bolt_fu']) bolt_dia = str(outObj['Bolt']['bolt_dia']) kb = str(outObj['Bolt']['k_b']) beam_w_t = str(outObj['Bolt']['beam_w_t']) web_plate_t = str(outObj['Bolt']['web_plate_t']) beam_fu = str(outObj['Bolt']['beam_fu']) dia_hole = str(outObj['Bolt']['dia_hole']) web_plate_fy = str(outObj['Plate']['web_plate_fy']) weld_fu = str(outObj['Weld']['weld_fu']) weld_l = str(outObj['Weld']['effectiveWeldlength']) shearCapacity = str(round(outObj['Bolt']['shearcapacity'], 3)) bearingcapacity = str(round(outObj['Bolt']['bearingcapacity'], 4)) momentDemand = str(outObj['Plate']['externalmoment']) #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& # Header of the pdf fetched from dialogbox rstr = t('table') rstr += t('tr') row = [ 0, '<object type= "image/PNG" data= "Fossee_logo.png" width= 150></object>', 'Created with' '  ' '  ' '<object type= "image/PNG" data= "Osdag_header.png" width= 150></object>' ] rstr += t('td colspan="2" align= "center" class= "viewbl" ') + space( row[0]) + row[1] + t('/td') rstr += t('td colspan="2" align= "right" class="viewbl"') + row[2] + t( '/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Company Name'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, companyname] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Project Title'] rstr += t('td float="right" class= "header1_3"') + space( row[0]) + row[1] + t('/td') row = [0, projecttitle] rstr += t('td float="right" class= "header1_3"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Group/Team Name'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, groupteamname] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Subtitle'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, subtitle] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Designer'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, designer] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Job Number'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, jobnumber] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Date'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, time.strftime("%d /%m /%Y")] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Method'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, method] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('/table') rstr += t('hr') # rstr += t('p>  </p') # rstr += t('hr') # rstr += t('/hr') rstr += t('/hr') #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #Design Conclusion rstr += t('table') row = [0, "Design Conclusion", "IS800:2007/Limit state design"] rstr += t('tr') rstr += t('td colspan="2" class="header0"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') row = [1, "Finplate", "Pass"] rstr += t('tr') rstr += t('td class="header1 "') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header1 safe"') + row[2] + t('/td') #rstr += t('td class="header1 safe"') + row[3] + t('/td') rstr += t('/tr') row = [0, "Finplate", " "] rstr += t('tr') rstr += t('td colspan="2" class="header0"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') row = [0, "Connection Properties", " "] rstr += t('tr') rstr += t('td colspan="2" class="header1_1"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') row = [0, "Connection ", " "] rstr += t('tr') rstr += t('td colspan="2" class="header1"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') row = [1, "Connection Title", " Single Finplate"] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [1, "Connection Type", "Shear Connection"] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [0, "Connection Category ", " "] rstr += t('tr') rstr += t('td colspan="2" class="header1"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') #row = [1, "Connectivity", "Column Web Beam Web"] row = [1, "Connectivity", connectivity] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [1, "Beam Connection", "Bolted"] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') # row = [1, "Column Connection", "Welded"] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [0, "Loading (Factored Load) ", " "] rstr += t('tr') rstr += t('td colspan="2" class="header1"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') #row = [1, "Shear Force (kN)", "140"] row = [1, "Shear Force (kN)", shear_load] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [0, "Components ", " "] rstr += t('tr') rstr += t('td colspan="2" class="header1"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') #row = [1, "Column Section", "ISSC 200"] row = [1, "Column Section", column_sec] rstr += t('tr') rstr += t('td class="header1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [2, "Material", "Fe " + beam_fu] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [1, "Beam Section", "ISMB 400"] row = [1, "Beam Section", beam_sec] rstr += t('tr') rstr += t('td class="header1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [2, "Material", "Fe " + beam_fu] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [2, "Hole", "STD"] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [1, "Plate Section ", "PLT 300X10X100 "] row = [1, "Plate Section", plateDimension] rstr += t('tr') rstr += t('td class="header1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Thickness (mm)", "10"] row = [2, "Thickness (mm)", plateThick] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Width (mm)", "10"] row = [2, "Width (mm)", plateWidth] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Depth (mm)", "300"] row = [2, "Depth (mm)", plateLength] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [2, "Hole", "STD"] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [1, "Weld ", " "] rstr += t('tr') rstr += t('td colspan="2" class="header1"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') row = [2, "Type", "Double Fillet"] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Size (mm)", "6"] row = [2, "Size (mm)", weldSize] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [1, "Bolts ", " "] rstr += t('tr') rstr += t('td colspan="2" class="header1"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') #row = [2, "Type", "HSFG"] row = [2, "Type", boltType] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Grade", "8.8"] row = [2, "Grade", boltGrade] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Diameter (mm)", "20"] row = [2, "Diameter (mm)", boltDia] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Bolt Numbers", "3"] row = [2, "Bolt Numbers", noOfBolts] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Columns (Vertical Lines)", "1 "] row = [2, "Columns (Vertical Lines)", noOfCol] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Bolts Per Column", "3"] row = [2, "Bolts Per Column", noOfRows] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Gauge (mm)", "0"] row = [2, "Gauge (mm)", gauge] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Pitch (mm)", "100"] row = [2, "Pitch (mm)", pitch] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') #row = [2, "End Distance (mm)", "50"] row = [2, "End Distance (mm)", end] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + row[2] + t('/td') rstr += t('/tr') #row = [2, "Edge Distance (mm)", "50"] row = [2, "Edge Distance (mm)", edge] rstr += t('tr') rstr += t('td class="header2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') row = [0, "Assembly ", " "] rstr += t('tr') rstr += t('td colspan="2" class="header1"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') #row = [1, "Column-Beam Clearance (mm)", "20"] row = [1, "Column-Beam Clearance (mm)", gap] rstr += t('tr') rstr += t('td class="header1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2 "') + row[2] + t('/td') rstr += t('/tr') rstr += t('/table') rstr += t('h1 class="break"') # page break rstr += t('/h1') #************************************************************************************************************************* #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& # Header of the pdf fetched from dialogbox rstr += t('table') rstr += t('tr') row = [ 0, '<object type= "image/PNG" data= "Fossee_logo.png" width= 150></object>', 'Created with' '  ' '  ' '<object type= "image/PNG" data= "Osdag_header.png" width= 150></object>' ] rstr += t('td colspan="2" align= "center" class= "viewbl" ') + space( row[0]) + row[1] + t('/td') rstr += t('td colspan="2" align= "right" class="viewbl"') + row[2] + t( '/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Company Name'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, companyname] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Project Title'] rstr += t('td float="right" class= "header1_3"') + space( row[0]) + row[1] + t('/td') row = [0, projecttitle] rstr += t('td float="right" class= "header1_3"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Group/Team Name'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, groupteamname] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Subtitle'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, subtitle] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Designer'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, designer] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Job Number'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, jobnumber] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Date'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, time.strftime("%d /%m /%Y")] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Method'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, method] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('/table') rstr += t('hr') rstr += t('/hr') #************************************************************************************************************************* #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #Design Check rstr += t('table') row = [0, "Design Check", " "] rstr += t('tr') rstr += t('td colspan="4" class="header1_1"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, "Check", "Required", "Provided", "Remark"] rstr += t('td class="header1_2"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header1_2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header1_2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header1_2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') const = str(round(math.pi / 4 * 0.78, 4)) #row =[0,"Bolt shear capacity (kN)"," ","<i>V</i><sub>dsb</sub> = ((800*0.6123*20*20)/(√3*1.25*1000) = 90.53 <br> [cl. 10.3.3]"] row = [ 0, "Bolt shear capacity (kN)", " ", "<i>V</i><sub>dsb</sub> = (" + bolt_fu + "*" + const + "*" + bolt_dia + "*" + bolt_dia + ")/(√3*1.25*1000) = " + shearCapacity + "<br> [cl. 10.3.3]", "" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Bolt bearing capacity (kN)",""," <i>V</i><sub>dsb</sub> = (2.5*0.5*20*8.9*410) = 72.98<br> [cl. 10.3.4]"] row = [ 0, "Bolt bearing capacity (kN)", "", " <i>V</i><sub>dsb</sub> = (2.5*" + kb + "*" + bolt_dia + "*" + beam_tw + "*" + beam_fu + ")/(1.25*1000) = " + bearingcapacity + "<br> [cl. 10.3.4]", "" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Bolt capacity (kN)","","Min (90.53,72.98) = 72.98","<p align=right style=color:green><b>Pass</b></p>"] boltCapacity = bearingcapacity if bearingcapacity < shearCapacity else shearCapacity row = [ 0, "Bolt capacity (kN)", "", "Min (" + shearCapacity + ", " + bearingcapacity + ") = " + boltCapacity, "<p align=right style=color:green><b>Pass</b></p>" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"No. of bolts","140/72.98 = 1.9","3","<p align=right style=color:green><b>Pass</b></p>"] bolts = str(round(float(shear_load) / float(boltCapacity), 1)) row = [ 0, "No. of bolts", shear_load + "/" + boltCapacity + " = " + bolts, noOfBolts, " <p align=right style=color:green><b>Pass</b></p>" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"No.of column(s)","≤2","1"] row = [0, "No.of column(s)", " ≤2", noOfCol, ""] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"No. of bolts per column"," ","3"] row = [0, "No. of bolts per column", " ", noOfRows, ""] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Bolt pitch (mm)","≥2.5*20 = 50, ≤ Min(32*8.9, 300) = 300 <br> [cl. 10.2.2]","100"] minPitch = str(int(2.5 * float(bolt_dia))) maxPitch = str(300) if 32 * float(beam_tw) > 300 else str( int(math.ceil(32 * float(beam_tw)))) row = [ 0, "Bolt pitch (mm)", " ≥2.5* " + bolt_dia + " = " + minPitch + ", ≤Min(32*" + beam_tw + ", 300) = " + maxPitch + "<br> [cl. 10.2.2]", pitch, "" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Bolt gauge (mm)","≥2.5*20 = 50,≤ Min(32*8.9, 300) = 300 <br> [cl. 10.2.2]","0"] minGauge = str(int(2.5 * float(bolt_dia))) maxGauge = str(300) if 32 * float(beam_tw) > 300 else str( int(math.ceil(32 * float(beam_tw)))) row = [ 0, "Bolt gauge (mm)", " ≥2.5*" + bolt_dia + " = " + minGauge + ", ≤Min(32*" + beam_tw + ", 300) = " + maxGauge + " <br> [cl. 10.2.2]", gauge, "" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"End distance (mm)","≥1.7* 22 = 37.4,≤12*8.9 = 106.9 <br> [cl. 10.2.4]","50"] minEnd = str(1.7 * float(dia_hole)) maxEnd = str(12 * float(beam_tw)) row = [ 0, "End distance (mm)", " ≥1.7*" + dia_hole + " = " + minEnd + ", ≤12*" + beam_tw + " = " + maxEnd + " <br> [cl. 10.2.4]", end, "" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Edge distance (mm)","≥ 1.7* 22 = 37.4,≤12*8.9 = 106.9<br> [cl. 10.2.4]","50"," <p align=right style=color:green><b>Pass</b></p>"] minEdge = str(1.7 * float(dia_hole)) maxEdge = str(12 * float(beam_tw)) row = [ 0, "Edge distance (mm)", " ≥1.7*" + dia_hole + " = " + minEdge + ", ≤12*" + beam_tw + " = " + maxEdge + "<br> [cl. 10.2.4]", edge, " <p align=right style=color:green><b>Pass</b></p>" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') row = [ 0, "Block shear capacity (kN)", shear_load, "<i>V</i><sub>db</sub> = " + blockshear + "<br>", "" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Plate thickness (mm)","(5*140*1000)/(300*250)= 9.33","10"] minPlateThick = str( round( 5 * float(shear_load) * 1000 / (float(plateLength) * float(web_plate_fy)), 2)) row = [ 0, "Plate thickness (mm)", "(5*" + shear_load + "*1000)/(" + plateLength + "*" + web_plate_fy + ") = " + minPlateThick + "<br> [Owens and Cheal, 1989]", plateThick, "" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') # if minEdge = str(0.6 * float(beamdepth)) if connectivity == "Beam-Beam": maxEdge = str( float(beamdepth) - float(beamflangethk) - float(beamrootradius) - float(colflangethk) - float(colrootradius) - 5) maxedgestring = beamdepth + "-" + beamflangethk + "-" + beamrootradius + "-" + colflangethk + "-" + colrootradius + "- 5" else: maxEdge = str( float(beamdepth) - 2 * float(beamflangethk) - 2 * float(beamrootradius) - 10) maxedgestring = beamdepth + "-" + beamflangethk + "-" + beamrootradius + "-" + "10" row = [ 0, "Plate height (mm)", "≥0.6*" + beamdepth + "=" + minEdge + ", ≤" + maxedgestring + "=" + maxEdge + "<br> [cl. 10.2.4, Insdag Detailing Manual, 2002]", plateLength, " <p align=right style=color:green><b>Pass</b></p>", "300", "" ] # #row =[0,"Plate height (mm)","",plateLength] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, "Plate width (mm)", "", "100", ""] #row =[0,"Plate width (mm)","",plateWidth] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Plate moment capacity (kNm)","(2*90.5*100<sup>2</sup>)/100 = 18.1","<i>M</i><sub>d</sub> =1.2*250*<i>Z</i> = 40.9 <br>[cl. 8.2.1.2]","<p align=right style=color:green><b>Pass</b></p>"] z = math.pow(float(plateLength), 2) * (float(plateThick) / (6 * 1.1 * 1000000)) momentCapacity = str(round(1.2 * float(web_plate_fy) * z, 2)) row = [ 0, "Plate moment capacity (kNm)", "(2*" + shearCapacity + "*" + pitch + "<sup>2</sup>)/(" + pitch + "*1000) = " + moment_demand, "<i>M</i><sub>d</sub> = (1.2*" + web_plate_fy + "*<i>Z</i>)/(1000*1.1) = " + momentCapacity + "<br>[cl. 8.2.1.2]", "<p align=right style=color:green><b>Pass</b></p>" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Effective weld length (mm)","","300 - 2*6 = 288"] effWeldLen = str(int(float(plateLength) - (2 * float(weld_Thick)))) row = [ 0, "Effective weld length (mm)", "", plateLength + "-2*" + weld_Thick + " = " + effWeldLen, "" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Weld strength (kN/mm)","√[(18100*6)/(2*288)<sup>2</sup>]<sup>2</sup> + [140/(2*288)]<sup>2</sup> <br>=0.699","<i>f</i><sub>v</sub>=(0.7*6*410)/(√3*1.25)<br>= 0.795<br>[cl. 10.5.7]"," <p align=right style=color:green><b>Pass</b></p>"] a = float(2 * float(effWeldLen)) b = 2 * math.pow((float(effWeldLen)), 2) x = (float(momentDemand) * 1000 * 6) resultant_shear = str( round( math.sqrt( math.pow((x / b), 2) + math.pow((float(shear_load) / a), 2)), 3)) momentDemand_knmm = str(int(float(momentDemand) * 1000)) row = [ 0, "Weld strength (kN/mm)", " √[(" + momentDemand_knmm + "*6)/(2*" + effWeldLen + "<sup>2</sup>)]<sup>2</sup> + [" + shear_load + "/(2*" + effWeldLen + ")]<sup>2</sup> <br>= " + resultant_shear, "<i>f</i><sub>v</sub>= (0.7*" + weldSize + "*" + weld_fu + ")/(√3*1.25)<br>= " + weld_strength + "<br>[cl. 10.5.7]", " <p align=right style=color:green><b>Pass</b></p>" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/tr') rstr += t('tr') #row =[0,"Weld thickness (mm)","(0.699*√3*1.25)/(0.7*410)=5.27<br>[cl. 10.5.7]","6","<p align=right style=color:green><b>Pass</b></p>"] weld_thickness = str( round((float(resultant_shear) * 1000 * (math.sqrt(3) * 1.25)) / (0.7 * float(weld_fu)), 2)) x = str((float(platethk) * 0.8)) maxweld = str(max(float(weld_thickness), float(x))) # maxweld = str(9) if str((float( platethk)*0.8)) > str(9) else str(round((float(resultant_shear) * 1000*(math.sqrt(3) * 1.25))/(0.7 * float(weld_fu)),2)) # maxWeld = str(9) if str(round((float(resultant_shear) * 1000*(math.sqrt(3) * 1.25))/(0.7 * float(weld_fu)),2)) == 9 else str((float( platethk)*0.8)) # row =[0,"Weld thickness (mm)","Max(("+resultant_shear+"*√3*1.25)/(0.7*"+weld_fu+")"+", 0.8*"+platethk+") = "+ maxWeld + "<br>[cl. 10.5.7, Insdag Detailing Manual, 2002]",weldSize,"<p align=right style=color:green><b>Pass</b></p>"] row = [ 0, "Weld thickness (mm)", "Max((" + resultant_shear + "*1000*√3* 1.25)/(0.7 * " + weld_fu + ")" + "," + platethk + "* 0.8" + ") = " + maxweld + "<br>[cl. 10.5.7, Insdag Detailing Manual, 2002]", weldSize, "<p align=right style=color:green><b>Pass</b></p>" ] rstr += t('td class="header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[2] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[3] + t('/td') rstr += t('td class="header2"') + space(row[0]) + row[4] + t('/td') rstr += t('/table') rstr += t('h1 class="break"') # page break rstr += t('/h1') #************************************************************************************************************************* #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& # Header of the pdf fetched from dialogbox rstr += t('table') rstr += t('tr') row = [ 0, '<object type= "image/PNG" data= "Fossee_logo.png" width= 150></object>', 'Created with' '  ' '<object type= "image/PNG" data= "Osdag_header.png" width= 150></object>' ] rstr += t('td colspan="2" align= "center" class= "viewbl" ') + space( row[0]) + row[1] + t('/td') rstr += t('td colspan="2" align= "right" class="viewbl1"') + row[2] + t( '/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Company Name'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, companyname] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Project Title'] rstr += t('td float="right" class= "header1_3"') + space( row[0]) + row[1] + t('/td') row = [0, projecttitle] rstr += t('td float="right" class= "header1_3"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Group/Team Name'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, groupteamname] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Subtitle'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, subtitle] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Designer'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, designer] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Job Number'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, jobnumber] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Date'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, time.strftime("%d /%m /%Y")] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Method'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, method] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('/table') rstr += t('hr') rstr += t('/hr') #************************************************************************************************************************* #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #Digram rstr += t('table') row = [0, "Views", " "] rstr += t('tr') rstr += t('td colspan="2" class=" viewtbl header1_1"') + space( row[0]) + row[1] + t('/td') #rstr += t('td class=" viewtbl "') + row[2] + t('/td') rstr += t('/tr') row = [ 0, '<object type="image/PNG" data="3D_Model.png" width ="550"></object>', '<object type="image/svg+xml" data="finTop.svg" width ="500"></object>' ] rstr += t('tr') rstr += t('td align="center" class=" viewtbl"') + space( row[0]) + row[1] + t('/td') rstr += t('td align="center" class=" viewtbl"') + row[2] + t('/td') rstr += t('/tr') row = [ 0, '<object type="image/svg+xml"" data="finSide.svg" width ="460"></object>', '<object type="image/svg+xml" data="finFront.svg" width ="640"></object>' ] #img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0..."> rstr += t('tr') rstr += t('td align="center" class=" viewtbl"') + space( row[0]) + row[1] + t('/td') rstr += t('td align="center" class=" viewtbl "') + row[2] + t('/td') rstr += t('/tr') rstr += t('/table') rstr += t('h1 class="break"') # page break rstr += t('/h1') #************************************************************************************************************************* #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& # Header of the pdf fetched from dialogbox rstr += t('table') rstr += t('tr') row = [ 0, '<object type= "image/PNG" data= "Fossee_logo.png" width= 150></object>', 'Created with' '  ' '  ' '<object type= "image/PNG" data= "Osdag_header.png" width= 150></object>' ] rstr += t('td colspan="2" align= "center" class= "viewbl" ') + space( row[0]) + row[1] + t('/td') rstr += t('td colspan="2" align= "right" class="viewbl"') + row[2] + t( '/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Company Name'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, companyname] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Project Title'] rstr += t('td float="right" class= "header1_3"') + space( row[0]) + row[1] + t('/td') row = [0, projecttitle] rstr += t('td float="right" class= "header1_3"') + space( row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Group/Team Name'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, groupteamname] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Subtitle'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, subtitle] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Designer'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, designer] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Job Number'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, jobnumber] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('tr') row = [0, 'Date'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, time.strftime("%d /%m /%Y")] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, 'Method'] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') row = [0, method] rstr += t('td class= "header1_3"') + space(row[0]) + row[1] + t('/td') rstr += t('/tr') rstr += t('/table') rstr += t('hr') rstr += t('/hr') #************************************************************************************************************************* #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #Additional comments rstr += t('table') rstr += t('''col width=30%''') rstr += t('''col width=70%''') rstr += t('tr') row = [0, "Additional Comments", addtionalcomments] rstr += t('td class= "header2_col1"') + space(row[0]) + row[1] + t('/td') rstr += t('td class= "header3" align="justified"') + row[2] + t('/td') rstr += t('/tr') rstr += t('/table') myfile.write(rstr) myfile.write(t('/body')) myfile.write(t('/html')) myfile.close()
def __init__(self, filename=QString(), dataset=None): super(StudiesModel, self).__init__() self.dataset = dataset self.update_study_list()
def __init__(self, group, name, default=None): if default is None: default = '' Parameter.__init__(self, group, name, default) self.value = QString()
#coding=utf-8 from time import sleep from PyQt4.QtCore import QTextStream,QString from PyQt4.QtNetwork import QLocalSocket import random import os if __name__ == "__main__": pid = os.getpid() ls = QLocalSocket() ls.connectToServer("localserver-test") if ls.waitForConnected(): print "连接成功" while True: try: ts = QTextStream(ls) ts << QString.number(random.randrange(1000)) + "\nTTTTTTTTTT" + "\n PID = " + QString.number(pid) + "\n" ts.flush() print "werite :", ls.waitForBytesWritten() print pid sleep(1) except Exception as e: print e.message
def setOverlayPixmap(self): self.tray.setOverlayIconByName(QString("")) self.tray.setOverlayIconByPixmap( Qt.QIcon.fromTheme("dialog-information"))
def test_indexfrompath_qstr(self): m = ManifestModel(self.repo, rev=0) self.assertEqual(m.index(1, 0), m.indexFromPath(QString('bar')))
def on_actionOpen_triggered(self): fname = QFileDialog.getOpenFileName( None, self.trUtf8("Select documentation file"), QString(), self.trUtf8("*.yml, *.yaml"), None) if fname and QFile.exists(fname): self.loadFile(unicode(fname))
def process_request(self): socket = self.sender() request_data = socket.readAll() if not self.authorize_request(request_data): socket.write('HTTP/1.1 407 Proxy Authentication Required\r\n') if self.debug: self.log.write('407 Proxy Authentication Required\n\n') socket.write('Proxy-Authenticate: Basic realm="test"\r\n') socket.write('\r\n') socket.disconnectFromHost() return else: # remove Proxy-Authorization header start = request_data.indexOf('Proxy-Authorization:') end = request_data.lastIndexOf('\r\n') request_data.remove(start, end) request_data.append('\r\n') pos = request_data.indexOf('\r\n') request_line = request_data.left(pos) request_data.remove(0, pos + 2) entries = request_line.split(' ') method = entries[0] address = entries[1] version = entries[2] port = '80' if address.count(':') > 1: protocol, host, port = address.split(':') else: protocol, host = address.split(':') print 'address', address #url = QUrl( protocol + host ) url = QUrl.fromEncoded(address) #url.setHost( host ) #url.setPort( int(port) ) if not url.isValid(): if self.debug: self.log.write('Invalid URL: %s\n\n', url) socket.disconnectFromHost() return host = url.host() port = 80 if (url.port() < 0) else url.port() req = url.encodedPath() if url.hasQuery(): req.append('?').append(url.encodedQuery()) request_line = method + ' ' + req + ' ' + version + '\r\n' request_data.prepend(request_line) if self.debug: self.log.write(method + ' ' + address + ' ' + version + '\n\n') key = host + ':' + QString.number(port) proxy_socket = socket.findChild(QTcpSocket, key) if proxy_socket: proxy_socket.setObjectName(key) proxy_socket.setProperty('url', url) proxy_socket.setProperty('request_data', request_data) proxy_socket.write(request_data) else: proxy_socket = QTcpSocket(socket) proxy_socket.setObjectName(key) proxy_socket.setProperty('url', url) proxy_socket.setProperty('request_data', request_data) proxy_socket.connected.connect(self.send_request) proxy_socket.readyRead.connect(self.transfer_data) proxy_socket.disconnected.connect(self.close_connection) proxy_socket.error.connect(self.close_connection) proxy_socket.connectToHost(host, port)
def __init__(self, rule_name, process, pid=0, text=""): self.rule_name = QString(rule_name) self.process = QString(process) self.pid = pid self.text = QString(text)
def __init__(self, filename=QString(), dataset=None): super(OutcomesModel, self).__init__() self.dataset = dataset self.current_outcome = None self.outcome_list = self.dataset.get_outcome_names()
def updateNode(self, index=QModelIndex()): elem = self.node.toElement() mindex = self.view.currentIndex() if not index.isValid() else index attributeMap = self.node.attributes() for i in range(attributeMap.count()): attributeMap.removeNamedItem(attributeMap.item(0).nodeName()) elem.setAttribute(QString("name"), QString(self.name)) if self.nexusType: elem.setAttribute(QString("type"), QString(self.nexusType)) self.replaceText(mindex, unicode(self.value)) doc = self.node.firstChildElement(QString("doc")) if not self.doc and doc and doc.nodeName() == "doc": self.removeElement(doc, mindex) elif self.doc: newDoc = self.root.createElement(QString("doc")) newText = self.root.createTextNode(QString(self.doc)) newDoc.appendChild(newText) if doc and doc.nodeName() == "doc": self.replaceElement(doc, newDoc, mindex) else: self.appendElement(newDoc, mindex) dimens = self.node.firstChildElement(QString("dimensions")) if not self.dimensions and dimens \ and dimens.nodeName() == "dimensions": self.removeElement(dimens, mindex) elif self.dimensions: newDimens = self.root.createElement(QString("dimensions")) newDimens.setAttribute(QString("rank"), QString(unicode(self.rank))) dimDefined = True for i in range(min(self.rank, len(self.dimensions))): if self.dimensions[i] is None: dimDefined = False if dimDefined: for i in range(min(self.rank, len(self.dimensions))): dim = self.root.createElement(QString("dim")) dim.setAttribute(QString("index"), QString(unicode(i + 1))) if "$datasources." not in unicode(self.dimensions[i]): dim.setAttribute(QString("value"), QString(unicode(self.dimensions[i]))) else: dsText = self.root.createTextNode( QString(unicode(self.dimensions[i]))) dstrategy = self.root.createElement( QString("strategy")) dstrategy.setAttribute(QString("mode"), QString(unicode("CONFIG"))) dim.appendChild(dsText) dim.appendChild(dstrategy) newDimens.appendChild(dim) if dimens and dimens.nodeName() == "dimensions": self.replaceElement(dimens, newDimens, mindex) else: self.appendElement(newDimens, mindex)
def __init__(self, filename=QString(), dataset=None, outcome=None, follow_up=None): super(TXGroupsModel, self).__init__() self.dataset = dataset self.current_outcome = outcome self.current_follow_up = follow_up self.refresh_group_list(outcome, follow_up)
def __call__(self, where=QString(), args=[]): return self.ListType(self.TableSchema.table().select(where, args))
def setFromNode(self, node=None): if node: ## defined in NodeDlg self.node = node if not self.node: return attributeMap = self.node.attributes() self.name = unicode(attributeMap.namedItem("name").nodeValue() if attributeMap.contains("name") else "") self.nexusType = unicode(attributeMap.namedItem("type").nodeValue() if attributeMap.contains("type") else "") text = DomTools.getText(self.node) self.value = unicode(text).strip() if text else "" dimens = self.node.firstChildElement(QString("dimensions")) attributeMap = dimens.attributes() self.dimensions = [] self._dimensions = [] if attributeMap.contains("rank"): try: self.rank = int(attributeMap.namedItem("rank").nodeValue()) if self.rank < 0: self.rank = 0 except: self.rank = 0 else: self.rank = 0 if self.rank > 0: child = dimens.firstChild() while not child.isNull(): if child.isElement() and child.nodeName() == "dim": attributeMap = child.attributes() index = None value = None try: if attributeMap.contains("index"): index = int(attributeMap.namedItem( "index").nodeValue()) if attributeMap.contains("value"): value = str(attributeMap.namedItem( "value").nodeValue()) except: pass text = DomTools.getText(child) if text and "$datasources." in text: value = str(text).strip() if index < 1: index = None if index is not None: while len(self.dimensions) < index: self.dimensions.append(None) self._dimensions.append(None) self._dimensions[index - 1] = value self.dimensions[index - 1] = value child = child.nextSibling() if self.rank < len(self.dimensions): self.rank = len(self.dimensions) self.rank = len(self._dimensions) elif self.rank > len(self.dimensions): self.dimensions.extend( [None] * (self.rank - len(self.dimensions))) self._dimensions.extend( [None] * (self.rank - len(self._dimensions))) doc = self.node.firstChildElement(QString("doc")) text = DomTools.getText(doc) self.doc = unicode(text).strip() if text else ""
def importXMLFromFile(self): ''' NO DOCUMENTATION ''' assert self.has_selected_item() # print "importXMLFromFile" # First, prompt the user for the filename to read in start_dir = '' opus_home = os.environ.get('OPUS_HOME') if opus_home: start_dir_test = os.path.join(opus_home, 'project_configs') if start_dir_test: start_dir = start_dir_test configDialog = QFileDialog() filter_str = QString("*.xml") fd = configDialog.getOpenFileName( self.manager.base_widget, "Please select an xml file to import...", start_dir, filter_str) # Check for cancel if len(fd) == 0: return fileName = QString(fd) fileNameInfo = QFileInfo(QString(fd)) fileNameInfoBaseName = fileNameInfo.completeBaseName() fileNameInfoName = fileNameInfo.fileName().trimmed() fileNameInfoPath = fileNameInfo.absolutePath().trimmed() # Pass that in to create a new XMLConfiguration xml_config = XMLConfiguration(str(fileNameInfoName), str(fileNameInfoPath)) xml_node = xml_config.full_tree.getroot() if len(xml_node) == 0: raise ValueError('Loading node from XML file failed. ' 'No node definition found') xml_node = xml_node[0] parent_node = self.selected_item().node allowed_parent_tags = {"tool": ["tool_group"], \ "class_module": ["tool"], \ "path_to_tool_modules": ["tool_library"], \ "tool_library": ["data_manager"], \ "tool_group": ["tool_library"], \ "params": ["tool"], \ "param": ["params"], \ "tool_config": ["tool_set"], \ "tool_set": ["tool_sets"], \ "tool_sets": ["data_manager"]} if parent_node.tag not in allowed_parent_tags[xml_node.tag]: MessageBox.error( mainwindow=self.view, text='Invalid Xml insert', detailed_text= ('Xml insert of node of type "%s" failed. ' 'Invalid type of parent node is "%s" - needs to be one of %s' % (xml_node.tag, parent_node.tag, str(allowed_parent_tags[xml_node.tag])))) return # Insert it into the parent node from where the user clicked name = xml_node.get('name') if xml_node.get('name') is not None else '' if self.model.insertRow(0, self.selected_index(), xml_node) is False: MessageBox.error( mainwindow=self.view, text='Xml Insert Failed', detailed_text= ('Xml insert of node with name "%s" failed - ' 'most likely because there is already a node with that name.' % name)) return
def setSliderLabel(self, value): cvalue = QString() cvalue = "%2.d" % value self.sliderlabel.setText(cvalue)
def __init__(self, parent=None): # pylint: disable=unused-argument,super-on-old-class super(DimensionSelectorWidget, self).__init__() #validators self.doubleValidator = EmptyOrDoubleValidator(self) self.positiveDoubleValidator = QtGui.QDoubleValidator(self) self.positiveDoubleValidator.setBottom(1e-10) self.V3DValidator = V3DValidator(self) #labels self._labelBasis = QtGui.QLabel(' Projection Basis') self._labelBasis1 = QtGui.QLabel(' Projection u') self._labelBasis2 = QtGui.QLabel(' Projection v') self._labelBasis3 = QtGui.QLabel(' Projection w') self._labelMin = QtGui.QLabel('Min') self._labelMax = QtGui.QLabel('Max') self._labelStep = QtGui.QLabel('Step') #lineedits self._editBasis1 = QtGui.QLineEdit() self._editBasis1.setValidator(self.V3DValidator) self._editBasis2 = QtGui.QLineEdit() self._editBasis2.setValidator(self.V3DValidator) self._editBasis3 = QtGui.QLineEdit() self._editBasis3.setValidator(self.V3DValidator) self._editMin1 = QtGui.QLineEdit() self._editMin1.setValidator(self.doubleValidator) self._editMin2 = QtGui.QLineEdit() self._editMin2.setValidator(self.doubleValidator) self._editMin3 = QtGui.QLineEdit() self._editMin3.setValidator(self.doubleValidator) self._editMin4 = QtGui.QLineEdit() self._editMin4.setValidator(self.doubleValidator) self._editMax1 = QtGui.QLineEdit() self._editMax1.setValidator(self.doubleValidator) self._editMax2 = QtGui.QLineEdit() self._editMax2.setValidator(self.doubleValidator) self._editMax3 = QtGui.QLineEdit() self._editMax3.setValidator(self.doubleValidator) self._editMax4 = QtGui.QLineEdit() self._editMax4.setValidator(self.doubleValidator) self._editStep1 = QtGui.QLineEdit() self._editStep1.setValidator(self.positiveDoubleValidator) self._editStep2 = QtGui.QLineEdit() self._editStep2.setValidator(self.positiveDoubleValidator) self._comboDim1 = QtGui.QComboBox(self) self._comboDim2 = QtGui.QComboBox(self) self._comboDim3 = QtGui.QComboBox(self) self._comboDim4 = QtGui.QComboBox(self) self._comboDim4.setMinimumContentsLength(12) #basis self.basis = ['1,0,0', '0,1,0', '0,0,1'] #default values self.dimNames = ['[H,0,0]', '[0,K,0]', '[0,0,L]', 'DeltaE'] self.dimMin = [-numpy.inf, -numpy.inf, -numpy.inf, -numpy.inf] self.dimMax = [numpy.inf, numpy.inf, numpy.inf, numpy.inf] self.dimStep = [0.05, 0.05, 0.05, 1] self.dimIndex = [0, 1, 2, 3] #layout grid = QtGui.QGridLayout() self.setLayout(grid) grid.addWidget(self._labelMin, 0, 1) grid.addWidget(self._labelMax, 0, 2) grid.addWidget(self._labelStep, 0, 3) grid.addWidget(self._labelBasis, 0, 4, 1, 2) grid.addWidget(self._comboDim1, 1, 0) grid.addWidget(self._editMin1, 1, 1) grid.addWidget(self._editMax1, 1, 2) grid.addWidget(self._editStep1, 1, 3) grid.addWidget(self._labelBasis1, 1, 4) grid.addWidget(self._editBasis1, 1, 5) grid.addWidget(self._comboDim2, 2, 0) grid.addWidget(self._editMin2, 2, 1) grid.addWidget(self._editMax2, 2, 2) grid.addWidget(self._editStep2, 2, 3) grid.addWidget(self._labelBasis2, 2, 4) grid.addWidget(self._editBasis2, 2, 5) grid.addWidget(self._comboDim3, 3, 0) grid.addWidget(self._editMin3, 3, 1) grid.addWidget(self._editMax3, 3, 2) grid.addWidget(self._labelBasis3, 3, 4) grid.addWidget(self._editBasis3, 3, 5) grid.addWidget(self._comboDim4, 4, 0) grid.addWidget(self._editMin4, 4, 1) grid.addWidget(self._editMax4, 4, 2) self._editBasis1.setText(QString(self.basis[0])) self._editBasis2.setText(QString(self.basis[1])) self._editBasis3.setText(QString(self.basis[2])) self.updateCombo() self.updateGui() #connections self._editBasis1.textEdited.connect(self.basisChanged) self._editBasis2.textEdited.connect(self.basisChanged) self._editBasis3.textEdited.connect(self.basisChanged) self._editMin1.textEdited.connect(self.limitsChanged) self._editMin2.textEdited.connect(self.limitsChanged) self._editMin3.textEdited.connect(self.limitsChanged) self._editMin4.textEdited.connect(self.limitsChanged) self._editMax1.textEdited.connect(self.limitsChanged) self._editMax2.textEdited.connect(self.limitsChanged) self._editMax3.textEdited.connect(self.limitsChanged) self._editMax4.textEdited.connect(self.limitsChanged) self._editStep1.textEdited.connect(self.stepChanged) self._editStep2.textEdited.connect(self.stepChanged) self._comboDim1.currentIndexChanged.connect(self.comboChanged) self._comboDim2.currentIndexChanged.connect(self.comboChanged) self._comboDim3.currentIndexChanged.connect(self.comboChanged) self._comboDim4.currentIndexChanged.connect(self.comboChanged) self.inhibitSignal = False self.updateChanges()
def removeOverlay(self): self.tray.setOverlayIconByName(QString("")) self.tray.setOverlayIconByPixmap(Qt.QIcon())
def FloatToQString(value): if numpy.isfinite(value): return QString(format(value, '.3f')) else: return QString("")
def setOverlayName(self): self.tray.setOverlayIconByPixmap(Qt.QIcon()) self.tray.setOverlayIconByName(QString("dialog-error"))
def add(self, skeleton): """add tis parameter to the skeleton""" self.item = skeleton.addItemString(self.name, self.value, QString(self.default or ''))
self.permissions.savePermissions() self.savedData = curData self._updateUI() return except BadUserInRuleError, ue: line = ue.lineNumber errorMsg = 'Invalid user \'%s\'' % ue.user except BadServiceInRuleError, se: line = se.lineNumber errorMsg = 'Invalid service \'%s\'' % se.service except BadRuleError, e: line = e.lineNumber errorMsg = 'Invalid rule' errorMsg = 'Error: %s' % errorMsg errorMsg = QtCore.Qt.escape(errorMsg) errorMsg = QString('<font color=red><b>%1</b></font>').arg(errorMsg) self.ui.status.setText(errorMsg) def selectLine(line): count = 0 start = 0 while count + 1 < line: start = curData.find('\n', start) if start < 0: return count += 1 start += 1 end = curData.find('\n', start) if end < 0: end = len(curData) c = self.ui.permissions.textCursor() c.setPosition(start, QTextCursor.MoveAnchor)
def usePixmap(self): self.tray.setIconByName(QString("")) self.tray.setIconByPixmap(Qt.QIcon.fromTheme("accessories-calculator"))
def createEditor(self, parent_view, option, index): ''' PyQt API Method -- See the PyQt documentation for a description ''' default_editor = QItemDelegate.createEditor(self, parent_view, option, index) if not index.isValid(): return default_editor item = index.internalPointer() node = item.node # editing of left hand columns is handled by dialogs etc, don't allow direct editing if index.column() == 0: pass elif index.column() == 1: # Combobox for multiple choices editor = default_editor # CK delete the following comment if the xml schema is complete and does'nt contain any 'choices' # if node.get('choices') is not None: # editor = QComboBox(parent_view) # choices = [s.strip() for s in node.get('choices').split('|')] # for item in choices: # editor.addItem(item) # # Select the current choice # choice = node.text.strip() if node.text else '' # if choice in choices: # editor.setCurrentIndex(choices.index(choice)) # Create and prepare an editor for the node # Select database connection if node.get('type') == 'db_connection_hook': editor = QComboBox(parent_view) # Get connection names from database_server_connections.xml choices = get_db_connection_names() # Populate the editor with the choices for i in choices: editor.addItem(i) # Select files and folders elif node.get('type') in ('file_path', 'dir_path'): editor_file = QFileDialog() filter_str = QString("*.*") editor_file.setFilter(filter_str) editor_file.setAcceptMode(QFileDialog.AcceptOpen) current_value = \ index.model().data(index, Qt.DisplayRole).toString() if node.get('type') == 'file_path': method = editor_file.getOpenFileName title = 'Please select a file...' else: method = editor_file.getExistingDirectory title = 'Please select a directory...' fd = method(self.parent_view, title, current_value) # Check for cancel if len(fd) == 0: new_value = current_value else: new_value = QString(fd) editor = QItemDelegate.createEditor(self, self.parent_view, option, index) if type(editor) == QLineEdit: editor.setText(new_value) # Edit passwords elif node.get('type') == 'password': editor.setText(str(node.text or '')) editor.setStyleSheet('QLineEdit { background-color: red }') editor.setEchoMode(QLineEdit.PasswordEchoOnEdit) # Use default editor else: if type(editor) == QLineEdit: txt = index.model().data(index, Qt.DisplayRole).toString() editor.setText(txt) return editor
def setZoomLabel(self, value): zvalue = QString("Scale factor : ") zvalue += "%2.d" % value self.zoomlabel.setText(zvalue)
def rangeDisplay(self, box, val): drange = self._getCommonMetadataValue("drange") if drange is None: return QString("") return QDoubleSpinBox.textFromValue(box, val)
def __init__(self,parent=None): # pylint: disable=unused-argument,super-on-old-class super(InstrumentSetupWidget,self).__init__() metrics=QtGui.QFontMetrics(self.font()) self.signaldict=dict() #instrument selector self.instrumentList=['ARCS','CNCS','DNS','EXED','FOCUS','HET','HYSPEC','LET','MAPS','MARI','MERLIN','SEQUOIA'] self.combo = QtGui.QComboBox(self) for inst in self.instrumentList: self.combo.addItem(inst) defaultInstrument=mantid.config.getInstrument().name() if defaultInstrument in self.instrumentList: self.instrument=defaultInstrument self.combo.setCurrentIndex(self.instrumentList.index(defaultInstrument)) else: self.instrument=self.instrumentList[0] self.combo.setCurrentIndex(0) self.signaldict['instrument']=self.instrument self.labelInst=QtGui.QLabel('Instrument') #S2 and Ei edits self.S2=0.0 self.Ei=10.0 self.signaldict['S2']=self.S2 self.signaldict['Ei']=self.Ei self.validatorS2=QtGui.QDoubleValidator(-90.,90.,5,self) self.validatorEi=QtGui.QDoubleValidator(1.,10000.,5,self) self.labelS2=QtGui.QLabel('S2') self.labelEi=QtGui.QLabel('Incident Energy') self.editS2=QtGui.QLineEdit() self.editS2.setValidator(self.validatorS2) self.editEi=QtGui.QLineEdit() self.editEi.setValidator(self.validatorEi) self.editS2.setText(QString(format(self.S2,'.2f'))) self.editEi.setText(QString(format(self.Ei,'.1f'))) self.editEi.setFixedWidth(metrics.width("8888.88")) self.editS2.setFixedWidth(metrics.width("888.88")) #fast checkbox self.fast=QtGui.QCheckBox("Fast",self) self.fast.toggle() self.updateFast() #masking self.labelMask=QtGui.QLabel('Mask file') self.editMask=QtGui.QLineEdit() self.buttonMask=QtGui.QPushButton("LoadMask") #goniometer settings self.labelGon=QtGui.QLabel('Goniometer') self.tableViewGon = QtGui.QTableView(self) self.tableViewGon.setMinimumWidth(metrics.width("Minimum ")*8) self.tableViewGon.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch) self.tableViewGon.verticalHeader().setResizeMode(QtGui.QHeaderView.Stretch) self.goniometerNames=['psi','gl','gs'] self.goniometerDirections=['0,1,0','0,0,1','1,0,0'] self.goniometerRotationSense=[1,1,1] self.goniometerMin=[0.,0.,0.] self.goniometerMax=[0.,0.,0.] self.goniometerStep=[1.,1.,1.] values={'gonioLabels':self.goniometerNames,'gonioDirs':self.goniometerDirections,'gonioSenses':self.goniometerRotationSense, 'gonioMinvals':self.goniometerMin,'gonioMaxvals':self.goniometerMax,'gonioSteps':self.goniometerStep} self.goniomodel = GonioTableModel(values,self) self.tableViewGon.setModel(self.goniomodel) self.tableViewGon.update() self.signaldict.update(values) #goniometer figure self.figure=Figure(figsize=(2,3)) self.figure.patch.set_facecolor('white') self.canvas=FigureCanvas(self.figure) self.gonfig=None self.updateFigure() #layout self.gridI = QtGui.QGridLayout() self.gridI.addWidget(self.labelInst,0,0) self.gridI.addWidget(self.combo,0,1) self.gridI.addWidget(self.labelEi,0,2) self.gridI.addWidget(self.editEi,0,3) self.gridI.addWidget(self.labelS2,0,4) self.gridI.addWidget(self.editS2,0,5) self.gridI.addWidget(self.fast,0,6) self.setLayout(QtGui.QHBoxLayout()) self.rightside=QtGui.QVBoxLayout() self.maskLayout=QtGui.QHBoxLayout() self.maskLayout.addWidget(self.labelMask) self.maskLayout.addWidget(self.editMask) self.maskLayout.addWidget(self.buttonMask) self.layout().addLayout(self.rightside) self.rightside.addLayout(self.gridI) self.rightside.addLayout(self.maskLayout) self.rightside.addWidget(self.labelGon) self.rightside.addWidget(self.tableViewGon) self.layout().addWidget(self.canvas) #connections self.editS2.textEdited.connect(self.checkValidInputs) self.editMask.textEdited.connect(self.setMaskFile) self.combo.activated[str].connect(self.instrumentSelected) self.fast.stateChanged.connect(self.updateFast) self.buttonMask.clicked.connect(self.loadMaskFromFile) self.editEi.textEdited.connect(self.checkValidInputs) #call instrumentSelected once self.instrumentSelected(self.instrument) #connect goniometer change with figure self.goniomodel.changed.connect(self.updateFigure) self.updateAll()
def data(self, index, role): #XXX attributes = self.availableAttributes() if not index.isValid(): return QVariant() if index.row() > len(self._list) or index.row() < 0: return QVariant() try: timeLineNode = self._rows[index.row()] node = timeLineNode.node() except: return QVariant() if role == Qt.DisplayRole : attrpath = str(unicode(attributes[index.column()]).encode('utf-8')) if attrpath == "name": return QVariant(QString.fromUtf8(node.name())) elif attrpath == "time": try: return QVariant(QString.fromUtf8(str(timeLineNode.attribute()))) except: return QVariant() elif attrpath == "time attribute": return QVariant(QString.fromUtf8(timeLineNode.attributeName())) elif attrpath == "size": return QVariant(node.size()) elif attrpath == "extension": return QVariant(QString.fromUtf8(node.extension())) elif attrpath == "path": if isinstance(node, VLink): return QVariant(QString.fromUtf8(node.linkPath())) else: return QVariant(QString.fromUtf8(node.path())) elif attrpath == "absolute": if isinstance(node, VLink): return QVariant(QString.fromUtf8(node.linkAbsolute())) else: return QVariant(QString.fromUtf8(node.absolute())) elif attrpath == "module": if node.fsobj(): return QVariant(QString.fromUtf8(node.fsobj().name)) return QVariant() elif attrpath == "has children": if isinstance(node, VLink): return QVariant(node.linkHasChildren()) else: return QVariant(node.hasChildren()) elif attrpath == "child count": if isinstance(node, VLink): return QVariant(node.linkChildCount()) else: return QVariant(node.childCount()) elif attrpath == "is deleted": return QVariant(node.isDeleted()) elif attrpath == "tags": #Special case tag use a delegate to draw boxes return QVariant() else: try : val = node.attributesByName(attrpath, ABSOLUTE_ATTR_NAME) except Exception as e: print "NodeListModel data can't get attribute " + attrpath + " by name " + str(e) return QVariant() if len(val) == 1: if val[0].type() == typeId.DateTime: dateTime = val[0].value() if dateTime: return QVariant(str(dateTime)) elif val[0].type() == typeId.String: return QVariant(QString.fromUtf8(val[0].value())) else: return QVariant(val[0].value()) else: return QVariant() if role == Qt.ToolTipRole : return QVariant(QString.fromUtf8(node.name())) # Display icons if (role == Qt.DecorationRole) and (attributes[index.column()] == "name"): pixmap = None if self._thumb: if self.thumbnailer.isThumbnailable(node): pixmap = self.thumbnailer.generate(node) if pixmap is None: pixmap = QPixmap(":file_temporary.png") if not pixmap: pixmap = self.getIconPixmap(node) if not pixmap: pixmap = QPixmap(node.icon()) if isinstance(node, VLink): pixmap = pixmap.scaled(QSize(128, 128), Qt.KeepAspectRatio) painter = QPainter(pixmap) linkPixmap = QPixmap(":vlink") painter.drawPixmap(0, 0, linkPixmap) painter.end() elif node.hasChildren(): try: pfsobj = node.children()[0].fsobj().this except AttributeError: pfsobj = None try: nfsobj = node.fsobj().this except AttributeError: nfsobj = None if pfsobj != nfsobj: pixmap = pixmap.scaled(QSize(128, 128), Qt.KeepAspectRatio) painter = QPainter(pixmap) rootPixmap = QPixmap(":root") painter.drawPixmap(0, 0, rootPixmap) painter.end() return QVariant(QIcon(pixmap)) if role == Qt.BackgroundRole: if index.row() == self.activeSelection(): palette = QPalette().color(QPalette.Highlight) return QVariant(QColor(palette)) if role == Qt.ForegroundRole: if index.row() == self.activeSelection(): palette = QPalette().color(QPalette.HighlightedText) return QVariant(QColor(palette)) if node.isDeleted(): return QVariant(QColor(Qt.red)) if (role == Qt.CheckStateRole) and (attributes[index.column()] == "name"): if node.uid() in self.selection.get(): return Qt.Checked else: return Qt.Unchecked return QVariant()
def __init__(self, filename=QString(), dataset=None): super(CovariatesModel, self).__init__() self.dataset = dataset self.update_covariates_list()
def toMarkdown(self): references = '' i = 1 # doc = QString() # the full document doc = g.u('') block = self.document().begin( ) # block is like a para; text fragment is sequence of same char format while block.isValid(): #print "block=",block.text() if block.blockFormat().nonBreakableLines(): doc += ' ' + block.text() + '\n' #elif block.textList(): #textList = block.textList() #print block.textList().count() #print g.u(block.textList().itemText(block)) #print block.textList().itemNumber(block) #print block.textList().item(block.textList().itemNumber(block)).text() #doc += textList.itemText(block) + ' ' + textList.item(textList.itemNumber(block)).text() + '\n\n' else: if block.textList(): doc += ' ' + block.textList().itemText(block) + ' ' # para = QString() para = g.u('') iterator = block.begin() while iterator != block.end(): fragment = iterator.fragment() if fragment.isValid(): char_format = fragment.charFormat() # pylint: disable=no-member # EKR: I'm not sure whether this warning is valid. # I'm going to kill it because this is an experimental plugin. text = g.u(Qt.escape(fragment.text())) # turns chars like < into entities < font_size = char_format.font().pointSize() # a fragment can only be an anchor, italics or bold if char_format.isAnchor(): ref = text if text.startswith( 'http://') else 'http://{0}'.format(text) # too lazy right now to check if URL has already been referenced but should references += " [{0}]: {1}\n".format(i, ref) text = "[{0}][{1}]".format(text, i) i += 1 elif font_size > 10: if font_size > 15: text = '#{0}'.format(text) elif font_size > 12: text = '##{0}'.format(text) else: text = '###{0}'.format(text) elif char_format.fontFixedPitch( ): #or format.fontFamily=='courier': text = QString("`%1`").arg(text) elif char_format.fontItalic(): text = QString("*%1*").arg(text) elif char_format.fontWeight( ) > QFont.Normal: #font-weight:600; same as for an H1; H1 font-size:xx-large; H1 20; H2 15 H3 12 text = QString("**%1**").arg(text) para += text iterator += 1 doc += para + '\n\n' block = block.next() return doc + references
def checkLocation(self, str, base, type): offset = QString(str) off = offset.toULongLong(base) if off[1]: if type == "Offset": if off[0] < self.heditor.filesize: return off[0] else: msg = MessageBoxError(self.heditor, "Offset value too high") msg.exec_() return -1 elif type == "Page": if off[0] < self.heditor.pages: return off[0] else: msg = MessageBoxError(self.heditor, "Page value too high") msg.exec_() return -1 elif type == "Block": if off[0] < self.heditor.blocks: return off[0] else: msg = MessageBoxError(self.heditor, "Block value too high") msg.exec_() return -1 else: return -1 else: msg = MessageBoxError(self.heditor, "Base conversion Error") msg.exec_() return -1 return -1