Example #1
0
    def setup_menu(self):
        """
        Adds top menu bar and various menu items.
        """
        menu_bar = QtWidgets.QMenuBar(self.widget)
        file_menu = QtWidgets.QMenu('File')
        help_menu = QtWidgets.QMenu('Help')
        edit_menu = QtWidgets.QMenu('Edit')

        for menu in [file_menu, edit_menu, help_menu]:
            menu_bar.addMenu(menu)

        file_menu.addAction('New', self.new)

        file_menu.addAction('Open', self.open)

        file_menu.addAction('&Save', self.save)

        file_menu.addAction('Save As', self.save)

        export_menu = QtWidgets.QMenu('Export')
        file_menu.addMenu(export_menu)
        ex = export_menu.addAction

        ex('Save Selected Text', self.save_selected_text)

        ex('Export Selected To External Editor',
           self.export_selected_to_external_editor)

        ex('Export Current Tab To External Editor',
           self.export_current_tab_to_external_editor)

        ex('Export All Tabs To External Editor',
           self.export_all_tabs_to_external_editor)

        help_menu.addAction('Reload Python Editor',
                            self.widget._parent.reload_package)

        help_menu.addAction('About Python Editor', self.show_about_dialog)

        edit_menu.addAction('Preferences', self.show_preferences)

        edit_menu.addAction('Shortcuts', self.show_shortcuts)

        self.widget.layout().addWidget(menu_bar)
Example #2
0
 def mousePressEvent(self, event):
     if event.button() == QtCore.Qt.LeftButton:
         super(FileTree, self).mousePressEvent(event)
     if event.button() == QtCore.Qt.RightButton:
         menu = QtWidgets.QMenu()
         menu.addAction('New', 'print "does nothing"')
         menu.addAction('Delete', 'print "does nothing"')
         cursor = QtGui.QCursor()
         pos = cursor.pos()
         menu.exec_(pos)
Example #3
0
 def show_tab_menu(self):
     """
     Show a list of tabs and go to the tab clicked.
     """
     menu = QtWidgets.QMenu()
     from functools import partial
     for i in range(self.count()):
         tab_name = self.tabText(i)
         if not tab_name.strip():
             button = self.tabBar().tabButton(i, QtWidgets.QTabBar.LeftSide)
             if not isinstance(button, TabButton):
                 continue
             tab_name = button.text()
         action = partial(self.setCurrentIndex, i)
         menu.addAction(tab_name, action)
     menu.exec_(QtGui.QCursor().pos())
Example #4
0
    def mouseReleaseEvent(self, event):
        self.tab_pressed = False
        i = self.tabAt(event.pos())
        if event.button() == QtCore.Qt.LeftButton:
            if i == -1:
                i = self.currentIndex()
            if (i != self.start_move_index):
                self.tab_repositioned_signal.emit(i, self.start_move_index)
            self.handle_close_button_display(event)

        elif event.button() == QtCore.Qt.RightButton:
            menu = QtWidgets.QMenu()

            rename = partial(self._show_name_edit, i)
            menu.addAction('Rename', rename)

            move_to_first = partial(self.move_to_first, i)
            menu.addAction('Move Tab to First', move_to_first)

            move_to_last = partial(self.move_to_last, i)
            menu.addAction('Move Tab to Last', move_to_last)

            close_tab_func = partial(self.removeTab, i)
            menu.addAction('Close Tab', close_tab_func)

            copy_file_path = partial(self.copy_tab_file_path, i)
            menu.addAction('Copy File Path', copy_file_path)

            # Other ideas (TODO)
            """
            menu.addAction('Close Other Tabs', )
            menu.addAction('Close Tabs to Right', )
            menu.addAction('Close Tabs to Left', )
            menu.addAction('Pin Tab', )
            """

            menu.exec_(QtGui.QCursor().pos())

        elif event.button() == QtCore.Qt.MiddleButton:
            if i != -1:
                self.removeTab(i)

        return super(Tabs, self).mouseReleaseEvent(event)
Example #5
0
 def show_tab_menu(self):
     """
     Show a list of tabs and go to
     the tab clicked.
     """
     menu = QtWidgets.QMenu()
     current_index = self.tabs.currentIndex()
     from functools import partial
     for i in range(self.tabs.count()):
         tab_name = self.tabs.tabText(i)
         if not tab_name.strip():
             continue
         func = partial(self.tabs.setCurrentIndex, i)
         action = menu.addAction(tab_name, func)
         if i == current_index:
             font = action.font()
             font.setBold(True)
             font.setUnderline(True)
             action.setFont(font)
             menu.setActiveAction(action)
     menu.exec_(QtGui.QCursor().pos())
Example #6
0
    def mousePressEvent(self, event):

        self.selectedIndices = self.selectedIndexes()
        if bool(self.selectedIndices):
            self.widget = self.model().data(self.selectedIndices[0],
                                            QtCore.Qt.UserRole)
            print(self.widget)

        if event.button() == QtCore.Qt.RightButton:
            self.menu = QtWidgets.QMenu()

            self.regularMenu = QtWidgets.QMenu('regular')
            self.menu.addMenu(self.regularMenu)

            self.builtInMethodMenu = QtWidgets.QMenu('built-in methods')
            self.regularMenu.addMenu(self.builtInMethodMenu)

            self.eventMenu = QtWidgets.QMenu('events')
            self.builtInMethodMenu.addMenu(self.eventMenu)

            self.methodMenu = QtWidgets.QMenu('method-wrappers')
            self.regularMenu.addMenu(self.methodMenu)

            self.dictMenu = QtWidgets.QMenu('dict types')
            self.regularMenu.addMenu(self.dictMenu)

            for method in dir(self.widget):

                attr = getattr(self.widget, method)

                if isinstance(attr, types.BuiltinMethodType):
                    if 'event' in method.lower():
                        self.eventMenu.addAction(
                            method,
                            lambda method=attr, widget=self.widget: self.
                            testWidget(method, widget))
                    else:
                        self.builtInMethodMenu.addAction(
                            method,
                            lambda method=attr, widget=self.widget: self.
                            testWidget(method, widget))

                elif isinstance(attr, type(self.widget.__init__)):
                    self.methodMenu.addAction(
                        method,
                        lambda method=attr, widget=self.widget: self.
                        testWidget(method, widget))

                elif isinstance(attr, types.DictType):
                    for key in attr.keys():
                        try:
                            value = attr.get(key)
                            print(attr, value)
                            self.dictMenu.addAction(
                                ', '.join([key, str(value)]), self.dud)
                        except:
                            pass

                elif isinstance(attr, QtGui.QPaintDevice.PaintDeviceMetric):
                    pass  #seems boring

                else:
                    try:
                        self.regularMenu.addAction(
                            ', '.join([method,
                                       str(attr),
                                       str(type(attr))]),
                            lambda method=attr, widget=self.widget: self.
                            testWidget(method, widget))
                    except:
                        pass

            self.metaMenu = QtWidgets.QMenu('meta')
            self.menu.addMenu(self.metaMenu)

            self.metaMethodMenu = QtWidgets.QMenu('meta methods')
            self.metaMenu.addMenu(self.metaMethodMenu)

            o = self.widget
            conn = QtCore.Qt.QueuedConnection
            for method, signature in self.getMetaMethods(self.widget):

                self.metaMethodMenu.addAction(
                    signature,
                    lambda obj=o, conn=conn: o.metaObject().invokeMethod(
                        obj, QtCore.QGenericArgument()))

            self.metaPropMenu = QtWidgets.QMenu('meta properties')
            self.metaMenu.addMenu(self.metaPropMenu)

            for name, prop in self.getMetaProperties(self.widget):
                self.metaPropMenu.addAction(name, lambda obj=o: prop.read(o))

            self.menu.exec_(QtGui.QCursor().pos())

        else:
            super(self.__class__, self).mousePressEvent(event)