def SvgViewer(argv): svgFilename = arguments['<svgfile>'] # Create a Qt application app = QtGui.QApplication('') # Create a Window mywindow = QtGui.QWidget() mywindow.resize(425, 400) mywindow.setWindowTitle('SVG Viewer') # Create a label and display it all together fileLabel = QtGui.QLabel(mywindow) fileLabel.setGeometry(QtCore.QRect(10, 10, 80, 15)) fileLabel.setText(svgFilename) #Create an SVG widget from the file contents svgWidget = QtSvg.QSvgWidget(svgFilename, mywindow) #Resize window based on drawing size svgSize = svgWidget.renderer().defaultSize() #mywindow.resize(svgSize) mywindow.show() # Enter Qt application main loop sys.exit(app.exec_())
def __init__(self, img): QtGui.QDialog.__init__(self) self.image = QtSvg.QSvgWidget(img) self.setWindowTitle( QtGui.QApplication.translate("RebarTool", "Detailed description", None)) self.verticalLayout = QtGui.QVBoxLayout(self) self.verticalLayout.addWidget(self.image)
def setFilePath(self, image_path=None): if not image_path: return logging.debug('Loading {} '.format(os.path.split(image_path)[-1])) self._svg = QtSvg.QSvgWidget(image_path) self._scene = QtGui.QGraphicsScene(self) self._scene.addWidget(self._svg) self.setScene(self._scene) self.setScale() self._loaded = True
def load(self, svgPath): if self.icon is None: self.icon = QtSvg.QSvgWidget(svgPath, self.centralWidget) self.icon.setFixedSize(self.size()) else: self.icon.load(svgPath) self.layoutBase = QtGui.QHBoxLayout(self) self.layoutBase.setSpacing(0) self.layoutBase.setContentsMargins(0, 0, 0, 0) self.layoutBase.addWidget(self.icon)
def prepareSVGWidget(self): svgWidget = QtSvg.QSvgWidget() content = QtCore.QByteArray(""" <svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='480' height='480'> <circle cx='320.0' cy='240.0' r='128' fill='rgb(0, 255, 255)' style='fill-opacity:.25'/> <circle cx='320.0' cy='240.0' r='128' fill='none' stroke='black'/> <circle cx='254.891453105' cy='335.850115412' r='111' fill='rgb(221, 34, 255)' style='fill-opacity:.25'/> <circle cx='254.891453105' cy='335.850115412' r='111' fill='none' stroke='black'/> <circle cx='140.39542436' cy='291.214534183' r='96' fill='rgb(255, 191, 64)' style='fill-opacity:.25'/> <circle cx='140.39542436' cy='291.214534183' r='96' fill='none' stroke='black'/> </svg> """) svgWidget.load(content) return svgWidget
def __init__(self): import FreeCADGui from PySide import QtCore, QtGui, QtSvg self.form = QtGui.QWidget() self.grid = QtGui.QGridLayout(self.form) self.Rotations = ["N", "S", "E", "O"] self.RotationAngles = [90, 270, 0, 180] # dents list self.labelDents = QtGui.QLabel() self.listDents = QtGui.QListWidget() self.grid.addWidget(self.labelDents, 0, 0, 1, 2) self.grid.addWidget(self.listDents, 1, 0, 1, 2) # buttons self.buttonAdd = QtGui.QPushButton() self.buttonRemove = QtGui.QPushButton() self.grid.addWidget(self.buttonAdd, 2, 0, 1, 1) self.grid.addWidget(self.buttonRemove, 2, 1, 1, 1) # image display self.preview = QtSvg.QSvgWidget(":/ui/ParametersDent.svg") self.preview.setMaximumWidth(200) self.preview.setMinimumHeight(120) self.grid.addWidget(self.preview, 3, 0, 1, 2) # parameters self.labelLength = QtGui.QLabel() self.valueLength = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelLength, 4, 0, 1, 1) self.grid.addWidget(self.valueLength, 4, 1, 1, 1) self.labelWidth = QtGui.QLabel() self.valueWidth = FreeCADGui.UiLoader().createWidget("Gui::InputField") self.grid.addWidget(self.labelWidth, 5, 0, 1, 1) self.grid.addWidget(self.valueWidth, 5, 1, 1, 1) self.labelHeight = QtGui.QLabel() self.valueHeight = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelHeight, 6, 0, 1, 1) self.grid.addWidget(self.valueHeight, 6, 1, 1, 1) self.labelSlant = QtGui.QLabel() self.valueSlant = FreeCADGui.UiLoader().createWidget("Gui::InputField") self.grid.addWidget(self.labelSlant, 7, 0, 1, 1) self.grid.addWidget(self.valueSlant, 7, 1, 1, 1) self.labelLevel = QtGui.QLabel() self.valueLevel = FreeCADGui.UiLoader().createWidget("Gui::InputField") self.grid.addWidget(self.labelLevel, 8, 0, 1, 1) self.grid.addWidget(self.valueLevel, 8, 1, 1, 1) self.labelRotation = QtGui.QLabel() self.valueRotation = QtGui.QComboBox() self.valueRotation.addItems(self.Rotations) self.valueRotation.setCurrentIndex(0) self.grid.addWidget(self.labelRotation, 9, 0, 1, 1) self.grid.addWidget(self.valueRotation, 9, 1, 1, 1) self.labelOffset = QtGui.QLabel() self.valueOffset = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelOffset, 10, 0, 1, 1) self.grid.addWidget(self.valueOffset, 10, 1, 1, 1) # signals/slots QtCore.QObject.connect(self.valueLength, QtCore.SIGNAL("valueChanged(double)"), self.setLength) QtCore.QObject.connect(self.valueWidth, QtCore.SIGNAL("valueChanged(double)"), self.setWidth) QtCore.QObject.connect(self.valueHeight, QtCore.SIGNAL("valueChanged(double)"), self.setHeight) QtCore.QObject.connect(self.valueSlant, QtCore.SIGNAL("valueChanged(double)"), self.setSlant) QtCore.QObject.connect(self.valueLevel, QtCore.SIGNAL("valueChanged(double)"), self.setLevel) QtCore.QObject.connect(self.valueRotation, QtCore.SIGNAL("currentIndexChanged(int)"), self.setDent) QtCore.QObject.connect(self.valueOffset, QtCore.SIGNAL("valueChanged(double)"), self.setOffset) QtCore.QObject.connect(self.buttonAdd, QtCore.SIGNAL("clicked()"), self.addDent) QtCore.QObject.connect(self.buttonRemove, QtCore.SIGNAL("clicked()"), self.removeDent) QtCore.QObject.connect(self.listDents, QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.editDent) self.retranslateUi(self.form) self.form.hide()
def __init__(self): import FreeCADGui from PySide import QtCore, QtGui, QtSvg self.form = QtGui.QWidget() self.grid = QtGui.QGridLayout(self.form) self.PrecastTypes = ["Beam", "I-Beam", "Pillar", "Panel", "Slab"] self.SlabTypes = ["Champagne", "Hat"] # image display self.preview = QtSvg.QSvgWidget(":/ui/ParametersBeam.svg") self.preview.setMaximumWidth(200) self.preview.setMinimumHeight(120) self.grid.addWidget(self.preview, 0, 0, 1, 2) # parameters self.labelSlabType = QtGui.QLabel() self.valueSlabType = QtGui.QComboBox() self.valueSlabType.addItems(self.SlabTypes) self.valueSlabType.setCurrentIndex(0) self.grid.addWidget(self.labelSlabType, 1, 0, 1, 1) self.grid.addWidget(self.valueSlabType, 1, 1, 1, 1) self.labelChamfer = QtGui.QLabel() self.valueChamfer = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelChamfer, 2, 0, 1, 1) self.grid.addWidget(self.valueChamfer, 2, 1, 1, 1) self.labelDentLength = QtGui.QLabel() self.valueDentLength = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelDentLength, 3, 0, 1, 1) self.grid.addWidget(self.valueDentLength, 3, 1, 1, 1) self.labelDentWidth = QtGui.QLabel() self.valueDentWidth = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelDentWidth, 4, 0, 1, 1) self.grid.addWidget(self.valueDentWidth, 4, 1, 1, 1) self.labelDentHeight = QtGui.QLabel() self.valueDentHeight = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelDentHeight, 5, 0, 1, 1) self.grid.addWidget(self.valueDentHeight, 5, 1, 1, 1) self.labelBase = QtGui.QLabel() self.valueBase = FreeCADGui.UiLoader().createWidget("Gui::InputField") self.grid.addWidget(self.labelBase, 6, 0, 1, 1) self.grid.addWidget(self.valueBase, 6, 1, 1, 1) self.labelHoleNumber = QtGui.QLabel() self.valueHoleNumber = QtGui.QSpinBox() self.grid.addWidget(self.labelHoleNumber, 7, 0, 1, 1) self.grid.addWidget(self.valueHoleNumber, 7, 1, 1, 1) self.labelHoleMajor = QtGui.QLabel() self.valueHoleMajor = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelHoleMajor, 8, 0, 1, 1) self.grid.addWidget(self.valueHoleMajor, 8, 1, 1, 1) self.labelHoleMinor = QtGui.QLabel() self.valueHoleMinor = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelHoleMinor, 9, 0, 1, 1) self.grid.addWidget(self.valueHoleMinor, 9, 1, 1, 1) self.labelHoleSpacing = QtGui.QLabel() self.valueHoleSpacing = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelHoleSpacing, 10, 0, 1, 1) self.grid.addWidget(self.valueHoleSpacing, 10, 1, 1, 1) self.labelGrooveNumber = QtGui.QLabel() self.valueGrooveNumber = QtGui.QSpinBox() self.grid.addWidget(self.labelGrooveNumber, 11, 0, 1, 1) self.grid.addWidget(self.valueGrooveNumber, 11, 1, 1, 1) self.labelGrooveDepth = QtGui.QLabel() self.valueGrooveDepth = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelGrooveDepth, 12, 0, 1, 1) self.grid.addWidget(self.valueGrooveDepth, 12, 1, 1, 1) self.labelGrooveHeight = QtGui.QLabel() self.valueGrooveHeight = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelGrooveHeight, 13, 0, 1, 1) self.grid.addWidget(self.valueGrooveHeight, 13, 1, 1, 1) self.labelGrooveSpacing = QtGui.QLabel() self.valueGrooveSpacing = FreeCADGui.UiLoader().createWidget( "Gui::InputField") self.grid.addWidget(self.labelGrooveSpacing, 14, 0, 1, 1) self.grid.addWidget(self.valueGrooveSpacing, 14, 1, 1, 1) # signals/slots QtCore.QObject.connect(self.valueChamfer, QtCore.SIGNAL("valueChanged(double)"), self.setChamfer) QtCore.QObject.connect(self.valueDentLength, QtCore.SIGNAL("valueChanged(double)"), self.setDentLength) QtCore.QObject.connect(self.valueDentWidth, QtCore.SIGNAL("valueChanged(double)"), self.setDentWidth) QtCore.QObject.connect(self.valueDentHeight, QtCore.SIGNAL("valueChanged(double)"), self.setDentHeight) QtCore.QObject.connect(self.valueBase, QtCore.SIGNAL("valueChanged(double)"), self.setBase) QtCore.QObject.connect(self.valueHoleMajor, QtCore.SIGNAL("valueChanged(double)"), self.setHoleMajor) QtCore.QObject.connect(self.valueHoleMinor, QtCore.SIGNAL("valueChanged(double)"), self.setHoleMinor) QtCore.QObject.connect(self.valueHoleSpacing, QtCore.SIGNAL("valueChanged(double)"), self.setHoleSpacing) QtCore.QObject.connect(self.valueGrooveDepth, QtCore.SIGNAL("valueChanged(double)"), self.setGrooveDepth) QtCore.QObject.connect(self.valueGrooveHeight, QtCore.SIGNAL("valueChanged(double)"), self.setGrooveHeight) QtCore.QObject.connect(self.valueGrooveSpacing, QtCore.SIGNAL("valueChanged(double)"), self.setGrooveSpacing) self.retranslateUi(self.form) self.form.hide()
def prepareSVGWidget(self, filename): svgWidget = QtSvg.QSvgWidget() svgWidget.load(filename) return svgWidget
def __init__(self, obj=None, prop=None, material=None, card_path=''): """Initializes, optionally with an object name and a material property name to edit, or directly with a material dictionary.""" self.obj = obj self.prop = prop self.material = material self.customprops = [] self.internalprops = [] self.groups = [] self.directory = FreeCAD.getResourceDir() + "Mod/Material" self.materials = {} self.cards = {} self.icons = {} self.card_path = card_path # load the UI file from the same directory as this script self.widget = FreeCADGui.PySideUic.loadUi( os.path.dirname(__file__) + os.sep + "materials-editor.ui") self.widget.setWindowIcon(QtGui.QIcon(":/icons/preview-rendered.svg")) # restore size and position p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Material") w = p.GetInt("MaterialEditorWidth", 441) h = p.GetInt("MaterialEditorHeight", 626) self.widget.resize(w, h) # additional UI fixes and tweaks widget = self.widget buttonURL = widget.ButtonURL buttonDeleteProperty = widget.ButtonDeleteProperty buttonAddProperty = widget.ButtonAddProperty standardButtons = widget.standardButtons buttonOpen = widget.ButtonOpen buttonSave = widget.ButtonSave comboMaterial = widget.ComboMaterial treeView = widget.treeView # create preview svg slots self.widget.PreviewRender = QtSvg.QSvgWidget( ":/icons/preview-rendered.svg") self.widget.PreviewRender.setMaximumWidth(64) self.widget.PreviewRender.setMinimumHeight(64) self.widget.topLayout.addWidget(self.widget.PreviewRender) self.widget.PreviewVector = QtSvg.QSvgWidget( ":/icons/preview-vector.svg") self.widget.PreviewVector.setMaximumWidth(64) self.widget.PreviewVector.setMinimumHeight(64) self.widget.topLayout.addWidget(self.widget.PreviewVector) self.updatePreviews(mat=material) buttonURL.setIcon(QtGui.QIcon(":/icons/internet-web-browser.svg")) buttonDeleteProperty.setEnabled(False) standardButtons.button(QtGui.QDialogButtonBox.Ok).setAutoDefault(False) standardButtons.button( QtGui.QDialogButtonBox.Cancel).setAutoDefault(False) self.updateCardsInCombo() # TODO allow to enter a custom property by pressing Enter in the lineedit # currently closes the dialog standardButtons.rejected.connect(self.reject) standardButtons.accepted.connect(self.accept) buttonOpen.clicked.connect(self.openfile) buttonSave.clicked.connect(self.savefile) buttonURL.clicked.connect(self.openProductURL) comboMaterial.currentIndexChanged[int].connect(self.chooseMaterial) buttonAddProperty.clicked.connect(self.addCustomProperty) buttonDeleteProperty.clicked.connect(self.deleteCustomProperty) treeView.clicked.connect(self.onClickTree) model = QtGui.QStandardItemModel() treeView.setModel(model) treeView.setUniformRowHeights(True) treeView.setItemDelegate(MaterialsDelegate()) # init model self.implementModel() # update the editor with the contents of the property, if we have one d = None if self.prop and self.obj: d = FreeCAD.ActiveDocument.getObject(self.obj).getPropertyByName( self.prop) elif self.material: d = self.material if d: self.updateMatParamsInTree(d) self.widget.ComboMaterial.setCurrentIndex(0) # set after tree params to the none material if self.card_path: # we need the index of this path index = self.widget.ComboMaterial.findData(self.card_path) self.chooseMaterial(index)
def initUI(self): #Set Window properties self.setWindowTitle("A Simple SD file browser") self.setWindowIcon(QIcon('Peptide.png')) self.setGeometry(100, 100, 200, 150) #Set Central Widget self.center = QtSvg.QSvgWidget() self.center.setFixedSize(350, 350) self.setCentralWidget(self.center) #Setup the statusbar self.myStatusBar = QStatusBar() #A permanent widget is right aligned self.molcounter = QLabel("-/-") self.myStatusBar.addPermanentWidget(self.molcounter, 0) self.setStatusBar(self.myStatusBar) self.myStatusBar.showMessage('Ready', 10000) #Make the Actions self.openAction = QAction(QIcon('Open Folder.png'), 'O&pen', self, shortcut=QKeySequence.Open, statusTip="Open an SD file", triggered=self.openFile) self.molblockAction = QAction(QIcon('Page Overview 3.png'), 'V&iew MolBlock', self, shortcut="Ctrl+M", statusTip="View MolBlock", triggered=self.viewMolBlock) self.exitAction = QAction(QIcon('Exit.png'), 'E&xit', self, shortcut="Ctrl+Q", statusTip="Close the Application", triggered=self.exit) self.prevAction = QAction(QIcon('Left.png'), 'Previous', self, shortcut=QKeySequence.MoveToPreviousChar, statusTip="Previous molecule", triggered=self.prevMol) self.nextAction = QAction(QIcon('Right.png'), 'Next', self, shortcut=QKeySequence.MoveToNextChar, statusTip="Next molecule", triggered=self.nextMol) self.aboutAction = QAction(QIcon('Info.png'), 'A&;bout', self, statusTip="Displays info about SDbrowser", triggered=self.aboutHelp) self.aboutQtAction = QAction("About &Qt", self, statusTip="Qt library About box", triggered=qApp.aboutQt) #Setup the menu self.fileMenu = self.menuBar().addMenu("&File") self.helpMenu = self.menuBar().addMenu("&Help") #Setup the Toolbar self.mainToolBar = self.addToolBar('Main') #Populate the Menu with Actions self.fileMenu.addAction(self.openAction) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAction) self.helpMenu.addAction(self.aboutAction) self.helpMenu.addSeparator() self.helpMenu.addAction(self.aboutQtAction) #Populate the Toolbar with actions. self.mainToolBar.addAction(self.openAction) self.mainToolBar.addSeparator() self.mainToolBar.addAction(self.prevAction) self.mainToolBar.addAction(self.nextAction) self.mainToolBar.addSeparator() self.mainToolBar.addAction(self.molblockAction) #Connect model signals to UI slots #Update central widget if the selected molecule changes self.model.selectedChanged.connect(self.update_mol) #Update the permanent widget in the status bar, if status changes self.model.statusChanged.connect(self.molcounter.setText) #Finally! Show the UI! self.show()