def __init__(self, mainWindow, fileName=None): """Constructor for the editor window :params QMainWindow mainWindow: the parent main window :params string fileName: Optional filename to open on start """ super().__init__(mainWindow) self.setObjectName("editor_window") self.setGeometry(100, 100, 1024, 768) self.setWindowTitle( self.tr("ts2 - Train Signalling Simulation - Editor")) self._mainWindow = mainWindow self._dirty = False # Editor self.editor = editor.Editor(fileName=fileName) self.editor.initialize(self) # Actions self.newAction = QtWidgets.QAction(self.tr("&New"), self) self.newAction.setShortcut(QtGui.QKeySequence.New) newActionTip = self.tr("Create a new simulation") self.newAction.setToolTip(newActionTip) self.newAction.setStatusTip(newActionTip) self.newAction.triggered.connect(self.closeSimulation) self.openAction = QtWidgets.QAction(self.tr("&Open..."), self) self.openAction.setShortcut(QtGui.QKeySequence.Open) openActionTip = self.tr("Open a simulation") self.openAction.setToolTip(openActionTip) self.openAction.setStatusTip(openActionTip) self.openAction.triggered.connect(self.loadSimulation) self.saveAction = QtWidgets.QAction(self.tr("&Save"), self) self.saveAction.setShortcut(QtGui.QKeySequence.Save) saveActionTip = self.tr("Save the current simulation") self.saveAction.setToolTip(saveActionTip) self.saveAction.setStatusTip(saveActionTip) self.saveAction.triggered.connect(self.saveSimulation) self.saveAsAction = QtWidgets.QAction(self.tr("&Save as..."), self) self.saveAsAction.setShortcut(QtGui.QKeySequence.SaveAs) saveAsActionTip = self.tr( "Save the current simulation with a different file name") self.saveAsAction.setToolTip(saveAsActionTip) self.saveAsAction.setStatusTip(saveAsActionTip) self.saveAsAction.triggered.connect(self.saveAsSimulation) self.closeAction = QtWidgets.QAction(self.tr("&Close"), self) self.closeAction.setShortcut(QtGui.QKeySequence.Close) closeActionTip = self.tr("Close the editor") self.closeAction.setToolTip(closeActionTip) self.closeAction.setStatusTip(closeActionTip) self.closeAction.triggered.connect(self.close) self.panToolAction = QtWidgets.QAction(self.tr("&Pan tool"), self) panToolActionTip = self.tr("Set the pan tool") self.panToolAction.setToolTip(panToolActionTip) self.panToolAction.setStatusTip(panToolActionTip) self.panToolAction.setCheckable(True) self.panToolAction.triggered.connect(self.setPanTool) self.selectionToolAction = QtWidgets.QAction(self.tr("&Selection tool"), self) selectionToolActionTip = self.tr("Set the selection tool") self.selectionToolAction.setToolTip(selectionToolActionTip) self.selectionToolAction.setStatusTip(selectionToolActionTip) self.selectionToolAction.setCheckable(True) self.selectionToolAction.triggered.connect(self.setSelectionTool) self.toolActions = QtWidgets.QActionGroup(self) self.toolActions.addAction(self.panToolAction) self.toolActions.addAction(self.selectionToolAction) self.panToolAction.setChecked(True) self.copyAction = QtWidgets.QAction(self.tr("&Copy"), self) self.copyAction.setShortcut(QtGui.QKeySequence.Copy) copyActionTip = self.tr("Copy the current selection to the clipboard") self.copyAction.setToolTip(copyActionTip) self.copyAction.setStatusTip(copyActionTip) self.copyAction.triggered.connect(self.copyItems) self.pasteAction = QtWidgets.QAction(self.tr("&Paste"), self) self.pasteAction.setShortcut(QtGui.QKeySequence.Paste) pasteActionTip = self.tr("Paste the items of the clipboard") self.pasteAction.setToolTip(pasteActionTip) self.pasteAction.setStatusTip(pasteActionTip) self.pasteAction.triggered.connect(self.pasteItems) self.deleteAction = QtWidgets.QAction(self.tr("&Delete"), self) self.deleteAction.setShortcut(QtGui.QKeySequence.Delete) deleteActionTip = self.tr("Delete the selected items") self.deleteAction.setToolTip(deleteActionTip) self.deleteAction.setStatusTip(deleteActionTip) self.deleteAction.triggered.connect(self.deleteItems) self.selectAllAction = QtWidgets.QAction(self.tr("&Select All"), self) self.selectAllAction.setShortcut(QtGui.QKeySequence.SelectAll) selectAllActionTip = self.tr("Select all the items") self.selectAllAction.setToolTip(selectAllActionTip) self.selectAllAction.setStatusTip(selectAllActionTip) self.selectAllAction.triggered.connect(self.selectAll) self.aboutAction = QtWidgets.QAction(self.tr("&About TS2..."), self) aboutActionTip = self.tr("About TS2") self.aboutAction.setToolTip(aboutActionTip) self.aboutAction.setStatusTip(aboutActionTip) self.aboutAction.triggered.connect(self._mainWindow.showAboutBox) self.aboutQtAction = QtWidgets.QAction(self.tr("About Qt..."), self) aboutQtTip = self.tr("About Qt") self.aboutQtAction.setToolTip(aboutQtTip) self.aboutQtAction.setStatusTip(aboutQtTip) self.aboutQtAction.triggered.connect(QtWidgets.QApplication.aboutQt) # Menu self.fileMenu = self.menuBar().addMenu(self.tr("&File")) self.fileMenu.addAction(self.newAction) self.fileMenu.addAction(self.openAction) self.fileMenu.addAction(self.saveAction) self.fileMenu.addAction(self.saveAsAction) self.fileMenu.addSeparator() self.fileMenu.addAction(self.closeAction) self.editMenu = self.menuBar().addMenu(self.tr("&Edit")) self.editMenu.addAction(self.panToolAction) self.editMenu.addAction(self.selectionToolAction) self.editMenu.addSeparator() self.editMenu.addAction(self.copyAction) self.editMenu.addAction(self.pasteAction) self.editMenu.addAction(self.deleteAction) self.editMenu.addSeparator() self.editMenu.addAction(self.selectAllAction) self.helpMenu = self.menuBar().addMenu(self.tr("&Help")) self.helpMenu.addAction(self.aboutAction) self.helpMenu.addAction(self.aboutQtAction) self.menuBar().setCursor(Qt.PointingHandCursor) self.updateMenus(0) # Status bar statusBar = QtWidgets.QStatusBar() self.setStatusBar(statusBar) # Dock Widgets # >> TrackItems panel: TI Library self.toolsPanel = QtWidgets.QDockWidget(self.tr("Tools"), self) self.toolsPanel.setObjectName("toolsPanel") self.toolsPanel.setFeatures( QtWidgets.QDockWidget.DockWidgetMovable | QtWidgets.QDockWidget.DockWidgetFloatable ) self.trackItemsLibraryView = QtWidgets.QGraphicsView(self) self.trackItemsLibraryView.setBackgroundBrush(QtGui.QBrush(Qt.black)) self.trackItemsLibraryView.setInteractive(True) self.trackItemsLibraryView.setRenderHint(QtGui.QPainter.Antialiasing, False) self.trackItemsLibraryView.setDragMode( QtWidgets.QGraphicsView.ScrollHandDrag ) self.trackItemsLibraryView.setAlignment(Qt.AlignLeft | Qt.AlignTop) # >> TrackItems panel: layout toolBoard = QtWidgets.QWidget(self) toolGrid = QtWidgets.QVBoxLayout() toolGrid.addWidget(self.trackItemsLibraryView) toolGrid.setSpacing(5) toolBoard.setLayout(toolGrid) self.toolsPanel.setWidget(toolBoard) self.addDockWidget(Qt.RightDockWidgetArea, self.toolsPanel) # >> Properties panel self.propertiesPanel = QtWidgets.QDockWidget(self.tr("Properties"), self) self.propertiesPanel.setObjectName("propertiesPanel") self.propertiesPanel.setFeatures( QtWidgets.QDockWidget.DockWidgetMovable | QtWidgets.QDockWidget.DockWidgetFloatable ) self.propertiesView = ts2.editor.views.PropertiesView(self) self.propertiesPanel.setWidget(self.propertiesView) self.addDockWidget(Qt.RightDockWidgetArea, self.propertiesPanel) # Central tab widget self.tabWidget = QtWidgets.QTabWidget(self) # ========================================== # General tab generalTab = QtWidgets.QWidget() titleLabel = QtWidgets.QLabel(self.tr("Simulation title: "), generalTab) self.titleTxt = QtWidgets.QLineEdit(generalTab) self.titleTxt.editingFinished.connect(self.updateTitle) descriptionLabel = QtWidgets.QLabel(self.tr("Description: "), generalTab) self.descriptionTxt = QtWidgets.QPlainTextEdit(generalTab) self.descriptionTxt.textChanged.connect(self.updateDescription) optionsLabel = QtWidgets.QLabel(self.tr("Options: ")) self.optionsView = QtWidgets.QTableView(generalTab) fgrid = QtWidgets.QGridLayout() row = 0 fgrid.addWidget(titleLabel, row, 0, Qt.AlignRight | Qt.AlignTop) fgrid.addWidget(self.titleTxt, row, 1) row += 1 fgrid.addWidget(descriptionLabel, row, 0, Qt.AlignRight | Qt.AlignTop) fgrid.addWidget(self.descriptionTxt, row, 1) row += 1 fgrid.addWidget(optionsLabel, row, 0, Qt.AlignRight | Qt.AlignTop) fgrid.addWidget(self.optionsView, row, 1) generalTab.setLayout(fgrid) fgrid.setColumnStretch(0, 0) fgrid.setColumnStretch(1, 4) fgrid.setRowStretch(0, 0) fgrid.setRowStretch(1, 1) fgrid.setRowStretch(2, 2) self.tabWidget.addTab(generalTab, self.tr("General")) # ========================================== # Scenery tab self.sceneryWidget = widgets.VBoxWidget() toolbarScenery = QtWidgets.QToolBar() self.sceneryWidget.addWidget(toolbarScenery) self.unlockSceneryBtn = QtWidgets.QPushButton(self.tr("Unlock Scenery"), self.sceneryWidget) self.unlockSceneryBtn.setEnabled(False) toolbarScenery.addWidget(self.unlockSceneryBtn) self.validateSceneryBtn = QtWidgets.QPushButton( self.tr("Validate Scenery"), self.sceneryWidget ) self.validateSceneryBtn.clicked.connect(self.validateSceneryBtnClicked) toolbarScenery.addWidget(self.validateSceneryBtn) self.zoomWidget = widgets.ZoomWidget(self.sceneryWidget) self.zoomWidget.valueChanged.connect(self.zoom) toolbarScenery.addWidget(self.zoomWidget) self.sceneryView = widgets.XGraphicsView(self.sceneryWidget) self.sceneryView.setInteractive(True) self.sceneryView.setRenderHint(QtGui.QPainter.Antialiasing, False) self.sceneryView.setDragMode(QtWidgets.QGraphicsView.ScrollHandDrag) self.sceneryView.setAcceptDrops(True) self.sceneryView.setBackgroundBrush(QtGui.QBrush(Qt.black)) self.sceneryView.wheelChanged.connect(self.onSceneryViewWheelChanged) self.sceneryWidget.addWidget(self.sceneryView) self.tabWidget.addTab(self.sceneryWidget, self.tr("Scenery")) # ========================================== # Routes tab self.routesWidget = widgets.VBoxWidget() sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setVerticalStretch(1) self.routesGraphicView = QtWidgets.QGraphicsView(self.routesWidget) self.routesGraphicView.setInteractive(True) self.routesGraphicView.setRenderHint(QtGui.QPainter.Antialiasing, False) self.routesGraphicView.setDragMode( QtWidgets.QGraphicsView.ScrollHandDrag ) self.routesGraphicView.setAcceptDrops(True) self.routesGraphicView.setBackgroundBrush(QtGui.QBrush(Qt.black)) self.routesGraphicView.setSizePolicy(sizePolicy) self.addRouteBtn = QtWidgets.QPushButton(self.tr("Add Route"), self.routesWidget) self.addRouteBtn.clicked.connect(self.addRouteBtnClicked) self.delRouteBtn = QtWidgets.QPushButton(self.tr("Delete Route"), self.routesWidget) self.delRouteBtn.clicked.connect(self.delRouteBtnClicked) hgrid = QtWidgets.QHBoxLayout() hgrid.setContentsMargins(0, 0, 0, 0) hgrid.addWidget(self.addRouteBtn) hgrid.addWidget(self.delRouteBtn) hgrid.addStretch() self.routesView = ts2.editor.views.RoutesEditorView(self.routesWidget) self.routesWidget.addWidget(self.routesGraphicView) self.routesWidget.addLayout(hgrid) self.routesWidget.addWidget(self.routesView) self.routesWidget.setEnabled(False) self.tabWidget.addTab(self.routesWidget, self.tr("Routes")) # ========================================== # Train types tab self.trainTypesWidget = widgets.VBoxWidget() tbar = QtWidgets.QToolBar() self.trainTypesWidget.addWidget(tbar) tbg = widgets.ToolBarGroup(title="Train Types") tbar.addWidget(tbg) # add train self.addTrainTypeBtn = QtWidgets.QToolButton(self.trainTypesWidget) self.addTrainTypeBtn.setText(self.tr("Add new")) self.addTrainTypeBtn.clicked.connect(self.addTrainTypeBtnClicked) tbg.addWidget(self.addTrainTypeBtn) # remove train self.delTrainTypeBtn = QtWidgets.QToolButton(self.trainTypesWidget) self.delTrainTypeBtn.setText(self.tr("Remove")) self.delTrainTypeBtn.clicked.connect(self.delTrainTypeBtnClicked) tbg.addWidget(self.delTrainTypeBtn) self.trainTypesView = ts2.editor.views.TrainTypesEditorView( self.trainTypesWidget ) self.trainTypesWidget.addWidget(self.trainTypesView) self.tabWidget.addTab(self.trainTypesWidget, self.tr("Rolling Stock")) # =============================================================== # Services tab # =============================================================== self.servicesTabWidget = widgets.VBoxWidget() tbarServices = QtWidgets.QToolBar() self.servicesTabWidget.addWidget(tbarServices) # ================ # Service CRUD tbg = widgets.ToolBarGroup(title=self.tr("Services")) tbarServices.addWidget(tbg) # Add Service self.addServiceBtn = QtWidgets.QToolButton(self.servicesTabWidget) self.addServiceBtn.setText(self.tr("Add new")) self.addServiceBtn.clicked.connect(self.addServiceBtnClicked) tbg.addWidget(self.addServiceBtn) # Remove Service self.delServiceBtn = QtWidgets.QToolButton(self.servicesTabWidget) self.delServiceBtn.setText(self.tr("Remove")) self.delServiceBtn.clicked.connect(self.delServiceBtnClicked) tbg.addWidget(self.delServiceBtn) tbarServices.addSeparator() # ================ # CSV tbg = widgets.ToolBarGroup(title=self.tr("CSV")) tbarServices.addWidget(tbg) # Export CSV self.exportServicesBtn = QtWidgets.QToolButton(self.servicesTabWidget) self.exportServicesBtn.setText(self.tr("Export")) self.exportServicesBtn.clicked.connect(self.exportServicesBtnClicked) tbg.addWidget(self.exportServicesBtn) # Import CSV self.importServicesBtn = QtWidgets.QToolButton(self.servicesTabWidget) self.importServicesBtn.setText(self.tr("Import")) self.importServicesBtn.clicked.connect(self.importServicesBtnClicked) tbg.addWidget(self.importServicesBtn) # Services Table self.servicesView = ts2.editor.views.ServicesEditorView( self.servicesTabWidget ) self.servicesTabWidget.addWidget(self.servicesView) tbarServiceLines = QtWidgets.QToolBar() self.servicesTabWidget.addWidget(tbarServiceLines) tbg = widgets.ToolBarGroup() tbg.setTitle(self.tr("Lines")) tbarServiceLines.addWidget(tbg) # Append line button self.appendServiceLineBtn = QtWidgets.QToolButton( self.servicesTabWidget ) self.appendServiceLineBtn.setText(self.tr("Append New")) self.appendServiceLineBtn.clicked.connect( self.appendServiceLineBtnClicked ) tbg.addWidget(self.appendServiceLineBtn) # Insert line button self.insertServiceLineBtn = QtWidgets.QToolButton( self.servicesTabWidget ) self.insertServiceLineBtn.setText(self.tr("Insert New")) self.insertServiceLineBtn.clicked.connect( self.insertServiceLineBtnClicked ) tbg.addWidget(self.insertServiceLineBtn) # Delete line button self.deleteServiceLineBtn = QtWidgets.QToolButton( self.servicesTabWidget ) self.deleteServiceLineBtn.setText(self.tr("Remove")) self.deleteServiceLineBtn.clicked.connect(self.delServiceLineBtnClicked) tbg.addWidget(self.deleteServiceLineBtn) # ServiceLines table self.serviceLinesView = ts2.editor.views.ServiceLinesEditorView( self.servicesTabWidget ) self.serviceLinesView.setSelectionBehavior( QtWidgets.QAbstractItemView.SelectRows) self.serviceLinesView.setSelectionMode( QtWidgets.QAbstractItemView.SingleSelection) self.servicesTabWidget.addWidget(self.serviceLinesView) self.tabWidget.addTab(self.servicesTabWidget, self.tr("Services")) # =============================================================== # Train tab # =============================================================== trainsTab = QtWidgets.QWidget() self.setupTrainsBtn = QtWidgets.QPushButton( self.tr("Setup trains from services"), trainsTab ) self.setupTrainsBtn.clicked.connect(self.setupTrainsBtnClicked) hgride = QtWidgets.QHBoxLayout() hgride.addWidget(self.setupTrainsBtn) hgride.addStretch() self.trainsGraphicsView = ts2.editor.views.TrainsGraphicsView( trainsTab ) self.reverseTrainBtn = QtWidgets.QPushButton( self.tr("Reverse train direction"), trainsTab ) self.reverseTrainBtn.clicked.connect(self.reverseTrainBtnClicked) hgridr = QtWidgets.QHBoxLayout() hgridr.addWidget(self.reverseTrainBtn) hgridr.addStretch() self.trainsView = ts2.editor.views.TrainsEditorView(trainsTab) self.addTrainBtn = QtWidgets.QPushButton(self.tr("Add new train"), trainsTab) self.addTrainBtn.clicked.connect(self.addTrainBtnClicked) self.delTrainBtn = QtWidgets.QPushButton(self.tr("Remove train"), trainsTab) self.delTrainBtn.clicked.connect(self.delTrainBtnClicked) hgrid = QtWidgets.QHBoxLayout() hgrid.addWidget(self.addTrainBtn) hgrid.addWidget(self.delTrainBtn) hgrid.addStretch() grid = QtWidgets.QVBoxLayout() grid.addLayout(hgride) grid.addWidget(self.trainsGraphicsView) grid.addLayout(hgridr) grid.addWidget(self.trainsView) grid.addLayout(hgrid) trainsTab.setLayout(grid) self.tabWidget.addTab(trainsTab, self.tr("Trains")) self.setCentralWidget(self.tabWidget) sbar = widgets.StatusBar() self.setStatusBar(sbar) settings.restoreWindow(self) self.onServiceViewSelectionChanged(None) self.onServiceLinesViewSelectionChanged() self.onTrainTypesSelectionChanged() if fileName: QtCore.QTimer.singleShot(100, self.onStartupTimeout)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(336, 886) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout_6 = QtWidgets.QHBoxLayout() self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.line_3 = QtWidgets.QFrame(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.line_3.sizePolicy().hasHeightForWidth()) self.line_3.setSizePolicy(sizePolicy) self.line_3.setFrameShape(QtWidgets.QFrame.HLine) self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_3.setObjectName("line_3") self.horizontalLayout_6.addWidget(self.line_3) self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setScaledContents(False) self.label_2.setObjectName("label_2") self.horizontalLayout_6.addWidget(self.label_2) self.line_4 = QtWidgets.QFrame(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.line_4.sizePolicy().hasHeightForWidth()) self.line_4.setSizePolicy(sizePolicy) self.line_4.setFrameShape(QtWidgets.QFrame.HLine) self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_4.setObjectName("line_4") self.horizontalLayout_6.addWidget(self.line_4) self.verticalLayout.addLayout(self.horizontalLayout_6) self.addRimLight_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.addRimLight_pushButton.sizePolicy().hasHeightForWidth()) self.addRimLight_pushButton.setSizePolicy(sizePolicy) self.addRimLight_pushButton.setMinimumSize(QtCore.QSize(0, 0)) font = QtGui.QFont() font.setPointSize(10) font.setBold(False) font.setWeight(50) self.addRimLight_pushButton.setFont(font) self.addRimLight_pushButton.setObjectName("addRimLight_pushButton") self.verticalLayout.addWidget(self.addRimLight_pushButton) self.fileTextureManager_pushButton = QtWidgets.QPushButton(self.centralwidget) self.fileTextureManager_pushButton.setObjectName("fileTextureManager_pushButton") self.verticalLayout.addWidget(self.fileTextureManager_pushButton) self.horizontalLayout_5 = QtWidgets.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.line = QtWidgets.QFrame(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.line.sizePolicy().hasHeightForWidth()) self.line.setSizePolicy(sizePolicy) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.horizontalLayout_5.addWidget(self.line) self.label = QtWidgets.QLabel(self.centralwidget) self.label.setScaledContents(False) self.label.setObjectName("label") self.horizontalLayout_5.addWidget(self.label) self.line_2 = QtWidgets.QFrame(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.line_2.sizePolicy().hasHeightForWidth()) self.line_2.setSizePolicy(sizePolicy) self.line_2.setFrameShape(QtWidgets.QFrame.HLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.horizontalLayout_5.addWidget(self.line_2) self.verticalLayout.addLayout(self.horizontalLayout_5) self.horizontalLayout_4 = QtWidgets.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.exportAlembic_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.exportAlembic_pushButton.sizePolicy().hasHeightForWidth()) self.exportAlembic_pushButton.setSizePolicy(sizePolicy) self.exportAlembic_pushButton.setMinimumSize(QtCore.QSize(0, 0)) font = QtGui.QFont() font.setPointSize(10) font.setBold(False) font.setWeight(50) self.exportAlembic_pushButton.setFont(font) self.exportAlembic_pushButton.setObjectName("exportAlembic_pushButton") self.horizontalLayout_4.addWidget(self.exportAlembic_pushButton) self.importAlembic_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.importAlembic_pushButton.sizePolicy().hasHeightForWidth()) self.importAlembic_pushButton.setSizePolicy(sizePolicy) self.importAlembic_pushButton.setMinimumSize(QtCore.QSize(0, 0)) font = QtGui.QFont() font.setPointSize(10) font.setBold(False) font.setWeight(50) self.importAlembic_pushButton.setFont(font) self.importAlembic_pushButton.setObjectName("importAlembic_pushButton") self.horizontalLayout_4.addWidget(self.importAlembic_pushButton) self.verticalLayout.addLayout(self.horizontalLayout_4) self.horizontalLayout_10 = QtWidgets.QHBoxLayout() self.horizontalLayout_10.setObjectName("horizontalLayout_10") self.connectAlembic_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.connectAlembic_pushButton.sizePolicy().hasHeightForWidth()) self.connectAlembic_pushButton.setSizePolicy(sizePolicy) self.connectAlembic_pushButton.setMinimumSize(QtCore.QSize(0, 0)) font = QtGui.QFont() font.setPointSize(10) font.setBold(False) font.setWeight(50) self.connectAlembic_pushButton.setFont(font) self.connectAlembic_pushButton.setObjectName("connectAlembic_pushButton") self.horizontalLayout_10.addWidget(self.connectAlembic_pushButton) self.verticalLayout.addLayout(self.horizontalLayout_10) self.horizontalLayout_8 = QtWidgets.QHBoxLayout() self.horizontalLayout_8.setObjectName("horizontalLayout_8") self.line_7 = QtWidgets.QFrame(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.line_7.sizePolicy().hasHeightForWidth()) self.line_7.setSizePolicy(sizePolicy) self.line_7.setFrameShape(QtWidgets.QFrame.HLine) self.line_7.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_7.setObjectName("line_7") self.horizontalLayout_8.addWidget(self.line_7) self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setScaledContents(False) self.label_4.setObjectName("label_4") self.horizontalLayout_8.addWidget(self.label_4) self.line_8 = QtWidgets.QFrame(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.line_8.sizePolicy().hasHeightForWidth()) self.line_8.setSizePolicy(sizePolicy) self.line_8.setFrameShape(QtWidgets.QFrame.HLine) self.line_8.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_8.setObjectName("line_8") self.horizontalLayout_8.addWidget(self.line_8) self.verticalLayout.addLayout(self.horizontalLayout_8) self.arnoldLoad_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.arnoldLoad_pushButton.sizePolicy().hasHeightForWidth()) self.arnoldLoad_pushButton.setSizePolicy(sizePolicy) self.arnoldLoad_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldLoad_pushButton.setObjectName("arnoldLoad_pushButton") self.verticalLayout.addWidget(self.arnoldLoad_pushButton) self.line_12 = QtWidgets.QFrame(self.centralwidget) self.line_12.setFrameShape(QtWidgets.QFrame.HLine) self.line_12.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_12.setObjectName("line_12") self.verticalLayout.addWidget(self.line_12) self.label_7 = QtWidgets.QLabel(self.centralwidget) self.label_7.setObjectName("label_7") self.verticalLayout.addWidget(self.label_7) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.arnoldAddProxyMat_pushButton = QtWidgets.QPushButton(self.centralwidget) self.arnoldAddProxyMat_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldAddProxyMat_pushButton.setObjectName("arnoldAddProxyMat_pushButton") self.horizontalLayout_2.addWidget(self.arnoldAddProxyMat_pushButton) self.arnoldDeleteProxyMat_pushButton = QtWidgets.QPushButton(self.centralwidget) self.arnoldDeleteProxyMat_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldDeleteProxyMat_pushButton.setObjectName("arnoldDeleteProxyMat_pushButton") self.horizontalLayout_2.addWidget(self.arnoldDeleteProxyMat_pushButton) self.verticalLayout.addLayout(self.horizontalLayout_2) self.transferShading_pushButton = QtWidgets.QPushButton(self.centralwidget) self.transferShading_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.transferShading_pushButton.setObjectName("transferShading_pushButton") self.verticalLayout.addWidget(self.transferShading_pushButton) self.autoAsignShaders_pushButton = QtWidgets.QPushButton(self.centralwidget) self.autoAsignShaders_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.autoAsignShaders_pushButton.setObjectName("autoAsignShaders_pushButton") self.verticalLayout.addWidget(self.autoAsignShaders_pushButton) self.nMakeTx_pushButton = QtWidgets.QPushButton(self.centralwidget) self.nMakeTx_pushButton.setObjectName("nMakeTx_pushButton") self.verticalLayout.addWidget(self.nMakeTx_pushButton) self.line_10 = QtWidgets.QFrame(self.centralwidget) self.line_10.setFrameShape(QtWidgets.QFrame.HLine) self.line_10.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_10.setObjectName("line_10") self.verticalLayout.addWidget(self.line_10) self.label_6 = QtWidgets.QLabel(self.centralwidget) self.label_6.setObjectName("label_6") self.verticalLayout.addWidget(self.label_6) self.leaveProxy_checkBox = QtWidgets.QCheckBox(self.centralwidget) self.leaveProxy_checkBox.setObjectName("leaveProxy_checkBox") self.verticalLayout.addWidget(self.leaveProxy_checkBox) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.arnoldConvertToStandard_pushButton = QtWidgets.QPushButton(self.centralwidget) self.arnoldConvertToStandard_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldConvertToStandard_pushButton.setObjectName("arnoldConvertToStandard_pushButton") self.horizontalLayout.addWidget(self.arnoldConvertToStandard_pushButton) self.arnoldConvertToAlSurface_pushButton = QtWidgets.QPushButton(self.centralwidget) self.arnoldConvertToAlSurface_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldConvertToAlSurface_pushButton.setObjectName("arnoldConvertToAlSurface_pushButton") self.horizontalLayout.addWidget(self.arnoldConvertToAlSurface_pushButton) self.verticalLayout.addLayout(self.horizontalLayout) self.line_5 = QtWidgets.QFrame(self.centralwidget) self.line_5.setFrameShape(QtWidgets.QFrame.HLine) self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_5.setObjectName("line_5") self.verticalLayout.addWidget(self.line_5) self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setObjectName("label_5") self.verticalLayout.addWidget(self.label_5) self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.arnoldIdLayer_spinBox = QtWidgets.QSpinBox(self.centralwidget) self.arnoldIdLayer_spinBox.setMaximumSize(QtCore.QSize(40, 16777215)) self.arnoldIdLayer_spinBox.setMinimum(1) self.arnoldIdLayer_spinBox.setObjectName("arnoldIdLayer_spinBox") self.gridLayout.addWidget(self.arnoldIdLayer_spinBox, 1, 5, 1, 1) self.idGreen_pushButton = QtWidgets.QPushButton(self.centralwidget) self.idGreen_pushButton.setMinimumSize(QtCore.QSize(0, 25)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(8, 162, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(8, 162, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(120, 120, 120)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush) self.idGreen_pushButton.setPalette(palette) self.idGreen_pushButton.setObjectName("idGreen_pushButton") self.gridLayout.addWidget(self.idGreen_pushButton, 1, 2, 1, 1) self.idRed_pushButton = QtWidgets.QPushButton(self.centralwidget) self.idRed_pushButton.setMinimumSize(QtCore.QSize(0, 25)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(206, 0, 3)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(206, 0, 3)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(120, 120, 120)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush) self.idRed_pushButton.setPalette(palette) self.idRed_pushButton.setObjectName("idRed_pushButton") self.gridLayout.addWidget(self.idRed_pushButton, 1, 1, 1, 1) self.label_9 = QtWidgets.QLabel(self.centralwidget) self.label_9.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.label_9.setObjectName("label_9") self.gridLayout.addWidget(self.label_9, 1, 4, 1, 1) self.idBlue_pushButton = QtWidgets.QPushButton(self.centralwidget) self.idBlue_pushButton.setMinimumSize(QtCore.QSize(0, 25)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(0, 4, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 4, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(120, 120, 120)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush) self.idBlue_pushButton.setPalette(palette) self.idBlue_pushButton.setObjectName("idBlue_pushButton") self.gridLayout.addWidget(self.idBlue_pushButton, 1, 3, 1, 1) self.verticalLayout.addLayout(self.gridLayout) self.horizontalLayout_11 = QtWidgets.QHBoxLayout() self.horizontalLayout_11.setObjectName("horizontalLayout_11") self.arnoldAddObjID_pushButton = QtWidgets.QPushButton(self.centralwidget) self.arnoldAddObjID_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldAddObjID_pushButton.setObjectName("arnoldAddObjID_pushButton") self.horizontalLayout_11.addWidget(self.arnoldAddObjID_pushButton) self.arnoldRemObjID_pushButton = QtWidgets.QPushButton(self.centralwidget) self.arnoldRemObjID_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldRemObjID_pushButton.setObjectName("arnoldRemObjID_pushButton") self.horizontalLayout_11.addWidget(self.arnoldRemObjID_pushButton) self.verticalLayout.addLayout(self.horizontalLayout_11) self.horizontalLayout_9 = QtWidgets.QHBoxLayout() self.horizontalLayout_9.setObjectName("horizontalLayout_9") self.arnoldAddShaderID_pushButton = QtWidgets.QPushButton(self.centralwidget) self.arnoldAddShaderID_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldAddShaderID_pushButton.setObjectName("arnoldAddShaderID_pushButton") self.horizontalLayout_9.addWidget(self.arnoldAddShaderID_pushButton) self.arnoldRemShaderID_pushButton = QtWidgets.QPushButton(self.centralwidget) self.arnoldRemShaderID_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldRemShaderID_pushButton.setObjectName("arnoldRemShaderID_pushButton") self.horizontalLayout_9.addWidget(self.arnoldRemShaderID_pushButton) self.verticalLayout.addLayout(self.horizontalLayout_9) self.line_11 = QtWidgets.QFrame(self.centralwidget) self.line_11.setFrameShape(QtWidgets.QFrame.HLine) self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_11.setObjectName("line_11") self.verticalLayout.addWidget(self.line_11) self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setObjectName("label_3") self.verticalLayout.addWidget(self.label_3) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.arnoldSubdivision_none = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.arnoldSubdivision_none.sizePolicy().hasHeightForWidth()) self.arnoldSubdivision_none.setSizePolicy(sizePolicy) self.arnoldSubdivision_none.setMinimumSize(QtCore.QSize(0, 25)) font = QtGui.QFont() font.setPointSize(10) font.setBold(False) font.setWeight(50) self.arnoldSubdivision_none.setFont(font) self.arnoldSubdivision_none.setObjectName("arnoldSubdivision_none") self.horizontalLayout_3.addWidget(self.arnoldSubdivision_none) self.arnoldSubdivision_catclark = QtWidgets.QPushButton(self.centralwidget) self.arnoldSubdivision_catclark.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldSubdivision_catclark.setObjectName("arnoldSubdivision_catclark") self.horizontalLayout_3.addWidget(self.arnoldSubdivision_catclark) self.arnoldSubdivision_linear = QtWidgets.QPushButton(self.centralwidget) self.arnoldSubdivision_linear.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldSubdivision_linear.setObjectName("arnoldSubdivision_linear") self.horizontalLayout_3.addWidget(self.arnoldSubdivision_linear) self.arnoldSubdivision_spinBox = QtWidgets.QSpinBox(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.arnoldSubdivision_spinBox.sizePolicy().hasHeightForWidth()) self.arnoldSubdivision_spinBox.setSizePolicy(sizePolicy) self.arnoldSubdivision_spinBox.setMaximumSize(QtCore.QSize(40, 16777215)) self.arnoldSubdivision_spinBox.setProperty("value", 2) self.arnoldSubdivision_spinBox.setObjectName("arnoldSubdivision_spinBox") self.horizontalLayout_3.addWidget(self.arnoldSubdivision_spinBox) self.verticalLayout.addLayout(self.horizontalLayout_3) self.label_11 = QtWidgets.QLabel(self.centralwidget) self.label_11.setObjectName("label_11") self.verticalLayout.addWidget(self.label_11) self.horizontalLayout_12 = QtWidgets.QHBoxLayout() self.horizontalLayout_12.setObjectName("horizontalLayout_12") self.arnoldOpaque_checkBox = QtWidgets.QCheckBox(self.centralwidget) self.arnoldOpaque_checkBox.setObjectName("arnoldOpaque_checkBox") self.horizontalLayout_12.addWidget(self.arnoldOpaque_checkBox) self.arnoldSelfShad_checkBox = QtWidgets.QCheckBox(self.centralwidget) self.arnoldSelfShad_checkBox.setChecked(True) self.arnoldSelfShad_checkBox.setObjectName("arnoldSelfShad_checkBox") self.horizontalLayout_12.addWidget(self.arnoldSelfShad_checkBox) self.arnoldInDiff_checkBox = QtWidgets.QCheckBox(self.centralwidget) self.arnoldInDiff_checkBox.setChecked(True) self.arnoldInDiff_checkBox.setObjectName("arnoldInDiff_checkBox") self.horizontalLayout_12.addWidget(self.arnoldInDiff_checkBox) self.arnoldInSpec_checkBox = QtWidgets.QCheckBox(self.centralwidget) self.arnoldInSpec_checkBox.setChecked(True) self.arnoldInSpec_checkBox.setTristate(False) self.arnoldInSpec_checkBox.setObjectName("arnoldInSpec_checkBox") self.horizontalLayout_12.addWidget(self.arnoldInSpec_checkBox) self.arnoldMatte_checkBox = QtWidgets.QCheckBox(self.centralwidget) self.arnoldMatte_checkBox.setObjectName("arnoldMatte_checkBox") self.horizontalLayout_12.addWidget(self.arnoldMatte_checkBox) self.verticalLayout.addLayout(self.horizontalLayout_12) self.arnoldAddAttrs_pushButton = QtWidgets.QPushButton(self.centralwidget) self.arnoldAddAttrs_pushButton.setMinimumSize(QtCore.QSize(0, 25)) self.arnoldAddAttrs_pushButton.setObjectName("arnoldAddAttrs_pushButton") self.verticalLayout.addWidget(self.arnoldAddAttrs_pushButton) self.line_9 = QtWidgets.QFrame(self.centralwidget) self.line_9.setFrameShape(QtWidgets.QFrame.HLine) self.line_9.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_9.setObjectName("line_9") self.verticalLayout.addWidget(self.line_9) self.label_8 = QtWidgets.QLabel(self.centralwidget) self.label_8.setObjectName("label_8") self.verticalLayout.addWidget(self.label_8) self.horizontalLayout_7 = QtWidgets.QHBoxLayout() self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.alLightGroup_1_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.alLightGroup_1_pushButton.sizePolicy().hasHeightForWidth()) self.alLightGroup_1_pushButton.setSizePolicy(sizePolicy) self.alLightGroup_1_pushButton.setMinimumSize(QtCore.QSize(30, 30)) self.alLightGroup_1_pushButton.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.alLightGroup_1_pushButton.setObjectName("alLightGroup_1_pushButton") self.horizontalLayout_7.addWidget(self.alLightGroup_1_pushButton) self.alLightGroup_2_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.alLightGroup_2_pushButton.sizePolicy().hasHeightForWidth()) self.alLightGroup_2_pushButton.setSizePolicy(sizePolicy) self.alLightGroup_2_pushButton.setMinimumSize(QtCore.QSize(30, 30)) self.alLightGroup_2_pushButton.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.alLightGroup_2_pushButton.setObjectName("alLightGroup_2_pushButton") self.horizontalLayout_7.addWidget(self.alLightGroup_2_pushButton) self.alLightGroup_3_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.alLightGroup_3_pushButton.sizePolicy().hasHeightForWidth()) self.alLightGroup_3_pushButton.setSizePolicy(sizePolicy) self.alLightGroup_3_pushButton.setMinimumSize(QtCore.QSize(30, 30)) self.alLightGroup_3_pushButton.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.alLightGroup_3_pushButton.setObjectName("alLightGroup_3_pushButton") self.horizontalLayout_7.addWidget(self.alLightGroup_3_pushButton) self.alLightGroup_4_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.alLightGroup_4_pushButton.sizePolicy().hasHeightForWidth()) self.alLightGroup_4_pushButton.setSizePolicy(sizePolicy) self.alLightGroup_4_pushButton.setMinimumSize(QtCore.QSize(30, 30)) self.alLightGroup_4_pushButton.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.alLightGroup_4_pushButton.setObjectName("alLightGroup_4_pushButton") self.horizontalLayout_7.addWidget(self.alLightGroup_4_pushButton) self.alLightGroup_5_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.alLightGroup_5_pushButton.sizePolicy().hasHeightForWidth()) self.alLightGroup_5_pushButton.setSizePolicy(sizePolicy) self.alLightGroup_5_pushButton.setMinimumSize(QtCore.QSize(30, 30)) self.alLightGroup_5_pushButton.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.alLightGroup_5_pushButton.setObjectName("alLightGroup_5_pushButton") self.horizontalLayout_7.addWidget(self.alLightGroup_5_pushButton) self.alLightGroup_6_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.alLightGroup_6_pushButton.sizePolicy().hasHeightForWidth()) self.alLightGroup_6_pushButton.setSizePolicy(sizePolicy) self.alLightGroup_6_pushButton.setMinimumSize(QtCore.QSize(30, 30)) self.alLightGroup_6_pushButton.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.alLightGroup_6_pushButton.setObjectName("alLightGroup_6_pushButton") self.horizontalLayout_7.addWidget(self.alLightGroup_6_pushButton) self.alLightGroup_7_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.alLightGroup_7_pushButton.sizePolicy().hasHeightForWidth()) self.alLightGroup_7_pushButton.setSizePolicy(sizePolicy) self.alLightGroup_7_pushButton.setMinimumSize(QtCore.QSize(30, 30)) self.alLightGroup_7_pushButton.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.alLightGroup_7_pushButton.setObjectName("alLightGroup_7_pushButton") self.horizontalLayout_7.addWidget(self.alLightGroup_7_pushButton) self.alLightGroup_8_pushButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.alLightGroup_8_pushButton.sizePolicy().hasHeightForWidth()) self.alLightGroup_8_pushButton.setSizePolicy(sizePolicy) self.alLightGroup_8_pushButton.setMinimumSize(QtCore.QSize(30, 30)) self.alLightGroup_8_pushButton.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.alLightGroup_8_pushButton.setObjectName("alLightGroup_8_pushButton") self.horizontalLayout_7.addWidget(self.alLightGroup_8_pushButton) self.verticalLayout.addLayout(self.horizontalLayout_7) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def default(node, painter, option, widget): frame = QtCore.QRectF(QtCore.QPointF(0, 0), node.geometry().size()) # use 3 levels of detail lod = node.canvasRef().getLodValueFromCurrentScale(3) SWITCH_LOD = 3 color = node.color color.setAlpha(230) if node.isSelected(): color = color.lighter(150) if node.isTemp: color = color.lighter(50) color.setAlpha(50) br = QtGui.QBrush(color) painter.setBrush(br) pen = QtGui.QPen(QtCore.Qt.black, 0.5) painter.setPen(QtCore.Qt.NoPen) r = frame if lod < SWITCH_LOD: r.setWidth(r.width() - pen.width() / 2) r.setHeight(r.height() - pen.width() / 2) r.setX(pen.width() / 2) r.setY(r.y() + pen.width() / 2) painter.drawRoundedRect(r, node.roundness, node.roundness) else: painter.drawRect(r) br = QtGui.QBrush() painter.setBrush(br) if node.drawlabel: lr = QtCore.QRectF(r) lr.setHeight(node.labelHeight + NodeDefaults().CONTENT_MARGINS / 2) headColor = node.headColor if node.isTemp: headColor = headColor.lighter(50) headColor.setAlpha(50) if lod < SWITCH_LOD: b = QtGui.QLinearGradient(0, 0, lr.width(), 0) b.setColorAt(0, headColor.lighter(60)) b.setColorAt(0.5, headColor) b.setColorAt(1, headColor.darker(50)) path = QtGui.QPainterPath() path.setFillRule(QtCore.Qt.WindingFill) path.addRoundedRect(lr, node.roundness, node.roundness) lr.setY(lr.y() + node.roundness) path.addRect(lr) painter.fillPath(path, b) else: painter.fillRect(lr, headColor) if not node.isValid(): pen.setColor(InvalidNodePenColor) pen.setStyle(node.optPenErrorType) pen.setWidth(pen.width() * 1.5) elif not node.bExposeInputsToCompound: if option.state & QStyle.State_Selected: pen.setColor(InteractiveColor) pen.setStyle(node.optPenSelectedType) pen.setWidth(pen.width() * 1.5) else: pen.setColor(ExposedPropertiesColor) pen.setStyle(node.optPenSelectedType) pen.setWidth(pen.width() * 1.5) painter.setPen(pen) painter.setBrush(QtGui.QColor(0, 0, 0, 0)) if lod < SWITCH_LOD: painter.drawRoundedRect(r, node.roundness, node.roundness) else: painter.drawRect(r) NodePainter.drawResizeHandles(node, painter, option, widget) NodePainter.drawGroups(node, painter, option, widget)
def draw_title(self, painter, lod=1.): """Draw title of the node. Called exclusively in paint. :param painter: painter from paint. :type painter: QtGui.QPainter """ # draw bg painter.setPen(QtCore.Qt.NoPen) bg = painter.background() bgm = painter.backgroundMode() if self.error_item: self.scene().removeItem(self.error_item) self.error_item.deleteLater() self.error_item = None if self.is_real: painter.setBackgroundMode(QtCore.Qt.OpaqueMode) else: painter.setBackgroundMode(QtCore.Qt.TransparentMode) [c.setAlphaF(self.color_alpha) for c in self.colors] color_count = len(self.colors) color_band_width = 10 for i in range(color_count): color = self.colors[i] if self.is_proxy: painter.setBackground(color.darker(self.dim_factor)) brush = QtGui.QBrush(color.darker(self.dim_factor * 2), QtCore.Qt.FDiagPattern) painter.setBrush(brush) else: painter.setBrush(color.darker(self.dim_factor)) # Top Opinion if i + 1 == color_count: remaining_width = self.max_width - (i * color_band_width) painter.drawRect(0, 0, remaining_width, self.title_rect_height) # Lower Opinions else: x_pos = self.max_width - (i + 1) * color_band_width painter.drawRect(x_pos, 0, color_band_width, self.title_rect_height) painter.setBackground(bg) painter.setBackgroundMode(bgm) # draw exec plugs exec_attr = nxt_node.INTERNAL_ATTRS.EXECUTE_IN exec_in_pos = self.get_attr_in_pos(exec_attr, scene=False) exec_radius = self.EXEC_PLUG_RADIUS if nxt_path.get_parent_path(self.node_path) == nxt_path.WORLD: if self.is_start: color = self.start_color elif self.is_break: color = QtCore.Qt.red else: color = QtCore.Qt.white if not self.exec_in_plug: is_break = self.is_break if self.is_start: is_break = False self.exec_in_plug = NodeGraphicsPlug(pos=exec_in_pos, radius=exec_radius, color=color, is_exec=True, is_input=True, is_break=is_break, is_start=self.is_start) self.exec_in_plug.setParentItem(self) else: self.exec_in_plug.color = QtGui.QColor(color) self.exec_in_plug.is_break = self.is_break self.exec_in_plug.is_start = self.is_start self.exec_in_plug.setPos(exec_in_pos) self.exec_in_plug.update() out_pos = self.get_attr_out_pos(exec_attr, scene=False) if not self.exec_out_plug: self.exec_out_plug = NodeGraphicsPlug(pos=out_pos, radius=exec_radius, color=QtCore.Qt.white, is_exec=True, is_input=False) self.exec_out_plug.setParentItem(self) else: self.exec_out_plug.setPos(out_pos) else: if not self.exec_in_plug and self.is_break: self.exec_in_plug = NodeGraphicsPlug(pos=exec_in_pos, radius=exec_radius, color=QtCore.Qt.red, is_exec=True, is_input=True, is_break=self.is_break) self.exec_in_plug.setParentItem(self) elif self.exec_in_plug and not self.is_break: self.scene().removeItem(self.exec_in_plug) self.exec_in_plug = None if self.exec_out_plug: self.scene().removeItem(self.exec_out_plug) self.exec_out_plug = None if lod > MIN_LOD: # draw attr dots offset = -6 for fill in self.attr_dots: painter.setBrush(QtCore.Qt.white) if fill: painter.setBrush(QtCore.Qt.white) else: painter.setBrush(QtCore.Qt.NoBrush) dots_color = QtGui.QColor(QtCore.Qt.white).darker( self.dim_factor) painter.setPen(QtGui.QPen(dots_color, 0.5)) dot_x = self.max_width - 15 dot_y = (self.title_rect_height / 2) + offset painter.drawEllipse(QtCore.QPointF(dot_x, dot_y), 2, 2) offset += 6 # draw title painter.setFont(self.title_font) title_str = nxt_path.node_name_from_node_path(self.node_path) font_metrics = QtGui.QFontMetrics(self.title_font) width = self.max_width - 40 if self.error_list: width -= 20 if lod > MIN_LOD: painter.setPen( QtGui.QColor(QtCore.Qt.white).darker(self.dim_factor)) if not self.node_enabled: painter.setPen(QtGui.QColor(QtCore.Qt.white).darker(150)) title = font_metrics.elidedText(title_str, QtCore.Qt.ElideRight, width) painter.drawText(15, 0, self.max_width - 15, self.title_rect_height, QtCore.Qt.AlignVCenter, title) else: painter.setBrush( QtGui.QColor(QtCore.Qt.white).darker(self.dim_factor)) if not self.node_enabled: painter.setBrush(QtGui.QColor(QtCore.Qt.white).darker(150)) proxy_rect = font_metrics.boundingRect(title_str) r_width = proxy_rect.width() * .8 height = proxy_rect.height() painter.drawRect(15, height * .8, min(r_width, width), height * .2) if lod > MIN_LOD: # draw error if self.error_list: pos = QtCore.QPointF(self.max_width - 45, self.title_rect_height / 4) error_item = ErrorItem(font=QtGui.QFont('Roboto', 16, 75), pos=pos, text='!') error_item.setParentItem(self) error_item.setZValue(50) self.error_item = error_item # draw collapse state arrow for arrow in self.collapse_arrows: self.scene().removeItem(arrow) if lod > MIN_LOD: self.collapse_arrows = [] # TODO calculation needed arrows should be done outside drawing if self.collapse_state: des_colors = self.model.get_descendant_colors(self.node_path) filled = self.model.has_children(self.node_path) if not filled: des_colors = [QtCore.Qt.white] elif not des_colors: disp = self.model.comp_layer des_colors = [ self.model.get_node_color(self.node_path, disp) ] i = 0 num = len(des_colors) for c in des_colors: arrow = CollapseArrow(self, filled=filled, color=c) arrow_width = arrow.width * 1.1 center_offset = (arrow_width * (num * .5) - arrow_width * .5) cur_offset = (i * arrow_width) pos = ((self.max_width * .5) + center_offset - cur_offset) arrow.setPos(pos, self.boundingRect().height()) self.collapse_arrows += [arrow] i += 1
def paint_foreground(self): """ Paint the current item with the appropriate foreground color. """ self.setForeground(QtGui.QBrush(QtGui.QColor(self.parent.text_color)))
def default(node, painter, option, widget): frame = QtCore.QRectF(QtCore.QPointF(0, 0), node.geometry().size()) # use 3 levels of detail lod = node.canvasRef().getLodValueFromCurrentScale(3) SWITCH_LOD = 3 color = node.color color.setAlpha(230) if node.isSelected(): color = color.lighter(150) if node.isTemp: color = color.lighter(50) color.setAlpha(50) br = QtGui.QBrush(color) painter.setBrush(br) pen = QtGui.QPen(QtCore.Qt.black, 0.5) painter.setPen(QtCore.Qt.NoPen) r = frame if lod < SWITCH_LOD: r.setWidth(r.width() - pen.width()) r.setHeight(r.height() - pen.width()) r.setX(pen.width()) r.setY(r.y() + pen.width()) painter.drawRoundedRect(r, NodeDefaults().CORNERS_ROUND_FACTOR, NodeDefaults().CORNERS_ROUND_FACTOR) else: painter.drawRect(r) br = QtGui.QBrush() painter.setBrush(br) if node.drawlabel: lr = QtCore.QRectF(r) lr.setHeight(node.labelHeight + NodeDefaults().CONTENT_MARGINS / 2) headColor = node.headColor if node.isTemp: headColor = headColor.lighter(50) headColor.setAlpha(50) if lod < SWITCH_LOD: b = QtGui.QLinearGradient(0, 0, lr.width(), 0) b.setColorAt(0, headColor.lighter(60)) b.setColorAt(0.5, headColor) b.setColorAt(1, headColor.darker(50)) path = QtGui.QPainterPath() path.setFillRule(QtCore.Qt.WindingFill) path.addRoundedRect(lr, NodeDefaults().CORNERS_ROUND_FACTOR, NodeDefaults().CORNERS_ROUND_FACTOR) lr.setY(lr.y() + NodeDefaults().CORNERS_ROUND_FACTOR) path.addRect(lr) painter.fillPath(path, b) else: painter.fillRect(lr, headColor) if option.state & QStyle.State_Selected: # pen.setColor(Colors.Yellow) pen.setColor( node.canvasRef().window().styleSheetEditor.style.MainColor) pen.setStyle(node.opt_pen_selected_type) pen.setWidth(pen.width() * 1.5) painter.setPen(pen) painter.setBrush(QtGui.QColor(0, 0, 0, 0)) if lod < SWITCH_LOD: painter.drawRoundedRect(r, NodeDefaults().CORNERS_ROUND_FACTOR, NodeDefaults().CORNERS_ROUND_FACTOR) else: painter.drawRect(r) NodePainter.drawResizeHandles(node, painter, option, widget)
def setBackgroundColor(self, color): # Qt.py doesn't handle this, so maintain compatibility try: super(LogRecordItem, self).setBackgroundColor(color) except AttributeError: self.setBackground(QtGui.QBrush(color))