def initUi(self): from multi_script_editor import scriptEditor self.mainWindow = qtutils.sessionWindow() self.widget = scriptEditor.scriptEditorClass() self.dialog = QtWidgets.QDockWidget("%s" % self.widget.windowTitle(), self.mainWindow) self.mainWindow.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dialog) self.dialog.setWidget(self.widget)
def __init__(self, parent=None): super(LiveScriptEditorWindowUI, self).__init__(parent) # Class properties self.main_layout = QtWidgets.QVBoxLayout() self.script_output = ScriptConsoleOutputUI(self) self.script_output.setFont( QtGui.QFontDatabase.systemFont(QtGui.QFontDatabase.FixedFont)) self.script_output_dock = QtWidgets.QDockWidget() self.script_output_dock.setWindowTitle("Output") self.script_output_dock.setWidget(self.script_output) # self.script_output_dock.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea) self.script_tree = ScriptTree() self.script_tree_dock = QtWidgets.QDockWidget() self.script_tree_dock.setWindowTitle("Script Tree") self.script_tree_dock.setWidget(self.script_tree)
def __init__(self,parent=None): super(MainWidget,self).__init__(parent) self.setWindowTitle((u"依靠窗口")) widget = SplitterWidget() self.setCentralWidget(widget) #停靠窗口 1 dock1=QtWidgets.QDockWidget((u"停靠窗口 1"),self) dock1.setFeatures(QtWidgets.QDockWidget.DockWidgetMovable) dock1.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|QtCore.Qt.RightDockWidgetArea) te1=QtWidgets.QTextEdit((u"窗口 1,可在 Main Window 的左部和右部停靠,不可浮动,不可关闭")) dock1.setWidget(te1) self.addDockWidget(QtCore.Qt.RightDockWidgetArea,dock1) #停靠窗口 2 dock2=QtWidgets.QDockWidget((u"停靠窗口 2"),self) dock2.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable|QtWidgets.QDockWidget.DockWidgetClosable) # dock2.setTitleBarWidget() te2=QtWidgets.QTextEdit((u"窗口 2,只可浮动")) dock2.setWidget(te2) self.addDockWidget(QtCore.Qt.RightDockWidgetArea,dock2) #停靠窗口 2 dock4=QtWidgets.QDockWidget((u"停靠窗口 4"),self) dock4.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable|QtWidgets.QDockWidget.DockWidgetClosable) te4=QtWidgets.QTextEdit((u"窗口 4,只可浮动")) dock4.setWidget(te4) self.addDockWidget(QtCore.Qt.RightDockWidgetArea,dock4) #停靠窗口 3 dock3=QtWidgets.QDockWidget((u"停靠窗口 3"),self) dock3.setFeatures(QtWidgets.QDockWidget.AllDockWidgetFeatures) te3=QtWidgets.QTextEdit((u"窗口 3,可在 Main Window 任意位置停靠,可浮动,可关闭")) dock3.setWidget(te3) self.addDockWidget(QtCore.Qt.BottomDockWidgetArea,dock3) #dock1 和dock4 合并 self.tabifyDockWidget(dock1, dock4)
def test_load_ui_dockwidget(): """Tests to see if the baseinstance loading loads a QDockWidget properly""" import sys from Qt import QtWidgets, QtCompat app = QtWidgets.QApplication(sys.argv) win = QtWidgets.QDockWidget() QtCompat.loadUi(self.ui_qdockwidget, win) assert hasattr(win, 'lineEdit'), \ "loadUi could not load instance to main window" app.exit()
def test_load_ui_existingLayoutOnDockWidget(): """Tests to see if loading a ui onto a layout in a DockWidget works""" import sys from Qt import QtWidgets, QtCompat msgs = 'QLayout: Attempting to add QLayout "" to QDockWidget ' \ '"", which already has a layout' with ignoreQtMessageHandler([msgs]): app = QtWidgets.QApplication(sys.argv) win = QtWidgets.QDockWidget() QtWidgets.QComboBox(win) QtWidgets.QHBoxLayout(win) QtCompat.loadUi(self.ui_qdockwidget, win) app.exit()
def _make_widgets(self, display_controls): self.main_window = ViewQtWindow(self.exit_event) self.mdi_area = QtWidgets.QMdiArea(self.main_window) self.config_dock = QtWidgets.QDockWidget('Options', self.main_window) self.config_dock.setObjectName('config_dock') self.scroll_widget = QtWidgets.QScrollArea(self.config_dock) self.config_widget = QtWidgets.QFrame(self.scroll_widget) self.scroll_widget.setWidget(self.config_widget) self.scroll_widget.setWidgetResizable(True) self.config_dock.setWidget(self.scroll_widget) self.main_window.setCentralWidget(self.mdi_area) self.main_window.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.config_dock) if not display_controls: self.config_dock.close() self._make_config_widgets() self._make_visuals() self.main_window.show() self.main_window._load_state()
def add_script_tab(self, file_path=None): # custom QT widget for ScriptEditing script_text_edit = PythonScriptTextEdit(file_path=file_path) script_text_edit.setFont( QtGui.QFontDatabase.systemFont(QtGui.QFontDatabase.FixedFont)) script_text_edit.setWordWrapMode(QtGui.QTextOption.NoWrap) # syntax highlight python_syntax_highlight.PythonHighlighter(script_text_edit.document()) # Dock Widget for ScriptTab script_tabs_dock = QtWidgets.QDockWidget() script_tabs_dock.setWidget(script_text_edit) script_text_edit.dock_widget = script_tabs_dock # not very safe if file_path: script_text_edit.load_script(file_path) self.show_message("Opened: {}".format(file_path)) else: script_text_edit.script_name = "Python" script_text_edit.set_dock_tab_name("Python") # dock to existing script tab, or make new at the bottom if self.script_docks: self.tabifyDockWidget(self.script_docks[-1], script_tabs_dock) else: self.addDockWidget(QtCore.Qt.BottomDockWidgetArea, script_tabs_dock) # show new tab and set focus to ti script_tabs_dock.show() script_tabs_dock.raise_() script_text_edit.setFocus( QtCore.Qt.FocusReason.ActiveWindowFocusReason) self.script_docks.append(script_tabs_dock)
def buildUI(self): mainSplitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal, self) self.tree = QtWidgets.QTreeWidget() # tree self.tree.setColumnCount(2) self.tree.setHeaderLabels(['Category', 'Value']) root = QtWidgets.QTreeWidgetItem(self.tree) root.setText(0, u'模型') search = "1" inputfiled = "pid" sql_info = self.sql_back(search, inputfiled) for i in sql_info: print i[1] QtWidgets.QTreeWidgetItem(root, [i[1]], 0) name_test = i[1] print name_test, type(name_test), 'name_test<<<<<<<<<<<<<<<<<<<<' self.sql_dict[name_test] = i[2] for k, v in self.sql_dict.items(): print k, v self.tree.addTopLevelItem(root) self.tree.clicked.connect(self.on_treeview_clicked3) mainSplitter.addWidget(self.tree) rightSplitter = QtWidgets.QSplitter(QtCore.Qt.Vertical, mainSplitter) rightSplitter.setOpaqueResize(False) self.listWidget = ThumbListWidget(self) self.listWidget2 = ThumbListWidget(self) self.listWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.listWidget.customContextMenuRequested.connect( self.listItemRightClicked) self.listWidget2.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.listWidget2.customContextMenuRequested.connect( self.listItemRightClicked2) self.listWidget2.addfile.connect(self.ref_something) rightSplitter.addWidget(self.listWidget) rightSplitter.addWidget(self.listWidget2) size = 64 buffer = 12 self.listWidget.setViewMode(QtWidgets.QListWidget.IconMode) self.listWidget.setIconSize(QtCore.QSize(size, size)) self.listWidget.setResizeMode(QtWidgets.QListWidget.Adjust) self.listWidget.setGridSize(QtCore.QSize(size + buffer, size + buffer)) self.listWidget.setDragEnabled(True) self.listWidget2.setIconSize(QtCore.QSize(size, size)) self.listWidget2.setResizeMode(QtWidgets.QListWidget.Adjust) self.listWidget2.setGridSize(QtCore.QSize(size + buffer, size + buffer)) self.listWidget2.setDragEnabled(True) mainSplitter.setStretchFactor(1, 20) rightSplitter.setStretchFactor(2, 1) self.setCentralWidget(mainSplitter) #停靠窗口 1 dock1 = QtWidgets.QDockWidget((u"停靠窗口 1"), self) dock1.setFeatures(QtWidgets.QDockWidget.DockWidgetMovable) dock1.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea) te1 = QtWidgets.QTextEdit((u"窗口 1,可在 Main Window 的左部和右部停靠,不可浮动,不可关闭")) dock1.setWidget(te1) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock1) #停靠窗口 2 dock2 = QtWidgets.QDockWidget((u"停靠窗口 2"), self) dock2.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable | QtWidgets.QDockWidget.DockWidgetClosable) # dock2.setTitleBarWidget() te2 = QtWidgets.QTextEdit((u"窗口 2,只可浮动")) dock2.setWidget(te2) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock2) #停靠窗口 2 dock4 = QtWidgets.QDockWidget((u"停靠窗口 4"), self) dock4.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable | QtWidgets.QDockWidget.DockWidgetClosable) te4 = QtWidgets.QTextEdit((u"窗口 4,只可浮动")) dock4.setWidget(te4) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock4) #停靠窗口 3 dock3 = QtWidgets.QDockWidget((u"停靠窗口 3"), self) dock3.setFeatures(QtWidgets.QDockWidget.AllDockWidgetFeatures) te3 = QtWidgets.QTextEdit((u"窗口 3,可在 Main Window 任意位置停靠,可浮动,可关闭")) dock3.setWidget(te3) self.addDockWidget(QtCore.Qt.BottomDockWidgetArea, dock3) #dock1 和dock4 合并 self.tabifyDockWidget(dock1, dock4)
def __init__(self, args=None): super().__init__() MainWindow._self = self self.fileName = None self.simServer = args.server if args: settings.setDebug(args.debug) if args.file: # TODO absolute paths self.fileName = args.file self.setObjectName("ts2_main_window") self.editorWindow = None self.setGeometry(100, 100, 800, 600) self.setWindowTitle( self.tr("ts2 - Train Signalling Simulation - %s") % __VERSION__) # Simulation self.simulation = None self.webSocket = None self.serverPID = None if settings.debug: websocket.enableTrace(True) # Actions ====================================== self.openAction = QtWidgets.QAction(self.tr("&Open..."), self) self.openAction.setShortcut(QtGui.QKeySequence.Open) self.openAction.setToolTip( self.tr("Open a simulation or a " "previously saved game")) self.openAction.triggered.connect(self.onOpenSimulation) self.closeAction = QtWidgets.QAction(self.tr("&Close")) self.closeAction.setShortcut(QtGui.QKeySequence.Close) self.closeAction.setToolTip(self.tr("Close the current simulation")) self.closeAction.triggered.connect(self.simulationClose) self.openRecentAction = QtWidgets.QAction(self.tr("Recent"), self) menu = QtWidgets.QMenu() self.openRecentAction.setMenu(menu) menu.triggered.connect(self.onRecent) self.saveGameAsAction = QtWidgets.QAction(self.tr("&Save game"), self) self.saveGameAsAction.setShortcut(QtGui.QKeySequence.SaveAs) self.saveGameAsAction.setToolTip(self.tr("Save the current game")) self.saveGameAsAction.triggered.connect(self.saveGame) self.saveGameAsAction.setEnabled(False) # Properties self.propertiesAction = QtWidgets.QAction( self.tr("Sim &Properties..."), self) self.propertiesAction.setShortcut(QtGui.QKeySequence( self.tr("Ctrl+P"))) self.propertiesAction.setToolTip(self.tr("Edit simulation properties")) self.propertiesAction.triggered.connect(self.openPropertiesDialog) self.propertiesAction.setEnabled(False) # Settings self.settingsAction = QtWidgets.QAction(self.tr("Settings..."), self) self.settingsAction.setToolTip(self.tr("User Settings")) self.settingsAction.triggered.connect(self.openSettingsDialog) self.quitAction = QtWidgets.QAction(self.tr("&Quit"), self) self.quitAction.setShortcut(QtGui.QKeySequence(self.tr("Ctrl+Q"))) self.quitAction.setToolTip(self.tr("Quit TS2")) self.quitAction.triggered.connect(self.close) self.editorAction = QtWidgets.QAction(self.tr("&Open Editor"), self) self.editorAction.setShortcut(QtGui.QKeySequence(self.tr("Ctrl+E"))) self.editorAction.setToolTip(self.tr("Open the simulation editor")) self.editorAction.triggered.connect(self.openEditor) self.editorCurrAction = QtWidgets.QAction(self.tr("&Edit"), self) self.editorCurrAction.setToolTip(self.tr("Open this sim in editor")) self.editorCurrAction.triggered.connect(self.onEditorCurrent) # Web Links self.actionGroupWwww = QtWidgets.QActionGroup(self) self.actionGroupWwww.triggered.connect(self.onWwwAction) self.aboutWwwHompage = QtWidgets.QAction(self.tr("&TS2 Homepage"), self) self.aboutWwwHompage.setProperty("url", __PROJECT_WWW__) self.actionGroupWwww.addAction(self.aboutWwwHompage) self.aboutWwwProject = QtWidgets.QAction(self.tr("&TS2 Project"), self) self.aboutWwwProject.setProperty("url", __PROJECT_HOME__) self.actionGroupWwww.addAction(self.aboutWwwProject) self.aboutWwwBugs = QtWidgets.QAction(self.tr("&TS2 Bugs && Feedback"), self) self.aboutWwwBugs.setProperty("url", __PROJECT_BUGS__) self.actionGroupWwww.addAction(self.aboutWwwBugs) # About self.aboutAction = QtWidgets.QAction(self.tr("&About TS2..."), self) self.aboutAction.setToolTip(self.tr("About TS2")) self.aboutAction.triggered.connect(self.showAboutBox) self.aboutQtAction = QtWidgets.QAction(self.tr("About Qt..."), self) self.aboutQtAction.setToolTip(self.tr("About Qt")) self.aboutQtAction.triggered.connect(QtWidgets.QApplication.aboutQt) # =============================================== # Menus # FileMenu self.fileMenu = self.menuBar().addMenu(self.tr("&File")) self.fileMenu.addAction(self.openAction) self.fileMenu.addAction(self.openRecentAction) self.fileMenu.addAction(self.saveGameAsAction) self.fileMenu.addAction(self.closeAction) self.fileMenu.addSeparator() self.fileMenu.addAction(self.propertiesAction) self.fileMenu.addAction(self.settingsAction) self.fileMenu.addSeparator() self.fileMenu.addAction(self.quitAction) # Editor Menu self.editorMenu = self.menuBar().addMenu(self.tr("&Editor")) self.editorMenu.addAction(self.editorAction) self.editorMenu.addAction(self.editorCurrAction) # Help Menu self.helpMenu = self.menuBar().addMenu(self.tr("&Help")) self.helpMenu.addAction(self.aboutWwwHompage) self.helpMenu.addAction(self.aboutWwwProject) self.helpMenu.addAction(self.aboutWwwBugs) self.helpMenu.addSeparator() self.helpMenu.addAction(self.aboutAction) self.helpMenu.addAction(self.aboutQtAction) self.menuBar().setCursor(Qt.PointingHandCursor) # ============================================================== # ToolBars # ========= # Actions tbar, tbg = self._make_toolbar_group(self.tr("Simulation"), bg="#dddddd") self.addToolBar(tbar) tbg.addAction(self.openAction) tbg.addAction(self.editorCurrAction) # ========= # Speed tbar, tbg = self._make_toolbar_group(self.tr("Speed"), bg="#aaaaaa") self.addToolBar(tbar) # Time factor spinBox self.timeFactorSpinBox = QtWidgets.QSpinBox(self) self.timeFactorSpinBox.setRange(1, 10) self.timeFactorSpinBox.setSingleStep(1) self.timeFactorSpinBox.setValue(1) self.timeFactorSpinBox.setSuffix("x") tbg.addWidget(self.timeFactorSpinBox) # ========= # Zoom tbar, tbg = self._make_toolbar_group(self.tr("Zoom"), bg="white") self.addToolBar(tbar) tbg.setMaximumWidth(300) self.zoomWidget = widgets.ZoomWidget(self) self.zoomWidget.valueChanged.connect(self.zoom) tbg.addWidget(self.zoomWidget) # ========= # Score tbar, tbg = self._make_toolbar_group(self.tr("Penalty"), bg="#dddddd") self.addToolBar(tbar) # Score display self.scoreDisplay = QtWidgets.QLCDNumber(self) self.scoreDisplay.setFrameShape(QtWidgets.QFrame.NoFrame) self.scoreDisplay.setFrameShadow(QtWidgets.QFrame.Plain) self.scoreDisplay.setSegmentStyle(QtWidgets.QLCDNumber.Flat) self.scoreDisplay.setNumDigits(5) self.scoreDisplay.setMinimumHeight(30) tbg.addWidget(self.scoreDisplay) # ========= # Clock tbar, tbg = self._make_toolbar_group(self.tr("Clock"), fg="Yellow", bg="#444444") self.addToolBar(tbar) # Pause button self.buttPause = QtWidgets.QToolButton(self) self.buttPause.setText(self.tr("Pause")) self.buttPause.setCheckable(True) self.buttPause.setAutoRaise(True) self.buttPause.setMaximumWidth(50) self.buttPause.setChecked(True) tbg.addWidget(self.buttPause) # Clock Widget self.clockWidget = widgets.ClockWidget(self) tbg.addWidget(self.clockWidget) # ==================== # Sim Title tbar = QtWidgets.QToolBar() tbar.setObjectName("toolbar_label_title") tbar.setFloatable(False) tbar.setMovable(False) self.addToolBar(tbar) self.lblTitle = QtWidgets.QLabel() lbl_sty = "background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0," \ " stop: 0 #fefefe, stop: 1 #CECECE);" lbl_sty += " color: #333333; font-size: 16pt; padding: 1px;" self.lblTitle.setStyleSheet(lbl_sty) self.lblTitle.setAlignment(Qt.AlignRight | Qt.AlignVCenter) self.lblTitle.setText("no sim loaded") tbar.addWidget(self.lblTitle) tbar.layout().setSizeConstraint(QtWidgets.QLayout.SetMaximumSize) # =============================================================== # Dock Widgets # Train Info self.trainInfoPanel = QtWidgets.QDockWidget( self.tr("Train Information"), self) self.trainInfoPanel.setObjectName("train_information") self.trainInfoPanel.setFeatures( QtWidgets.QDockWidget.DockWidgetMovable | QtWidgets.QDockWidget.DockWidgetFloatable) self.trainInfoView = QtWidgets.QTreeView(self) self.trainInfoView.setItemsExpandable(False) self.trainInfoView.setRootIsDecorated(False) self.trainInfoView.setContextMenuPolicy(Qt.CustomContextMenu) self.trainInfoView.customContextMenuRequested.connect( self.showContextMenu) self.trainInfoPanel.setWidget(self.trainInfoView) self.addDockWidget(Qt.RightDockWidgetArea, self.trainInfoPanel) # Service Info self.serviceInfoPanel = QtWidgets.QDockWidget( self.tr("Service Information"), self) self.serviceInfoPanel.setObjectName("service_information") self.serviceInfoPanel.setFeatures( QtWidgets.QDockWidget.DockWidgetMovable | QtWidgets.QDockWidget.DockWidgetFloatable) sty = "background-color: #444444; color: white; padding: 2px;" \ " font-size: 10pt" wid = QtWidgets.QScrollArea() self.serviceInfoPanel.setWidget(wid) grid = QtWidgets.QGridLayout() wid.setLayout(grid) self.lblServiceInfoCode = QtWidgets.QLabel() self.lblServiceInfoCode.setStyleSheet(sty) self.lblServiceInfoCode.setText("") self.lblServiceInfoCode.setMaximumWidth(100) grid.addWidget(self.lblServiceInfoCode, 0, 0) self.lblServiceInfoDescription = QtWidgets.QLabel() self.lblServiceInfoDescription.setText("") self.lblServiceInfoDescription.setStyleSheet(sty) self.lblServiceInfoDescription.setScaledContents(False) grid.addWidget(self.lblServiceInfoDescription, 0, 1) self.serviceInfoView = QtWidgets.QTreeView(self) self.serviceInfoView.setItemsExpandable(False) self.serviceInfoView.setRootIsDecorated(False) grid.addWidget(self.serviceInfoView, 1, 0, 1, 2) self.serviceInfoPanel.setWidget(wid) grid.setColumnStretch(0, 1) grid.setColumnStretch(1, 4) grid.setSpacing(0) grid.setContentsMargins(0, 0, 0, 0) self.addDockWidget(Qt.RightDockWidgetArea, self.serviceInfoPanel) # Stations + Places Info self.placeInfoPanel = QtWidgets.QDockWidget( self.tr("Station Information"), self) self.placeInfoPanel.setObjectName("place_information") self.placeInfoPanel.setFeatures( QtWidgets.QDockWidget.DockWidgetMovable | QtWidgets.QDockWidget.DockWidgetFloatable) wid = QtWidgets.QScrollArea() self.placeInfoPanel.setWidget(wid) hb = QtWidgets.QVBoxLayout() wid.setLayout(hb) self.lblPlaceInfoName = QtWidgets.QLabel() self.lblPlaceInfoName.setStyleSheet(sty) self.lblPlaceInfoName.setText("") hb.addWidget(self.lblPlaceInfoName) self.placeInfoView = QtWidgets.QTreeView(self) self.placeInfoView.setItemsExpandable(False) self.placeInfoView.setRootIsDecorated(False) self.placeInfoView.setModel(placeitem.Place.selectedPlaceModel) hb.addWidget(self.placeInfoView) hb.setSpacing(0) hb.setContentsMargins(0, 0, 0, 0) self.placeInfoPanel.setWidget(wid) self.addDockWidget(Qt.RightDockWidgetArea, self.placeInfoPanel) # Trains self.trainListPanel = QtWidgets.QDockWidget(self.tr("Trains"), self) self.trainListPanel.setFeatures( QtWidgets.QDockWidget.DockWidgetMovable | QtWidgets.QDockWidget.DockWidgetFloatable) self.trainListPanel.setObjectName("trains_panel") self.trainListView = trainlistview.TrainListView(self) self.simulationLoaded.connect(self.trainListView.setupTrainList) self.trainListPanel.setWidget(self.trainListView) self.addDockWidget(Qt.BottomDockWidgetArea, self.trainListPanel) # Services self.serviceListPanel = QtWidgets.QDockWidget(self.tr("Services"), self) self.serviceListPanel.setFeatures( QtWidgets.QDockWidget.DockWidgetMovable | QtWidgets.QDockWidget.DockWidgetFloatable) self.serviceListPanel.setObjectName("services_panel") self.serviceListView = servicelistview.ServiceListView(self) self.simulationLoaded.connect(self.serviceListView.setupServiceList) self.serviceListPanel.setWidget(self.serviceListView) self.addDockWidget(Qt.BottomDockWidgetArea, self.serviceListPanel) self.tabifyDockWidget(self.serviceListPanel, self.trainListPanel) # Message Logger self.loggerPanel = QtWidgets.QDockWidget(self.tr("Messages"), self) self.loggerPanel.setFeatures( QtWidgets.QDockWidget.DockWidgetMovable | QtWidgets.QDockWidget.DockWidgetFloatable) self.loggerPanel.setObjectName("logger_panel") self.loggerView = QtWidgets.QTreeView(self) self.loggerView.setItemsExpandable(False) self.loggerView.setRootIsDecorated(False) self.loggerView.setHeaderHidden(True) self.loggerView.setPalette(QtGui.QPalette(Qt.black)) self.loggerView.setVerticalScrollMode( QtWidgets.QAbstractItemView.ScrollPerItem) self.loggerPanel.setWidget(self.loggerView) self.addDockWidget(Qt.BottomDockWidgetArea, self.loggerPanel) # =========================================== # Main Board self.board = QtWidgets.QWidget(self) # Canvas self.view = widgets.XGraphicsView(self.board) self.view.setInteractive(True) self.view.setRenderHint(QtGui.QPainter.Antialiasing, False) self.view.setDragMode(QtWidgets.QGraphicsView.ScrollHandDrag) self.view.setPalette(QtGui.QPalette(Qt.black)) self.view.wheelChanged.connect(self.onWheelChanged) # Display self.grid = QtWidgets.QVBoxLayout() self.grid.setContentsMargins(0, 0, 0, 0) self.grid.addWidget(self.view) self.grid.setSpacing(0) self.board.setLayout(self.grid) self.setCentralWidget(self.board) # Editor self.editorOpened = False self.setControlsDisabled(True) self.refreshRecent() settings.restoreWindow(self) if args and args.file: if args.edit: self.openEditor(args.file) # else: # here we call after window is shown QtCore.QTimer.singleShot(100, self.onAfterShow)
def buildUI(self): # menu fileNewAction = self.createAction("&New...", self.fileNew, QtGui.QKeySequence.New, "filenew", "Create an image file") fileOpenAction = self.createAction("&Open...", self.fileNew, QtGui.QKeySequence.Open, "fileopen", "Open an existing image file") fileSaveAction = self.createAction("&Save", self.fileNew, QtGui.QKeySequence.Save, "filesave", "Save the image") fileSaveAsAction = self.createAction( "Save &As...", self.fileNew, icon="filesaveas", tip="Save the image using a new name") filePrintAction = self.createAction("&Print", self.fileNew, QtGui.QKeySequence.Print, "fileprint", "Print the image") fileQuitAction = self.createAction("&Quit", self.fileNew, "Ctrl+Q", "filequit", "Close the application") editInvertAction = self.createAction("&Invert", self.fileNew, "Ctrl+I", "editinvert", "Invert the image's colors", True, "toggled(bool)") editSwapRedAndBlueAction = self.createAction( "Sw&ap Red and Blue", self.fileNew, "Ctrl+A", "editswap", "Swap the image's red and blue color components", True, "toggled(bool)") editZoomAction = self.createAction("&Zoom...", self.fileNew, "Alt+Z", "editzoom", "Zoom the image") mirrorGroup = QtWidgets.QActionGroup(self) editUnMirrorAction = self.createAction("&Unmirror", self.fileNew, "Ctrl+U", "editunmirror", "Unmirror the image", True, "toggled(bool)") mirrorGroup.addAction(editUnMirrorAction) editMirrorHorizontalAction = self.createAction( "Mirror &Horizontally", self.fileNew, "Ctrl+H", "editmirrorhoriz", "Horizontally mirror the image", True, "toggled(bool)") mirrorGroup.addAction(editMirrorHorizontalAction) editMirrorVerticalAction = self.createAction( "Mirror &Vertically", self.fileNew, "Ctrl+V", "editmirrorvert", "Vertically mirror the image", True, "toggled(bool)") mirrorGroup.addAction(editMirrorVerticalAction) editUnMirrorAction.setChecked(True) helpAboutAction = self.createAction("&About Image Changer", self.helpAbout) helpHelpAction = self.createAction("&Help", self.helpHelp, QtGui.QKeySequence.HelpContents) self.fileMenu = self.menuBar().addMenu("&File") self.fileMenuActions = (fileNewAction, fileOpenAction, fileSaveAction, fileSaveAsAction, None, filePrintAction, fileQuitAction) # self.fileMenu.aboutToShow.connect(self.updateFileMenu) editMenu = self.menuBar().addMenu("&Edit") self.addActions( editMenu, (editInvertAction, editSwapRedAndBlueAction, editZoomAction)) mirrorMenu = editMenu.addMenu(QtGui.QIcon(":/editmirror.png"), "&Mirror") self.addActions(mirrorMenu, (editUnMirrorAction, editMirrorHorizontalAction, editMirrorVerticalAction)) helpMenu = self.menuBar().addMenu("&Help") self.addActions(helpMenu, (helpAboutAction, helpHelpAction)) fileToolbar = self.addToolBar("File") fileToolbar.setObjectName("FileToolBar") self.addActions(fileToolbar, (fileNewAction, fileOpenAction, fileSaveAsAction)) editToolbar = self.addToolBar("Edit") editToolbar.setObjectName("EditToolBar") self.addActions( editToolbar, (editInvertAction, editSwapRedAndBlueAction, editUnMirrorAction, editMirrorVerticalAction, editMirrorHorizontalAction)) self.zoomSpinBox = QtWidgets.QSpinBox() self.zoomSpinBox.setRange(1, 400) self.zoomSpinBox.setSuffix(" %") self.zoomSpinBox.setValue(100) self.zoomSpinBox.setToolTip("Zoom the image") self.zoomSpinBox.setStatusTip(self.zoomSpinBox.toolTip()) self.zoomSpinBox.setFocusPolicy(QtCore.Qt.NoFocus) self.zoomSpinBox.valueChanged[int].connect(self.fileNew) editToolbar.addWidget(self.zoomSpinBox) self.searchLineEdit = QtWidgets.QLineEdit("Search...") self.searchLineEdit.setToolTip("Searching") self.searchLineEdit.setMaximumWidth(200) self.searchLineEdit.returnPressed.connect(self.populate2) editToolbar.addWidget(self.searchLineEdit) # self.addActions(self.imageLabel, (editInvertAction, # editSwapRedAndBlueAction, editUnMirrorAction, # editMirrorVerticalAction, editMirrorHorizontalAction)) self.resetableActions = ((editInvertAction, False), (editSwapRedAndBlueAction, False), (editUnMirrorAction, True)) settings = QtCore.QSettings("MyCompany", "MyApp") self.recentFiles = settings.value("RecentFiles") self.restoreGeometry( QtCore.QByteArray(settings.value("MainWindow/Geometry"))) self.restoreState(QtCore.QByteArray( settings.value("MainWindow/State"))) # menu above mainSplitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal, self) self.tree = QtWidgets.QTreeWidget() # tree self.tree.setColumnCount(2) self.tree.setHeaderLabels([u'分类', '']) root = QtWidgets.QTreeWidgetItem(self.tree) root.setText(0, u'模型') search = "1" inputfiled = "pid" sql_info = self.sql_back(search, inputfiled) for i in sql_info: print i[1] QtWidgets.QTreeWidgetItem(root, [i[1]], 0) name_test = i[1] print name_test, type(name_test), 'name_test<<<<<<<<<<<<<<<<<<<<' self.sql_dict[name_test] = i[2] for k, v in self.sql_dict.items(): print k, v self.tree.addTopLevelItem(root) self.tree.clicked.connect(self.on_treeview_clicked3) mainSplitter.addWidget(self.tree) rightSplitter = QtWidgets.QSplitter(QtCore.Qt.Vertical, mainSplitter) rightSplitter.setOpaqueResize(False) self.listWidget = ThumbListWidget(self) self.listWidget2 = ThumbListWidget(self) self.listWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.listWidget.customContextMenuRequested.connect( self.listItemRightClicked) self.listWidget2.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.listWidget2.customContextMenuRequested.connect( self.listItemRightClicked2) self.listWidget2.addfile.connect(self.ref_something) rightSplitter.addWidget(self.listWidget) rightSplitter.addWidget(self.listWidget2) size = 64 buffer = 12 self.listWidget.setViewMode(QtWidgets.QListWidget.IconMode) self.listWidget.setIconSize(QtCore.QSize(size, size)) self.listWidget.setResizeMode(QtWidgets.QListWidget.Adjust) self.listWidget.setGridSize(QtCore.QSize(size + buffer, size + buffer)) self.listWidget.setDragEnabled(True) self.listWidget2.setIconSize(QtCore.QSize(size, size)) self.listWidget2.setResizeMode(QtWidgets.QListWidget.Adjust) self.listWidget2.setGridSize(QtCore.QSize(size + buffer, size + buffer)) self.listWidget2.setDragEnabled(True) mainSplitter.setStretchFactor(1, 20) rightSplitter.setStretchFactor(0, 5) self.setCentralWidget(mainSplitter) #停靠窗口 1 dock1 = QtWidgets.QDockWidget((u"停靠窗口 1"), self) dock1.setFeatures(QtWidgets.QDockWidget.DockWidgetMovable) dock1.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea) te1 = QtWidgets.QTextEdit((u"窗口 1,可在 Main Window 的左部和右部停靠,不可浮动,不可关闭")) dock1.setWidget(te1) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock1) #停靠窗口 2 dock2 = QtWidgets.QDockWidget((u"停靠窗口 2"), self) dock2.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable | QtWidgets.QDockWidget.DockWidgetClosable) # dock2.setTitleBarWidget() te2 = QtWidgets.QTextEdit((u"窗口 2,只可浮动")) dock2.setWidget(te2) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock2) #停靠窗口 2 dock4 = QtWidgets.QDockWidget((u"停靠窗口 4"), self) dock4.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable | QtWidgets.QDockWidget.DockWidgetClosable) te4 = QtWidgets.QTextEdit((u"窗口 4,只可浮动")) dock4.setWidget(te4) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock4) #停靠窗口 3 # dock3=QtWidgets.QDockWidget((u"停靠窗口 3"),self) # dock3.setFeatures(QtWidgets.QDockWidget.AllDockWidgetFeatures) # te3=QtWidgets.QTextEdit((u"窗口 3,可在 Main Window 任意位置停靠,可浮动,可关闭")) # dock3.setWidget(te3) # self.addDockWidget(QtCore.Qt.BottomDockWidgetArea,dock3) #dock1 和dock4 合并 self.tabifyDockWidget(dock1, dock4)
def setupUi(self, QSpectrumAnalyzerMainWindow): QSpectrumAnalyzerMainWindow.setObjectName("QSpectrumAnalyzerMainWindow") QSpectrumAnalyzerMainWindow.resize(1200, 840) self.centralwidget = QtWidgets.QWidget(QSpectrumAnalyzerMainWindow) self.centralwidget.setObjectName("centralwidget") self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget) self.horizontalLayout.setObjectName("horizontalLayout") self.plotSplitter = QtWidgets.QSplitter(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.plotSplitter.sizePolicy().hasHeightForWidth()) self.plotSplitter.setSizePolicy(sizePolicy) self.plotSplitter.setOrientation(QtCore.Qt.Vertical) self.plotSplitter.setObjectName("plotSplitter") self.mainPlotLayout = GraphicsLayoutWidget(self.plotSplitter) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.mainPlotLayout.sizePolicy().hasHeightForWidth()) self.mainPlotLayout.setSizePolicy(sizePolicy) self.mainPlotLayout.setObjectName("mainPlotLayout") self.waterfallPlotLayout = GraphicsLayoutWidget(self.plotSplitter) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.waterfallPlotLayout.sizePolicy().hasHeightForWidth()) self.waterfallPlotLayout.setSizePolicy(sizePolicy) self.waterfallPlotLayout.setObjectName("waterfallPlotLayout") self.horizontalLayout.addWidget(self.plotSplitter) QSpectrumAnalyzerMainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(QSpectrumAnalyzerMainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1200, 32)) self.menubar.setObjectName("menubar") self.menu_File = QtWidgets.QMenu(self.menubar) self.menu_File.setObjectName("menu_File") self.menu_Help = QtWidgets.QMenu(self.menubar) self.menu_Help.setObjectName("menu_Help") QSpectrumAnalyzerMainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(QSpectrumAnalyzerMainWindow) self.statusbar.setObjectName("statusbar") QSpectrumAnalyzerMainWindow.setStatusBar(self.statusbar) self.controlsDockWidget = QtWidgets.QDockWidget(QSpectrumAnalyzerMainWindow) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.controlsDockWidget.sizePolicy().hasHeightForWidth()) self.controlsDockWidget.setSizePolicy(sizePolicy) self.controlsDockWidget.setMinimumSize(QtCore.QSize(190, 130)) self.controlsDockWidget.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable|QtWidgets.QDockWidget.DockWidgetMovable) self.controlsDockWidget.setObjectName("controlsDockWidget") self.controlsDockWidgetContents = QtWidgets.QWidget() self.controlsDockWidgetContents.setObjectName("controlsDockWidgetContents") self.gridLayout_2 = QtWidgets.QGridLayout(self.controlsDockWidgetContents) self.gridLayout_2.setContentsMargins(0, 0, 0, 0) self.gridLayout_2.setObjectName("gridLayout_2") self.startButton = QtWidgets.QPushButton(self.controlsDockWidgetContents) self.startButton.setObjectName("startButton") self.gridLayout_2.addWidget(self.startButton, 0, 0, 1, 1) self.stopButton = QtWidgets.QPushButton(self.controlsDockWidgetContents) self.stopButton.setObjectName("stopButton") self.gridLayout_2.addWidget(self.stopButton, 0, 1, 1, 1) self.singleShotButton = QtWidgets.QPushButton(self.controlsDockWidgetContents) self.singleShotButton.setObjectName("singleShotButton") self.gridLayout_2.addWidget(self.singleShotButton, 1, 0, 1, 2) spacerItem = QtWidgets.QSpacerItem(20, 561, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout_2.addItem(spacerItem, 2, 0, 1, 1) self.controlsDockWidget.setWidget(self.controlsDockWidgetContents) QSpectrumAnalyzerMainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.controlsDockWidget) self.frequencyDockWidget = QtWidgets.QDockWidget(QSpectrumAnalyzerMainWindow) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.frequencyDockWidget.sizePolicy().hasHeightForWidth()) self.frequencyDockWidget.setSizePolicy(sizePolicy) self.frequencyDockWidget.setMinimumSize(QtCore.QSize(197, 166)) self.frequencyDockWidget.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable|QtWidgets.QDockWidget.DockWidgetMovable) self.frequencyDockWidget.setObjectName("frequencyDockWidget") self.frequencyDockWidgetContents = QtWidgets.QWidget() self.frequencyDockWidgetContents.setObjectName("frequencyDockWidgetContents") self.formLayout = QtWidgets.QFormLayout(self.frequencyDockWidgetContents) self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.ExpandingFieldsGrow) self.formLayout.setContentsMargins(0, 0, 0, 0) self.formLayout.setObjectName("formLayout") self.label_2 = QtWidgets.QLabel(self.frequencyDockWidgetContents) self.label_2.setObjectName("label_2") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_2) self.startFreqSpinBox = QtWidgets.QDoubleSpinBox(self.frequencyDockWidgetContents) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.startFreqSpinBox.sizePolicy().hasHeightForWidth()) self.startFreqSpinBox.setSizePolicy(sizePolicy) self.startFreqSpinBox.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.startFreqSpinBox.setProperty("showGroupSeparator", True) self.startFreqSpinBox.setDecimals(3) self.startFreqSpinBox.setMinimum(0.0) self.startFreqSpinBox.setMaximum(2200.0) self.startFreqSpinBox.setProperty("value", 87.0) self.startFreqSpinBox.setObjectName("startFreqSpinBox") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.startFreqSpinBox) self.label_3 = QtWidgets.QLabel(self.frequencyDockWidgetContents) self.label_3.setObjectName("label_3") self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_3) self.stopFreqSpinBox = QtWidgets.QDoubleSpinBox(self.frequencyDockWidgetContents) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.stopFreqSpinBox.sizePolicy().hasHeightForWidth()) self.stopFreqSpinBox.setSizePolicy(sizePolicy) self.stopFreqSpinBox.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.stopFreqSpinBox.setProperty("showGroupSeparator", True) self.stopFreqSpinBox.setDecimals(3) self.stopFreqSpinBox.setMinimum(0.0) self.stopFreqSpinBox.setMaximum(2200.0) self.stopFreqSpinBox.setProperty("value", 108.0) self.stopFreqSpinBox.setObjectName("stopFreqSpinBox") self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.stopFreqSpinBox) self.label = QtWidgets.QLabel(self.frequencyDockWidgetContents) self.label.setObjectName("label") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label) self.binSizeSpinBox = QtWidgets.QDoubleSpinBox(self.frequencyDockWidgetContents) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.binSizeSpinBox.sizePolicy().hasHeightForWidth()) self.binSizeSpinBox.setSizePolicy(sizePolicy) self.binSizeSpinBox.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.binSizeSpinBox.setProperty("showGroupSeparator", True) self.binSizeSpinBox.setDecimals(3) self.binSizeSpinBox.setMinimum(0.0) self.binSizeSpinBox.setMaximum(10000.0) self.binSizeSpinBox.setProperty("value", 10.0) self.binSizeSpinBox.setObjectName("binSizeSpinBox") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.binSizeSpinBox) spacerItem1 = QtWidgets.QSpacerItem(20, 0, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.formLayout.setItem(3, QtWidgets.QFormLayout.SpanningRole, spacerItem1) self.frequencyDockWidget.setWidget(self.frequencyDockWidgetContents) QSpectrumAnalyzerMainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.frequencyDockWidget) self.settingsDockWidget = QtWidgets.QDockWidget(QSpectrumAnalyzerMainWindow) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.settingsDockWidget.sizePolicy().hasHeightForWidth()) self.settingsDockWidget.setSizePolicy(sizePolicy) self.settingsDockWidget.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable|QtWidgets.QDockWidget.DockWidgetMovable) self.settingsDockWidget.setObjectName("settingsDockWidget") self.settingsDockWidgetContents = QtWidgets.QWidget() self.settingsDockWidgetContents.setObjectName("settingsDockWidgetContents") self.gridLayout = QtWidgets.QGridLayout(self.settingsDockWidgetContents) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setObjectName("gridLayout") self.label_4 = QtWidgets.QLabel(self.settingsDockWidgetContents) self.label_4.setObjectName("label_4") self.gridLayout.addWidget(self.label_4, 0, 0, 1, 1) self.label_6 = QtWidgets.QLabel(self.settingsDockWidgetContents) self.label_6.setObjectName("label_6") self.gridLayout.addWidget(self.label_6, 0, 1, 1, 1) self.intervalSpinBox = QtWidgets.QDoubleSpinBox(self.settingsDockWidgetContents) self.intervalSpinBox.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.intervalSpinBox.setMaximum(999.0) self.intervalSpinBox.setProperty("value", 1.0) self.intervalSpinBox.setObjectName("intervalSpinBox") self.gridLayout.addWidget(self.intervalSpinBox, 1, 0, 1, 1) self.label_5 = QtWidgets.QLabel(self.settingsDockWidgetContents) self.label_5.setObjectName("label_5") self.gridLayout.addWidget(self.label_5, 2, 0, 1, 1) self.label_7 = QtWidgets.QLabel(self.settingsDockWidgetContents) self.label_7.setObjectName("label_7") self.gridLayout.addWidget(self.label_7, 2, 1, 1, 1) self.ppmSpinBox = QtWidgets.QSpinBox(self.settingsDockWidgetContents) self.ppmSpinBox.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.ppmSpinBox.setMinimum(-999) self.ppmSpinBox.setMaximum(999) self.ppmSpinBox.setObjectName("ppmSpinBox") self.gridLayout.addWidget(self.ppmSpinBox, 3, 0, 1, 1) self.mainCurveCheckBox = QtWidgets.QCheckBox(self.settingsDockWidgetContents) self.mainCurveCheckBox.setChecked(True) self.mainCurveCheckBox.setObjectName("mainCurveCheckBox") self.gridLayout.addWidget(self.mainCurveCheckBox, 4, 0, 1, 1) self.colorsButton = QtWidgets.QPushButton(self.settingsDockWidgetContents) self.colorsButton.setObjectName("colorsButton") self.gridLayout.addWidget(self.colorsButton, 4, 1, 1, 2) self.peakHoldMaxCheckBox = QtWidgets.QCheckBox(self.settingsDockWidgetContents) self.peakHoldMaxCheckBox.setObjectName("peakHoldMaxCheckBox") self.gridLayout.addWidget(self.peakHoldMaxCheckBox, 5, 0, 1, 1) self.peakHoldMinCheckBox = QtWidgets.QCheckBox(self.settingsDockWidgetContents) self.peakHoldMinCheckBox.setObjectName("peakHoldMinCheckBox") self.gridLayout.addWidget(self.peakHoldMinCheckBox, 5, 1, 1, 2) self.averageCheckBox = QtWidgets.QCheckBox(self.settingsDockWidgetContents) self.averageCheckBox.setObjectName("averageCheckBox") self.gridLayout.addWidget(self.averageCheckBox, 6, 0, 1, 1) self.smoothCheckBox = QtWidgets.QCheckBox(self.settingsDockWidgetContents) self.smoothCheckBox.setObjectName("smoothCheckBox") self.gridLayout.addWidget(self.smoothCheckBox, 7, 0, 1, 1) self.smoothButton = QtWidgets.QToolButton(self.settingsDockWidgetContents) self.smoothButton.setAutoRaise(False) self.smoothButton.setObjectName("smoothButton") self.gridLayout.addWidget(self.smoothButton, 7, 2, 1, 1) self.persistenceCheckBox = QtWidgets.QCheckBox(self.settingsDockWidgetContents) self.persistenceCheckBox.setObjectName("persistenceCheckBox") self.gridLayout.addWidget(self.persistenceCheckBox, 8, 0, 1, 1) self.persistenceButton = QtWidgets.QToolButton(self.settingsDockWidgetContents) self.persistenceButton.setAutoRaise(False) self.persistenceButton.setObjectName("persistenceButton") self.gridLayout.addWidget(self.persistenceButton, 8, 2, 1, 1) spacerItem2 = QtWidgets.QSpacerItem(20, 1, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem2, 9, 0, 1, 1) self.cropSpinBox = QtWidgets.QSpinBox(self.settingsDockWidgetContents) self.cropSpinBox.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.cropSpinBox.setObjectName("cropSpinBox") self.gridLayout.addWidget(self.cropSpinBox, 3, 1, 1, 2) self.gainSpinBox = QtWidgets.QDoubleSpinBox(self.settingsDockWidgetContents) self.gainSpinBox.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.gainSpinBox.setDecimals(1) self.gainSpinBox.setMinimum(-1.0) self.gainSpinBox.setMaximum(999.0) self.gainSpinBox.setSingleStep(1.0) self.gainSpinBox.setProperty("value", -1.0) self.gainSpinBox.setObjectName("gainSpinBox") self.gridLayout.addWidget(self.gainSpinBox, 1, 1, 1, 2) self.settingsDockWidget.setWidget(self.settingsDockWidgetContents) QSpectrumAnalyzerMainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.settingsDockWidget) self.levelsDockWidget = QtWidgets.QDockWidget(QSpectrumAnalyzerMainWindow) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.levelsDockWidget.sizePolicy().hasHeightForWidth()) self.levelsDockWidget.setSizePolicy(sizePolicy) self.levelsDockWidget.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable|QtWidgets.QDockWidget.DockWidgetMovable) self.levelsDockWidget.setObjectName("levelsDockWidget") self.levelsDockWidgetContents = QtWidgets.QWidget() self.levelsDockWidgetContents.setObjectName("levelsDockWidgetContents") self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.levelsDockWidgetContents) self.verticalLayout_6.setContentsMargins(0, 0, 0, 0) self.verticalLayout_6.setObjectName("verticalLayout_6") self.histogramPlotLayout = GraphicsLayoutWidget(self.levelsDockWidgetContents) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.histogramPlotLayout.sizePolicy().hasHeightForWidth()) self.histogramPlotLayout.setSizePolicy(sizePolicy) self.histogramPlotLayout.setObjectName("histogramPlotLayout") self.verticalLayout_6.addWidget(self.histogramPlotLayout) self.levelsDockWidget.setWidget(self.levelsDockWidgetContents) QSpectrumAnalyzerMainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.levelsDockWidget) self.action_Settings = QtWidgets.QAction(QSpectrumAnalyzerMainWindow) self.action_Settings.setObjectName("action_Settings") self.action_Quit = QtWidgets.QAction(QSpectrumAnalyzerMainWindow) self.action_Quit.setObjectName("action_Quit") self.action_About = QtWidgets.QAction(QSpectrumAnalyzerMainWindow) self.action_About.setObjectName("action_About") self.menu_File.addAction(self.action_Settings) self.menu_File.addSeparator() self.menu_File.addAction(self.action_Quit) self.menu_Help.addAction(self.action_About) self.menubar.addAction(self.menu_File.menuAction()) self.menubar.addAction(self.menu_Help.menuAction()) self.label_2.setBuddy(self.startFreqSpinBox) self.label_3.setBuddy(self.stopFreqSpinBox) self.label.setBuddy(self.binSizeSpinBox) self.label_4.setBuddy(self.intervalSpinBox) self.label_6.setBuddy(self.gainSpinBox) self.label_5.setBuddy(self.ppmSpinBox) self.label_7.setBuddy(self.cropSpinBox) self.retranslateUi(QSpectrumAnalyzerMainWindow) QtCore.QMetaObject.connectSlotsByName(QSpectrumAnalyzerMainWindow) QSpectrumAnalyzerMainWindow.setTabOrder(self.startButton, self.stopButton) QSpectrumAnalyzerMainWindow.setTabOrder(self.stopButton, self.singleShotButton) QSpectrumAnalyzerMainWindow.setTabOrder(self.singleShotButton, self.startFreqSpinBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.startFreqSpinBox, self.stopFreqSpinBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.stopFreqSpinBox, self.binSizeSpinBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.binSizeSpinBox, self.intervalSpinBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.intervalSpinBox, self.gainSpinBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.gainSpinBox, self.ppmSpinBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.ppmSpinBox, self.cropSpinBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.cropSpinBox, self.mainCurveCheckBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.mainCurveCheckBox, self.colorsButton) QSpectrumAnalyzerMainWindow.setTabOrder(self.colorsButton, self.peakHoldMaxCheckBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.peakHoldMaxCheckBox, self.peakHoldMinCheckBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.peakHoldMinCheckBox, self.averageCheckBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.averageCheckBox, self.smoothCheckBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.smoothCheckBox, self.smoothButton) QSpectrumAnalyzerMainWindow.setTabOrder(self.smoothButton, self.persistenceCheckBox) QSpectrumAnalyzerMainWindow.setTabOrder(self.persistenceCheckBox, self.persistenceButton) QSpectrumAnalyzerMainWindow.setTabOrder(self.persistenceButton, self.histogramPlotLayout) QSpectrumAnalyzerMainWindow.setTabOrder(self.histogramPlotLayout, self.waterfallPlotLayout) QSpectrumAnalyzerMainWindow.setTabOrder(self.waterfallPlotLayout, self.mainPlotLayout)
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.setEnabled(True) MainWindow.resize(863, 543) MainWindow.setDocumentMode(True) MainWindow.setDockNestingEnabled(True) MainWindow.setDockOptions(QtWidgets.QMainWindow.AllowNestedDocks | QtWidgets.QMainWindow.AllowTabbedDocks | QtWidgets.QMainWindow.AnimatedDocks) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setLocale( QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates)) self.centralwidget.setObjectName("centralwidget") self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_3.setContentsMargins(1, 1, 1, 1) self.gridLayout_3.setObjectName("gridLayout_3") self.SceneWidget = QtWidgets.QWidget(self.centralwidget) self.SceneWidget.setObjectName("SceneWidget") self.gridLayout = QtWidgets.QGridLayout(self.SceneWidget) self.gridLayout.setSpacing(2) self.gridLayout.setContentsMargins(1, 1, 1, 1) self.gridLayout.setObjectName("gridLayout") self.widgetCurrentGraphPath = QtWidgets.QWidget(self.SceneWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.widgetCurrentGraphPath.sizePolicy().hasHeightForWidth()) self.widgetCurrentGraphPath.setSizePolicy(sizePolicy) self.widgetCurrentGraphPath.setObjectName("widgetCurrentGraphPath") self.horizontalLayout_3 = QtWidgets.QHBoxLayout( self.widgetCurrentGraphPath) self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.layoutGraphPath = QtWidgets.QHBoxLayout() self.layoutGraphPath.setSpacing(2) self.layoutGraphPath.setContentsMargins(-1, 0, -1, 0) self.layoutGraphPath.setObjectName("layoutGraphPath") self.horizontalLayout_3.addLayout(self.layoutGraphPath) self.gridLayout.addWidget(self.widgetCurrentGraphPath, 1, 0, 1, 1) self.SceneLayout = QtWidgets.QGridLayout() self.SceneLayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize) self.SceneLayout.setObjectName("SceneLayout") self.gridLayout.addLayout(self.SceneLayout, 4, 0, 1, 1) self.CompoundPropertiesWidget = QtWidgets.QWidget(self.SceneWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.CompoundPropertiesWidget.sizePolicy().hasHeightForWidth()) self.CompoundPropertiesWidget.setSizePolicy(sizePolicy) self.CompoundPropertiesWidget.setObjectName("CompoundPropertiesWidget") self.gridLayout_2 = QtWidgets.QGridLayout( self.CompoundPropertiesWidget) self.gridLayout_2.setContentsMargins(0, 0, 0, 0) self.gridLayout_2.setObjectName("gridLayout_2") self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setContentsMargins(-1, 0, -1, 0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label_2 = QtWidgets.QLabel(self.CompoundPropertiesWidget) self.label_2.setObjectName("label_2") self.horizontalLayout_2.addWidget(self.label_2) self.leCompoundName = QtWidgets.QLineEdit( self.CompoundPropertiesWidget) self.leCompoundName.setObjectName("leCompoundName") self.horizontalLayout_2.addWidget(self.leCompoundName) self.label = QtWidgets.QLabel(self.CompoundPropertiesWidget) self.label.setObjectName("label") self.horizontalLayout_2.addWidget(self.label) self.leCompoundCategory = QtWidgets.QLineEdit( self.CompoundPropertiesWidget) self.leCompoundCategory.setObjectName("leCompoundCategory") self.horizontalLayout_2.addWidget(self.leCompoundCategory) self.gridLayout_2.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) self.gridLayout.addWidget(self.CompoundPropertiesWidget, 2, 0, 1, 1) self.gridLayout_3.addWidget(self.SceneWidget, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 863, 26)) self.menuBar.setObjectName("menuBar") MainWindow.setMenuBar(self.menuBar) self.toolBar = QtWidgets.QToolBar(MainWindow) self.toolBar.setObjectName("toolBar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.dockWidgetNodeView = QtWidgets.QDockWidget(MainWindow) self.dockWidgetNodeView.setMinimumSize(QtCore.QSize(200, 113)) self.dockWidgetNodeView.setAllowedAreas( QtCore.Qt.BottomDockWidgetArea | QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea) self.dockWidgetNodeView.setObjectName("dockWidgetNodeView") self.dockWidgetContents = QtWidgets.QWidget() self.dockWidgetContents.setObjectName("dockWidgetContents") self.verticalLayout = QtWidgets.QVBoxLayout(self.dockWidgetContents) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.scrollArea = QtWidgets.QScrollArea(self.dockWidgetContents) self.scrollArea.setSizeAdjustPolicy( QtWidgets.QAbstractScrollArea.AdjustToContents) self.scrollArea.setWidgetResizable(True) self.scrollArea.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 198, 475)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.verticalLayout_5 = QtWidgets.QVBoxLayout( self.scrollAreaWidgetContents) self.verticalLayout_5.setContentsMargins(0, 0, 0, 0) self.verticalLayout_5.setObjectName("verticalLayout_5") self.propertiesLayout = QtWidgets.QVBoxLayout() self.propertiesLayout.setObjectName("propertiesLayout") self.verticalLayout_5.addLayout(self.propertiesLayout) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout_5.addItem(spacerItem) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.verticalLayout.addWidget(self.scrollArea) self.dockWidgetNodeView.setWidget(self.dockWidgetContents) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidgetNodeView) self.toolBar.addSeparator() self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.setEnabled(True) MainWindow.resize(1608, 875) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/resources/LogoBpApp.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) MainWindow.setDocumentMode(False) MainWindow.setDockOptions(QtWidgets.QMainWindow.AllowTabbedDocks) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setLocale( QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates)) self.centralwidget.setObjectName("centralwidget") self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_3.setSpacing(1) self.gridLayout_3.setContentsMargins(1, 1, 1, 1) self.gridLayout_3.setObjectName("gridLayout_3") self.horizontal_splitter = QtWidgets.QSplitter(self.centralwidget) self.horizontal_splitter.setStyleSheet("") self.horizontal_splitter.setOrientation(QtCore.Qt.Horizontal) self.horizontal_splitter.setObjectName("horizontal_splitter") self.SceneWidget = QtWidgets.QWidget(self.horizontal_splitter) self.SceneWidget.setObjectName("SceneWidget") self.gridLayout = QtWidgets.QGridLayout(self.SceneWidget) self.gridLayout.setContentsMargins(1, 1, 1, 1) self.gridLayout.setObjectName("gridLayout") self.SceneLayout = QtWidgets.QGridLayout() self.SceneLayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize) self.SceneLayout.setContentsMargins(0, 0, 0, 0) self.SceneLayout.setObjectName("SceneLayout") self.gridLayout.addLayout(self.SceneLayout, 0, 0, 1, 1) self.gridLayout_3.addWidget(self.horizontal_splitter, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 1608, 26)) self.menuBar.setObjectName("menuBar") self.menuEdit = QtWidgets.QMenu(self.menuBar) self.menuEdit.setObjectName("menuEdit") self.menuView = QtWidgets.QMenu(self.menuBar) self.menuView.setObjectName("menuView") self.menuFile = QtWidgets.QMenu(self.menuBar) self.menuFile.setObjectName("menuFile") self.menuHelp = QtWidgets.QMenu(self.menuBar) self.menuHelp.setObjectName("menuHelp") self.menuPlugins = QtWidgets.QMenu(self.menuBar) self.menuPlugins.setObjectName("menuPlugins") MainWindow.setMenuBar(self.menuBar) self.toolBar = QtWidgets.QToolBar(MainWindow) self.toolBar.setObjectName("toolBar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.dockWidgetVariables = QtWidgets.QDockWidget(MainWindow) self.dockWidgetVariables.setMinimumSize(QtCore.QSize(150, 113)) self.dockWidgetVariables.setFloating(False) self.dockWidgetVariables.setFeatures( QtWidgets.QDockWidget.AllDockWidgetFeatures) self.dockWidgetVariables.setObjectName("dockWidgetVariables") self.dockWidgetContents_5 = QtWidgets.QWidget() self.dockWidgetContents_5.setObjectName("dockWidgetContents_5") self.verticalLayout_2 = QtWidgets.QVBoxLayout( self.dockWidgetContents_5) self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.scrollArea_2 = QtWidgets.QScrollArea(self.dockWidgetContents_5) self.scrollArea_2.setWidgetResizable(True) self.scrollArea_2.setObjectName("scrollArea_2") self.scrollAreaWidgetContents_2 = QtWidgets.QWidget() self.scrollAreaWidgetContents_2.setGeometry( QtCore.QRect(0, 0, 148, 781)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.scrollAreaWidgetContents_2.sizePolicy().hasHeightForWidth()) self.scrollAreaWidgetContents_2.setSizePolicy(sizePolicy) self.scrollAreaWidgetContents_2.setObjectName( "scrollAreaWidgetContents_2") self.gridLayout_5 = QtWidgets.QGridLayout( self.scrollAreaWidgetContents_2) self.gridLayout_5.setContentsMargins(0, 0, 0, 0) self.gridLayout_5.setObjectName("gridLayout_5") self.leftDockGridLayout = QtWidgets.QGridLayout() self.leftDockGridLayout.setObjectName("leftDockGridLayout") self.gridLayout_5.addLayout(self.leftDockGridLayout, 0, 0, 1, 1) self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2) self.verticalLayout_2.addWidget(self.scrollArea_2) self.dockWidgetVariables.setWidget(self.dockWidgetContents_5) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.dockWidgetVariables) self.dockWidgetNodeView = QtWidgets.QDockWidget(MainWindow) self.dockWidgetNodeView.setMinimumSize(QtCore.QSize(500, 166)) self.dockWidgetNodeView.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas) self.dockWidgetNodeView.setObjectName("dockWidgetNodeView") self.dockWidgetContents = QtWidgets.QWidget() self.dockWidgetContents.setObjectName("dockWidgetContents") self.verticalLayout = QtWidgets.QVBoxLayout(self.dockWidgetContents) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.scrollArea = QtWidgets.QScrollArea(self.dockWidgetContents) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents_3 = QtWidgets.QWidget() self.scrollAreaWidgetContents_3.setGeometry( QtCore.QRect(0, 0, 498, 614)) self.scrollAreaWidgetContents_3.setObjectName( "scrollAreaWidgetContents_3") self.gridLayout_4 = QtWidgets.QGridLayout( self.scrollAreaWidgetContents_3) self.gridLayout_4.setContentsMargins(0, 0, 0, 0) self.gridLayout_4.setObjectName("gridLayout_4") self.formLayout = QtWidgets.QFormLayout() self.formLayout.setObjectName("formLayout") self.gridLayout_4.addLayout(self.formLayout, 0, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents_3) self.verticalLayout.addWidget(self.scrollArea) self.dockWidgetNodeView.setWidget(self.dockWidgetContents) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidgetNodeView) self.dockWidgetUndoStack = QtWidgets.QDockWidget(MainWindow) self.dockWidgetUndoStack.setEnabled(True) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/icons/resources/history.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.dockWidgetUndoStack.setWindowIcon(icon1) self.dockWidgetUndoStack.setObjectName("dockWidgetUndoStack") self.dockWidgetContents_3 = QtWidgets.QWidget() sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.dockWidgetContents_3.sizePolicy().hasHeightForWidth()) self.dockWidgetContents_3.setSizePolicy(sizePolicy) self.dockWidgetContents_3.setObjectName("dockWidgetContents_3") self.gridLayout_6 = QtWidgets.QGridLayout(self.dockWidgetContents_3) self.gridLayout_6.setSpacing(1) self.gridLayout_6.setContentsMargins(1, 1, 1, 1) self.gridLayout_6.setObjectName("gridLayout_6") self.dockWidgetUndoStack.setWidget(self.dockWidgetContents_3) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidgetUndoStack) self.actionDelete = QtWidgets.QAction(MainWindow) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/icons/resources/delete_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionDelete.setIcon(icon2) self.actionDelete.setObjectName("actionDelete") self.actionSave = QtWidgets.QAction(MainWindow) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(":/icons/resources/save_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionSave.setIcon(icon3) self.actionSave.setObjectName("actionSave") self.actionLoad = QtWidgets.QAction(MainWindow) icon4 = QtGui.QIcon() icon4.addPixmap( QtGui.QPixmap(":/icons/resources/folder_open_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionLoad.setIcon(icon4) self.actionLoad.setObjectName("actionLoad") self.actionSave_as = QtWidgets.QAction(MainWindow) icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(":/icons/resources/save_as_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionSave_as.setIcon(icon5) self.actionSave_as.setObjectName("actionSave_as") self.actionPlot_graph = QtWidgets.QAction(MainWindow) icon6 = QtGui.QIcon() icon6.addPixmap(QtGui.QPixmap(":/icons/resources/plot_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionPlot_graph.setIcon(icon6) self.actionPlot_graph.setObjectName("actionPlot_graph") self.actionScreenshot = QtWidgets.QAction(MainWindow) icon7 = QtGui.QIcon() icon7.addPixmap(QtGui.QPixmap(":/icons/resources/screenshot_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionScreenshot.setIcon(icon7) self.actionScreenshot.setObjectName("actionScreenshot") self.actionShortcuts = QtWidgets.QAction(MainWindow) icon8 = QtGui.QIcon() icon8.addPixmap(QtGui.QPixmap(":/icons/resources/shortcuts_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionShortcuts.setIcon(icon8) self.actionShortcuts.setObjectName("actionShortcuts") self.actionAlignLeft = QtWidgets.QAction(MainWindow) icon9 = QtGui.QIcon() icon9.addPixmap(QtGui.QPixmap(":/icons/resources/alignleft.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionAlignLeft.setIcon(icon9) self.actionAlignLeft.setObjectName("actionAlignLeft") self.actionAlignUp = QtWidgets.QAction(MainWindow) icon10 = QtGui.QIcon() icon10.addPixmap(QtGui.QPixmap(":/icons/resources/aligntop.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionAlignUp.setIcon(icon10) self.actionAlignUp.setObjectName("actionAlignUp") self.actionPropertyView = QtWidgets.QAction(MainWindow) icon11 = QtGui.QIcon() icon11.addPixmap(QtGui.QPixmap(":/icons/resources/property_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionPropertyView.setIcon(icon11) self.actionPropertyView.setObjectName("actionPropertyView") self.actionAlignBottom = QtWidgets.QAction(MainWindow) icon12 = QtGui.QIcon() icon12.addPixmap(QtGui.QPixmap(":/icons/resources/alignbottom.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionAlignBottom.setIcon(icon12) self.actionAlignBottom.setObjectName("actionAlignBottom") self.actionAlignRight = QtWidgets.QAction(MainWindow) icon13 = QtGui.QIcon() icon13.addPixmap(QtGui.QPixmap(":/icons/resources/alignright.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionAlignRight.setIcon(icon13) self.actionAlignRight.setObjectName("actionAlignRight") self.actionNew_Node = QtWidgets.QAction(MainWindow) icon14 = QtGui.QIcon() icon14.addPixmap(QtGui.QPixmap(":/icons/resources/brick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionNew_Node.setIcon(icon14) self.actionNew_Node.setObjectName("actionNew_Node") self.actionNew_Command = QtWidgets.QAction(MainWindow) icon15 = QtGui.QIcon() icon15.addPixmap(QtGui.QPixmap(":/icons/resources/script.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionNew_Command.setIcon(icon15) self.actionNew_Command.setObjectName("actionNew_Command") self.actionFunction_Library = QtWidgets.QAction(MainWindow) icon16 = QtGui.QIcon() icon16.addPixmap(QtGui.QPixmap(":/icons/resources/function.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionFunction_Library.setIcon(icon16) self.actionFunction_Library.setObjectName("actionFunction_Library") self.actionClear_history = QtWidgets.QAction(MainWindow) icon17 = QtGui.QIcon() icon17.addPixmap(QtGui.QPixmap(":/icons/resources/clear_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionClear_history.setIcon(icon17) self.actionClear_history.setObjectName("actionClear_history") self.actionVariables = QtWidgets.QAction(MainWindow) icon18 = QtGui.QIcon() icon18.addPixmap(QtGui.QPixmap(":/icons/resources/variable.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionVariables.setIcon(icon18) self.actionVariables.setObjectName("actionVariables") self.actionHistory = QtWidgets.QAction(MainWindow) self.actionHistory.setIcon(icon1) self.actionHistory.setObjectName("actionHistory") self.actionNew_pin = QtWidgets.QAction(MainWindow) icon19 = QtGui.QIcon() icon19.addPixmap(QtGui.QPixmap(":/icons/resources/pin.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionNew_pin.setIcon(icon19) self.actionNew_pin.setObjectName("actionNew_pin") self.actionNew = QtWidgets.QAction(MainWindow) icon20 = QtGui.QIcon() icon20.addPixmap(QtGui.QPixmap(":/icons/resources/new_file_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionNew.setIcon(icon20) self.actionNew.setObjectName("actionNew") self.menuEdit.addAction(self.actionDelete) self.menuEdit.addSeparator() self.menuEdit.addAction(self.actionClear_history) self.menuView.addAction(self.actionVariables) self.menuView.addAction(self.actionHistory) self.menuView.addAction(self.actionPropertyView) self.menuFile.addAction(self.actionNew) self.menuFile.addAction(self.actionSave) self.menuFile.addAction(self.actionLoad) self.menuFile.addAction(self.actionSave_as) self.menuHelp.addAction(self.actionPlot_graph) self.menuHelp.addAction(self.actionShortcuts) self.menuPlugins.addAction(self.actionNew_Node) self.menuPlugins.addAction(self.actionNew_Command) self.menuPlugins.addAction(self.actionFunction_Library) self.menuPlugins.addAction(self.actionNew_pin) self.menuBar.addAction(self.menuFile.menuAction()) self.menuBar.addAction(self.menuEdit.menuAction()) self.menuBar.addAction(self.menuView.menuAction()) self.menuBar.addAction(self.menuPlugins.menuAction()) self.menuBar.addAction(self.menuHelp.menuAction()) self.toolBar.addAction(self.actionPropertyView) self.toolBar.addAction(self.actionVariables) self.toolBar.addAction(self.actionHistory) self.toolBar.addSeparator() self.toolBar.addAction(self.actionPlot_graph) self.toolBar.addAction(self.actionScreenshot) self.toolBar.addSeparator() self.toolBar.addAction(self.actionAlignLeft) self.toolBar.addAction(self.actionAlignUp) self.toolBar.addAction(self.actionAlignBottom) self.toolBar.addAction(self.actionAlignRight) self.toolBar.addSeparator() self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def buildUI(self): self.sizeLabel = QtWidgets.QLabel() self.sizeLabel.setFrameStyle(QtWidgets.QFrame.StyledPanel | QtWidgets.QFrame.Sunken) status = self.statusBar() status.setSizeGripEnabled(False) status.addPermanentWidget(self.sizeLabel) status.showMessage("Ready", 5000) # menu fileNewAction = self.createAction("&New...", self.fileNew, QtGui.QKeySequence.New, "filenew", "Create an image file") fileOpenAction = self.createAction("&Open...", self.fileNew, QtGui.QKeySequence.Open, "fileopen", "Open an existing image file") fileSaveAction = self.createAction("&Save", self.fileNew, QtGui.QKeySequence.Save, "filesave", "Save the image") fileSaveAsAction = self.createAction("Save &As...", self.fileNew, icon="filesaveas", tip="Save the image using a new name") filePrintAction = self.createAction("&Print", self.fileNew, QtGui.QKeySequence.Print, "fileprint", "Print the image") fileQuitAction = self.createAction("&Quit", self.fileNew, "Ctrl+Q", "filequit", "Close the application") editInvertAction = self.createAction("&Invert", self.fileNew, "Ctrl+I", "editinvert", "Invert the image's colors", True, "toggled(bool)") editSwapRedAndBlueAction = self.createAction( "Sw&ap Red and Blue", self.fileNew, "Ctrl+A", "editswap", "Swap the image's red and blue color components", True, "toggled(bool)") editZoomAction = self.createAction("&Zoom...", self.fileNew, "Alt+Z", "editzoom", "Zoom the image") mirrorGroup = QtWidgets.QActionGroup(self) editUnMirrorAction = self.createAction("&Unmirror", self.setSizeMid, "Ctrl+U", "editunmirror", "Unmirror the image", True, "toggled(bool)") mirrorGroup.addAction(editUnMirrorAction) editMirrorHorizontalAction = self.createAction( "Mirror &Horizontally", self.setSizeBig, "Ctrl+H", "editmirrorhoriz", "Horizontally mirror the image", True, "toggled(bool)") mirrorGroup.addAction(editMirrorHorizontalAction) editMirrorVerticalAction = self.createAction( "Mirror &Vertically", self.setSizeSmall, "Ctrl+V", "editmirrorvert", "Vertically mirror the image", True, "toggled(bool)") mirrorGroup.addAction(editMirrorVerticalAction) editUnMirrorAction.setChecked(True) helpAboutAction = self.createAction("&About Image Changer", self.helpAbout) helpHelpAction = self.createAction("&Help", self.helpHelp, QtGui.QKeySequence.HelpContents) self.fileMenu = self.menuBar().addMenu("&File") self.fileMenuActions = (fileNewAction, fileOpenAction, fileSaveAction, fileSaveAsAction, None, filePrintAction, fileQuitAction) # self.fileMenu.aboutToShow.connect(self.updateFileMenu) editMenu = self.menuBar().addMenu("&Edit") self.addActions(editMenu, (editInvertAction, editSwapRedAndBlueAction, editZoomAction)) mirrorMenu = editMenu.addMenu(QtGui.QIcon(":/editmirror.png"), "&Mirror") self.addActions(mirrorMenu, (editUnMirrorAction, editMirrorHorizontalAction, editMirrorVerticalAction)) helpMenu = self.menuBar().addMenu("&Help") self.addActions(helpMenu, (helpAboutAction, helpHelpAction)) fileToolbar = self.addToolBar("File") fileToolbar.setObjectName("FileToolBar") self.addActions(fileToolbar, (fileNewAction, fileOpenAction, fileSaveAsAction)) editToolbar = self.addToolBar("Edit") editToolbar.setObjectName("EditToolBar") self.addActions(editToolbar, (editInvertAction, editSwapRedAndBlueAction, editUnMirrorAction, editMirrorVerticalAction, editMirrorHorizontalAction)) self.zoomSpinBox = QtWidgets.QSpinBox() self.zoomSpinBox.setRange(1, 400) self.zoomSpinBox.setSuffix(" %") self.zoomSpinBox.setValue(100) self.zoomSpinBox.setToolTip("Zoom the image") self.zoomSpinBox.setStatusTip(self.zoomSpinBox.toolTip()) self.zoomSpinBox.setFocusPolicy(QtCore.Qt.NoFocus) self.zoomSpinBox.valueChanged[int].connect(self.setPicSize) editToolbar.addWidget(self.zoomSpinBox) self.searchLineEdit = QtWidgets.QLineEdit() self.searchLineEdit.setPlaceholderText(u"搜索...") self.searchLineEdit.setToolTip("Searching") self.searchLineEdit.setMaximumWidth(200) self.searchLineEdit.returnPressed.connect(self.populate2) editToolbar.addWidget(self.searchLineEdit) # self.addActions(self.imageLabel, (editInvertAction, # editSwapRedAndBlueAction, editUnMirrorAction, # editMirrorVerticalAction, editMirrorHorizontalAction)) self.resetableActions = ((editInvertAction, False), (editSwapRedAndBlueAction, False), (editUnMirrorAction, True)) settings = QtCore.QSettings("MyCompany", "MyApp") self.recentFiles = settings.value("RecentFiles") self.restoreGeometry( QtCore.QByteArray(settings.value("MainWindow/Geometry"))) self.restoreState(QtCore.QByteArray(settings.value("MainWindow/State"))) # menu above mainSplitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal, self) self.tree = QtWidgets.QTreeWidget() # tree self.tree.setColumnCount(2) self.tree.setHeaderLabels([u'分类', '']) root = QtWidgets.QTreeWidgetItem(self.tree) root.setText(0, u'模型') # ---------------layer1_list layer1_list = [] search = "1" inputfiled = "pid" try: sql_info = self.sql_back(search, inputfiled) except: print 'Error<<<<<<<<<<<<<<' print "cant get information" sql_info = None # (i['pid'], i['name'], i['id'], i['description']) try: for i in sql_info: print i, "<<<<<<<<<<<<<<sql_info1" # print i[1] layre1_item = QtWidgets.QTreeWidgetItem(root, [i[1]], 0) layer1_list.append(layre1_item) name_test = i[1] # print name_test, type(name_test), 'name_test<<<<<<<<<<<<<<<<<<<<' self.sql_dict[name_test] = i[2] except: pass print len(layer1_list),"<<<layer1_list" # ---------- layer2_list = [] # search = "2" inputfiled = "pid" try: sql_info = self.sql_back(search, inputfiled) except: print 'Error<<<<<<<<<<<<<<' print "cant get information" sql_info = None # (i['pid'], i['name'], i['id'], i['description']) try: for i in sql_info: # print i[1] # 角色 layre2_item = QtWidgets.QTreeWidgetItem(layer1_list[0], [i[1]], 0) layer2_list.append(layre2_item) name_test = i[1] # print name_test, type(name_test), 'name_test<<<<<<<<<<<<<<<<<<<<' self.sql_dict[name_test] = i[2] except: pass # search = "3" inputfiled = "pid" try: sql_info = self.sql_back(search, inputfiled) except: print 'Error<<<<<<<<<<<<<<' print "cant get information" sql_info = None # (i['pid'], i['name'], i['id'], i['description']) try: for i in sql_info: # 道具 layre2_item = QtWidgets.QTreeWidgetItem(layer1_list[1], [i[1]], 0) layer2_list.append(layre2_item) name_test = i[1] self.sql_dict[name_test] = i[2] except: pass # search = "4" inputfiled = "pid" try: sql_info = self.sql_back(search, inputfiled) except: print 'Error<<<<<<<<<<<<<<' print "cant get information" sql_info = None # (i['pid'], i['name'], i['id'], i['description']) try: for i in sql_info: # 场景 layre2_item = QtWidgets.QTreeWidgetItem(layer1_list[2], [i[1]], 0) layer2_list.append(layre2_item) name_test = i[1] self.sql_dict[name_test] = i[2] except: pass # search = "7" inputfiled = "pid" try: sql_info = self.sql_back(search, inputfiled) except: print 'Error<<<<<<<<<<<<<<' print "cant get information" sql_info = None # (i['pid'], i['name'], i['id'], i['description']) try: for i in sql_info: # 动物 layre2_item = QtWidgets.QTreeWidgetItem(layer2_list[1], [i[1]], 0) # layer2_list.append(layre2_item) name_test = i[1] self.sql_dict[name_test] = i[2] except: pass # search = "9" inputfiled = "pid" try: sql_info = self.sql_back(search, inputfiled) except: print 'Error<<<<<<<<<<<<<<' print "cant get information" sql_info = None # (i['pid'], i['name'], i['id'], i['description']) try: for i in sql_info: # 城市 layre2_item = QtWidgets.QTreeWidgetItem(layer2_list[3], [i[1]], 0) # layer2_list.append(layre2_item) name_test = i[1] self.sql_dict[name_test] = i[2] except: pass # search = "10" inputfiled = "pid" try: sql_info = self.sql_back(search, inputfiled) except: print 'Error<<<<<<<<<<<<<<' print "cant get information" sql_info = None # (i['pid'], i['name'], i['id'], i['description']) try: for i in sql_info: # 自然 layer2_list[4] layre2_item = QtWidgets.QTreeWidgetItem(layer2_list[4], [i[1]], 0) # layer2_list.append(layre2_item) name_test = i[1] self.sql_dict[name_test] = i[2] except: pass # ------------------ self.tree.addTopLevelItem(root) self.tree.clicked.connect(self.on_treeview_clicked3) self.tree.setItemsExpandable(True) mainSplitter.addWidget(self.tree) rightSplitter = QtWidgets.QSplitter(QtCore.Qt.Vertical, mainSplitter) rightSplitter.setOpaqueResize(False) self.listWidget = ThumbListWidget(self) self.listWidget2 = ThumbListWidget(self) self.listWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.listWidget.customContextMenuRequested.connect(self.listItemRightClicked) self.listWidget.itemDoubleClicked.connect(self.openImage) self.listWidget2.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.listWidget2.customContextMenuRequested.connect(self.listItemRightClicked2) self.listWidget2.addfile.connect(self.ref_something) rightSplitter.addWidget(self.listWidget) rightSplitter.addWidget(self.listWidget2) size = 128 buffer = 12 self.listWidget.setViewMode(QtWidgets.QListWidget.IconMode) self.listWidget.setIconSize(QtCore.QSize(size, size)) self.listWidget.setResizeMode(QtWidgets.QListWidget.Adjust) self.listWidget.setGridSize(QtCore.QSize(size + buffer, size + buffer)) self.listWidget.setDragEnabled(True) self.listWidget.itemClicked .connect(self.info_populate) self.listWidget2.setIconSize(QtCore.QSize(size, size)) self.listWidget2.setResizeMode(QtWidgets.QListWidget.Adjust) self.listWidget2.setGridSize(QtCore.QSize(size + buffer, size + buffer)) self.listWidget2.setDragEnabled(True) mainSplitter.setStretchFactor(1, 20) rightSplitter.setStretchFactor(0, 5) self.setCentralWidget(mainSplitter) # 停靠窗口 1 dock4=QtWidgets.QDockWidget((u"上传"),self) dock4.setFeatures(QtWidgets.QDockWidget.AllDockWidgetFeatures) # dock4.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|QtCore.Qt.RightDockWidgetArea) te1=upload.UpLoad() dock4.setWidget(te1) self.addDockWidget(QtCore.Qt.RightDockWidgetArea,dock4) # 停靠窗口 4 dock1=QtWidgets.QDockWidget((u"详细信息"),self) dock1.setFeatures(QtWidgets.QDockWidget.DockWidgetMovable) dock1.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|QtCore.Qt.RightDockWidgetArea) self.info_label = QtWidgets.QLabel((u"NULL")) dock1.setWidget(self.info_label) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock1) # 停靠窗口 2 dock2=QtWidgets.QDockWidget((u"截图"),self) dock2.setFeatures(QtWidgets.QDockWidget.AllDockWidgetFeatures) # dock2.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable|QtWidgets.QDockWidget.DockWidgetClosable) # dock2.setTitleBarWidget() # te2=controllerLibraryte.showUI() # te2=QtWidgets.QTextEdit() te2 = screenshots.Screenshot() dock2.setWidget(te2) self.addDockWidget(QtCore.Qt.RightDockWidgetArea,dock2) # 停靠窗口 3 # dock3=QtWidgets.QDockWidget((u"停靠窗口 3"),self) # dock3.setFeatures(QtWidgets.QDockWidget.AllDockWidgetFeatures) # te3=QtWidgets.QTextEdit((u"窗口 3,可在 Main Window 任意位置停靠,可浮动,可关闭")) # dock3.setWidget(te3) # self.addDockWidget(QtCore.Qt.BottomDockWidgetArea,dock3) # dock4 和dock1 合并 self.tabifyDockWidget(dock4, dock1)