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, mainwindow, parent=None): """ Initialize the Attribute node information box. """ super().__init__(mainwindow, parent) self.functKey = Key('Funct.', self) functParent = Parent(self) self.functBox = CheckBox(functParent) self.functBox.setCheckable(True) self.functBox.setProperty('attribute', 'functional') connect(self.functBox.clicked, self.flagChanged) self.predPropLayout.addRow(self.functKey, functParent)
def __init__(self, mainwindow, parent=None): """ Initialize the inclusion edge information box. :type mainwindow: MainWindow :type parent: QWidget """ super().__init__(mainwindow, parent) self.completeKey = Key('Complete', self) parent = Parent(self) self.completeBox = CheckBox(parent) self.completeBox.setCheckable(True) connect(self.completeBox.clicked, self.mainwindow.toggleEdgeComplete) self.generalLayout.addRow(self.completeKey, parent)
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, collection, parent=None): """ Initialize the project dialog. :type collection: T <= list | tuple :type parent: QWidget """ super().__init__(parent) self.collection = sorted(collection, key=itemgetter(K_ITEM, K_NAME)) ############################################# # CHECKBOX WIDGETS ################################# self.marks = {K_CURRENT: {}, K_IMPORTING: {}, K_FINAL: {}} for e in self.collection: ## CREATE CURRENT CHECKBOX mark = CheckBox(self) mark.setEnabled(False) mark.setChecked(e[K_CURRENT]) if e[K_ITEM] not in self.marks[K_CURRENT]: self.marks[K_CURRENT][e[K_ITEM]] = {} if e[K_NAME] not in self.marks[K_CURRENT][e[K_ITEM]]: self.marks[K_CURRENT][e[K_ITEM]][e[K_NAME]] = {} self.marks[K_CURRENT][e[K_ITEM]][e[K_NAME]][e[K_PROPERTY]] = mark ## CREATE IMPORTING CHECKBOX mark = CheckBox(self) mark.setEnabled(False) mark.setChecked(e[K_IMPORTING]) if e[K_ITEM] not in self.marks[K_IMPORTING]: self.marks[K_IMPORTING][e[K_ITEM]] = {} if e[K_NAME] not in self.marks[K_IMPORTING][e[K_ITEM]]: self.marks[K_IMPORTING][e[K_ITEM]][e[K_NAME]] = {} self.marks[K_IMPORTING][e[K_ITEM]][e[K_NAME]][e[K_PROPERTY]] = mark ## CREATE FINAL CHECKBOX mark = CheckBox(self) mark.setEnabled(True) mark.setTristate(True) mark.setCheckState(QtCore.Qt.PartiallyChecked) connect(mark.stateChanged, self.onMarkStateChanged) if e[K_ITEM] not in self.marks[K_FINAL]: self.marks[K_FINAL][e[K_ITEM]] = {} if e[K_NAME] not in self.marks[K_FINAL][e[K_ITEM]]: self.marks[K_FINAL][e[K_ITEM]][e[K_NAME]] = {} self.marks[K_FINAL][e[K_ITEM]][e[K_NAME]][e[K_PROPERTY]] = mark ############################################# # BUTTONS & PLACEHOLDERS ################################# # widget = QtWidgets.QLabel(self) # widget.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) # widget.setFont(Font('Roboto', 14, bold=True, capitalization=Font.AllUppercase)) # widget.setObjectName('title_type') # widget.setText('Type') # self.addWidget(widget) # widget = QtWidgets.QLabel(self) # widget.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) # widget.setFont(Font('Roboto', 14, bold=True, capitalization=Font.AllUppercase)) # widget.setObjectName('title_name') # widget.setText('Name') # self.addWidget(widget) # widget = QtWidgets.QLabel(self) # widget.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) # widget.setFont(Font('Roboto', 14, bold=True, capitalization=Font.AllUppercase)) # widget.setObjectName('title_property') # widget.setText('Property') # self.addWidget(widget) widget = QtWidgets.QLabel(self) widget.setAlignment(QtCore.Qt.AlignCenter) widget.setFont(Font('Roboto', 14, bold=True, capitalization=Font.AllUppercase)) widget.setObjectName('title_current') widget.setText('Current') self.addWidget(widget) widget = QtWidgets.QLabel(self) widget.setAlignment(QtCore.Qt.AlignCenter) widget.setFont(Font('Roboto', 14, bold=True, capitalization=Font.AllUppercase)) widget.setObjectName('title_final') widget.setText('Final') self.addWidget(widget) widget = QtWidgets.QLabel(self) widget.setAlignment(QtCore.Qt.AlignCenter) widget.setFont(Font('Roboto', 14, bold=True, capitalization=Font.AllUppercase)) widget.setObjectName('title_importing') widget.setText('Importing') self.addWidget(widget) # widget = QtWidgets.QLabel(self) # widget.setFixedSize(QtCore.QSize(24, 24)) # widget.setPixmap(QtGui.QIcon(':/icons/24/ic_compare_arrows_black').pixmap(24)) # widget.setObjectName('compare_arrows_current_icon') # self.addWidget(widget) # widget = QtWidgets.QLabel(self) # widget.setFixedSize(QtCore.QSize(24, 24)) # widget.setPixmap(QtGui.QIcon(':/icons/24/ic_compare_arrows_black').pixmap(24)) # widget.setObjectName('compare_arrows_importing_icon') # self.addWidget(widget) widget = PHCQPushButton(self) widget.setAutoDefault(False) widget.setDefault(False) widget.setProperty('class', 'flat blue') widget.setFixedWidth(32) widget.setIcon(QtGui.QIcon(':/icons/24/ic_keyboard_arrow_right_black')) widget.setIconSize(QtCore.QSize(24, 24)) widget.setObjectName('pick_current_button') widget.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding) connect(widget.clicked, self.doPickBooleanSet) self.addWidget(widget) widget = PHCQPushButton(self) widget.setAutoDefault(False) widget.setDefault(False) widget.setProperty('class', 'flat blue') widget.setFixedWidth(32) widget.setIcon(QtGui.QIcon(':/icons/24/ic_keyboard_arrow_left_black')) widget.setIconSize(QtCore.QSize(24, 24)) widget.setObjectName('pick_importing_button') widget.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding) connect(widget.clicked, self.doPickBooleanSet) self.addWidget(widget) ############################################# # CONFIRMATION AREA ################################# widget = QtWidgets.QDialogButtonBox(QtCore.Qt.Horizontal, self) widget.addButton(QtWidgets.QDialogButtonBox.Ok) widget.addButton(QtWidgets.QDialogButtonBox.Abort) widget.setContentsMargins(0, 4, 0, 0) widget.setFont(Font('Roboto', 12)) widget.setObjectName('confirmation_box') widget.button(QtWidgets.QDialogButtonBox.Ok).setEnabled(False) connect(widget.accepted, self.accept) connect(widget.rejected, self.reject) self.addWidget(widget) ############################################# # SETUP DIALOG LAYOUT ################################# gridWidget = QtWidgets.QWidget(self) gridLayout = QtWidgets.QGridLayout(gridWidget) gridLayout.setContentsMargins(0, 0, 0, 0) #gridLayout.addWidget(self.widget('title_type'), 0, 0) #gridLayout.addWidget(self.widget('title_name'), 0, 1) #gridLayout.addWidget(self.widget('title_property'), 0, 2) gridLayout.addWidget(self.widget('title_current'), 0, 3) gridLayout.addWidget(self.widget('title_final'), 0, 5) gridLayout.addWidget(self.widget('title_importing'), 0, 7) #gridLayout.addWidget(self.widget('compare_arrows_current_icon'), 0, 4, QtCore.Qt.AlignCenter) #gridLayout.addWidget(self.widget('compare_arrows_importing_icon'), 0, 6, QtCore.Qt.AlignCenter) for row, e in enumerate(self.collection, start=1): w_type = QtWidgets.QLabel(self) w_type.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) w_type.setFont(Font('Roboto', 12)) w_type.setText(e[K_ITEM].shortName.title()) w_name = QtWidgets.QLabel(self) w_name.setContentsMargins(40, 0, 40, 0) w_name.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) w_name.setFont(Font('Roboto', 12, italic=True)) w_name.setText(e[K_NAME]) w_prop = QtWidgets.QLabel(self) w_prop.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) w_prop.setFont(Font('Roboto', 14, bold=True, capitalization=Font.SmallCaps)) w_prop.setText(RE_CAMEL_SPACE.sub('\g<1> \g<2>', e[K_PROPERTY]).lower()) gridLayout.addWidget(w_type, row, 0) gridLayout.addWidget(w_name, row, 1) gridLayout.addWidget(w_prop, row, 2) gridLayout.addWidget(self.marks[K_CURRENT][e[K_ITEM]][e[K_NAME]][e[K_PROPERTY]], row, 3, QtCore.Qt.AlignCenter) gridLayout.addWidget(self.marks[K_FINAL][e[K_ITEM]][e[K_NAME]][e[K_PROPERTY]], row, 5, QtCore.Qt.AlignCenter) gridLayout.addWidget(self.marks[K_IMPORTING][e[K_ITEM]][e[K_NAME]][e[K_PROPERTY]], row, 7, QtCore.Qt.AlignCenter) gridLayout.addWidget(self.widget('pick_current_button'), 1, 4, len(self.collection), 1) gridLayout.addWidget(self.widget('pick_importing_button'), 1, 6, len(self.collection), 1) mainLayout = QtWidgets.QVBoxLayout() mainLayout.addWidget(gridWidget) mainLayout.addWidget(self.widget('confirmation_box')) mainLayout.setContentsMargins(10, 10, 10, 10) self.setLayout(mainLayout) self.setFixedSize(self.sizeHint()) self.setFont(Font('Roboto', 12)) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle("Resolve conflicts...")
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, session, project=None, **kwargs): """ Initialize the form dialog. :type session: Session :type project: Project """ super().__init__(parent=session, **kwargs) self._project = project diagrams = natsorted(self.project.diagrams(), key=lambda diagram: diagram.name) for diagram in diagrams: self.addWidget( CheckBox(diagram.name, self, objectName=diagram.name, checked=True, clicked=self.onDiagramChecked)) diagramLayout = QtWidgets.QGridLayout(self) diagramLayout.setContentsMargins(8, 8, 8, 8) nrows = math.floor(math.sqrt(max(len(diagrams), 1))) for i, d in enumerate(diagrams): col = i % nrows row = math.floor(i / nrows) diagramLayout.addWidget(self.widget(d.name), row, col) diagramGroup = QtWidgets.QGroupBox('Diagrams', self) diagramGroup.setLayout(diagramLayout) diagramGroupLayout = QtWidgets.QHBoxLayout(self) diagramGroupLayout.addWidget(diagramGroup) diagramWidget = QtWidgets.QWidget(self) diagramWidget.setLayout(diagramGroupLayout) confirmation = QtWidgets.QDialogButtonBox(QtCore.Qt.Horizontal, self) confirmation.addButton(QtWidgets.QDialogButtonBox.Ok) confirmation.addButton(QtWidgets.QDialogButtonBox.Cancel) confirmation.setObjectName('confirmation') self.addWidget(confirmation) # noinspection PyArgumentList self.addWidget( QtWidgets.QPushButton('All', self, objectName='btn_check_all', clicked=self.doCheckDiagram)) # noinspection PyArgumentList self.addWidget( QtWidgets.QPushButton('Clear', self, objectName='btn_clear_all', clicked=self.doCheckDiagram)) buttonLayout = QtWidgets.QHBoxLayout(self) buttonLayout.setAlignment(QtCore.Qt.AlignRight) buttonLayout.addWidget(self.widget('btn_clear_all'), 0, QtCore.Qt.AlignRight) buttonLayout.addWidget(self.widget('btn_check_all'), 0, QtCore.Qt.AlignRight) buttonLayout.addWidget(self.widget('confirmation'), 0, QtCore.Qt.AlignRight) buttonWidget = QtWidgets.QWidget(self) buttonWidget.setLayout(buttonLayout) mainLayout = QtWidgets.QVBoxLayout() mainLayout.setContentsMargins(10, 10, 10, 10) mainLayout.addWidget(diagramWidget) mainLayout.addWidget(buttonWidget) self.setLayout(mainLayout) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle('Diagram Selection') connect(confirmation.accepted, self.accept) connect(confirmation.rejected, self.reject)
def __init__(self, mainwindow, parent=None): """ Initialize the Role node information box. """ super().__init__(mainwindow, parent) self.functKey = Key('Funct.', self) functParent = Parent(self) self.functBox = CheckBox(functParent) self.functBox.setCheckable(True) self.functBox.setProperty('attribute', 'functional') connect(self.functBox.clicked, self.flagChanged) self.invFunctKey = Key('Inv. Funct.', self) invFunctParent = Parent(self) self.invFunctBox = CheckBox(invFunctParent) self.invFunctBox.setCheckable(True) self.invFunctBox.setProperty('attribute', 'inverseFunctional') connect(self.invFunctBox.clicked, self.flagChanged) self.asymmetricKey = Key('Asymmetric', self) asymmetricParent = Parent(self) self.asymmetricBox = CheckBox(asymmetricParent) self.asymmetricBox.setCheckable(True) self.asymmetricBox.setProperty('attribute', 'asymmetric') connect(self.asymmetricBox.clicked, self.flagChanged) self.irreflexiveKey = Key('Irreflexive', self) irreflexiveParent = Parent(self) self.irreflexiveBox = CheckBox(irreflexiveParent) self.irreflexiveBox.setCheckable(True) self.irreflexiveBox.setProperty('attribute', 'irreflexive') connect(self.irreflexiveBox.clicked, self.flagChanged) self.reflexiveKey = Key('Reflexive', self) reflexiveParent = Parent(self) self.reflexiveBox = CheckBox(reflexiveParent) self.reflexiveBox.setCheckable(True) self.reflexiveBox.setProperty('attribute', 'reflexive') connect(self.reflexiveBox.clicked, self.flagChanged) self.symmetricKey = Key('Symmetric', self) symmetricParent = Parent(self) self.symmetricBox = CheckBox(symmetricParent) self.symmetricBox.setCheckable(True) self.symmetricBox.setProperty('attribute', 'symmetric') connect(self.symmetricBox.clicked, self.flagChanged) self.transitiveKey = Key('Transitive', self) transitiveParent = Parent(self) self.transitiveBox = CheckBox(transitiveParent) self.transitiveBox.setCheckable(True) self.transitiveBox.setProperty('attribute', 'transitive') connect(self.transitiveBox.clicked, self.flagChanged) self.predPropLayout.addRow(self.functKey, functParent) self.predPropLayout.addRow(self.invFunctKey, invFunctParent) self.predPropLayout.addRow(self.asymmetricKey, asymmetricParent) self.predPropLayout.addRow(self.irreflexiveKey, irreflexiveParent) self.predPropLayout.addRow(self.reflexiveKey, reflexiveParent) self.predPropLayout.addRow(self.symmetricKey, symmetricParent) self.predPropLayout.addRow(self.transitiveKey, transitiveParent)
def __init__(self, project, session): """ Initialize the form dialog. :type project: Project :type session: Session """ super().__init__(session) self.project = project ############################################# # MAIN FORM AREA ################################# confirmation = QtWidgets.QDialogButtonBox(QtCore.Qt.Horizontal, self) confirmation.addButton(QtWidgets.QDialogButtonBox.Ok) confirmation.addButton(QtWidgets.QDialogButtonBox.Cancel) confirmation.setFont(Font('Roboto', 12)) confirmation.setObjectName('confirmation') connect(confirmation.accepted, self.run) connect(confirmation.rejected, self.reject) self.addWidget(confirmation) self.addWidget(QtWidgets.QPushButton('All', self, clicked=self.doCheckDiagramMarks, objectName='btn_check_all')) self.addWidget(QtWidgets.QPushButton('Clear', self, clicked=self.doCheckDiagramMarks, objectName='btn_clear_all')) self.diagrams_selected = [] self.diagrams = self.project.diagrams() self.diagrams_list = self.sort(self.diagrams) for diagram in self.diagrams_list: self.addWidget(CheckBox(diagram.name, self, enabled=True, objectName=diagram.name, checked=True, clicked=self.onDiagramCheckClicked)) DiagramNamesLayout = QtWidgets.QGridLayout() DiagramNamesLayout.setColumnMinimumWidth(0, 230) DiagramNamesLayout.setColumnMinimumWidth(1, 230) DiagramNamesLayout.setColumnMinimumWidth(2, 230) for i, d in enumerate(self.diagrams_list): r=i%3 q=math.floor(i/3) DiagramNamesLayout.addWidget(self.widget(d.name), q, r) DiagramNamesLayout.setRowMinimumHeight(q, 20) DiagramsGroup = QtWidgets.QGroupBox('Diagrams', self) DiagramsGroup.setLayout(DiagramNamesLayout) DiagramsGroup.setFixedHeight((DiagramNamesLayout.rowCount()*25+50)) DiagramsGroupLayout = QtWidgets.QHBoxLayout() DiagramsGroupLayout.addWidget(DiagramsGroup) #DiagramsGroupLayout.setGeometry(QtCore.QRect(0,0,690,(DiagramNamesLayout.rowCount()*25+5))) ButtonsLayout = QtWidgets.QHBoxLayout() #ButtonsLayout.setContentsMargins(0, 6, 0, 0) ButtonsLayout.setAlignment(QtCore.Qt.AlignRight) ButtonsLayout.addWidget(self.widget('btn_clear_all'), 0, QtCore.Qt.AlignRight) ButtonsLayout.addWidget(self.widget('btn_check_all'), 0, QtCore.Qt.AlignRight) ButtonsLayout.addWidget(self.widget('confirmation'), 0, QtCore.Qt.AlignRight) #ButtonsLayout.setGeometry(QtCore.QRect(0,0,690,50)) Area_1 = QtWidgets.QWidget() Area_1.setLayout(DiagramsGroupLayout) Area_1.setFixedHeight(DiagramsGroup.height()) Area_2 = QtWidgets.QWidget() Area_2.setLayout(ButtonsLayout) Area_2.setFixedHeight(50) MainLayout = QtWidgets.QVBoxLayout() MainLayout.setContentsMargins(10, 10, 10, 10) MainLayout.addWidget(Area_1) MainLayout.addWidget(Area_2) #MainLayout.addLayout(DiagramsGroupLayout) #MainLayout.addLayout(ButtonsLayout) self.setLayout(MainLayout) #print('DiagramsGroup.height()',DiagramsGroup.height()) #print('Area_1.height()',Area_1.height()) #print('Area_2.height()', Area_2.height()) #print('DiagramsGroupLayout.geometry().height()',DiagramsGroupLayout.geometry().height()) #print('ButtonsLayout.geometry()', ButtonsLayout.geometry().height()) #self.setFixedSize(max(DiagramsGroup.width(),400),DiagramsGroup.height()+100) #self.setMaximumHeight(400) #self.setMinimumHeight(400) self.setFixedHeight(Area_1.height()+Area_2.height()+50) self.setFixedWidth(600) self.setFont(Font('Roboto', 12)) self.setWindowIcon(QtGui.QIcon(':/icons/128/ic_eddy')) self.setWindowTitle('Diagram selection')