def __init__(self, diagram, node, session): """ Initialize the node properties dialog. :type diagram: Diagram :type node: AbstractNode :type session: Session """ super().__init__(diagram, node, session) meta = diagram.project.meta(node.type(), node.text()) self.urlLabel = QtWidgets.QLabel(self) self.urlLabel.setFont(Font('Roboto', 12)) self.urlLabel.setText('URL') self.urlField = StringField(self) self.urlField.setFixedWidth(300) self.urlField.setFont(Font('Roboto', 12)) self.urlField.setValue(meta.get(K_URL, '')) self.descriptionLabel = QtWidgets.QLabel(self) self.descriptionLabel.setFont(Font('Roboto', 12)) self.descriptionLabel.setText('Description') self.descriptionField = TextField(self) self.descriptionField.setFixedSize(300, 160) self.descriptionField.setFont(Font('Roboto', 12)) self.descriptionField.setValue(meta.get(K_DESCRIPTION, '')) self.generalLayout.addRow(self.urlLabel, self.urlField) self.generalLayout.addRow(self.descriptionLabel, self.descriptionField) ############################################# # LABEL TAB ################################# self.textLabel = QtWidgets.QLabel(self) self.textLabel.setFont(Font('Roboto', 12)) self.textLabel.setText('Text') self.textField = StringField(self) self.textField.setFixedWidth(300) self.textField.setFont(Font('Roboto', 12)) self.textField.setValue(self.node.text()) self.refactorLabel = QtWidgets.QLabel(self) self.refactorLabel.setFont(Font('Roboto', 12)) self.refactorLabel.setText('Refactor') self.refactorField = CheckBox(self) self.refactorField.setFont(Font('Roboto', 12)) self.refactorField.setChecked(False) if node.type() in {Item.AttributeNode, Item.ConceptNode, Item.RoleNode}: if node.special() is not None: self.refactorField.setEnabled(False) self.labelWidget = QtWidgets.QWidget() self.labelLayout = QtWidgets.QFormLayout(self.labelWidget) self.labelLayout.addRow(self.textLabel, self.textField) self.labelLayout.addRow(self.refactorLabel, self.refactorField) self.mainWidget.addTab(self.labelWidget, 'Label')
def __init__(self, scene, filepath, parent=None): """ Initialize the form dialog. :type scene: DiagramScene :type filepath: str :type parent: QWidget """ super().__init__(parent) self.scene = scene self.filepath = filepath self.worker = None self.workerThread = None self.iriField = StringField(self) self.iriField.setFixedWidth(300) self.iriField.setValidator(QRegExpValidator(QRegExp('[\w:\/\[\]=?%#~\.\-\+]*'), self)) self.prefixField = StringField(self) self.prefixField.setFixedWidth(300) self.prefixField.setValidator(QRegExpValidator(QRegExp('[\w]*'), self)) self.syntaxField = ComboBox(self) for syntax in OWLSyntax: self.syntaxField.addItem(syntax.value, syntax) self.syntaxField.setCurrentIndex(0) self.progressBar = QProgressBar(self) self.progressBar.setAlignment(Qt.AlignHCenter) self.progressBar.setRange(0, 100) self.progressBar.setValue(0) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self) self.buttonBox.button(QDialogButtonBox.Ok).setDisabled(True) self.mainLayout = QFormLayout(self) self.mainLayout.addRow('IRI', self.iriField) self.mainLayout.addRow('Prefix', self.prefixField) self.mainLayout.addRow('Syntax', self.syntaxField) self.mainLayout.addRow(self.progressBar) self.mainLayout.addRow(self.buttonBox) self.setWindowTitle('OWL Translation') self.setWindowIcon(QIcon(':/images/eddy')) self.setFixedSize(self.sizeHint()) connect(self.buttonBox.accepted, self.run) connect(self.buttonBox.rejected, self.reject) connect(self.iriField.textChanged, self.iriChanged)
def __init__(self, node, parent=None): """ Initialize the form dialog. :type node: AbstractNode :type parent: QWidget """ super().__init__(parent) self.node = node self.renameField = StringField(self) self.renameField.setFixedWidth(200) self.renameField.setValue(self.node.text()) self.invalidName = QLabel('\'\' is not a valid predicate name', self) self.invalidName.setProperty('class', 'invalid') self.invalidName.setVisible(False) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self) self.mainLayout = QFormLayout(self) self.mainLayout.addRow('Name', self.renameField) self.mainLayout.addRow(self.invalidName) self.mainLayout.addRow(self.buttonBox) self.setWindowTitle('Rename') self.setWindowIcon(QIcon(':/images/eddy')) self.setFixedSize(self.sizeHint()) connect(self.buttonBox.accepted, self.validate) connect(self.buttonBox.rejected, self.reject) connect(self.renameField.textChanged, self.nameChanged)
def __init__(self, session, parent=None): """ Initialize the base information box. :type session: Session :type parent: QtWidgets.QWidget """ super().__init__(parent) self.session = session self.isValidPath = False pathLabel = QtWidgets.QLabel(self, objectName='path_label') pathLabel.setText('Path') self.pathField = StringField(self, objectName='path_field') connect(self.pathField.textChanged, self.onPathFieldChanged) self.browseBtn = QtWidgets.QPushButton('Browse') self.browseBtn.setEnabled(True) connect(self.browseBtn.clicked, self.onBrowseClicked) formlayout = QtWidgets.QFormLayout() formlayout.addRow(pathLabel, self.pathField) boxlayout = QtWidgets.QHBoxLayout() boxlayout.setAlignment(QtCore.Qt.AlignCenter) boxlayout.addWidget(self.browseBtn) outerFormLayout = QtWidgets.QFormLayout() outerFormLayout.addRow(formlayout) outerFormLayout.addRow(boxlayout) groupbox = QtWidgets.QGroupBox('Import from local document', self) groupbox.setLayout(outerFormLayout) outerFormLayout = QtWidgets.QFormLayout() outerFormLayout.addRow(groupbox) self.setLayout(outerFormLayout)
def __init__(self, scene, node, parent=None): """ Initialize the editable node properties dialog. :type scene: DiagramScene :type node: AbstractNode :type parent: QWidget """ super().__init__(scene, node, parent) ################################################################################################################ # # # LABEL TAB # # # ################################################################################################################ self.labelWidget = QWidget() self.labelLayout = QFormLayout(self.labelWidget) self.textField = StringField(self.labelWidget) self.textField.setFixedWidth(300) self.textField.setValue(self.node.text()) self.textField.setEnabled(self.node.label.editable) self.labelLayout.addRow('Text', self.textField) self.mainWidget.addTab(self.labelWidget, 'Label')
def __init__(self, session, location='', ontIri='', versionIri='', parent=None): """ Initialize the base information box. :type session: Session :type parent: QtWidgets.QWidget """ super().__init__(parent) self.session = session self.msgLabel = QtWidgets.QLabel(self) self.msgLabel.setText('The following ontology will be imported:') self.locationLabel = QtWidgets.QLabel(self) self.locationLabel.setText('Location: '.format(location)) self.locationText = StringField(self) self.locationText.setValue('{}'.format(location)) self.locationText.setReadOnly(True) self.iriLabel = QtWidgets.QLabel(self) self.iriLabel.setText('Ontology IRI: ') self.iriText = StringField(self) self.iriText.setValue('{}'.format(ontIri)) self.iriText.setReadOnly(True) self.versionLabel = QtWidgets.QLabel(self) self.versionLabel.setText('Version IRI: ') self.versionText = StringField(self) self.versionText.setValue('{}'.format(versionIri)) self.versionText.setReadOnly(True) formlayout = QtWidgets.QFormLayout() formlayout.addRow(self.locationLabel,self.locationText) formlayout.addRow(self.iriLabel,self.iriText) formlayout.addRow(self.versionLabel,self.versionText) groupbox = QtWidgets.QGroupBox(parent=self) groupbox.setLayout(formlayout) boxlayout = QtWidgets.QHBoxLayout() boxlayout.setAlignment(QtCore.Qt.AlignCenter) boxlayout.addWidget(self.msgLabel) boxlayout.addWidget(groupbox) groupbox = QtWidgets.QGroupBox('Finalize import', self) groupbox.setLayout(boxlayout) outerFormLayout = QtWidgets.QFormLayout() outerFormLayout.addRow(groupbox) self.setLayout(outerFormLayout)
def __init__(self, plugin): """ Initialize the ontology explorer widget. :type plugin: Session """ super().__init__(plugin.session) self.plugin = plugin self.iconAttribute = QtGui.QIcon(':/icons/18/ic_treeview_attribute') self.iconConcept = QtGui.QIcon(':/icons/18/ic_treeview_concept') self.iconInstance = QtGui.QIcon(':/icons/18/ic_treeview_instance') self.iconRole = QtGui.QIcon(':/icons/18/ic_treeview_role') self.iconValue = QtGui.QIcon(':/icons/18/ic_treeview_value') self.search = StringField(self) self.search.setAcceptDrops(False) self.search.setClearButtonEnabled(True) self.search.setPlaceholderText('Search...') self.search.setFixedHeight(30) self.model = QtGui.QStandardItemModel(self) self.proxy = QtCore.QSortFilterProxyModel(self) self.proxy.setDynamicSortFilter(False) self.proxy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxy.setSortCaseSensitivity(QtCore.Qt.CaseSensitive) self.proxy.setSourceModel(self.model) self.ontoview = OntologyExplorerView(self) self.ontoview.setModel(self.proxy) self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addWidget(self.search) self.mainLayout.addWidget(self.ontoview) self.setContentsMargins(0, 0, 0, 0) self.setMinimumWidth(216) self.setStyleSheet(""" QLineEdit, QLineEdit:editable, QLineEdit:hover, QLineEdit:pressed, QLineEdit:focus { border: none; border-radius: 0; background: #FFFFFF; color: #000000; padding: 4px 4px 4px 4px; } """) header = self.ontoview.header() header.setStretchLastSection(False) header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents) connect(self.ontoview.doubleClicked, self.onItemDoubleClicked) connect(self.ontoview.pressed, self.onItemPressed) connect(self.search.textChanged, self.doFilterItem) connect(self.sgnItemDoubleClicked, self.session.doFocusItem) connect(self.sgnItemRightClicked, self.session.doFocusItem)
def __init__(self, diagram, node, session): """ Initialize the node properties dialog. :type diagram: Diagram :type node: AbstractNode :type session: Session """ super().__init__(diagram, node, session) ############################################# # FACET TAB ################################# f1 = lambda x: x.type() is Item.InputEdge f2 = lambda x: x.type() is Item.DatatypeRestrictionNode f3 = lambda x: x.type() is Item.ValueDomainNode admissible = [x for x in Facet] restriction = first( self.node.outgoingNodes(filter_on_edges=f1, filter_on_nodes=f2)) if restriction: valuedomain = first( restriction.incomingNodes(filter_on_edges=f1, filter_on_nodes=f3)) if valuedomain: admissible = Facet.forDatatype(valuedomain.datatype) self.facetLabel = QtWidgets.QLabel(self) self.facetLabel.setFont(Font('Roboto', 12)) self.facetLabel.setText('Facet') self.facetField = ComboBox(self) self.facetField.setFixedWidth(200) self.facetField.setFocusPolicy(QtCore.Qt.StrongFocus) self.facetField.setFont(Font('Roboto', 12)) for facet in admissible: self.facetField.addItem(facet.value, facet) facet = self.node.facet for i in range(self.facetField.count()): if self.facetField.itemData(i) is facet: self.facetField.setCurrentIndex(i) break else: self.facetField.setCurrentIndex(0) self.valueLabel = QtWidgets.QLabel(self) self.valueLabel.setFont(Font('Roboto', 12)) self.valueLabel.setText('Value') self.valueField = StringField(self) self.valueField.setFixedWidth(200) self.valueField.setFont(Font('Roboto', 12)) self.valueField.setValue(self.node.value) self.facetWidget = QtWidgets.QWidget() self.facetLayout = QtWidgets.QFormLayout(self.facetWidget) self.facetLayout.addRow(self.facetLabel, self.facetField) self.facetLayout.addRow(self.valueLabel, self.valueField) self.mainWidget.addTab(self.facetWidget, 'Facet')
def __init__(self, project, parent=None): """ Initialize the dialog. :type project: Project :type parent: QtWidgets.QWidget """ super().__init__(parent) self.project = project ############################################# # FORM AREA ################################# self.nameField = StringField(self) self.nameField.setFont(Font('Roboto', 12)) self.nameField.setMinimumWidth(400) self.nameField.setMaxLength(64) self.nameField.setPlaceholderText('Name...') connect(self.nameField.textChanged, self.onNameFieldChanged) self.warnLabel = QtWidgets.QLabel(self) self.warnLabel.setContentsMargins(0, 0, 0, 0) self.warnLabel.setProperty('class', 'invalid') self.warnLabel.setVisible(False) ############################################# # CONFIRMATION AREA ################################# self.confirmationBox = QtWidgets.QDialogButtonBox( QtCore.Qt.Horizontal, self) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Ok) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Cancel) self.confirmationBox.setFont(Font('Roboto', 12)) self.confirmationBox.button( QtWidgets.QDialogButtonBox.Ok).setEnabled(False) ############################################# # SETUP DIALOG LAYOUT ################################# self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(10, 10, 10, 10) self.mainLayout.addWidget(self.nameField) self.mainLayout.addWidget(self.warnLabel) self.mainLayout.addWidget(self.confirmationBox, 0, QtCore.Qt.AlignRight) self.setFixedSize(self.sizeHint()) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) connect(self.confirmationBox.accepted, self.accept) connect(self.confirmationBox.rejected, self.reject)
def __init__(self, node, parent=None): """ Initialize the form dialog. :type node: ValueRestrictionNode :type parent: QWidget """ super().__init__(parent) # DATATYPE COMBO BOX self.datatypeField = ComboBox(self) for datatype in XsdDatatype: # hide unrestrictable elements. if Facet.forDatatype(datatype): self.datatypeField.addItem(datatype.value, datatype) datatype = node.datatype for i in range(self.datatypeField.count()): if self.datatypeField.itemData(i) is datatype: self.datatypeField.setCurrentIndex(i) break # FACET COMBO BOX self.facetField = ComboBox(self) for facet in Facet.forDatatype(datatype): self.facetField.addItem(facet.value, facet) facet = node.facet for i in range(self.facetField.count()): if self.facetField.itemData(i) is facet: self.facetField.setCurrentIndex(i) break # VALUE STRING FIELD self.valueField = StringField(self) self.valueField.setFixedWidth(300) self.valueField.setValue(node.value) # CONFIRMATION BOX self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self) self.mainLayout = QFormLayout(self) self.mainLayout.addRow('Datatype', self.datatypeField) self.mainLayout.addRow('Facet', self.facetField) self.mainLayout.addRow('Value', self.valueField) self.mainLayout.addRow(self.buttonBox) self.setWindowTitle('Compose value restriction') self.setWindowIcon(QIcon(':/images/eddy')) self.setFixedSize(self.sizeHint()) connect(self.buttonBox.accepted, self.accept) connect(self.buttonBox.rejected, self.reject) connect(self.datatypeField.currentIndexChanged[int], self.datatypeFieldChanged)
def __init__(self, diagram, node, session): """ Initialize the node properties dialog. :type diagram: Diagram :type node: AbstractNode :type session: Session """ super().__init__(diagram, node, session) self.node = node ############################################# # VALUE TAB ################################# self.datatypeLabel = QtWidgets.QLabel(self) self.datatypeLabel.setFont(Font('Roboto', 12)) self.datatypeLabel.setText('Datatype') self.datatypeField = ComboBox(self) self.datatypeField.setFixedWidth(200) self.datatypeField.setFocusPolicy(QtCore.Qt.StrongFocus) self.datatypeField.setFont(Font('Roboto', 12)) for datatype in Datatype: self.datatypeField.addItem(datatype.value, datatype) datatype = self.node.datatype for i in range(self.datatypeField.count()): if self.datatypeField.itemData(i) is datatype: self.datatypeField.setCurrentIndex(i) break else: self.datatypeField.setCurrentIndex(0) self.valueLabel = QtWidgets.QLabel(self) self.valueLabel.setFont(Font('Roboto', 12)) self.valueLabel.setText('Value') self.valueField = StringField(self) self.valueField.setFixedWidth(200) self.valueField.setFont(Font('Roboto', 12)) self.valueField.setValue(self.node.value) self.valueWidget = QtWidgets.QWidget() self.valueLayout = QtWidgets.QFormLayout(self.valueWidget) self.valueLayout.addRow(self.datatypeLabel, self.datatypeField) self.valueLayout.addRow(self.valueLabel, self.valueField) self.mainWidget.addTab(self.valueWidget, 'Datatype')
def __init__(self, node, parent=None): """ Initialize the form dialog. :type node: IndividualNode :type parent: QWidget """ super().__init__(parent) # DATATYPE COMBO BOX self.datatypeField = ComboBox(self) for datatype in XsdDatatype: self.datatypeField.addItem(datatype.value, datatype) # VALUE STRING FIELD self.valueField = StringField(self) self.valueField.setFixedWidth(300) # FILL FIELDS WITH DATA if node.identity is Identity.Value: datatype = node.datatype for i in range(self.datatypeField.count()): if self.datatypeField.itemData(i) is datatype: self.datatypeField.setCurrentIndex(i) break self.valueField.setValue(node.value) else: self.datatypeField.setCurrentIndex(0) self.valueField.setValue('') # CONFIRMATION BOX self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self) self.mainLayout = QFormLayout(self) self.mainLayout.addRow('Datatype', self.datatypeField) self.mainLayout.addRow('Value', self.valueField) self.mainLayout.addRow(self.buttonBox) self.setWindowTitle('Compose value') self.setWindowIcon(QIcon(':/images/eddy')) self.setFixedSize(self.sizeHint()) connect(self.buttonBox.accepted, self.accept) connect(self.buttonBox.rejected, self.reject)
def __init__(self, mainwindow): """ Initialize the Explorer. :type mainwindow: MainWindow """ super().__init__(mainwindow) self.expanded = {} self.searched = {} self.scrolled = {} self.mainview = None self.iconA = QIcon(':/icons/treeview-icon-attribute') self.iconC = QIcon(':/icons/treeview-icon-concept') self.iconD = QIcon(':/icons/treeview-icon-datarange') self.iconI = QIcon(':/icons/treeview-icon-instance') self.iconR = QIcon(':/icons/treeview-icon-role') self.iconV = QIcon(':/icons/treeview-icon-value') self.search = StringField(self) self.search.setAcceptDrops(False) self.search.setClearButtonEnabled(True) self.search.setPlaceholderText('Search...') self.search.setFixedHeight(30) self.model = QStandardItemModel(self) self.proxy = QSortFilterProxyModel(self) self.proxy.setDynamicSortFilter(False) self.proxy.setFilterCaseSensitivity(Qt.CaseInsensitive) self.proxy.setSortCaseSensitivity(Qt.CaseSensitive) self.proxy.setSourceModel(self.model) self.view = ExplorerView(mainwindow, self) self.view.setModel(self.proxy) self.mainLayout = QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addWidget(self.search) self.mainLayout.addWidget(self.view) self.setContentsMargins(0, 0, 0, 0) self.setMinimumWidth(216) self.setMinimumHeight(160) connect(self.view.doubleClicked, self.itemDoubleClicked) connect(self.view.pressed, self.itemPressed) connect(self.view.collapsed, self.itemCollapsed) connect(self.view.expanded, self.itemExpanded) connect(self.search.textChanged, self.filterItem)
def __init__(self, session, parent=None): """ Initialize the base information box. :type session: Session :type parent: QtWidgets.QWidget """ super().__init__(parent) self.session = session self.isValidUri = False uriLabel = QtWidgets.QLabel(self, objectName='uri_label') uriLabel.setText('URI') self.uriField = StringField(self, objectName='uri_field') connect(self.uriField.textChanged, self.onUriFieldChanged) formlayout = QtWidgets.QFormLayout() formlayout.addRow(uriLabel, self.uriField) groupbox = QtWidgets.QGroupBox('Import from remote document', self) groupbox.setLayout(formlayout) outerFormLayout = QtWidgets.QFormLayout() outerFormLayout.addRow(groupbox) self.setLayout(outerFormLayout)
def __init__(self, scene, node, parent=None): """ Initialize the predicate node properties dialog. :type scene: DiagramScene :type node: AbstractNode :type parent: QWidget """ super().__init__(scene, node, parent) meta = scene.meta.metaFor(node.item, node.text()) self.urlField = StringField(self.generalWidget) self.urlField.setFixedWidth(300) self.urlField.setValue(meta.url) self.descriptionField = TextField(self.generalWidget) self.descriptionField.setFixedSize(300, 160) self.descriptionField.setValue(meta.description) self.generalLayout.addRow('URL', self.urlField) self.generalLayout.addRow('Description', self.descriptionField)
def __init__(self, session, location='', problemDescription='', parent=None): """ Initialize the base information box. :type session: Session :type parent: QtWidgets.QWidget """ super().__init__(parent) self.session = session msgLabel = QtWidgets.QLabel(self) msgLabel.setText('Problems encountered while verifying import:') self.locationLabel = QtWidgets.QLabel(self) self.locationLabel.setText('Location: ') self.locationText = StringField(self) self.locationText.setValue('{}'.format(location)) self.locationText.setReadOnly(True) self.problemLabel = QtWidgets.QLabel(self) self.problemLabel.setText('Problem: ') self.problemTextArea = QtWidgets.QPlainTextEdit(self) self.problemTextArea.setPlainText('{}'.format(problemDescription)) self.problemTextArea.setReadOnly(True) formlayout = QtWidgets.QFormLayout() formlayout.addRow(self.locationLabel,self.locationText) formlayout.addRow(self.problemLabel,self.problemTextArea) groupbox = QtWidgets.QGroupBox(parent=self) groupbox.setLayout(formlayout) boxlayout = QtWidgets.QHBoxLayout() boxlayout.setAlignment(QtCore.Qt.AlignCenter) boxlayout.addWidget(msgLabel) boxlayout.addWidget(groupbox) groupbox = QtWidgets.QGroupBox('Revision needed', self) groupbox.setLayout(boxlayout) outerFormLayout = QtWidgets.QFormLayout() outerFormLayout.addRow(groupbox) self.setLayout(outerFormLayout)
def __init__(self, session): """ Initialize the Preferences dialog. :type session: Session """ super().__init__(session) settings = QtCore.QSettings() ############################################# # GENERAL TAB ################################# # WORKSPACE GROUP workspace = StringField(self, objectName='workspace_field') workspace.setMinimumWidth(400) workspace.setReadOnly(True) workspace.setText(settings.value('workspace/home', WORKSPACE, str)) self.addWidget(workspace) browse = QtWidgets.QPushButton(self, objectName='workspace_browse_button') browse.setText('Browse') connect(browse.clicked, self.browseWorkspace) self.addWidget(browse) boxLayout = QtWidgets.QHBoxLayout() boxLayout.addWidget(self.widget('workspace_field')) boxLayout.addWidget(self.widget('workspace_browse_button')) groupbox = QtWidgets.QGroupBox('Workspace', self, objectName='workspace_widget') groupbox.setLayout(boxLayout) self.addWidget(groupbox) ## EDITOR GROUP prefix = QtWidgets.QLabel(self, objectName='diagram_size_prefix') prefix.setText('Diagram size') self.addWidget(prefix) spinbox = SpinBox(self, objectName='diagram_size_field') spinbox.setRange(Diagram.MinSize, Diagram.MaxSize) spinbox.setSingleStep(100) spinbox.setToolTip('Default size of all the new created diagrams') spinbox.setValue(settings.value('diagram/size', 5000, int)) self.addWidget(spinbox) prefix = QtWidgets.QLabel(self, objectName='diagram_font_size_prefix') prefix.setText('Diagram font size (px)') self.addWidget(prefix) spinbox = SpinBox(self, objectName='diagram_font_size_field') spinbox.setRange(Diagram.MinFontSize, Diagram.MaxFontSize) spinbox.setSingleStep(1) spinbox.setToolTip('Default font size for diagram labels (px)') spinbox.setValue(settings.value('diagram/fontsize', QtWidgets.qApp.font().pixelSize(), int)) self.addWidget(spinbox) formlayout = QtWidgets.QFormLayout() formlayout.addRow(self.widget('diagram_size_prefix'), self.widget('diagram_size_field')) formlayout.addRow(self.widget('diagram_font_size_prefix'), self.widget('diagram_font_size_field')) groupbox = QtWidgets.QGroupBox('Editor', self, objectName='editor_widget') groupbox.setLayout(formlayout) self.addWidget(groupbox) ## UPDATE GROUP prefix = QtWidgets.QLabel(self, objectName='update_startup_prefix') prefix.setText('Check for updates on startup') self.addWidget(prefix) checkbox = CheckBox(self, objectName='update_startup_checkbox') checkbox.setChecked(settings.value('update/check_on_startup', True, bool)) checkbox.setToolTip('Whether or not application updates needs to be checked upon startup') self.addWidget(checkbox) prefix = QtWidgets.QLabel(self, objectName='update_channel_prefix') prefix.setText('Update channel') self.addWidget(prefix) combobox = ComboBox(objectName='update_channel_switch') combobox.setEditable(False) combobox.setFocusPolicy(QtCore.Qt.StrongFocus) combobox.setScrollEnabled(False) combobox.setToolTip('Update channel (current = %s)' % settings.value('update/channel', Channel.Stable.value, str)) combobox.addItems([x.value for x in Channel]) combobox.setCurrentText(settings.value('update/channel', Channel.Stable.value, str)) self.addWidget(combobox) formlayout = QtWidgets.QFormLayout() formlayout.addRow(self.widget('update_startup_prefix'), self.widget('update_startup_checkbox')) formlayout.addRow(self.widget('update_channel_prefix'), self.widget('update_channel_switch')) groupbox = QtWidgets.QGroupBox('Update', self, objectName='update_widget') groupbox.setLayout(formlayout) self.addWidget(groupbox) ## GENERAL TAB LAYOUT CONFIGURATION layout = QtWidgets.QVBoxLayout() layout.setAlignment(QtCore.Qt.AlignTop) layout.addWidget(self.widget('workspace_widget'), 0, QtCore.Qt.AlignTop) layout.addWidget(self.widget('editor_widget'), 0, QtCore.Qt.AlignTop) layout.addWidget(self.widget('update_widget'), 0, QtCore.Qt.AlignTop) widget = QtWidgets.QWidget() widget.setLayout(layout) widget.setObjectName('general_widget') self.addWidget(widget) ############################################# # EXPORT TAB ################################# self.checks = {x: CheckBox(x.value, self) for x in OWLAxiom} for axiom, checkbox in self.checks.items(): checkbox.setChecked(settings.value('export/axiom/{}'.format(axiom.value), True, bool)) ## NON-LOGICAL GROUP layout = QtWidgets.QGridLayout() layout.setColumnMinimumWidth(0, 230) layout.setColumnMinimumWidth(1, 230) layout.setColumnMinimumWidth(2, 230) layout.addWidget(self.checks[OWLAxiom.Annotation], 0, 0) layout.addWidget(self.checks[OWLAxiom.Declaration], 0, 1) layout.addWidget(QtWidgets.QWidget(self), 0, 2) widget = QtWidgets.QGroupBox('Non-Logical', self, objectName='axioms_non_logical') widget.setLayout(layout) self.addWidget(widget) ## INTENSIONAL GROUP layout = QtWidgets.QGridLayout() layout.setColumnMinimumWidth(0, 230) layout.setColumnMinimumWidth(1, 230) layout.setColumnMinimumWidth(2, 230) layout.addWidget(self.checks[OWLAxiom.AsymmetricObjectProperty], 0, 0) layout.addWidget(self.checks[OWLAxiom.DataPropertyDomain], 1, 0) layout.addWidget(self.checks[OWLAxiom.DataPropertyRange], 2, 0) layout.addWidget(self.checks[OWLAxiom.DisjointClasses], 3, 0) layout.addWidget(self.checks[OWLAxiom.DisjointDataProperties], 4, 0) layout.addWidget(self.checks[OWLAxiom.DisjointObjectProperties], 5, 0) layout.addWidget(self.checks[OWLAxiom.EquivalentClasses], 6, 0) layout.addWidget(self.checks[OWLAxiom.EquivalentDataProperties], 7, 0) layout.addWidget(self.checks[OWLAxiom.EquivalentObjectProperties], 0, 1) layout.addWidget(self.checks[OWLAxiom.FunctionalDataProperty], 1, 1) layout.addWidget(self.checks[OWLAxiom.FunctionalObjectProperty], 2, 1) layout.addWidget(self.checks[OWLAxiom.InverseFunctionalObjectProperty], 3, 1) layout.addWidget(self.checks[OWLAxiom.InverseObjectProperties], 4, 1) layout.addWidget(self.checks[OWLAxiom.IrreflexiveObjectProperty], 5, 1) layout.addWidget(self.checks[OWLAxiom.ObjectPropertyDomain], 6, 1) layout.addWidget(self.checks[OWLAxiom.ObjectPropertyRange], 7, 1) layout.addWidget(self.checks[OWLAxiom.ReflexiveObjectProperty], 0, 2) layout.addWidget(self.checks[OWLAxiom.SubClassOf], 1, 2) layout.addWidget(self.checks[OWLAxiom.SubDataPropertyOf], 2, 2) layout.addWidget(self.checks[OWLAxiom.SubObjectPropertyOf], 3, 2) layout.addWidget(self.checks[OWLAxiom.SymmetricObjectProperty], 4, 2) layout.addWidget(self.checks[OWLAxiom.TransitiveObjectProperty], 5, 2) widget = QtWidgets.QGroupBox('Intensional', self, objectName='axioms_intensional') widget.setLayout(layout) self.addWidget(widget) ## EXTENSIONAL GROUP layout = QtWidgets.QGridLayout() layout.setColumnMinimumWidth(0, 230) layout.setColumnMinimumWidth(1, 230) layout.setColumnMinimumWidth(2, 230) layout.addWidget(self.checks[OWLAxiom.ClassAssertion], 0, 0) layout.addWidget(self.checks[OWLAxiom.DataPropertyAssertion], 1, 0) layout.addWidget(self.checks[OWLAxiom.DifferentIndividuals], 2, 0) layout.addWidget(self.checks[OWLAxiom.NegativeDataPropertyAssertion], 0, 1) layout.addWidget(self.checks[OWLAxiom.NegativeObjectPropertyAssertion], 1, 1) layout.addWidget(self.checks[OWLAxiom.ObjectPropertyAssertion], 2, 1) layout.addWidget(self.checks[OWLAxiom.SameIndividual], 0, 2) widget = QtWidgets.QGroupBox('Extensional', self, objectName='axioms_extensional') widget.setLayout(layout) self.addWidget(widget) ## LOGICAL GROUP layout = QtWidgets.QVBoxLayout() layout.addWidget(self.widget('axioms_intensional')) layout.addWidget(self.widget('axioms_extensional')) widget = QtWidgets.QGroupBox('Logical', self, objectName='axioms_logical') widget.setLayout(layout) self.addWidget(widget) ## EXPORT TAB LAYOUT CONFIGURATION layout = QtWidgets.QVBoxLayout() layout.addWidget(self.widget('axioms_non_logical')) layout.addWidget(self.widget('axioms_logical')) groupbox = QtWidgets.QGroupBox('OWL 2 Axioms for which exporting is enabled', self) groupbox.setLayout(layout) layout = QtWidgets.QVBoxLayout() layout.setContentsMargins(10, 10, 10, 10) layout.addWidget(groupbox) widget = QtWidgets.QWidget(self, objectName='axioms_widget') widget.setLayout(layout) self.addWidget(widget) ############################################# # PLUGINS TAB ################################# table = QtWidgets.QTableWidget(len(self.session.plugins()), 5, self, objectName='plugins_table') table.setHorizontalHeaderLabels(['Name', 'Version', 'Author', 'Contact', 'Uninstall']) table.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) table.setFocusPolicy(QtCore.Qt.NoFocus) self.addWidget(table) header = table.horizontalHeader() header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch) header.setSectionResizeMode(1, QtWidgets.QHeaderView.Fixed) header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch) header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch) header.setSectionResizeMode(4, QtWidgets.QHeaderView.Fixed) header.setSectionsClickable(False) header.setSectionsMovable(False) header = table.verticalHeader() header.setSectionResizeMode(QtWidgets.QHeaderView.Fixed) self.uninstall = dict() for row, plugin in enumerate(sorted(self.session.plugins(), key=lambda x: x.name())): item = QtWidgets.QTableWidgetItem(plugin.name()) item.setTextAlignment(QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEditable) table.setItem(row, 0, item) item = QtWidgets.QTableWidgetItem('v{0}'.format(plugin.version())) item.setTextAlignment(QtCore.Qt.AlignCenter) item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEditable) table.setItem(row, 1, item) item = QtWidgets.QTableWidgetItem(plugin.author()) item.setTextAlignment(QtCore.Qt.AlignCenter) item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEditable) table.setItem(row, 2, item) item = QtWidgets.QTableWidgetItem(plugin.contact()) item.setTextAlignment(QtCore.Qt.AlignCenter) item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEditable) table.setItem(row, 3, item) p_widget = QtWidgets.QWidget() p_checkbox = CheckBox() p_checkbox.setEnabled(not plugin.isBuiltIn()) p_layout = QtWidgets.QHBoxLayout(p_widget) p_layout.addWidget(p_checkbox) p_layout.setAlignment(QtCore.Qt.AlignCenter) p_layout.setContentsMargins(0, 0, 0, 0) table.setCellWidget(row, 4, p_widget) self.uninstall[plugin] = p_checkbox button = QtWidgets.QToolButton(self, objectName='plugins_install_button') button.setDefaultAction(self.session.action('install_plugin')) button.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon) self.addWidget(button) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.widget('plugins_table'), 1) layout.addWidget(self.widget('plugins_install_button'), 0, QtCore.Qt.AlignRight) widget = QtWidgets.QWidget(objectName='plugins_widget') widget.setLayout(layout) self.addWidget(widget) ############################################# # CONFIRMATION BOX ################################# confirmation = QtWidgets.QDialogButtonBox(QtCore.Qt.Horizontal, self, objectName='confirmation_widget') confirmation.addButton(QtWidgets.QDialogButtonBox.Save) confirmation.addButton(QtWidgets.QDialogButtonBox.Cancel) confirmation.setContentsMargins(10, 0, 10, 10) self.addWidget(confirmation) ############################################# # MAIN WIDGET ################################# widget = QtWidgets.QTabWidget(self, objectName='main_widget') widget.addTab(self.widget('general_widget'), QtGui.QIcon(':/icons/24/ic_settings_black'), 'General') widget.addTab(self.widget('axioms_widget'), QtGui.QIcon(':/icons/24/ic_export_black'), 'Export') widget.addTab(self.widget('plugins_widget'), QtGui.QIcon(':/icons/24/ic_extension_black'), 'Plugins') self.addWidget(widget) layout = QtWidgets.QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.widget('main_widget')) layout.addWidget(self.widget('confirmation_widget'), 0, QtCore.Qt.AlignRight) self.setLayout(layout) self.setMinimumSize(740, 420) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle('Preferences') connect(confirmation.accepted, self.accept) connect(confirmation.rejected, self.reject)
def __init__(self, scene, node, parent=None): """ Initialize the node properties dialog. :type scene: DiagramScene :type node: AbstractNode :type parent: QWidget """ super().__init__(parent) self.node = node self.scene = scene # GENERAL self.generalWidget = QWidget() self.generalLayout = QFormLayout(self.generalWidget) self.idField = StringField(self.generalWidget) self.idField.setReadOnly(True) self.idField.setFixedWidth(300) self.idField.setValue(self.node.id) self.itemField = StringField(self.generalWidget) self.itemField.setReadOnly(True) self.itemField.setFixedWidth(300) self.itemField.setValue(node.shortname.capitalize()) self.showIdentityField = StringField(self.generalWidget) self.showIdentityField.setReadOnly(True) self.showIdentityField.setFixedWidth(300) self.showIdentityField.setValue(self.node.identity.value) self.generalLayout.addRow('ID', self.idField) self.generalLayout.addRow('Type', self.itemField) self.generalLayout.addRow('Identity', self.showIdentityField) # GEOMETRY self.geometryWidget = QWidget() self.geometryLayout = QFormLayout(self.geometryWidget) P = self.node.pos() R = self.scene.sceneRect() self.xField = SpinBox(self.geometryWidget) self.xField.setFixedWidth(60) self.xField.setRange(R.left(), R.right()) self.xField.setValue(int(P.x())) self.yField = SpinBox(self.geometryWidget) self.yField.setFixedWidth(60) self.yField.setRange(R.top(), R.bottom()) self.yField.setValue(int(P.y())) self.wField = SpinBox(self.geometryWidget) self.wField.setRange(20, R.width()) self.wField.setReadOnly(True) self.wField.setFixedWidth(60) self.wField.setValue(int(self.node.width())) self.hField = SpinBox(self.geometryWidget) self.hField.setRange(20, R.height()) self.hField.setReadOnly(True) self.hField.setFixedWidth(60) self.hField.setValue(int(self.node.height())) self.geometryLayout.addRow('X', self.xField) self.geometryLayout.addRow('Y', self.yField) self.geometryLayout.addRow('Width', self.wField) self.geometryLayout.addRow('Height', self.hField) # MAIN self.mainWidget = QTabWidget(self) self.mainWidget.addTab(self.generalWidget, 'General') self.mainWidget.addTab(self.geometryWidget, 'Geometry') self.buttonBox = QDialogButtonBox( QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self) self.mainLayout = QVBoxLayout(self) self.mainLayout.addWidget(self.mainWidget) self.mainLayout.addWidget(self.buttonBox, 0, Qt.AlignRight) self.setWindowTitle('Properties') self.setWindowIcon(QIcon(':/images/eddy')) connect(self.finished, self.completed) connect(self.buttonBox.accepted, self.accept) connect(self.buttonBox.rejected, self.reject)
def __init__(self, scene, parent=None): """ Initialize the scene properties dialog. :type scene: DiagramScene :type parent: QWidget """ super().__init__(parent) self.scene = scene self.mainWidget = QTabWidget(self) ################################################################################################################ # # # GENERAL TAB # # # ################################################################################################################ self.generalWidget = QWidget() self.generalLayout = QFormLayout(self.generalWidget) # Amount of nodes in the scene self.nodesField = IntField(self.generalWidget) self.nodesField.setReadOnly(True) self.nodesField.setFixedWidth(300) self.nodesField.setValue(len(self.scene.nodes())) # Amount of edges in the scene self.edgesField = IntField(self.generalWidget) self.nodesField.setReadOnly(True) self.edgesField.setFixedWidth(300) self.edgesField.setValue(len(self.scene.edges())) self.generalLayout.addRow('N° nodes', self.nodesField) self.generalLayout.addRow('N° edges', self.edgesField) self.mainWidget.addTab(self.generalWidget, 'General') ################################################################################################################ # # # GEOMETRY TAB # # # ################################################################################################################ self.geometryWidget = QWidget() self.geometryLayout = QFormLayout(self.geometryWidget) R = self.scene.sceneRect() self.sceneSizeField = SpinBox(self) self.sceneSizeField.setRange(self.scene.MinSize, self.scene.MaxSize) self.sceneSizeField.setSingleStep(100) self.sceneSizeField.setValue(R.width()) self.geometryLayout.addRow('Size', self.sceneSizeField) self.mainWidget.addTab(self.geometryWidget, 'Geometry') ################################################################################################################ # # # DOCUMENT WIDGET # # # ################################################################################################################ if self.scene.document.path: self.documentWidget = QWidget() self.documentLayout = QFormLayout(self.documentWidget) # Filepath of the saved document. self.pathField = StringField(self.documentWidget) self.pathField.setReadOnly(True) self.pathField.setFixedWidth(300) self.pathField.setValue(self.scene.document.path) # Timestamp when the document has been last modified. self.editedField = StringField(self.documentWidget) self.editedField.setReadOnly(True) self.editedField.setFixedWidth(300) self.editedField.setValue( datetime.fromtimestamp(int( self.scene.document.edited)).strftime('%Y/%m/%d %H:%M:%S')) self.documentLayout.addRow('File', self.pathField) self.documentLayout.addRow('Last edit', self.editedField) self.mainWidget.addTab(self.documentWidget, 'Document') ################################################################################################################ # # # BUTTON BOX # # # ################################################################################################################ self.buttonBox = QDialogButtonBox( QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self) ################################################################################################################ # # # MAIN LAYOUT # # # ################################################################################################################ self.mainLayout = QVBoxLayout(self) self.mainLayout.addWidget(self.mainWidget) self.mainLayout.addWidget(self.buttonBox, 0, Qt.AlignRight) self.setFixedSize(self.sizeHint()) self.setWindowTitle('Scene properties') self.setWindowIcon(QIcon(':/images/eddy')) ################################################################################################################ # # # CONFIGURE SIGNALS # # # ################################################################################################################ connect(self.finished, self.completed) connect(self.buttonBox.accepted, self.accept) connect(self.buttonBox.rejected, self.reject)
def __init__(self, session): """ Initialize the plugin install dialog. :type session: Session """ super().__init__(session) ############################################# # HEAD AREA ################################# self.headTitle = QtWidgets.QLabel('Install a plugin', self) self.headTitle.setFont(Font('Roboto', 12, bold=True)) self.headDescription = QtWidgets.QLabel( dedent(""" Plugins are software components that add specific features to {0}.<br/> Please select the plugin you wish to install.""".format(APPNAME)), self) self.headDescription.setFont(Font('Roboto', 12)) self.headPix = QtWidgets.QLabel(self) self.headPix.setPixmap( QtGui.QIcon(':/icons/48/ic_extension_black').pixmap(48)) self.headPix.setContentsMargins(0, 0, 0, 0) self.headWidget = QtWidgets.QWidget(self) self.headWidget.setProperty('class', 'head') self.headWidget.setContentsMargins(10, 10, 10, 10) self.headLayoutL = QtWidgets.QVBoxLayout() self.headLayoutL.addWidget(self.headTitle) self.headLayoutL.addWidget(self.headDescription) self.headLayoutL.setContentsMargins(0, 0, 0, 0) self.headLayoutR = QtWidgets.QVBoxLayout() self.headLayoutR.addWidget(self.headPix, 0, QtCore.Qt.AlignRight) self.headLayoutR.setContentsMargins(0, 0, 0, 0) self.headLayoutM = QtWidgets.QHBoxLayout(self.headWidget) self.headLayoutM.addLayout(self.headLayoutL) self.headLayoutM.addLayout(self.headLayoutR) self.headLayoutM.setContentsMargins(0, 0, 0, 0) ############################################# # SELECTION AREA ################################# self.pluginField = StringField(self) self.pluginField.setFont(Font('Roboto', 12)) self.pluginField.setFixedWidth(400) self.pluginField.setReadOnly(True) self.btnBrowse = QtWidgets.QPushButton(self) self.btnBrowse.setFont(Font('Roboto', 12)) self.btnBrowse.setFixedWidth(30) self.btnBrowse.setText('...') self.editLayout = QtWidgets.QHBoxLayout() self.editLayout.setContentsMargins(10, 10, 10, 10) self.editLayout.addWidget(self.pluginField) self.editLayout.addWidget(self.btnBrowse) ############################################# # CONFIRMATION AREA ################################# self.confirmationBox = QtWidgets.QDialogButtonBox( QtWidgets.QDialogButtonBox.Ok, self) self.confirmationBox.setContentsMargins(10, 0, 10, 10) self.confirmationBox.setEnabled(False) self.confirmationBox.setFont(Font('Roboto', 12)) ############################################# # SETUP DIALOG LAYOUT ################################# self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addWidget(self.headWidget) self.mainLayout.addLayout(self.editLayout) self.mainLayout.addWidget(self.confirmationBox, 0, QtCore.Qt.AlignRight) self.setFixedSize(self.sizeHint()) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle('Install a plugin') connect(self.btnBrowse.clicked, self.selectPlugin) connect(self.confirmationBox.accepted, self.accept)
def __init__(self, node, session): """ Initialize the form dialog. :type node: IndividualNode :type session: Session """ super().__init__(session) self.node = node ############################################# # FORM AREA ################################# self.datatypeLabel = QtWidgets.QLabel(self) self.datatypeLabel.setText('Datatype') self.datatypeField = ComboBox(self) self.datatypeField.setFixedWidth(300) for datatype in sorted(Datatype.forProfile( self.project.profile.type()), key=attrgetter('value')): self.datatypeField.addItem(datatype.value, datatype) self.valueLabel = QtWidgets.QLabel(self) self.valueLabel.setText('Value') self.valueField = StringField(self) self.valueField.setFixedWidth(300) if node.identity() is Identity.Value: self.valueField.setValue(node.value) datatype = node.datatype for i in range(self.datatypeField.count()): if self.datatypeField.itemData(i) is datatype: self.datatypeField.setCurrentIndex(i) break else: self.valueField.setValue('') self.datatypeField.setCurrentIndex(0) self.formWidget = QtWidgets.QWidget(self) self.formLayout = QtWidgets.QFormLayout(self.formWidget) self.formLayout.addRow(self.datatypeLabel, self.datatypeField) self.formLayout.addRow(self.valueLabel, self.valueField) ############################################# # CONFIRMATION AREA ################################# self.confirmationBox = QtWidgets.QDialogButtonBox( QtCore.Qt.Horizontal, self) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Ok) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Cancel) self.confirmationBox.setContentsMargins(10, 0, 10, 10) ############################################# # SETUP DIALOG LAYOUT ################################# self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addWidget(self.formWidget) self.mainLayout.addWidget(self.confirmationBox, 0, QtCore.Qt.AlignRight) self.setFixedSize(self.sizeHint()) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle('Compose value') connect(self.confirmationBox.accepted, self.accept) connect(self.confirmationBox.rejected, self.reject)
def __init__(self, node, session): """ Initialize the form dialog. :type node: AbstractNode :type session: Session """ super().__init__(session) self.node = node ############################################# # FORM AREA ################################# self.renameLabel = QtWidgets.QLabel(self) self.renameLabel.setText('IRI label') self.renameField = StringField(self) self.renameField.setFixedWidth(200) self.renameLabel.setWordWrap(True) match = RE_VALUE.match(self.node.text()) if match: self.renameField.setValue(self.node.text()) else: self.renameField.setValue(self.node.remaining_characters) self.old_text = self.node.text() connect(self.renameField.textChanged, self.nameChanged) self.formWidget = QtWidgets.QWidget(self) self.formLayout = QtWidgets.QFormLayout(self.formWidget) self.formLayout.addRow(self.renameLabel, self.renameField) ############################################# # CONFIRMATION AREA ################################# self.confirmationBox = QtWidgets.QDialogButtonBox( QtCore.Qt.Horizontal, self) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Ok) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Cancel) self.confirmationBox.setContentsMargins(10, 0, 10, 10) ############################################# # SETUP DIALOG LAYOUT ################################# self.caption = QtWidgets.QLabel(self) self.caption.setContentsMargins(8, 0, 8, 0) self.caption.setProperty('class', 'invalid') self.caption.setVisible(False) self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addWidget(self.formWidget) self.mainLayout.addWidget(self.caption) self.mainLayout.addWidget(self.confirmationBox, 0, QtCore.Qt.AlignRight) self.setFixedSize(self.sizeHint()) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle('Rename') connect(self.confirmationBox.accepted, self.accept) connect(self.confirmationBox.rejected, self.reject)
def __init__(self, diagram, node, session): """ Initialize the node properties dialog. :type diagram: Diagram :type node: AbstractNode :type session: Session """ super().__init__(diagram, node, session) meta = diagram.project.meta(node.type(), node.text()) self.iriLabel = QtWidgets.QLabel(self) self.iriLabel.setText('IRI') self.iriField = StringField(self) self.iriField.setFixedWidth(300) self.iriField.setValue(self.diagram.project.get_iri_of_node(node)) """ self.iriversionLabel = QtWidgets.QLabel(self) self.iriversionLabel.setText('IRI version') self.iriversionField = StringField(self) self.iriversionField.setFixedWidth(300) self.iriversionField.setValue(self.node.IRI_version(diagram.project)) """ ############################################# # LABEL TAB ################################# self.textLabel = QtWidgets.QLabel(self) self.textLabel.setText('IRI Label') self.textField = StringField(self) self.textField.setFixedWidth(300) # if node.type() in {Item.AttributeNode, Item.ConceptNode, Item.RoleNode, Item.IndividualNode}: if (('AttributeNode' in str(type(node))) or ('ConceptNode' in str(type(node))) or ('IndividualNode' in str(type(node))) or ('RoleNode' in str(type(node)))): self.textField.setValue(self.node.remaining_characters) else: self.textField.setValue(self.node.text().replace('\n', '')) # if ((node.type() is Item.IndividualNode) and (node.identity() is Identity.Value)) or \ if (('IndividualNode' in str(type(node))) and (node.identity() is Identity.Value)) or \ (('IndividualNode' not in str(type(node))) and (node.special() is not None)): self.textField.setReadOnly(True) self.iriField.setReadOnly(True) self.refactorLabel = QtWidgets.QLabel(self) self.refactorLabel.setText('Refactor') self.refactorField = CheckBox(self) self.refactorField.setChecked(False) # if node.type() in {Item.AttributeNode, Item.ConceptNode, Item.RoleNode}: if (('AttributeNode' in str(type(node))) or ('ConceptNode' in str(type(node))) or ('RoleNode' in str(type(node)))): if node.special() is not None: self.refactorField.setEnabled(False) self.FulliriLabel = QtWidgets.QLabel(self) self.FulliriLabel.setText('Full IRI') self.FulliriField = StringField(self) self.FulliriField.setFixedWidth(300) full_iri = self.project.get_full_IRI(self.iriField.value(), None, self.textField.value().strip()) self.FulliriField.setValue(full_iri) # self.FulliriField.setValue(self.iriField.value()+'#'+self.textField.value().strip()) self.FulliriField.setReadOnly(True) self.labelWidget = QtWidgets.QWidget() self.labelLayout = QtWidgets.QFormLayout(self.labelWidget) self.labelLayout.addRow(self.iriLabel, self.iriField) self.labelLayout.addRow(self.textLabel, self.textField) self.labelLayout.addRow(self.FulliriLabel, self.FulliriField) self.labelLayout.addRow(self.refactorLabel, self.refactorField) self.mainWidget.addTab(self.labelWidget, 'IRI') self.metaDataChanged_ADD_OK_var = None self.metaDataChanged_REMOVE_OK_var = None self.metaDataChanged_IGNORE_var = None
def __init__(self, diagram, node, session): """ Initialize the node properties dialog. :type diagram: Diagram :type node: AbstractNode :type session: Session """ super().__init__(session) self.diagram = diagram self.node = node ############################################# # GENERAL TAB ################################# self.idLabel = QtWidgets.QLabel(self) self.idLabel.setText('ID') self.idField = StringField(self) self.idField.setFixedWidth(300) self.idField.setFocusPolicy(QtCore.Qt.NoFocus) self.idField.setReadOnly(True) self.idField.setValue(self.node.id) self.typeLabel = QtWidgets.QLabel(self) self.typeLabel.setText('Type') self.typeField = StringField(self) self.typeField.setFocusPolicy(QtCore.Qt.NoFocus) self.typeField.setFixedWidth(300) self.typeField.setReadOnly(True) self.typeField.setValue(node.shortName.capitalize()) self.identityLabel = QtWidgets.QLabel(self) self.identityLabel.setText('Identity') self.identityField = StringField(self) self.identityField.setFocusPolicy(QtCore.Qt.NoFocus) self.identityField.setFixedWidth(300) self.identityField.setReadOnly(True) self.identityField.setValue(self.node.identityName) self.neighboursLabel = QtWidgets.QLabel(self) self.neighboursLabel.setText('Neighbours') self.neighboursField = IntegerField(self) self.neighboursField.setFocusPolicy(QtCore.Qt.NoFocus) self.neighboursField.setFixedWidth(300) self.neighboursField.setReadOnly(True) self.neighboursField.setValue(len(self.node.adjacentNodes())) self.generalWidget = QtWidgets.QWidget() self.generalLayout = QtWidgets.QFormLayout(self.generalWidget) self.generalLayout.addRow(self.idLabel, self.idField) self.generalLayout.addRow(self.typeLabel, self.typeField) self.generalLayout.addRow(self.identityLabel, self.identityField) self.generalLayout.addRow(self.neighboursLabel, self.neighboursField) ############################################# # GEOMETRY TAB ################################# nodePos = self.node.pos() sceneRect = self.diagram.sceneRect() self.xLabel = QtWidgets.QLabel(self) self.xLabel.setText('X') self.xField = SpinBox(self) self.xField.setFixedWidth(60) self.xField.setRange(sceneRect.left(), sceneRect.right()) self.xField.setValue(int(nodePos.x())) self.yLabel = QtWidgets.QLabel(self) self.yLabel.setText('Y') self.yField = SpinBox(self) self.yField.setFixedWidth(60) self.yField.setRange(sceneRect.top(), sceneRect.bottom()) self.yField.setValue(int(nodePos.y())) self.widthLabel = QtWidgets.QLabel(self) self.widthLabel.setText('Width') self.widthField = SpinBox(self) self.widthField.setFixedWidth(60) self.widthField.setRange(20, sceneRect.width()) self.widthField.setReadOnly(True) self.widthField.setValue(int(self.node.width())) self.heightLabel = QtWidgets.QLabel(self) self.heightLabel.setText('Height') self.heightField = SpinBox(self) self.heightField.setFixedWidth(60) self.heightField.setRange(20, sceneRect.height()) self.heightField.setReadOnly(True) self.heightField.setValue(int(self.node.height())) self.geometryWidget = QtWidgets.QWidget() self.geometryLayout = QtWidgets.QFormLayout(self.geometryWidget) self.geometryLayout.addRow(self.xLabel, self.xField) self.geometryLayout.addRow(self.yLabel, self.yField) self.geometryLayout.addRow(self.widthLabel, self.widthField) self.geometryLayout.addRow(self.heightLabel, self.heightField) ############################################# # CONFIRMATION BOX ################################# self.confirmationBox = QtWidgets.QDialogButtonBox( QtCore.Qt.Horizontal, self) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Ok) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Cancel) self.confirmationBox.setContentsMargins(10, 0, 10, 10) ############################################# # MAIN WIDGET ################################# self.mainWidget = QtWidgets.QTabWidget(self) self.mainWidget.addTab(self.generalWidget, 'General') self.mainWidget.addTab(self.geometryWidget, 'Geometry') self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addWidget(self.mainWidget) self.mainLayout.addWidget(self.confirmationBox, 0, QtCore.Qt.AlignRight) self.setWindowTitle('Properties: {0}'.format(self.node)) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) connect(self.confirmationBox.accepted, self.complete) connect(self.confirmationBox.rejected, self.reject)
def __init__(self, parent=None): """ Initialize the project dialog. :type parent: QWidget """ super().__init__(parent) ############################################# # FORM AREA ################################# settings = QtCore.QSettings(ORGANIZATION, APPNAME) self.workspace = expandPath( settings.value('workspace/home', WORKSPACE, str)) self.workspace = '{0}{1}'.format(rstrip(self.workspace, os.path.sep), os.path.sep) self.nameLabel = QtWidgets.QLabel(self) self.nameLabel.setFont(Font('Roboto', 12)) self.nameLabel.setText('Name') self.nameField = StringField(self) self.nameField.setFont(Font('Roboto', 12)) self.nameField.setMinimumWidth(400) self.nameField.setMaxLength(64) self.prefixLabel = QtWidgets.QLabel(self) self.prefixLabel.setFont(Font('Roboto', 12)) self.prefixLabel.setText('Prefix') self.prefixField = StringField(self) self.prefixField.setFont(Font('Roboto', 12)) self.prefixField.setMinimumWidth(400) self.iriLabel = QtWidgets.QLabel(self) self.iriLabel.setFont(Font('Roboto', 12)) self.iriLabel.setText('IRI') self.iriField = StringField(self) self.iriField.setFont(Font('Roboto', 12)) self.iriField.setMinimumWidth(400) connect(self.prefixField.textChanged, self.doAcceptForm) connect(self.iriField.textChanged, self.doAcceptForm) connect(self.nameField.textChanged, self.doAcceptForm) connect(self.nameField.textChanged, self.onNameFieldChanged) self.pathLabel = QtWidgets.QLabel(self) self.pathLabel.setFont(Font('Roboto', 12)) self.pathLabel.setText('Location') self.pathField = StringField(self) self.pathField.setFont(Font('Roboto', 12)) self.pathField.setMinimumWidth(400) self.pathField.setReadOnly(True) self.pathField.setFocusPolicy(QtCore.Qt.NoFocus) self.pathField.setValue(self.workspace) spacer = QtWidgets.QFrame() spacer.setFrameShape(QtWidgets.QFrame.HLine) spacer.setFrameShadow(QtWidgets.QFrame.Sunken) self.formWidget = QtWidgets.QWidget(self) self.formLayout = QtWidgets.QFormLayout(self.formWidget) self.formLayout.addRow(self.nameLabel, self.nameField) self.formLayout.addRow(self.prefixLabel, self.prefixField) self.formLayout.addRow(self.iriLabel, self.iriField) self.formLayout.addWidget(spacer) self.formLayout.addRow(self.pathLabel, self.pathField) ############################################# # CONFIRMATION AREA ################################# self.confirmationBox = QtWidgets.QDialogButtonBox( QtCore.Qt.Horizontal, self) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Ok) self.confirmationBox.addButton(QtWidgets.QDialogButtonBox.Cancel) self.confirmationBox.setContentsMargins(10, 0, 10, 10) self.confirmationBox.setFont(Font('Roboto', 12)) self.confirmationBox.button( QtWidgets.QDialogButtonBox.Ok).setEnabled(False) ############################################# # SETUP DIALOG LAYOUT ################################# self.caption = QtWidgets.QLabel(self) self.caption.setFont(Font('Roboto', 12)) self.caption.setContentsMargins(8, 0, 8, 0) self.caption.setProperty('class', 'invalid') self.caption.setVisible(False) self.gridLayout = QtWidgets.QVBoxLayout(self) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.addWidget(self.formWidget) self.gridLayout.addWidget(self.caption) self.gridLayout.addWidget(self.confirmationBox, 0, QtCore.Qt.AlignRight) self.setFixedSize(self.sizeHint()) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle('New project') connect(self.confirmationBox.accepted, self.accept) connect(self.confirmationBox.rejected, self.reject)
def __init__(self, session): """ Initialize the Ontology Manager dialog. :type session: Session """ super().__init__(session) settings = QtCore.QSettings() ############################################# # GENERAL TAB ################################# ## ONTOLOGY PROPERTIES GROUP iriLabel = QtWidgets.QLabel(self, objectName='ontology_iri_label') iriLabel.setText('Ontology IRI') self.addWidget(iriLabel) iriField = StringField(self, objectName='ontology_iri_field') iriField.setPlaceholderText( 'e.g. http://example.com/ontologies/myontology/') self.addWidget(iriField) versionLabel = QtWidgets.QLabel(self, objectName='ontology_version_label') versionLabel.setText('Ontology Version IRI') self.addWidget(versionLabel) versionField = StringField(self, objectName='ontology_version_field') versionField.setPlaceholderText( 'e.g. http://example.com/ontologies/myontology/1.0') self.addWidget(versionField) formlayout = QtWidgets.QFormLayout() formlayout.addRow(self.widget('ontology_iri_label'), self.widget('ontology_iri_field')) formlayout.addRow(self.widget('ontology_version_label'), self.widget('ontology_version_field')) groupbox = QtWidgets.QGroupBox('Ontology IRI', self, objectName='ontology_iri_widget') groupbox.setLayout(formlayout) self.addWidget(groupbox) ## ONTOLOGY IMPORTS GROUP table = QtWidgets.QTableWidget( 0, 2, self, objectName='ontology_imports_table_widget') table.setHorizontalHeaderLabels(['Name', 'Ontology IRI']) table.horizontalHeader().setStretchLastSection(True) table.horizontalHeader().setSectionsClickable(False) table.horizontalHeader().setMinimumSectionSize(130) table.horizontalHeader().setSectionsClickable(False) table.verticalHeader().setVisible(False) table.verticalHeader().setSectionsClickable(False) table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.addWidget(table) addBtn = QtWidgets.QPushButton( 'Add', objectName='ontology_imports_add_button') delBtn = QtWidgets.QPushButton( 'Remove', objectName='ontology_imports_delete_button') connect(addBtn.clicked, self.addOntologyImport) connect(delBtn.clicked, self.removeOntologyImport) self.addWidget(addBtn) self.addWidget(delBtn) boxlayout = QtWidgets.QHBoxLayout() boxlayout.setAlignment(QtCore.Qt.AlignCenter) boxlayout.addWidget(self.widget('ontology_imports_add_button')) boxlayout.addWidget(self.widget('ontology_imports_delete_button')) formlayout = QtWidgets.QFormLayout() formlayout.addRow(self.widget('ontology_imports_table_widget')) formlayout.addRow(boxlayout) groupbox = QtWidgets.QGroupBox('Imported Ontologies', self, objectName='ontology_imports_widget') groupbox.setLayout(formlayout) self.addWidget(groupbox) ## ONTOLOGY ANNOTATIONS GROUP table = QtWidgets.QTableWidget( 0, 3, self, objectName='ontology_annotations_table_widget') table.setHorizontalHeaderLabels(['Annotation', 'Datatype', 'Value']) table.horizontalHeader().setStretchLastSection(True) table.horizontalHeader().setSectionsClickable(False) table.horizontalHeader().setMinimumSectionSize(100) table.horizontalHeader().setSectionsClickable(False) table.verticalHeader().setVisible(False) table.verticalHeader().setSectionsClickable(False) table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.addWidget(table) addBtn = QtWidgets.QPushButton( 'Add', objectName='ontology_annotations_add_button') delBtn = QtWidgets.QPushButton( 'Remove', objectName='ontology_annotations_delete_button') connect(addBtn.clicked, self.addOntologyAnnotation) connect(delBtn.clicked, self.removeOntologyAnnotation) self.addWidget(addBtn) self.addWidget(delBtn) boxlayout = QtWidgets.QHBoxLayout() boxlayout.setAlignment(QtCore.Qt.AlignCenter) boxlayout.addWidget(self.widget('ontology_annotations_add_button')) boxlayout.addWidget(self.widget('ontology_annotations_delete_button')) formlayout = QtWidgets.QFormLayout() formlayout.addRow(self.widget('ontology_annotations_table_widget')) formlayout.addRow(boxlayout) groupbox = QtWidgets.QGroupBox( 'Ontology Annotations', self, objectName='ontology_annotations_widget') groupbox.setLayout(formlayout) self.addWidget(groupbox) ## GENERAL TAB LAYOUT CONFIGURATION layout = QtWidgets.QVBoxLayout() layout.setAlignment(QtCore.Qt.AlignTop) layout.addWidget(self.widget('ontology_iri_widget'), 0, QtCore.Qt.AlignTop) layout.addWidget(self.widget('ontology_imports_widget'), 0, QtCore.Qt.AlignTop) layout.addWidget(self.widget('ontology_annotations_widget'), 0, QtCore.Qt.AlignTop) widget = QtWidgets.QWidget() widget.setLayout(layout) widget.setObjectName('general_widget') self.addWidget(widget) ############################################# # PREFIXES TAB ################################# ## PREFIXES GROUP table = QtWidgets.QTableWidget(1, 2, self, objectName='prefixes_table_widget') table.horizontalHeader().setStretchLastSection(True) table.horizontalHeader().setSectionsClickable(False) table.horizontalHeader().setMinimumSectionSize(100) table.horizontalHeader().setSectionsClickable(False) table.verticalHeader().setVisible(False) table.verticalHeader().setSectionsClickable(False) table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.addWidget(table) addBtn = QtWidgets.QPushButton('Add', objectName='prefixes_add_button') delBtn = QtWidgets.QPushButton('Remove', objectName='prefixes_delete_button') connect(addBtn.clicked, self.addPrefix) connect(delBtn.clicked, self.removePrefix) self.addWidget(addBtn) self.addWidget(delBtn) boxlayout = QtWidgets.QHBoxLayout() boxlayout.setAlignment(QtCore.Qt.AlignCenter) boxlayout.addWidget(self.widget('prefixes_add_button')) boxlayout.addWidget(self.widget('prefixes_delete_button')) formlayout = QtWidgets.QFormLayout() formlayout.addRow(self.widget('prefixes_table_widget')) formlayout.addRow(boxlayout) groupbox = QtWidgets.QGroupBox('Ontology Prefixes', self, objectName='prefixes_group_widget') groupbox.setLayout(formlayout) self.addWidget(groupbox) ## PREFIXES TAB LAYOUT CONFIGURATION layout = QtWidgets.QVBoxLayout() layout.setAlignment(QtCore.Qt.AlignTop) layout.addWidget(self.widget('prefixes_group_widget'), 0, QtCore.Qt.AlignTop) widget = QtWidgets.QWidget() widget.setLayout(layout) widget.setObjectName('prefixes_widget') self.addWidget(widget) ############################################# # ANNOTATIONS TAB ################################# ## ANNOTATIONS GROUP table = QtWidgets.QTableWidget( 0, 2, self, objectName='annotation_properties_table_widget') table.setHorizontalHeaderLabels(['IRI', 'Comment']) table.horizontalHeader().setStretchLastSection(True) table.horizontalHeader().setSectionsClickable(False) table.horizontalHeader().setMinimumSectionSize(100) table.horizontalHeader().setSectionsClickable(False) table.verticalHeader().setVisible(False) table.verticalHeader().setSectionsClickable(False) table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.addWidget(table) addBtn = QtWidgets.QPushButton( 'Add', objectName='annotation_properties_add_button') delBtn = QtWidgets.QPushButton( 'Remove', objectName='annotation_properties_delete_button') connect(addBtn.clicked, self.addAnnotationProperty) connect(delBtn.clicked, self.removeAnnotationProperty) self.addWidget(addBtn) self.addWidget(delBtn) boxlayout = QtWidgets.QHBoxLayout() boxlayout.setAlignment(QtCore.Qt.AlignCenter) boxlayout.addWidget(self.widget('annotation_properties_add_button')) boxlayout.addWidget(self.widget('annotation_properties_delete_button')) formlayout = QtWidgets.QFormLayout() formlayout.addRow(self.widget('annotation_properties_table_widget')) formlayout.addRow(boxlayout) groupbox = QtWidgets.QGroupBox( 'Annotation Properties', self, objectName='annotation_properties_widget') groupbox.setLayout(formlayout) self.addWidget(groupbox) ## ANNOTATIONS TAB LAYOUT CONFIGURATION layout = QtWidgets.QVBoxLayout() layout.setAlignment(QtCore.Qt.AlignTop) layout.addWidget(self.widget('annotation_properties_widget'), 0, QtCore.Qt.AlignTop) widget = QtWidgets.QWidget() widget.setLayout(layout) widget.setObjectName('annotations_widget') self.addWidget(widget) ############################################# # CONFIRMATION BOX ################################# confirmation = QtWidgets.QDialogButtonBox( QtCore.Qt.Horizontal, self, objectName='confirmation_widget') confirmation.addButton(QtWidgets.QDialogButtonBox.Save) confirmation.addButton(QtWidgets.QDialogButtonBox.Cancel) confirmation.setContentsMargins(10, 0, 10, 10) self.addWidget(confirmation) ############################################# # MAIN WIDGET ################################# widget = QtWidgets.QTabWidget(self, objectName='main_widget') widget.addTab(self.widget('general_widget'), 'General') widget.addTab(self.widget('prefixes_widget'), 'Prefixes') widget.addTab(self.widget('annotations_widget'), 'Annotations') self.addWidget(widget) layout = QtWidgets.QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.widget('main_widget')) layout.addWidget(self.widget('confirmation_widget'), 0, QtCore.Qt.AlignRight) self.setLayout(layout) self.setMinimumSize(800, 520) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle('Ontology Manager') self.redraw() connect(confirmation.accepted, self.accept) connect(confirmation.rejected, self.reject)
def __init__(self, plugin): """ Initialize the info box. :type plugin: Info """ super().__init__(plugin.session) self.plugin = plugin self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setAlignment(QtCore.Qt.AlignTop) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(0) ############# self.tableheader_prefixes = Header('Prefix', self) self.tableheader_iri = Header(' IRI ', self) self.tableheader_nodes = Header('Nodes ', self) """ self.horizontalbox = QtWidgets.QHBoxLayout(self) #to be added to main layout self.horizontalbox.setAlignment(QtCore.Qt.AlignTop) self.horizontalbox.setContentsMargins(0, 0, 0, 0) self.horizontalbox.setSpacing(0) self.horizontalbox.addWidget(self.tableheader_iri) self.horizontalbox.addWidget(self.tableheader_prefixes) self.horizontalbox.addWidget(self.tableheader_nodes) """ ############# self.entry_status = QtWidgets.QStatusBar() """ self.slider = QtWidgets.QSlider() self.slider.setCursor(QtGui.QCursor()) self.slider.setEnabled(True) self.slider.setRange(1,100) self.slider.setValue(12) self.slider.setTickPosition(QtWidgets.QSlider.TicksBothSides) self.slider.setTracking(True) self.slider.setTickInterval(1) self.slider.setMouseTracking(True) self.slider.setTracking(True) """ """ self.entry_button = QtWidgets.QPushButton() self.entry_button.setText('+++') self.remove_entry_button = QtWidgets.QPushButton() self.remove_entry_button.setText('---') self.modify_entry_button = QtWidgets.QPushButton() self.modify_entry_button.setText('M') """ self.test_IRI_button = QtWidgets.QPushButton() self.test_IRI_button.setText('T') self.dictionary_display_button = QtWidgets.QPushButton() self.dictionary_display_button.setText('D') self.hide_or_show_nodes_button = QtWidgets.QPushButton() self.hide_or_show_nodes_button.setText('*') self.buttons_layout = QtWidgets.QHBoxLayout(self) self.buttons_layout.setAlignment(QtCore.Qt.AlignTop) self.buttons_layout.setContentsMargins(0, 0, 0, 0) self.buttons_layout.setSpacing(0) #self.buttons_layout.addWidget(self.entry_button) #self.buttons_layout.addWidget(self.remove_entry_button) #self.buttons_layout.addWidget(self.modify_entry_button) #self.buttons_layout.addWidget(self.test_IRI_button) self.buttons_layout.addWidget(self.dictionary_display_button) self.buttons_layout.addWidget(self.hide_or_show_nodes_button) #connect(self.entry_button.pressed, self.button_add) #connect(self.remove_entry_button.pressed, self.button_remove) connect(self.dictionary_display_button.pressed, self.display_IRIPrefixesNodesDict) connect(self.hide_or_show_nodes_button.pressed, self.hide_or_show_nodes) connect(self.test_IRI_button.pressed, self.test_IRI) #connect(self.modify_entry_button.pressed, self.process_entry_from_textboxes_for_button_modify) #connect(self.slider.sliderMoved, self.slider_moved) self.prefix_input_box = StringField(self) self.prefix_input_box.setPlaceholderText('Enter Prefix') self.prefix_input_box.setAcceptDrops(False) self.prefix_input_box.setClearButtonEnabled(True) self.prefix_input_box.setFixedHeight(30) self.iri_input_box = StringField(self) self.iri_input_box.setPlaceholderText('Enter IRI') self.iri_input_box.setAcceptDrops(False) self.iri_input_box.setClearButtonEnabled(True) self.iri_input_box.setFixedHeight(30) self.verticalbox = QtWidgets.QVBoxLayout( self) # to be added to main layout self.verticalbox.setAlignment(QtCore.Qt.AlignTop) self.verticalbox.setContentsMargins(0, 0, 0, 0) self.verticalbox.setSpacing(0) #self.verticalbox.addWidget(self.iri_input_box) #self.verticalbox.addWidget(self.prefix_input_box) self.verticalbox.addLayout(self.buttons_layout) #self.verticalbox.addWidget(self.entry_button) #self.verticalbox.addWidget(self.remove_entry_button) #self.verticalbox.addWidget(self.dictionary_display_button) #self.verticalbox.addWidget(self.slider) self.verticalbox.addWidget(self.entry_status) ############# self.table = QtWidgets.QTableWidget(self) self.table.setContentsMargins(0, 0, 0, 0) self.table.horizontalHeader().setVisible(False) self.table.verticalHeader().setVisible(False) self.table.setMinimumWidth(self.width()) self.table.setMinimumHeight(self.height() - self.dictionary_display_button.height()) connect(self.table.cellPressed, self.try_to_edit_cell) self.horizontalbox_3 = QtWidgets.QHBoxLayout( self) #to be added to main layout self.horizontalbox_3.setAlignment(QtCore.Qt.AlignTop) self.horizontalbox_3.setContentsMargins(0, 0, 0, 0) self.horizontalbox_3.setSpacing(0) self.horizontalbox_3.addWidget(self.table) ############# self.mainLayout.addLayout(self.verticalbox) #self.mainLayout.addLayout(self.horizontalbox) self.mainLayout.addLayout(self.horizontalbox_3) ############# self.setContentsMargins(0, 0, 0, 0) self.setMinimumSize(QtCore.QSize(216, 120)) self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) self.setWidgetResizable(True) self.setStyleSheet(""" IriWidget { background: #FFFFFF; } IriWidget Header { background: #5A5050; padding-left: 4px; color: #FFFFFF; } """) scrollbar = self.verticalScrollBar() scrollbar.installEventFilter(self) self.ENTRY_MODIFY_OK_var = set() self.ENTRY_REMOVE_OK_var = set() self.ENTRY_ADD_OK_var = set() self.ENTRY_IGNORE_var = set() self.ADD_OR_REMOVE = None self.SHOW_NODES = True self.ITEM_ACTIVATED = None
def __init__(self, parent=None): """ Initialize the workspace dialog. :type parent: QtWidgets.QWidget """ super().__init__(parent) ############################################# # HEAD AREA ################################# self.headTitle = QtWidgets.QLabel('Select a workspace', self) self.headTitle.setFont(Font('Roboto', 12, bold=True)) self.headDescription = QtWidgets.QLabel(dedent(""" {0} stores your projects in a directory called workspace.<br/> Please choose a workspace directory to use.""".format(APPNAME)), self) self.headDescription.setFont(Font('Roboto', 12)) self.headPix = QtWidgets.QLabel(self) self.headPix.setPixmap(QtGui.QIcon(':/icons/128/ic_eddy').pixmap(48)) self.headPix.setContentsMargins(0, 0, 0, 0) self.headWidget = QtWidgets.QWidget(self) self.headWidget.setProperty('class', 'head') self.headWidget.setContentsMargins(10, 10, 10, 10) self.headLayoutL = QtWidgets.QVBoxLayout() self.headLayoutL.addWidget(self.headTitle) self.headLayoutL.addWidget(self.headDescription) self.headLayoutL.setContentsMargins(0, 0, 0, 0) self.headLayoutR = QtWidgets.QVBoxLayout() self.headLayoutR.addWidget(self.headPix, 0, QtCore.Qt.AlignRight) self.headLayoutR.setContentsMargins(0, 0, 0, 0) self.headLayoutM = QtWidgets.QHBoxLayout(self.headWidget) self.headLayoutM.addLayout(self.headLayoutL) self.headLayoutM.addLayout(self.headLayoutR) self.headLayoutM.setContentsMargins(0, 0, 0, 0) ############################################# # EDIT AREA ################################# self.workspaceField = StringField(self) self.workspaceField.setFont(Font('Roboto', 12)) self.workspaceField.setFixedWidth(400) self.workspaceField.setReadOnly(True) self.workspaceField.setText(expandPath(WORKSPACE)) self.btnBrowse = QtWidgets.QPushButton(self) self.btnBrowse.setFont(Font('Roboto', 12)) self.btnBrowse.setFixedWidth(30) self.btnBrowse.setText('...') self.editLayout = QtWidgets.QHBoxLayout() self.editLayout.setContentsMargins(10, 10, 10, 10) self.editLayout.addWidget(self.workspaceField) self.editLayout.addWidget(self.btnBrowse) ############################################# # CONFIRMATION AREA ################################# self.confirmationBox = QtWidgets.QDialogButtonBox(QtWidgets.QDialogButtonBox.Ok, self) self.confirmationBox.setContentsMargins(10, 0, 10, 10) self.confirmationBox.setFont(Font('Roboto', 12)) ############################################# # SETUP DIALOG LAYOUT ################################# self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addWidget(self.headWidget) self.mainLayout.addLayout(self.editLayout) self.mainLayout.addWidget(self.confirmationBox, 0, QtCore.Qt.AlignRight) self.setFixedSize(self.sizeHint()) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle('Configure workspace') connect(self.btnBrowse.clicked, self.choosePath) connect(self.confirmationBox.accepted, self.accept)
def __init__(self, plugin): super().__init__(plugin.session) self.plugin = plugin self.items = [ EntityType.Class, EntityType.ObjectProperty, EntityType.DataProperty ] self.classIcon = QtGui.QIcon(':/icons/18/ic_treeview_concept') self.objPropIcon = QtGui.QIcon(':/icons/18/ic_treeview_role') self.dataPropIcon = QtGui.QIcon(':/icons/18/ic_treeview_attribute') self.searchShortcut = QtWidgets.QShortcut( QtGui.QKeySequence('Ctrl+f+t'), plugin.session) self.search = StringField(self) self.search.setAcceptDrops(False) self.search.setClearButtonEnabled(True) self.search.setPlaceholderText('Search...') self.search.setToolTip('Search ({})'.format( self.searchShortcut.key().toString(QtGui.QKeySequence.NativeText))) self.search.setFixedHeight(30) self.model = QtGui.QStandardItemModel(self) self.proxy = TableExplorerFilterProxyModel(self) self.proxy.setDynamicSortFilter(False) self.proxy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxy.setSortCaseSensitivity(QtCore.Qt.CaseSensitive) self.proxy.setSourceModel(self.model) self.tableview = TableExplorerView(self) self.tableview.setModel(self.proxy) self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addWidget(self.search) self.mainLayout.addWidget(self.tableview) self.setTabOrder(self.search, self.tableview) self.setContentsMargins(0, 0, 0, 0) self.setMinimumWidth(216) self.setStyleSheet(""" QLineEdit, QLineEdit:editable, QLineEdit:hover, QLineEdit:pressed, QLineEdit:focus { border: none; border-radius: 0; background: #FFFFFF; color: #000000; padding: 4px 4px 4px 4px; } """) header = self.tableview.header() header.setStretchLastSection(False) header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents) connect(plugin.sgnSchemaChanged, self.onSchemaChanged) connect(plugin.sgnNodeAdded, self.doAddNode) connect(self.tableview.pressed, self.onItemPressed) connect(self.tableview.doubleClicked, self.onItemDoubleClicked) connect(self.search.textChanged, self.doFilterItem) connect(self.search.returnPressed, self.onReturnPressed) connect(self.searchShortcut.activated, self.doFocusSearch) connect(self.sgnGraphicalNodeItemActivated, self.plugin.doFocusItem) connect(self.sgnGraphicalNodeItemClicked, self.plugin.doFocusItem) connect(self.sgnGraphicalNodeItemDoubleClicked, self.plugin.doFocusItem) connect(self.sgnGraphicalNodeItemRightClicked, self.plugin.doFocusItem) connect(self.sgnRelationalTableItemActivated, self.plugin.doFocusTable) connect(self.sgnRelationalTableItemClicked, self.plugin.doFocusTable) connect(self.sgnRelationalTableItemDoubleClicked, self.plugin.doFocusTable) connect(self.sgnRelationalTableItemRightClicked, self.plugin.doFocusTable)
def __init__(self, plugin): """ Initialize the ontology explorer widget. :type plugin: Session """ super().__init__(plugin.session) self.plugin = plugin self.items = [ Item.ConceptIRINode, Item.RoleIRINode, Item.AttributeIRINode, Item.IndividualIRINode, Item.ValueDomainIRINode ] self.unsatisfiableItems = list() self.unsatisfiableClasses = list() self.unsatisfiableObjProps = list() self.unsatisfiableDataProps = list() self.iconAttribute = QtGui.QIcon(':/icons/18/ic_treeview_attribute') self.iconConcept = QtGui.QIcon(':/icons/18/ic_treeview_concept') self.iconInstance = QtGui.QIcon(':/icons/18/ic_treeview_instance') self.iconRole = QtGui.QIcon(':/icons/18/ic_treeview_role') self.iconValue = QtGui.QIcon(':/icons/18/ic_treeview_value') self.searchShortcut = QtWidgets.QShortcut(QtGui.QKeySequence('Ctrl+f'), self.session) self.search = StringField(self) self.search.setAcceptDrops(False) self.search.setClearButtonEnabled(True) self.search.setPlaceholderText('Search...') self.search.setToolTip('Search ({})'.format( self.searchShortcut.key().toString(QtGui.QKeySequence.NativeText))) self.search.setFixedHeight(30) self.model = QtGui.QStandardItemModel(self) self.proxy = OntologyExplorerFilterProxyModel(self) self.proxy.setDynamicSortFilter(False) self.proxy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxy.setSortCaseSensitivity(QtCore.Qt.CaseSensitive) self.proxy.setSourceModel(self.model) self.ontoview = OntologyExplorerView(self) self.ontoview.setModel(self.proxy) self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.addWidget(self.search) self.mainLayout.addWidget(self.ontoview) self.setTabOrder(self.search, self.ontoview) self.setContentsMargins(0, 0, 0, 0) self.setMinimumWidth(216) self.setStyleSheet(""" QLineEdit, QLineEdit:editable, QLineEdit:hover, QLineEdit:pressed, QLineEdit:focus { border: none; border-radius: 0; background: #FFFFFF; color: #000000; padding: 4px 4px 4px 4px; } """) header = self.ontoview.header() header.setStretchLastSection(False) header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents) connect(self.ontoview.activated, self.onItemActivated) connect(self.ontoview.doubleClicked, self.onItemDoubleClicked) connect(self.ontoview.pressed, self.onItemPressed) connect(self.search.textChanged, self.doFilterItem) connect(self.search.returnPressed, self.onReturnPressed) connect(self.searchShortcut.activated, self.doFocusSearch) connect(self.sgnItemActivated, self.session.doFocusItem) connect(self.sgnItemDoubleClicked, self.session.doFocusItem) connect(self.sgnItemRightClicked, self.session.doFocusItem) connect(self.session.sgnPrefixAdded, self.onPrefixAdded) connect(self.session.sgnPrefixRemoved, self.onPrefixRemoved) connect(self.session.sgnPrefixModified, self.onPrefixModified) connect(self.session.sgnRenderingModified, self.onRenderingModified) connect(self.session.sgnIRIRemovedFromAllDiagrams, self.onIRIRemovedFromAllDiagrams) connect(self.session.sgnSingleNodeSwitchIRI, self.onSingleNodeIRISwitched)