Пример #1
1
class MdiAplicacion(QMainWindow):

    contador = 0

    def __init__(self):
        super().__init__()

        self.inicializarGui()
    
    def inicializarGui(self):
        self.setWindowTitle('Ventanas MDI - Multiple Document Interface')

        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)

        mbr_principal = self.menuBar()
        mnu_archivo = mbr_principal.addMenu('Archivo')

        mni_agregar_ventana = QAction('Agregar ventana', self)
        mni_agregar_ventana.triggered.connect(self.agregar_ventana)

        mni_salir = QAction('Salir', self)
        mni_salir.setShortcut('Ctrl+Q')
        mni_salir.triggered.connect(self.close)

        mnu_archivo.addAction(mni_agregar_ventana)
        mnu_archivo.addAction(mni_salir)
    
    def agregar_ventana(self):
        MdiAplicacion.contador += 1

        subventana = QMdiSubWindow()
        subventana.setWindowTitle(f'Subventana {MdiAplicacion.contador}')
        self.mdi.addSubWindow(subventana)
        subventana.show()
Пример #2
0
 def finger_test(self):
     """DocString for finger_test"""
     #@todo: to be defined.
     dict_conf = self.conf.config_read()
     judge_test = int(dict_conf['Test']['test'])
     if not judge_test:
         return False
     try:
         if not self.window_graph_show.isClosed():
             self.window_graph_show.close()
     except:
         pass
     try:
         if self.window_finger_test.isClosed():
             judge = True
         else:
             judge = False
     except:
         judge = True
     finally:
         if judge:
             self.window_finger_test = WindowFingerTestLogic(
                 self.conf, self.log)
             self.window_finger_test.startTimer(0)
             sub = QMdiSubWindow()
             sub.setWidget(self.window_finger_test)
             self.mdi = QMdiArea()
             self.setCentralWidget(self.mdi)
             self.mdi.addSubWindow(sub)
             self.signal_start_refresh.connect(
                 self.window_finger_test.update_lcd)
             self.window_finger_test.show()
Пример #3
0
class App(QMainWindow):
    def __init__(self, parent=None):
        super(App, self).__init__(parent)
        self.title = "DndTool"
        self.width, self.height = 1280, 720
        self.x, self.y = 100, 100
        self.mdi = QMdiArea()
        self.menu = self.menuBar()
        self.status = self.statusBar()

        windows_menu = self.menu.addMenu('Windows')
        windows_menu.addAction("Players")
        windows_menu.addAction("Debug")
        windows_menu.triggered.connect(self.open_windows)

        self.setWindowTitle(self.title)
        self.setGeometry(self.x, self.y, self.width, self.height)
        self.setCentralWidget(self.mdi)

        self.show()

    def open_windows(self, action):
        if action.text() == "Players":
            sub = PlayersSubWindow()
            self.mdi.addSubWindow(sub)
            sub.show()
        elif action.text() == "Debug":
            print(
                [window.windowTitle() for window in self.mdi.subWindowList()])
Пример #4
0
    def InitUI(self):
        '''
        界面初始设置
        '''
        self.setWindowTitle('关注微信公众号:学点编程吧--扑克牌模拟')

        self.mid = QMdiArea()
        self.setCentralWidget(self.mid)
        # 新建一个QMdiArea类的对象,并将其设置为主窗口的中央小部件

        sendOnecardAct = QAction(QIcon('./res/sendOnecard.ico'), '发1张牌', self)
        sendOnecardAct.triggered.connect(self.sendOnecard)
        # 发1张牌命令

        sendFivecardsAct = QAction(QIcon('./res/sendFivecard.ico'), '随机5张牌', self)
        sendFivecardsAct.triggered.connect(self.sendFivecards)
        # 随机5张牌命令

        clearcardAct = QAction(QIcon('./res/clear.ico'), '清除牌', self)
        clearcardAct.triggered.connect(self.clearCards)
        # 清除牌命令

        foldcardAct = QAction(QIcon('./res/fold.ico'), '收牌', self)
        foldcardAct.triggered.connect(self.foldCards)
        # 收牌

        toolbar = self.addToolBar('工具栏')
        toolbar.addAction(sendOnecardAct)
        toolbar.addAction(sendFivecardsAct)
        toolbar.addAction(clearcardAct)
        toolbar.addAction(foldcardAct)
        #把上面的几个命令放到工具栏上

        toolbar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
Пример #5
0
    def __init__(self):
        super(MainWindow, self).__init__()

        self.mdiArea = QMdiArea()
        self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdiArea.setViewMode(QMdiArea.TabbedView)
        self.mdiArea.setDocumentMode(True)
        self.mdiArea.setTabsClosable(True)
        self.mdiArea.setTabsMovable(True)
        self.setCentralWidget(self.mdiArea)

        self.mdiArea.subWindowActivated.connect(self.updateMenus)
        self.windowMapper = QSignalMapper(self)
        self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow)

        self.createActions()
        self.createMenus()
        self.createToolBars()
        self.createStatusBar()
        self.updateMenus()

        self.readSettings()

        self.setWindowTitle("MDI")
Пример #6
0
        def init_ui(self):
            self.setWindowTitle('MDI Application')
            self.setWindowIcon(QIcon('pyicon.png'))
            self.setGeometry(100, 100, 800, 600)

            # Create an instance of MDI.
            self.mdi = QMdiArea()
            self.setCentralWidget(self.mdi)

            # Menu bar.
            menu_bar = self.menuBar()

            file_menu = menu_bar.addMenu('File')
            file_menu.addAction('New')
            file_menu.addAction('Cascade')
            file_menu.addAction('Tiled')

            file_menu.triggered[QAction].connect(self.window_triggered)

            # Exit QAction.
            exit_action = QAction('Exit', self)
            exit_action.setShortcut(QKeySequence.Quit)
            exit_action.triggered.connect(self.close)

            file_menu.addAction(exit_action)

            # Status bar.
            status = self.statusBar()
            status.showMessage('Status bar')
Пример #7
0
    def __init__(self):
        super(mainwindow, self).__init__()

        # 主界面的布局
        layout = QHBoxLayout()
        w = QWidget()
        w.setLayout(layout)
        self.setCentralWidget(w)

        # 显示弹出的子窗口
        self.new_subwindow_btn = QPushButton("新建")
        layout.addWidget(self.new_subwindow_btn)
        self.new_subwindow_btn.clicked.connect(self.count)

        # 读取子窗口数据
        self.read_content_btn = QPushButton("读取")
        layout.addWidget(self.read_content_btn)
        self.read_content_btn.clicked.connect(self.get_content)

        # 创建多文档区域
        self.mdi = QMdiArea()
        layout.addWidget(self.mdi)

        # 要被创建的子窗口
        self.w = QWidget()
Пример #8
0
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        # create sub windows
        self.mdi_area = QMdiArea()

        start_widget = StartWidget()
        start_widget.start_signal.connect(self.create_arithmetic_widget)
        self.start_window = self.mdi_area.addSubWindow(start_widget)
        self.start_window.setWindowFlags(Qt.FramelessWindowHint)
        self.start_window.showMaximized()

        self.arithmetic_widget = None

        self.setCentralWidget(self.mdi_area)

    def create_arithmetic_widget(self, operand_range: tuple, operators: tuple):
        arithmetic_widget = ArithmeticWidget(operand_range, operators)
        arithmetic_widget.stop_signal.connect(self.reshow_start_widget)
        self.arithmetic_widget = self.mdi_area.addSubWindow(arithmetic_widget)
        self.arithmetic_widget.setWindowFlags(Qt.FramelessWindowHint)
        self.start_window.hide()
        self.arithmetic_widget.showMaximized()

    def move_to_center(self):
        """Move window to center desktop"""
        point = QPoint(self.width() // 2, self.height() // 2 + 100)
        pos = QApplication.desktop().availableGeometry().center()
        self.move(pos - point)

    def reshow_start_widget(self):
        self.mdi_area.activeSubWindow().close()
        self.start_window.showMaximized()
Пример #9
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.seq_model = seq.SequentialModel()
        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)

        bar = self.menuBar()

        file = bar.addMenu("File")
        file.addAction("New")
        file.addAction("Open...")
        file.addSeparator()
        file.addAction("Save")
        file.addAction("Save As...")
        file.triggered[QAction].connect(self.file_action)
        view = bar.addMenu("View")
        view.addAction("Table")
        view.addAction("Lens View")
        view.triggered[QAction].connect(self.view_action)
        wnd = bar.addMenu("Window")
        wnd.addAction("Cascade")
        wnd.addAction("Tiled")
        wnd.triggered[QAction].connect(self.window_action)
        self.setWindowTitle("Ray Optics")
        self.show()
        self.open_file(
            "/Users/Mike/Developer/PyProjects/ray-optics/codev/test/ag_dblgauss.seq"
        )
Пример #10
0
    def setup_main_layout(self):
        self.mdi = QMdiArea()
        self.mdi.setActivationOrder(QMdiArea.ActivationHistoryOrder)
        self.mdi.setViewMode(QMdiArea.TabbedView)
        self.mdi.setDocumentMode(True)

        mdi_widget = QWidget()
        mdi_widget.setLayout(VLayout())
        mdi_widget.layout().addWidget(self.mdi)

        self.devices_splitter.addWidget(mdi_widget)

        vl_console = VLayout()
        self.console_view = TableView()
        self.console_view.setModel(self.sorted_console_model)
        self.console_view.setupColumns(columns_console)
        self.console_view.setAlternatingRowColors(True)
        self.console_view.setSortingEnabled(True)
        self.console_view.sortByColumn(CnsMdl.TIMESTAMP, Qt.DescendingOrder)
        self.console_view.verticalHeader().setDefaultSectionSize(20)
        self.console_view.setMinimumHeight(200)
        self.console_view.setContextMenuPolicy(Qt.CustomContextMenu)

        vl_console.addWidget(self.console_view)

        console_widget = QWidget()
        console_widget.setLayout(vl_console)

        self.devices_splitter.addWidget(console_widget)
        self.main_splitter.insertWidget(0, self.devices_splitter)
        self.setCentralWidget(self.main_splitter)
        self.console_view.clicked.connect(self.select_cons_entry)
        self.console_view.doubleClicked.connect(self.view_payload)
        self.console_view.customContextMenuRequested.connect(
            self.show_cons_ctx_menu)
Пример #11
0
    def InitUI(self):
        self.setWindowTitle('扑克牌模拟')

        self.mid = QMdiArea()
        self.setCentralWidget(self.mid)

        sendOnecardAct = QAction(QIcon('./res/sendOnecard.ico'), '发1张牌', self)
        sendOnecardAct.triggered.connect(self.sendOnecard)

        sendFivecardsAct = QAction(QIcon('./res/sendFivecard.ico'), '随机5张牌',
                                   self)
        sendFivecardsAct.triggered.connect(self.sendFivecards)

        clearcardAct = QAction(QIcon('./res/clear.ico'), '清除牌', self)
        clearcardAct.triggered.connect(self.clearCards)

        foldcardAct = QAction(QIcon('./res/fold.ico'), '收牌', self)
        foldcardAct.triggered.connect(self.foldCards)

        toolbar = self.addToolBar('工具栏')
        toolbar.addAction(sendOnecardAct)
        toolbar.addAction(sendFivecardsAct)
        toolbar.addAction(clearcardAct)
        toolbar.addAction(foldcardAct)
        toolbar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
Пример #12
0
    def __init__(self, simulation_window, simulation_file=None, parent=None):
        QMdiArea.__init__(self, parent)

        if simulation_file:
            self._configuration = Configuration(simulation_file)
        else:
            self._configuration = Configuration()

        self.worker = None
        self._model = None
        self._gantt = None
        self._logs = None
        self._editor = None
        self._metrics_window = None
        self._model_window = None
        self._progress_bar = None
        self._documentation = None
        self._simulation_window = simulation_window

        self._configuration.configurationChanged.connect(
            self.configuration_changed)
        self._configuration.configurationSaved.connect(
            self.configuration_saved)

        self.showModelWindow()
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.title = 'event annotation tool'
        self.left = 50
        self.top = 50
        self.v_width = 640-200 #1400#
        self.v_height = 480-200 #1000#
        self.set_input=0

        self.setWindowTitle(self.title)

        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        self.mdi.tileSubWindows()

        PATH_FILE = '/home/barbara/Desktop/demo'#'/home/barbara/Desktop/car_data/Normal/Nevsky prospect traffic surveillance video'
        video_feed=action_time_antation_tool.annotation_openCV(PATH_FILE)

        v_sub = SubWindow(video_feed)  # QMdiSubWindow()
        v_sub.setWidget(video_feed)
        v_sub.resize(self.v_width+25, self.v_height+75)
        v_sub.setMaximumSize(self.v_width+25, self.v_height+75)
        v_sub.setWindowTitle("Feed " + str(len(self.label_v_list)))
        self.mdi.addSubWindow(v_sub)  # self.mdi
        self.mdi.tileSubWindows()
        v_sub.show()
Пример #14
0
 def setup(self):
     sub1=QMdiSubWindow()
     sub1.setWidget(self.region1_plot)
     sub1.setWindowTitle('Region 1 Plot')
     
     sub2=QMdiSubWindow()
     sub2.setWidget(self.region2_plot)
     sub2.setWindowTitle('Region 2 Plot')
     
     sub3=QMdiSubWindow()
     sub3.setWidget(self.total_plot)
     sub3.setWindowTitle('Total Plot')
     
     sub4=QMdiSubWindow()
     sub4.setWidget(self.time_plot)
     sub4.setWindowTitle('Time Plot')
     
     self.mdi=QMdiArea()
     self.mdi.addSubWindow(sub1)
     self.mdi.addSubWindow(sub2)
     self.mdi.addSubWindow(sub3)
     self.mdi.addSubWindow(sub4)
     
     self.mdi.tileSubWindows()
     self.setCentralWidget(self.mdi)
    def __init__(self):
        super(Demo, self).__init__()
        self.mdi_area = QMdiArea(self)  # 1
        self.setCentralWidget(self.mdi_area)

        self.toolbar = self.addToolBar('Tool Bar')

        self.new_action = QAction(QIcon('images/new.ico'), 'New', self)  # 2
        self.close_action = QAction(QIcon('images/close.ico'), 'Close', self)
        self.close_all_action = QAction(QIcon('images/close_all.ico'),
                                        'Close All', self)
        self.mode1_action = QAction(QIcon('cascade.ico'), 'Cascade', self)
        self.mode2_action = QAction(QIcon('tile.ico'), 'Tile', self)

        self.new_action.triggered.connect(self.new_func)  # 3
        self.close_action.triggered.connect(self.mdi_area.closeActiveSubWindow)
        self.close_all_action.triggered.connect(
            self.mdi_area.closeAllSubWindows)
        self.mode1_action.triggered.connect(self.mdi_area.cascadeSubWindows)
        self.mode2_action.triggered.connect(self.mdi_area.tileSubWindows)

        self.toolbar.addAction(self.new_action)  # 4
        self.toolbar.addAction(self.close_action)
        self.toolbar.addAction(self.close_all_action)
        self.toolbar.addAction(self.mode1_action)
        self.toolbar.addAction(self.mode2_action)
Пример #16
0
    def __init__(self):
        """Creates the MDI container."""
        super().__init__()
        self.showFullScreen()
        self.setWindowTitle("WEASEL")
        self.centralwidget = QWidget(self)
        self.setCentralWidget(self.centralwidget)
        self.centralwidget.setLayout(QVBoxLayout(self.centralwidget))
        self.mdiArea = QMdiArea(self.centralwidget)
        self.mdiArea.tileSubWindows()
        self.centralwidget.layout().addWidget(self.mdiArea)
        self.statusBar = QStatusBar()
        self.centralwidget.layout().addWidget(self.statusBar)
        self.selectedStudy = ''
        self.selectedSeries = ''
        self.selectedImageName = ''
        self.currentImagePath = ''

        # XML reader object to process XML configuration file
        self.objConfigXMLReader = WeaselConfigXMLReader()
        menuXMLFile = self.objConfigXMLReader.getMenuFile()
        self.weaselDataFolder = self.objConfigXMLReader.getWeaselDataFolder()

        # XML reader object to process XML DICOM data file
        self.objXMLReader = WeaselXMLReader()

        menus.setupMenus(self, menuXMLFile)
        menus.buildContextMenu(self, menuXMLFile)
        #toolBar.setupToolBar(self)  commented out to remove Ferret from Weasel
        self.setStyleSheet(styleSheet.TRISTAN_GREY)
        logger.info("WEASEL GUI created successfully.")
    def __init__(self):

        super().__init__()
        uic.loadUi("mainwindow.ui", self)
        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        self.menu_File.triggered[QAction].connect(self.WindowTrig)
Пример #18
0
class MainWindow(QMainWindow):
    count = 0

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        bar = self.menuBar()

        file = bar.addMenu("File")
        file.addAction("New")
        file.triggered[QAction].connect(self.windowaction)
        self.setWindowTitle("MDI demo")

    @pyqtSlot(str)
    def windowclosed(self, text):
        print(text)

    def windowaction(self, q):
        if q.text() == "New":
            MainWindow.count = MainWindow.count + 1
            sub = MdiSubWindow()
            sub.setWidget(QTextEdit())
            sub.setAttribute(Qt.WA_DeleteOnClose)
            sub.setWindowTitle("subwindow" + str(MainWindow.count))
            sub.sigClosed.connect(self.windowclosed)
            self.mdi.addSubWindow(sub)
            sub.show()
Пример #19
0
    def __init__(self):
        super(RDFNavigator, self).__init__()

        self.lastDir = '.'

        self.settingsManager = RDFNavigatorSettignsManager()
        self.resourceRefManager = RDFNavigatorResourceReferenceManager()
        self.childrenFactory = RDFNavigatorChildrenFactory(self)

        self.mdiArea = QMdiArea()
        self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.setCentralWidget(self.mdiArea)

        self.mdiArea.subWindowActivated.connect(self.updateMenus)
        self.windowMapper = QSignalMapper(self)
        self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow)

        self.createActions()
        self.createMenus()
        self.createToolBars()
        self.createStatusBar()
        self.updateMenus()
        self.createDockWidgets()
        self.readSettings()

        self.setWindowTitle("RDF Navigator")
        self.global_data = {}

        self.analyzeSystemData()
Пример #20
0
    def __init__(self, simulation_window, simulation_file=None, parent=None):
        QMdiArea.__init__(self, parent)

        if simulation_file:
            self._configuration = Configuration(simulation_file)
        else:
            self._configuration = Configuration()

        self.worker = None
        self._model = None
        self._gantt = None
        self._logs = None
        self._editor = None
        self._metrics_window = None
        self._model_window = None
        self._progress_bar = None
        self._documentation = None
        self._simulation_window = simulation_window

        self._configuration.configurationChanged.connect(
            self.configuration_changed)
        self._configuration.configurationSaved.connect(
            self.configuration_saved)

        self.showModelWindow()
Пример #21
0
    def __init__(self, parent=None):
        super(KOWRaidEditor, self).__init__(parent)

        self.setWindowTitle("Raid Editor v0.1")
        self.setGeometry(100, 100, 1280, 960)  #changed basic geom to 1280*960
        self.center()
        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)

        # todo: file import/export system 추가 필요
        self.init_ui()

        self._methods = []
        self._popup = QDialog()

        # test
        self.test_data()

        #
        self.__top_splitter = self.create_top_group_box()
        self.__top_splitter.setStretchFactor(1, 1)

        #
        main_layout = QVBoxLayout()
        main_layout.addWidget(self.__top_splitter)

        central_widget = QWidget()
        central_widget.setLayout(main_layout)
Пример #22
0
    def initUi(self):
        self.initMenuBar()
        self.initToolBar()

        self.mdiArea = QMdiArea(self)
        self.setCentralWidget(self.mdiArea)

        self.newDocIndex = 1
Пример #23
0
    def __init__(self):
        super().__init__()

        self.data_dict = {}
        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        #        self.mdi.resize(950,950)

        bar = self.menuBar()

        self.current_dir = None
        self.opened_wd_names = []
        file = bar.addMenu("File")
        file.addAction("New")
        file.addAction("cascade")
        file.addAction("Tiled")
        file.triggered[QAction].connect(self.WindowTrig)

        load = bar.addMenu("Load")
        load.addAction("2D")
        load.addAction("3D")
        load.triggered[QAction].connect(self.dir_open)

        toolbar = QToolBar()
        self.addToolBar(toolbar)

        bw_button_action = QAction('base_wnd', self)
        bw_button_action.setStatusTip('base window button')
        bw_button_action.triggered.connect(self.onclicktb)
        toolbar.addAction(bw_button_action)

        self.setWindowTitle("MDI Application")

        self.base_wd = QMdiSubWindow()
        self.base_wd.setAttribute(Qt.WA_DeleteOnClose, False)
        self.base_wd.resize(400, 400)
        self.base_wd.plt_i = pg.PlotItem(labels={
            'left': ('slits', 'degrees'),
            'bottom': ('Kin. Energy', 'eV')
        })
        self.base_wd.plt_iv = pg.ImageView(view=self.base_wd.plt_i)
        self.base_wd.setWidget(self.base_wd.plt_iv)
        self.base_wd.setWindowTitle("plot window")
        self.mdi.addSubWindow(self.base_wd)
        self.base_wd.show()

        data_DockWidget = QDockWidget('data', self)
        data_DockWidget.setObjectName(('data window'))
        data_DockWidget.setAllowedAreas(Qt.RightDockWidgetArea)

        self.data_list = QListWidget()
        data_DockWidget.setWidget(self.data_list)
        self.addDockWidget(Qt.RightDockWidgetArea, data_DockWidget)

        self.data_list.itemClicked.connect(self.show_data)
        self.data_list.itemDoubleClicked.connect(self.get_data)
        self.mdi.subWindowActivated.connect(self.get_data)
Пример #24
0
 def init_mdi(self):
     self.mdi = QMdiArea(self.widget)
     self.mdi.setViewMode(QMdiArea.TabbedView)
     self.mdi.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
     self.mdi.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
     self.mdi.setTabsMovable(True)
     self.mdi.setTabsClosable(True)
     self.mdi.setTabShape(QTabWidget.Rounded)
     self.widget.setCentralWidget(self.mdi)
    def __init__(self, LOGIN, isRunningOnPi=False, parent=None):
        super(MainWindow, self).__init__()

        self.main_widget = QWidget()
        self.mdi = QMdiArea()
        self.setWindowTitle('Brew Monitoring System')

        bar = self.menuBar()
        filebar = bar.addMenu("File")
        filebar.addAction("New User")
        filebar.addAction("New Brew")
        filebar.triggered.connect(self.fileaction)

        viewbar = bar.addMenu("View")
        viewbar.addAction("Mash and Boil Vessels")
        viewbar.addAction("Fermentation Vessels")
        viewbar.addAction("Past Brew Data")
        viewbar.triggered.connect(self.viewaction)

        windowbar = bar.addMenu("Window")
        windowbar.addAction("Cascade")
        windowbar.addAction("Tiled")
        windowbar.triggered.connect(self.windowaction)

        systembar = bar.addMenu("System")
        systembar.addAction("Check For Faults")

        self.mainwindow = MdiMainWindow(LOGIN,
                                        isRunningOnPi=isRunningOnPi,
                                        parent=self)

        quitButton = QPushButton("Quit")
        quitButton.clicked.connect(lambda: self.close())

        quitLayout = QHBoxLayout()
        quitLayout.addStretch(10)
        quitLayout.addWidget(quitButton)

        splitter = QSplitter()
        splitter.setOrientation(2)
        splitter.addWidget(self.mainwindow)
        splitter.addWidget(self.mdi)

        layout = QVBoxLayout()
        #layout.addWidget(self.mainwindow)
        #layout.addWidget(self.mdi)
        layout.addWidget(splitter)
        #layout.addLayout(quitLayout)
        #self.main_widget.setLayout(layout)
        # self.main_widget.showFullScreen()

        self.main_widget.setLayout(layout)

        self.setMinimumSize(700, 500)
        self.resize(0, 0)

        self.setCentralWidget(self.main_widget)
Пример #26
0
    def __init__(self, parent=None):

        QMainWindow.__init__(self, parent)
        self.num_ventanas = 0
        self.setWindowTitle('Ejemplo de aplicacio MDI para getphones')
        self.setGeometry(0, 0, 800, 600)
        self.centraEnPantalla()

        self.mdi_area = QMdiArea()
        self.setCentralWidget(self.mdi_area)
Пример #27
0
 def add_webview(self, webview):
     if self._mdi_area is None:
         self._mdi_area = QMdiArea()
         self._mdi_area.resize(1024, 768)
         # self._mdi_area.setWindowTitle()
         self._mdi_area.show()
     subwindow = self._mdi_area.addSubWindow(webview)
     webview.titleChanged.connect(subwindow.setWindowTitle)
     subwindow.show()
     self._mdi_area.tileSubWindows()
Пример #28
0
    def initUI(self):
        parent = None
        super(Example, self).__init__(parent)
        self.mdiArea = QMdiArea(self)
        self.setCentralWidget(self.mdiArea)

        exitAction = QAction(QIcon('exit.png'), '&Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(qApp.quit)

        addAction = QAction(QIcon('books.png'), '&Показать', self)
        addAction.setShortcut('Ctrl+Q')
        addAction.setStatusTip('Показать библиотеку')

        addAction.triggered.connect(self.m_showlibrary)

        self.statusBar()
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&Библиотека')
        # fileMenu.addAction("ss")

        fileMenu.addAction(exitAction)
        fileMenu.addAction(addAction)

        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)
        self.toolbar.addAction(addAction)

        self.setGeometry(100, 100, 800, 800)
        self.setWindowTitle('Home Books')

        model1 = QtSql.QSqlTableModel()
        model1.setTable('f_author')
        model1.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
        model1.select()

        view1 = QTableView()
        view1.setModel(model1)
        view1.setWindowTitle("Авторы")
        view1.setShowGrid(0)

        self.treePanel = QDockWidget("Управление", self)
        w = QWidget(self.treePanel)
        self.treePanel.setWidget(w)
        lay = QVBoxLayout(w)
        lay.setSpacing(1)
        lay.setContentsMargins(1, 1, 1, 1)
        lay.addWidget(view1)
        self.addDockWidget(Qt.LeftDockWidgetArea, self.treePanel)
        w.setLayout(lay)
        w.setGeometry(10, 10, 50, 50)
        # w.show()

        self.show()
Пример #29
0
    def initUI(self):
        self.resize(1100, 900)
        self.setWindowTitle('Main')
        myFolder = os.path.split(os.path.realpath(__file__))[0]
        self.path_resource = os.path.join(myFolder, os.pardir, 'resource')
        """# Action"""
        icon_filesave = os.path.join(self.path_resource, 'filesave')
        icon_picsave = os.path.join(self.path_resource, 'picsave')
        icon_option = os.path.join(self.path_resource, 'option')
        icon_graph = os.path.join(self.path_resource, 'graph')
        icon_start = os.path.join(self.path_resource, 'start')
        icon_help = os.path.join(self.path_resource, 'help')
        icon_info = os.path.join(self.path_resource, 'info')
        self.action_option = self.create_action('&Option', self.main_option,
                                                'Ctrl + O', icon_option, None)
        self.action_graph = self.create_action('&Graph', self.graph_show,
                                               'Ctrl + G', icon_graph, None)
        self.action_about = self.create_action('About', self.prog_about, None,
                                               icon_info, None)
        self.action_help = self.create_action('Help', self.prog_help, None,
                                              icon_help, None)
        self.action_start = self.create_action('Start/Restart',
                                               self.start_restart, None,
                                               icon_start, None)
        self.action_filesave = self.create_action('filesave', self.file_save,
                                                  None, icon_filesave, None)
        self.action_picsave = self.create_action('picsave', self.pic_save,
                                                 None, icon_picsave, None)
        """# Menu Bar"""
        menu_file = self.menuBar().addMenu('&File')
        menu_show = self.menuBar().addMenu('&Graph')
        menu_advanced = self.menuBar().addMenu('&Advanced')
        menu_help = self.menuBar().addMenu('&Help')

        self.add_actions(menu_file, [self.action_option])
        self.add_actions(menu_show, [self.action_graph])
        self.add_actions(menu_help, [self.action_about])
        """# Tool Bar"""
        self.toolbar_main_option = self.addToolBar('Option')
        self.toolbar_main_option.addAction(self.action_option)
        self.toolbar_main_option.addAction(self.action_graph)

        self.toolbar_main_control = self.addToolBar('Control')
        self.toolbar_main_control.addAction(self.action_start)
        self.toolbar_main_control.addAction(self.action_filesave)
        self.toolbar_main_control.addAction(self.action_picsave)

        self.toolbar_tinker = self.addToolBar('Tinker')
        self.toolbar_tinker.addAction(self.action_help)
        self.toolbar_tinker.addAction(self.action_about)

        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)

        self.statusBar().showMessage('Thanks to use Col')
Пример #30
0
    def init_ui(self):
        self.central_widget = QMdiArea()
        self.setCentralWidget(self.central_widget)

        # -------- controls widget -------- #
        self.controls_dock = QDockWidget("Processing pipeline setup", self)
        self.controls_dock.setObjectName("Controls")
        self.controls_dock.setAllowedAreas(Qt.LeftDockWidgetArea
                                           | Qt.RightDockWidgetArea)
        self.controls_dock.visibilityChanged.connect(
            self._update_pipeline_tree_widget_action_text)

        self.addDockWidget(Qt.LeftDockWidgetArea, self.controls_dock)

        # self._controls.setMinimumWidth(800)
        # --------------------------------- #

        file_menu = self.menuBar().addMenu("&File")  # file menu
        load_pipeline_action = self._createAction("&Load pipeline",
                                                  self._load_pipeline)
        save_pipeline_action = self._createAction("&Save pipeline",
                                                  self._save_pipeline)
        file_menu.addAction(load_pipeline_action)
        file_menu.addAction(save_pipeline_action)

        # -------- view menu & toolbar -------- #
        tile_windows_action = self._createAction(
            "&Tile windows", self.central_widget.tileSubWindows)
        view_menu = self.menuBar().addMenu("&View")
        view_menu.addAction(tile_windows_action)
        view_toolbar = self.addToolBar("View")
        view_toolbar.addAction(tile_windows_action)
        # ------------------------------------- #

        edit_menu = self.menuBar().addMenu("&Edit")
        self._toggle_pipeline_tree_widget_action = self._createAction(
            "&Hide pipeline settings", self._toggle_pipeline_tree_widget)
        edit_menu.addAction(self._toggle_pipeline_tree_widget_action)
        edit_toolbar = self.addToolBar("Edit")
        edit_toolbar.setObjectName("edit_toolbar")
        edit_toolbar.addAction(self._toggle_pipeline_tree_widget_action)

        # -------- run menu & toolbar -------- #
        self.run_toggle_action = self._createAction(
            "&Start", self._on_run_button_toggled)
        run_menu = self.menuBar().addMenu("&Run")
        self.initialize_pipeline = self._createAction("&Initialize pipeline",
                                                      self.initialize)
        run_menu.addAction(self.run_toggle_action)
        run_menu.addAction(self.initialize_pipeline)
        run_toolbar = self.addToolBar("Run")
        run_toolbar.setObjectName("run_toolbar")
        run_toolbar.addAction(self.run_toggle_action)
        run_toolbar.addAction(self.initialize_pipeline)
Пример #31
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        bar = self.menuBar()

        file = bar.addMenu("File")
        file.addAction("New")
        file.triggered[QAction].connect(self.windowaction)
        self.setWindowTitle("MDI demo")
Пример #32
0
    def __init__(self):
        super(QMainWindow, self).__init__()

        self.mdi_area = QMdiArea()
        self.setCentralWidget(self.mdi_area)

        self.__init_menu()
Пример #33
0
 def init_mdi(self):
     self.mdi = QMdiArea(self.widget)
     self.mdi.setViewMode(QMdiArea.TabbedView)
     self.mdi.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
     self.mdi.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
     self.mdi.setTabsMovable(True)
     self.mdi.setTabsClosable(True)
     self.mdi.setTabShape(QTabWidget.Rounded)
     self.widget.setCentralWidget(self.mdi)
Пример #34
0
class GuiMenu(Menu):
    def eventFilter(self, source, event):

        if event.type() == QtCore.QEvent.MouseMove:
            newClickPosition = source.mapTo(self.mdi, event.pos())
            for s in self.mdi.subWindowList():
                if source == s.widget() and self.moving:
                    newWidgetX = self.prevWidgetPosition.x() + newClickPosition.x() - self.downPosition.x()
                    newWidgetY = self.prevWidgetPosition.y() + newClickPosition.y() - self.downPosition.y()
                    s.move(newWidgetX, newWidgetY)

        elif event.type() == QtCore.QEvent.MouseButtonPress:
            if (source.cursor().shape() == QtCore.Qt.SizeVerCursor or source.cursor().shape() == QtCore.Qt.SizeHorCursor):
                # resizing hack: resizing works as some mdi feature, just don't set moving parameters here.
                pass
            else:
                self.downPosition = source.mapTo(self.mdi, event.pos())
                self.prevWidgetPosition = source.mapTo(self.mdi, source.pos())
                self.moving = True

        elif event.type() == QtCore.QEvent.MouseButtonRelease:
            self.moving = False

        return QWidget.eventFilter(self, source, event)

    def __init__(self):
        a = QTextEdit('some gui settings')
        b = QTextEdit('some gui settings too')

        widgets = [a, b]

        self.mdi = QMdiArea()
        self.moving = False
        layout = QVBoxLayout()
        layout.addWidget(self.mdi)

        super().__init__('GUI', layout)

        for w in widgets:
            self.mdi.addSubWindow(w, QtCore.Qt.FramelessWindowHint)
            w.setEnabled(False)
            w.setMouseTracking(True)
            w.installEventFilter(self)  # only called on subwindows -> no collision detection needed
Пример #35
0
 def __init__(self):
     super(NetMainWindow, self).__init__()
     self.mdiArea = QMdiArea()
     self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
     self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
     self.setCentralWidget(self.mdiArea)
     self.windowMapper = QSignalMapper(self)
     self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow)
     self.createActions()
     self.createMenus()
     self.createStatusBar()
     self.readSettings()
     self.setWindowTitle('Net')
Пример #36
0
 def eventFilter(self, obj, ev):
     """
     Public method called to filter an event.
     
     @param obj object, that generated the event (QObject)
     @param ev the event, that was generated by object (QEvent)
     @return flag indicating if event was filtered out
     """
     if obj in self.widgets and ev.type() == QEvent.Close:
         try:
             self.widgets.remove(obj)
             if len(self.widgets) == 0:
                 self.lastWidgetClosed.emit()
         except ValueError:
             pass
     
     return QMdiArea.eventFilter(self, obj, ev)
Пример #37
0
class NetMainWindow(QMainWindow):
    def __init__(self):
        super(NetMainWindow, self).__init__()
        self.mdiArea = QMdiArea()
        self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.setCentralWidget(self.mdiArea)
        self.windowMapper = QSignalMapper(self)
        self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow)
        self.createActions()
        self.createMenus()
        self.createStatusBar()
        self.readSettings()
        self.setWindowTitle('Net')

    def newScan(self):
        child = IpRangeScanGUI(self)
        self.mdiArea.addSubWindow(child)
        child.show()
        return child

    def createActions(self):
        self.newIPScanAct = QAction("&Start a Scan", self, shortcut=QKeySequence.New, statusTip="Start a Scan",
                                    triggered=self.newScan)

    def createMenus(self):
        self.serverMenu = self.menuBar().addMenu('&IP Scan')
        self.serverMenu.addAction(self.newIPScanAct)

    def createStatusBar(self):
        self.statusBar().showMessage("Ready")

    def readSettings(self):
        settings = QSettings('Trolltech', 'MDI Example')
        pos = settings.value('pos', QPoint(200, 200))
        size = settings.value('size', QSize(500, 500))
        self.move(pos)
        self.resize(size)

    def setActiveSubWindow(self, window):
        if window:
            self.mdiArea.setActiveSubWindow(window)
Пример #38
0
    def __init__(self):
        a = QTextEdit('some gui settings')
        b = QTextEdit('some gui settings too')

        widgets = [a, b]

        self.mdi = QMdiArea()
        self.moving = False
        layout = QVBoxLayout()
        layout.addWidget(self.mdi)

        super().__init__('GUI', layout)

        for w in widgets:
            self.mdi.addSubWindow(w, QtCore.Qt.FramelessWindowHint)
            w.setEnabled(False)
            w.setMouseTracking(True)
            w.installEventFilter(self)  # only called on subwindows -> no collision detection needed
Пример #39
0
    def __init__(self):
        super(MainWindow, self).__init__()
        # remove close & maximize window buttons
        #self.setWindowFlags(Qt.CustomizeWindowHint|Qt.WindowMinimizeButtonHint)
        self.setMinimumSize(500, 666)
        #self.setMaximumSize(1000,666)
        self.mdiArea = QMdiArea()
        self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.setCentralWidget(self.mdiArea)

        self.mdiArea.subWindowActivated.connect(self.updateMenus)
        self.mdiArea.setViewMode(QMdiArea.TabbedView)

        self.windowMapper = QSignalMapper(self)
        self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow)

        self.child = None

        self.createActions()
        self.createMenus()
        self.createStatusBar()
        self.updateMenus()
        self.readSettings()
        self.setWindowTitle("LEKTURE")

        mytoolbar = QToolBar()
        #self.toolbar = self.addToolBar()
        mytoolbar.addAction(self.newAct)
        mytoolbar.addAction(self.openAct)
        mytoolbar.addAction(self.saveAct)
        mytoolbar.addAction(self.saveAsAct)
        mytoolbar.addSeparator()
        mytoolbar.addAction(self.outputsAct)
        mytoolbar.addAction(self.scenarioAct)
        self.scenarioAct.setVisible(False)
        mytoolbar.setMovable(False)
        mytoolbar.setFixedWidth(60)
        self.addToolBar(Qt.LeftToolBarArea, mytoolbar)
Пример #40
0
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.mdiArea = QMdiArea()
        self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.setCentralWidget(self.mdiArea)

        self.mdiArea.subWindowActivated.connect(self.updateMenus)
        self.windowMapper = QSignalMapper(self)
        self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow)

        self.createActions()
        self.createMenus()
        self.createToolBars()
        self.createStatusBar()
        self.updateMenus()

        self.readSettings()

        self.setWindowTitle("MDI")

    def closeEvent(self, event):
        self.mdiArea.closeAllSubWindows()
        if self.mdiArea.currentSubWindow():
            event.ignore()
        else:
            self.writeSettings()
            event.accept()

    def newFile(self):
        child = self.createMdiChild()
        child.newFile()
        child.show()

    def open(self):
        fileName, _ = QFileDialog.getOpenFileName(self)
        if fileName:
            existing = self.findMdiChild(fileName)
            if existing:
                self.mdiArea.setActiveSubWindow(existing)
                return

            child = self.createMdiChild()
            if child.loadFile(fileName):
                self.statusBar().showMessage("File loaded", 2000)
                child.show()
            else:
                child.close()

    def save(self):
        if self.activeMdiChild() and self.activeMdiChild().save():
            self.statusBar().showMessage("File saved", 2000)

    def saveAs(self):
        if self.activeMdiChild() and self.activeMdiChild().saveAs():
            self.statusBar().showMessage("File saved", 2000)

    def cut(self):
        if self.activeMdiChild():
            self.activeMdiChild().cut()

    def copy(self):
        if self.activeMdiChild():
            self.activeMdiChild().copy()

    def paste(self):
        if self.activeMdiChild():
            self.activeMdiChild().paste()

    def about(self):
        QMessageBox.about(self, "About MDI",
                "The <b>MDI</b> example demonstrates how to write multiple "
                "document interface applications using Qt.")

    def updateMenus(self):
        hasMdiChild = (self.activeMdiChild() is not None)
        self.saveAct.setEnabled(hasMdiChild)
        self.saveAsAct.setEnabled(hasMdiChild)
        self.pasteAct.setEnabled(hasMdiChild)
        self.closeAct.setEnabled(hasMdiChild)
        self.closeAllAct.setEnabled(hasMdiChild)
        self.tileAct.setEnabled(hasMdiChild)
        self.cascadeAct.setEnabled(hasMdiChild)
        self.nextAct.setEnabled(hasMdiChild)
        self.previousAct.setEnabled(hasMdiChild)
        self.separatorAct.setVisible(hasMdiChild)

        hasSelection = (self.activeMdiChild() is not None and
                        self.activeMdiChild().textCursor().hasSelection())
        self.cutAct.setEnabled(hasSelection)
        self.copyAct.setEnabled(hasSelection)

    def updateWindowMenu(self):
        self.windowMenu.clear()
        self.windowMenu.addAction(self.closeAct)
        self.windowMenu.addAction(self.closeAllAct)
        self.windowMenu.addSeparator()
        self.windowMenu.addAction(self.tileAct)
        self.windowMenu.addAction(self.cascadeAct)
        self.windowMenu.addSeparator()
        self.windowMenu.addAction(self.nextAct)
        self.windowMenu.addAction(self.previousAct)
        self.windowMenu.addAction(self.separatorAct)

        windows = self.mdiArea.subWindowList()
        self.separatorAct.setVisible(len(windows) != 0)

        for i, window in enumerate(windows):
            child = window.widget()

            text = "%d %s" % (i + 1, child.userFriendlyCurrentFile())
            if i < 9:
                text = '&' + text

            action = self.windowMenu.addAction(text)
            action.setCheckable(True)
            action.setChecked(child is self.activeMdiChild())
            action.triggered.connect(self.windowMapper.map)
            self.windowMapper.setMapping(action, window)

    def createMdiChild(self):
        child = MdiChild()
        self.mdiArea.addSubWindow(child)

        child.copyAvailable.connect(self.cutAct.setEnabled)
        child.copyAvailable.connect(self.copyAct.setEnabled)

        return child

    def createActions(self):
        self.newAct = QAction(QIcon(':/images/new.png'), "&New", self,
                shortcut=QKeySequence.New, statusTip="Create a new file",
                triggered=self.newFile)

        self.openAct = QAction(QIcon(':/images/open.png'), "&Open...", self,
                shortcut=QKeySequence.Open, statusTip="Open an existing file",
                triggered=self.open)

        self.saveAct = QAction(QIcon(':/images/save.png'), "&Save", self,
                shortcut=QKeySequence.Save,
                statusTip="Save the document to disk", triggered=self.save)

        self.saveAsAct = QAction("Save &As...", self,
                shortcut=QKeySequence.SaveAs,
                statusTip="Save the document under a new name",
                triggered=self.saveAs)

        self.exitAct = QAction("E&xit", self, shortcut=QKeySequence.Quit,
                statusTip="Exit the application",
                triggered=QApplication.instance().closeAllWindows)

        self.cutAct = QAction(QIcon(':/images/cut.png'), "Cu&t", self,
                shortcut=QKeySequence.Cut,
                statusTip="Cut the current selection's contents to the clipboard",
                triggered=self.cut)

        self.copyAct = QAction(QIcon(':/images/copy.png'), "&Copy", self,
                shortcut=QKeySequence.Copy,
                statusTip="Copy the current selection's contents to the clipboard",
                triggered=self.copy)

        self.pasteAct = QAction(QIcon(':/images/paste.png'), "&Paste", self,
                shortcut=QKeySequence.Paste,
                statusTip="Paste the clipboard's contents into the current selection",
                triggered=self.paste)

        self.closeAct = QAction("Cl&ose", self,
                statusTip="Close the active window",
                triggered=self.mdiArea.closeActiveSubWindow)

        self.closeAllAct = QAction("Close &All", self,
                statusTip="Close all the windows",
                triggered=self.mdiArea.closeAllSubWindows)

        self.tileAct = QAction("&Tile", self, statusTip="Tile the windows",
                triggered=self.mdiArea.tileSubWindows)

        self.cascadeAct = QAction("&Cascade", self,
                statusTip="Cascade the windows",
                triggered=self.mdiArea.cascadeSubWindows)

        self.nextAct = QAction("Ne&xt", self, shortcut=QKeySequence.NextChild,
                statusTip="Move the focus to the next window",
                triggered=self.mdiArea.activateNextSubWindow)

        self.previousAct = QAction("Pre&vious", self,
                shortcut=QKeySequence.PreviousChild,
                statusTip="Move the focus to the previous window",
                triggered=self.mdiArea.activatePreviousSubWindow)

        self.separatorAct = QAction(self)
        self.separatorAct.setSeparator(True)

        self.aboutAct = QAction("&About", self,
                statusTip="Show the application's About box",
                triggered=self.about)

        self.aboutQtAct = QAction("About &Qt", self,
                statusTip="Show the Qt library's About box",
                triggered=QApplication.instance().aboutQt)

    def createMenus(self):
        self.fileMenu = self.menuBar().addMenu("&File")
        self.fileMenu.addAction(self.newAct)
        self.fileMenu.addAction(self.openAct)
        self.fileMenu.addAction(self.saveAct)
        self.fileMenu.addAction(self.saveAsAct)
        self.fileMenu.addSeparator()
        action = self.fileMenu.addAction("Switch layout direction")
        action.triggered.connect(self.switchLayoutDirection)
        self.fileMenu.addAction(self.exitAct)

        self.editMenu = self.menuBar().addMenu("&Edit")
        self.editMenu.addAction(self.cutAct)
        self.editMenu.addAction(self.copyAct)
        self.editMenu.addAction(self.pasteAct)

        self.windowMenu = self.menuBar().addMenu("&Window")
        self.updateWindowMenu()
        self.windowMenu.aboutToShow.connect(self.updateWindowMenu)

        self.menuBar().addSeparator()

        self.helpMenu = self.menuBar().addMenu("&Help")
        self.helpMenu.addAction(self.aboutAct)
        self.helpMenu.addAction(self.aboutQtAct)

    def createToolBars(self):
        self.fileToolBar = self.addToolBar("File")
        self.fileToolBar.addAction(self.newAct)
        self.fileToolBar.addAction(self.openAct)
        self.fileToolBar.addAction(self.saveAct)

        self.editToolBar = self.addToolBar("Edit")
        self.editToolBar.addAction(self.cutAct)
        self.editToolBar.addAction(self.copyAct)
        self.editToolBar.addAction(self.pasteAct)

    def createStatusBar(self):
        self.statusBar().showMessage("Ready")

    def readSettings(self):
        settings = QSettings('Trolltech', 'MDI Example')
        pos = settings.value('pos', QPoint(200, 200))
        size = settings.value('size', QSize(400, 400))
        self.move(pos)
        self.resize(size)

    def writeSettings(self):
        settings = QSettings('Trolltech', 'MDI Example')
        settings.setValue('pos', self.pos())
        settings.setValue('size', self.size())

    def activeMdiChild(self):
        activeSubWindow = self.mdiArea.activeSubWindow()
        if activeSubWindow:
            return activeSubWindow.widget()
        return None

    def findMdiChild(self, fileName):
        canonicalFilePath = QFileInfo(fileName).canonicalFilePath()

        for window in self.mdiArea.subWindowList():
            if window.widget().currentFile() == canonicalFilePath:
                return window
        return None

    def switchLayoutDirection(self):
        if self.layoutDirection() == Qt.LeftToRight:
            QApplication.setLayoutDirection(Qt.RightToLeft)
        else:
            QApplication.setLayoutDirection(Qt.LeftToRight)

    def setActiveSubWindow(self, window):
        if window:
            self.mdiArea.setActiveSubWindow(window)
Пример #41
0
class EditorMainWindow(object):
    def __init__(self):
        self.seq = 0
        self.widget = loadUi(MAIN_UI_PATH)
        self.init_mdi()
        self.init_actions()
        self.init_instance()
        self.widget.closeEvent = self.close_handler

        self.widget.showMaximized()

    def get_seq(self):
        self.seq += 1
        return self.seq

    def init_mdi(self):
        self.mdi = QMdiArea(self.widget)
        self.mdi.setViewMode(QMdiArea.TabbedView)
        self.mdi.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdi.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdi.setTabsMovable(True)
        self.mdi.setTabsClosable(True)
        self.mdi.setTabShape(QTabWidget.Rounded)
        self.widget.setCentralWidget(self.mdi)

    def init_actions(self):
        self.widget.actionNew.triggered.connect(self.action_new_handler)
        self.widget.actionOpen.triggered.connect(self.action_open_handler)
        self.widget.actionSave.triggered.connect(self.action_save_handler)
        self.widget.actionSave_As.triggered.connect(self.action_save_as_handler)
        self.widget.actionClose.triggered.connect(self.action_close_handler)
        self.widget.actionClose_All.triggered.connect(self.action_close_all_handler)
        self.widget.actionExport.triggered.connect(self.action_export_handler)

        self.widget.actionStates.triggered.connect(self.action_states_handler)
        self.widget.actionEvents.triggered.connect(self.action_events_handler)

    def close_handler(self, ev):
        l = self.mdi.subWindowList()
        if len(l) != 0:
            self.mdi.closeAllSubWindows()
            ev.ignore()

    def init_instance(self):
        self.instances = []

    def remove_instance(self, ins):
        self.instances.remove(ins)

    def find_non_existing_name(self):
        while True:
            tmp_path = os.path.join(
                config.src_path,
                "NewFsm" + str(self.get_seq()) + FSM_FILE_EXT)
            if not os.path.exists(tmp_path):
                return tmp_path

    def action_new_handler(self):
        tmp_path = self.find_non_existing_name()
        m = FsmModel()
        m.default_init()
        vm = InstanceVM(m, self, tmp_path)
        vm.set_modified(True)

    def file_already_open(self, pth):
        for i in self.instances:
            pth = os.path.abspath(pth)
            if pth == i.file_path:
                return i
        return None

    def action_open_handler(self):
        p = QFileDialog()
        p.setViewMode(QFileDialog.List)
        p.setFileMode(QFileDialog.ExistingFiles)
        p.setDirectory(config.src_path)
        p.exec()
        paths = p.selectedFiles()
        for pth in paths:
            i = self.file_already_open(pth)
            if i:
                self.mdi.setActiveSubWindow(i.sub_window)
            else:
                m = FsmModel.load_file(pth)
                vm = InstanceVM(m, self, pth)

    def action_save_handler(self):
        w = self.mdi.activeSubWindow()
        if w is None:
            return
        model = w.instance.model
        model.dump_file(w.instance.file_path)
        w.instance.set_modified(False)

    def action_save_as_handler(self):
        w = self.mdi.activeSubWindow()
        if w is None:
            return

        p = QFileDialog()
        p.setViewMode(QFileDialog.List)
        p.setDirectory(config.src_path)
        p.exec()
        paths = p.selectedFiles()
        if len(paths) == 0:
            return
        w.instance.file_path = os.path.abspath(paths[0])
        w.instance.update_title()
        model = w.instance.model
        model.dump_file(w.instance.file_path)
        w.instance.set_modified(False)


    def action_close_handler(self):
        w = self.mdi.activeSubWindow()
        if w is None:
            return
        w.close()

    def action_close_all_handler(self):
        self.mdi.closeAllSubWindows()

    def action_export_handler(self):
        fsm_files = os.listdir(config.src_path)
        for fn in fsm_files:
            full_name = os.path.join(config.src_path, fn)
            b, e = os.path.splitext(full_name)
            if e == FSM_FILE_EXT:
                f = open(full_name, "rb")
                basename, e = os.path.splitext(fn)
                model_object = pickle.load(f)
                f.close()
                exporter = FsmModelPythonExporter(model_object)
                exporter.export(os.path.join(config.export_path, basename + "_fsm.py"))

    def action_states_handler(self):
        cur = self.get_current_instance()
        if cur is None:
            return
        model = cur.model
        w = loadUi(STATE_LIST_DIALOG_PATH)
        list_vm = MultiColumnListModel(
            model.state,
            LIST_DIALOG_COLUMNS,
            STATE_DIALOG_HEADERS)
        add_item = functools.partial(model.add_item, StateItem, "state")
        remove_item = functools.partial(model.remove_item, "state")
        dialog = StateListPanelVM(
            list_vm,
            model.state,
            add_item,
            remove_item,
            w)

        dialog.run()
        cur.table_vm.refresh()

    def action_events_handler(self):
        cur = self.get_current_instance()
        if cur is None:
            return
        model = cur.model
        w = loadUi(EVENT_DIALOG_PATH)
        list_vm = MultiColumnListModel(
            model.event,
            LIST_DIALOG_COLUMNS,
            EVENT_DIALOG_HEADERS)
        add_item = functools.partial(model.add_item, EventItem, "event")
        remove_item = functools.partial(model.remove_item, "event")
        dialog = ListEditPanelVM(
            list_vm,
            model.event,
            add_item,
            remove_item,
            w)
        dialog.run()
        cur.table_vm.refresh()

    def get_current_instance(self):
        current = self.mdi.activeSubWindow()
        if not current:
            return None
        for i in self.instances:
            if i.sub_window == current:
                return i
        assert(False)  # there is an active sub window but there's no matching instance
Пример #42
0
class MainWindow(QMainWindow):
    """This create the main window of the application"""
    def __init__(self):
        super(MainWindow, self).__init__()
        # remove close & maximize window buttons
        #self.setWindowFlags(Qt.CustomizeWindowHint|Qt.WindowMinimizeButtonHint)
        self.setMinimumSize(500, 666)
        #self.setMaximumSize(1000,666)
        self.mdiArea = QMdiArea()
        self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.setCentralWidget(self.mdiArea)

        self.mdiArea.subWindowActivated.connect(self.updateMenus)
        self.mdiArea.setViewMode(QMdiArea.TabbedView)

        self.windowMapper = QSignalMapper(self)
        self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow)

        self.child = None

        self.createActions()
        self.createMenus()
        self.createStatusBar()
        self.updateMenus()
        self.readSettings()
        self.setWindowTitle("LEKTURE")

        mytoolbar = QToolBar()
        #self.toolbar = self.addToolBar()
        mytoolbar.addAction(self.newAct)
        mytoolbar.addAction(self.openAct)
        mytoolbar.addAction(self.saveAct)
        mytoolbar.addAction(self.saveAsAct)
        mytoolbar.addSeparator()
        mytoolbar.addAction(self.outputsAct)
        mytoolbar.addAction(self.scenarioAct)
        self.scenarioAct.setVisible(False)
        mytoolbar.setMovable(False)
        mytoolbar.setFixedWidth(60)
        self.addToolBar(Qt.LeftToolBarArea, mytoolbar)

    def closeEvent(self, scenario):
        """method called when the main window wants to be closed"""
        self.mdiArea.closeAllSubWindows()
        if self.mdiArea.currentSubWindow():
            scenario.ignore()
        else:
            self.writeSettings()
            scenario.accept()

    def newFile(self):
        """creates a new project"""
        child = self.createProjekt()
        child.newFile()
        child.show()
        self.child = child

    def open(self):
        """open a project"""
        fileName, _ = QFileDialog.getOpenFileName(self)
        if fileName:
            existing = self.findProjekt(fileName)
            if existing:
                self.mdiArea.setActiveSubWindow(existing)
                return

            child = self.createProjekt()
            if child.loadFile(fileName):
                self.statusBar().showMessage("File loaded", 2000)
                child.show()
            else:
                child.close()

    def save(self):
        """called when user save a project"""
        if self.activeProjekt() and self.activeProjekt().save():
            self.statusBar().showMessage("File saved", 2000)
        else:
            self.statusBar().showMessage("Error when trying to save the file")

    def saveAs(self):
        """called when user save AS a project"""
        if self.activeProjekt() and self.activeProjekt().saveAs():
            self.statusBar().showMessage("File saved", 2000)
        else:
            self.statusBar().showMessage("Error when trying to save the file")

    def openFolder(self):
        """called when user calls 'reveal in finder' function"""
        if self.activeProjekt() and self.activeProjekt().openFolder():
            self.statusBar().showMessage("File revealed in Finder", 2000)

    def about(self):
        """called when user wants to know a bit more on the app"""
        import sys
        python_version = str(sys.version_info[0])
        python_version_temp = sys.version_info[1:5]
        for item in python_version_temp:
            python_version = python_version + "." + str(item)
        QMessageBox.about(self, "About Lekture",
                            "pylekture build " + str(pylekture.__version__ + "\n" + \
                            "python version " + str(python_version)))

    def updateMenus(self):
        """update menus"""
        hasProjekt = (self.activeProjekt() is not None)
        self.saveAct.setEnabled(hasProjekt)
        self.saveAsAct.setEnabled(hasProjekt)
        self.outputsAct.setEnabled(hasProjekt)
        self.scenarioAct.setEnabled(hasProjekt)
        self.openFolderAct.setEnabled(hasProjekt)
        self.closeAct.setEnabled(hasProjekt)
        self.closeAllAct.setEnabled(hasProjekt)
        self.nextAct.setEnabled(hasProjekt)
        self.previousAct.setEnabled(hasProjekt)
        self.separatorAct.setVisible(hasProjekt)

    def updateWindowMenu(self):
        """unpates menus on the window toolbar"""
        self.windowMenu.clear()
        self.windowMenu.addAction(self.closeAct)
        self.windowMenu.addAction(self.closeAllAct)
        self.windowMenu.addSeparator()
        self.windowMenu.addAction(self.nextAct)
        self.windowMenu.addAction(self.previousAct)
        self.windowMenu.addAction(self.separatorAct)

        windows = self.mdiArea.subWindowList()
        self.separatorAct.setVisible(len(windows) != 0)

        for i, window in enumerate(windows):
            child = window.widget()

            text = "%d %s" % (i + 1, child.userFriendlyCurrentFile())
            if i < 9:
                text = '&' + text

            action = self.windowMenu.addAction(text)
            action.setCheckable(True)
            action.setChecked(child is self.activeProjekt())
            action.triggered.connect(self.windowMapper.map)
            self.windowMapper.setMapping(action, window)

    def createProjekt(self):
        """create a new project"""
        child = Projekt()
        self.mdiArea.addSubWindow(child)
        self.child = child
        return child

    def createActions(self):
        """create all actions"""
        self.newAct = QAction("&New", self,
                              shortcut=QKeySequence.New, statusTip="Create a new file",
                              triggered=self.newFile)

        self.openAct = QAction("&Open...", self,
                               shortcut=QKeySequence.Open, statusTip="Open an existing file",
                               triggered=self.open)

        self.saveAct = QAction("&Save", self,
                               shortcut=QKeySequence.Save,
                               statusTip="Save the document to disk", triggered=self.save)

        self.saveAsAct = QAction("Save &As...", self,
                                 shortcut=QKeySequence.SaveAs,
                                 statusTip="Save the document under a new name",
                                 triggered=self.saveAs)

        self.openFolderAct = QAction("Open Project Folder", self,
                                     statusTip="Reveal Project in Finder",
                                     triggered=self.openFolder)

        self.exitAct = QAction("E&xit", self, shortcut=QKeySequence.Quit,
                               statusTip="Exit the application",
                               triggered=QApplication.instance().closeAllWindows)

        self.closeAct = QAction("Cl&ose", self,
                                statusTip="Close the active window",
                                triggered=self.mdiArea.closeActiveSubWindow)

        self.outputsAct = QAction("Outputs", self,
                                  statusTip="Open the outputs panel",
                                  triggered=self.openOutputsPanel)

        self.scenarioAct = QAction("Scenario", self,
                                   statusTip="Open the scenario panel",
                                   triggered=self.openScenarioPanel)

        self.closeAllAct = QAction("Close &All", self,
                                   statusTip="Close all the windows",
                                   triggered=self.mdiArea.closeAllSubWindows)

        self.nextAct = QAction("Ne&xt", self, shortcut=QKeySequence.NextChild,
                               statusTip="Move the focus to the next window",
                               triggered=self.mdiArea.activateNextSubWindow)

        self.previousAct = QAction("Pre&vious", self,
                                   shortcut=QKeySequence.PreviousChild,
                                   statusTip="Move the focus to the previous window",
                                   triggered=self.mdiArea.activatePreviousSubWindow)

        self.separatorAct = QAction(self)
        self.separatorAct.setSeparator(True)

        self.aboutAct = QAction("&About", self,
                                statusTip="Show the application's About box",
                                triggered=self.about)

    def createMenus(self):
        """create all menus"""
        self.fileMenu = self.menuBar().addMenu("&File")
        self.fileMenu.addAction(self.newAct)
        self.fileMenu.addAction(self.openAct)
        self.fileMenu.addAction(self.saveAct)
        self.fileMenu.addAction(self.saveAsAct)
        self.fileMenu.addSeparator()
        self.fileMenu.addAction(self.openFolderAct)
        self.fileMenu.addAction(self.exitAct)

        self.viewMenu = self.menuBar().addMenu("&View")
        self.viewMenu.addAction(self.outputsAct)
        self.viewMenu.addAction(self.scenarioAct)

        self.windowMenu = self.menuBar().addMenu("&Window")
        self.updateWindowMenu()
        self.windowMenu.aboutToShow.connect(self.updateWindowMenu)

        self.menuBar().addSeparator()

        self.helpMenu = self.menuBar().addMenu("&Help")
        self.helpMenu.addAction(self.aboutAct)

    def createStatusBar(self):
        """create the status bar"""
        self.statusBar().showMessage("Ready")

    def readSettings(self):
        """read the settings"""
        settings = QSettings('Pixel Stereo', 'lekture')
        pos = settings.value('pos', QPoint(200, 200))
        size = settings.value('size', QSize(1000, 650))
        self.move(pos)
        self.resize(size)

    def writeSettings(self):
        """write settings"""
        settings = QSettings('Pixel Stereo', 'lekture')
        settings.setValue('pos', self.pos())
        settings.setValue('size', self.size())

    def activeProjekt(self):
        """return the active project object"""
        activeSubWindow = self.mdiArea.activeSubWindow()
        if activeSubWindow:
            return activeSubWindow.widget()
        else:
            return None

    def findProjekt(self, fileName):
        """return the project"""
        canonicalFilePath = QFileInfo(fileName).canonicalFilePath()

        for window in self.mdiArea.subWindowList():
            if window.widget().currentFile() == canonicalFilePath:
                return window
        return None

    def setActiveSubWindow(self, window):
        """set the active sub window"""
        if window:
            self.mdiArea.setActiveSubWindow(window)

    def openOutputsPanel(self):
        """switch to the outputs editor"""
        if self.child:
            project = self.activeProjekt()
            project.scenario_events_group.setVisible(False)
            project.outputs_group.setVisible(True)
            self.scenarioAct.setVisible(True)
            self.outputsAct.setVisible(False)

    def openScenarioPanel(self):
        """switch to the scenario editors"""
        if self.child:
            project = self.activeProjekt()
            project.outputs_group.setVisible(False)
            project.scenario_events_group.setVisible(True)
            self.scenarioAct.setVisible(False)
            self.outputsAct.setVisible(True)
Пример #43
0
class MyMainWindow(QMainWindow):

    window_index = 1

    def __init__(self):
        super(QMainWindow, self).__init__()

        self.mdi_area = QMdiArea()
        self.setCentralWidget(self.mdi_area)

        self.__init_menu()

    def __init_menu(self):
        menu_bar = self.menuBar()

        file_menu = menu_bar.addMenu('File')

        open_action = QAction('Open', self)
        open_action.setShortcut('Ctrl+O')
        open_action.triggered.connect(self.__on_open)
        file_menu.addAction(open_action)

        exit_action = QAction('Exit', self)
        exit_action.triggered.connect(self.close)
        file_menu.addAction(exit_action)

        window_menu = menu_bar.addMenu('Windows')

        close_current_action = QAction('Close Current Window', self)
        close_current_action.triggered.connect(self.mdi_area.closeActiveSubWindow)
        window_menu.addAction(close_current_action)

        close_all_action = QAction('Close All', self)
        close_all_action.triggered.connect(self.mdi_area.closeAllSubWindows)
        window_menu.addAction(close_all_action)

        cascade_action = QAction('Cascade Windows', self)
        cascade_action.triggered.connect(self.mdi_area.cascadeSubWindows)
        window_menu.addAction(cascade_action)

        tile_action = QAction('Title Windows', self)
        tile_action.triggered.connect(self.mdi_area.tileSubWindows)
        window_menu.addAction(tile_action)

        self.__window_list_menu = window_menu.addMenu('Window List')
        self.__window_list_menu.aboutToShow.connect(self.__window_list_menu_about_to_show)

    def __window_list_menu_about_to_show(self):
        self.__window_list_menu.clear()
        windows = self.mdi_area.subWindowList()
        index = 1
        for window in windows:
            action = QAction(str(index) + '. ' + window.windowTitle(), self.__window_list_menu)
            action.setProperty('WindowObject', window)
            action.triggered.connect(self.__on_select_window)
            self.__window_list_menu.addAction(action)
            index += 1

    def __on_select_window(self):
        action = self.sender()
        window = action.property('WindowObject')
        self.mdi_area.setActiveSubWindow(window)

    def __on_open(self):
        window = QMdiSubWindow()
        window.setAttribute(Qt.WA_DeleteOnClose, True)
        window.setWindowTitle('Sub Window ' + str(MyMainWindow.window_index))
        window.resize(300, 200)
        self.mdi_area.addSubWindow(window)
        window.show()

        MyMainWindow.window_index += 1
Пример #44
0
 def resizeEvent(self, QResizeEvent):
     QMdiArea.resizeEvent(self,QResizeEvent)
     if self.bg_pixmap is not None:
         qbrush_bg = QtGui.QBrush(QtGui.QColor() ,self.bg_pixmap.scaled(QResizeEvent.size()))
         self.setBackground(qbrush_bg)