Esempio n. 1
0
 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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
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()
Esempio n. 5
0
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()
Esempio n. 6
0
    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()
Esempio n. 7
0
    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)
Esempio n. 9
0
    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)
Esempio n. 10
0
    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)
Esempio n. 11
0
    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)
Esempio n. 12
0
    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)
Esempio n. 13
0
    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)
Esempio n. 14
0
    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)
Esempio n. 15
0
    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)