示例#1
0
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_())
示例#2
0
 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)
示例#3
0
    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
示例#4
0
    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
示例#6
0
    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()
示例#7
0
    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
示例#9
0
    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)
示例#10
0
 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()