def __init__(self, *args, **kwargs): super(Widget_objectList, self).__init__(*args, **kwargs) self.installEventFilter(self) mainLayout = QVBoxLayout(self) treeWidget = QTreeWidget() treeWidget.setColumnCount(2) headerItem = treeWidget.headerItem() headerItem.setText(0, "Target Node") headerItem.setText(1, "Attribute Name") treeWidget.setRootIsDecorated(False) treeWidget.setStyleSheet( "QTreeWidget::item { border-left: 1px solid gray;border-bottom: 1px solid gray; padding: 3px}\ QTreeWidget{ font-size:13px;}") treeWidget.header().setStyleSheet("font-size:12px;") w_buttons = QWidget() lay_buttons = QHBoxLayout(w_buttons) lay_buttons.setContentsMargins(0, 0, 0, 0) lay_buttons.setSpacing(0) button_load = QPushButton("Load List") button_load.setStyleSheet("font:14px;") lay_buttons.addWidget(button_load) mainLayout.addWidget(treeWidget) mainLayout.addWidget(w_buttons) self.treeWidget = treeWidget QtCore.QObject.connect( treeWidget, QtCore.SIGNAL("itemChanged(QTreeWidgetItem * , int )"), self.writeData) QtCore.QObject.connect(button_load, QtCore.SIGNAL("clicked()"), self.cmd_loadList)
def __init__(self, *args, **kwargs): super(Widget_referenceFiles, self).__init__(*args, **kwargs) self.installEventFilter(self) mainLayout = QVBoxLayout(self) mainLayout.setContentsMargins(0, 0, 0, 0) mainLayout.setSpacing(8) treeWidget = QTreeWidget() headerItem = treeWidget.headerItem() checkBox_allItems = QCheckBox(treeWidget) checkBox_allItems.setFixedWidth(20) checkBox_allItems.setChecked(True) checkBox_allItems.setStyleSheet("margin: 6px 6px") treeWidget.setItemWidget(headerItem, 0, checkBox_allItems) headerItem.setText(0, "") headerItem.setText(1, "Reference File Name") treeWidget.setRootIsDecorated(False) treeWidget.setStyleSheet( "QTreeWidget::item { border-left: 1px solid gray;border-bottom: 1px solid gray; padding: 3px}\ QTreeWidget{ font-size:13px;}") treeWidget.header().setStyleSheet("font-size:12px;") treeWidget.setColumnWidth(0, 22) w_buttons = QWidget() lay_buttons = QHBoxLayout(w_buttons) lay_buttons.setContentsMargins(0, 0, 0, 0) buttonReference = QPushButton("REFERENCE") buttonCleanExceptSelected = QPushButton("CLEAN EXCEPT SELECTED") lay_buttons.addWidget(buttonCleanExceptSelected) lay_buttons.addWidget(buttonReference) mainLayout.addWidget(treeWidget) mainLayout.addWidget(w_buttons) self.treeWidget = treeWidget self.treeWidget.setSelectionMode(QAbstractItemView.ExtendedSelection) self.treeWidget.checkBox_allItems = checkBox_allItems checkBox_allItems.stateChanged.connect(self.cmd_setCheckAsset) treeWidget.itemPressed.connect(self.cmd_selectItems) buttonReference.clicked.connect(self.referenceFiles) buttonCleanExceptSelected.clicked.connect(self.cmd_cleanScene) self.cmd_loadList()
def __init__(self, *args, **kwargs): super(Widget_connectionList, self).__init__(*args, **kwargs) self.installEventFilter(self) mainLayout = QVBoxLayout(self) mainLayout.setContentsMargins(5, 5, 5, 5) mainLayout.setSpacing(0) treeWidget = QTreeWidget() treeWidget.setColumnCount(3) headerItem = treeWidget.headerItem() headerItem.setText(0, "Attribute") headerItem.setText(1, "Target Node") headerItem.setText(2, "Target Attr") treeWidget.setRootIsDecorated(False) self.treeWidget = treeWidget treeWidget.setStyleSheet( "QTreeWidget::item { border-bottom: 1px solid gray; padding:1px}\ QTreeWidget{ font-size:13px;}") treeWidget.header().setStyleSheet("font-size:12px;") w_buttons = QWidget() lay_buttons = QHBoxLayout(w_buttons) lay_buttons.setContentsMargins(0, 0, 0, 0) lay_buttons.setSpacing(5) button_add = QPushButton("Add Line") button_remove = QPushButton("Remove Line") lay_buttons.addWidget(button_add) lay_buttons.addWidget(button_remove) mainLayout.addWidget(treeWidget) mainLayout.addWidget(w_buttons) button_add.clicked.connect(self.cmd_addLine) button_remove.clicked.connect(self.cmd_removeLine) treeWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) QtCore.QObject.connect( treeWidget, QtCore.SIGNAL('customContextMenuRequested(QPoint)'), self.loadContextMenu) self.treeWidget = treeWidget self.readData()
class SettingsDialog(QDialog): """A dialog for choosing clock speed, log verbosity and GUI colors""" def __init__(self, mainwindow, config): super(SettingsDialog, self).__init__() self.setWindowTitle(self.str_title) # Reference kept to set settings in MainWindow self.mainwindow = mainwindow """A reference to the top window of the app.""" self.config = config """The settings of our app.""" # Setting log handlers logHandlers = QGroupBox(self.str_logHandlers) logHandlersLayout = QVBoxLayout() logHandlers.setLayout(logHandlersLayout) logToGui = QCheckBox(self.str_logToGui) logToGui.setChecked(self.config.getboolean('LogHandlers', 'gui')) logToGui.stateChanged.connect( lambda: self.chooseHandler(logToGui, 'gui')) logHandlersLayout.addWidget(logToGui) logtoStdout = QCheckBox(self.str_logToStdout) logtoStdout.setChecked(self.config.getboolean('LogHandlers', 'stdout')) logtoStdout.stateChanged.connect( lambda: self.chooseHandler(logtoStdout, 'stdout')) logHandlersLayout.addWidget(logtoStdout) logToFile = QCheckBox(self.str_logToFile) logToFile.setChecked(self.config.getboolean('LogHandlers', 'file')) logToFile.stateChanged.connect( lambda: self.chooseHandler(logToFile, 'file')) logHandlersLayout.addWidget(logToFile) # Setting log verbosity logVerbosity = QGroupBox(self.str_logVerbosity) logVerbosityLayout = QHBoxLayout() logVerbosity.setLayout(logVerbosityLayout) self.verbosityOptions = QTreeWidget() self.verbosityOptions.header().setVisible(False) for k, v in self.str_treeItems.items(): node = QTreeWidgetItem(self.verbosityOptions, [k]) if isinstance(v, str): node.setText(1, v) node.setCheckState( 0, boolToCheckState( self.config.getboolean('LogVerbosity', v))) else: count = 0 for key, val in v.items(): item = QTreeWidgetItem(node, [key, val]) checked = self.config.getboolean('LogVerbosity', val) item.setCheckState(0, boolToCheckState(checked)) if checked: count += 1 if count == node.childCount(): node.setCheckState(0, Qt.Checked) elif count == 0: node.setCheckState(0, Qt.Unchecked) else: node.setCheckState(0, Qt.PartiallyChecked) self.verbosityOptions.itemChanged.connect(self.chooseVerbosity) logVerbosityLayout.addWidget(self.verbosityOptions) # Setting clock speed clock = QGroupBox(self.str_clock) clockLayout = QHBoxLayout() clock.setLayout(clockLayout) clockLayout.addWidget(QLabel(self.str_clockSpeed)) spin = QDoubleSpinBox() spin.setValue(self.config.getfloat('Clock', 'speed')) clockLayout.addWidget(spin) # Setting appearance appearance = QGroupBox(self.str_appearance) appearanceLayout = QHBoxLayout() appearance.setLayout(appearanceLayout) appearanceLayout.addWidget(QLabel(self.str_circBgColor)) circBgBtn = QPushButton(self.str_choose) circBgBtn.setPalette(QPalette( QColor(self.config.get('Appearance', 'circ_bg_color')))) circBgBtn.clicked.connect( lambda: self.chooseColor(circBgBtn, 'circ_bg_color')) appearanceLayout.addWidget(circBgBtn) appearanceLayout.addWidget(QLabel(self.str_logBgColor)) logBgBtn = QPushButton(self.str_choose) logBgBtn.setPalette(QPalette( QColor(self.config.get('Appearance', 'log_bg_color')))) logBgBtn.clicked.connect( lambda: self.chooseColor(logBgBtn, 'log_bg_color')) appearanceLayout.addWidget(logBgBtn) # Saving settings to file and effectively setting them close = QPushButton(self.str_close) close.clicked.connect(self.closeAndApply) layout = QGridLayout(self) layout.addWidget(logHandlers, 0, 0, 1, 1) layout.addWidget(logVerbosity, 0, 1, 1, 1) layout.addWidget(clock, 1, 0, 1, 2) layout.addWidget(appearance, 2, 0, 1, 2) layout.addWidget(close, 3, 1, 1, 1) self.setLayout(layout) def chooseColor(self, button, option): """The user modifies an UI background color.""" color = QColorDialog.getColor() if color.isValid(): button.setPalette(QPalette(color)) self.config.set('Appearance', option, color.name()) def chooseHandler(self, checkbox, option): """The user chooses where to log messages.""" self.config.set('LogHandlers', option, str(checkbox.isChecked())) def chooseVerbosity(self, item): """The user chooses which logs are shown.""" option = item.text(1) if option: self.config.set('LogVerbosity', option, str( checkStateToBool(item.checkState(0)))) if isinstance(item.parent(), QTreeWidgetItem): count = item.parent().childCount() for i in range(item.parent().childCount()): if not checkStateToBool( item.parent().child(i).checkState(0)): count = count - 1 self.verbosityOptions.blockSignals(True) if count == item.parent().childCount(): item.parent().setCheckState(0, Qt.Checked) elif count == 0: item.parent().setCheckState(0, Qt.Unchecked) else: item.parent().setCheckState(0, Qt.PartiallyChecked) self.verbosityOptions.blockSignals(False) else: for i in range(item.childCount()): self.verbosityOptions.blockSignals(True) item.child(i).setCheckState(0, item.checkState(0)) self.config.set( 'LogVerbosity', item.child(i).text(1), str(checkStateToBool(item.checkState(0)))) self.verbosityOptions.blockSignals(False) def closeAndApply(self): """Settings saved to file and applied to GUI.""" self.mainwindow.setSettings() with open(self.config.configFile, 'w+') as f: self.config.write(f) self.close()