def contextMenuEvent(self, ev: QContextMenuEvent):
        '''
        Contextmenuevent

        Parameters
        ----------
        ev : QContextMenuEvent
        '''
        ev.accept()
        self.d.drag_start_mouse_position = ev.pos()
        menu = QMenu(self)
        menu.addAction("Detach", self.on_detach_action_triggered)
        menu.addSeparator()

        action = menu.addAction("Close", self.close_requested)
        action.setEnabled(self.is_closable())
        menu.addAction("Close Others", self.close_other_tabs_requested)
        menu.exec(self.mapToGlobal(ev.pos()))
 def on_custom_context_menu_requested(pos: QPoint):
     index: QModelIndex = self.indexAt(pos)
     if index.isValid():
         item = index.internalPointer()
         if isinstance(item, IMCFileModel):
             menu = QMenu()
             close_action_icon = self.window().style().standardIcon(
                 QStyle.SP_DialogCloseButton, widget=self)
             close_action = menu.addAction(close_action_icon, 'Close')
             if menu.exec(self.mapToGlobal(pos)) == close_action:
                 self.events.imc_file_closed.emit(item)
Esempio n. 3
0
class FilterWidget(filterBase):
    __clsName = "LocFilter"
    filterChangeDelay = 200

    varNameRex = re.compile(r"\{(\w*)\}")

    def tr(self, string):
        return QCoreApplication.translate(self.__clsName, string)

    def __init__(self, parent=None):
        super().__init__(parent)
        self._ui = filterClass()
        self._ui.setupUi(self)

        self._delayTimer = QTimer(self)
        self._delayTimer.setInterval(self.filterChangeDelay)
        self._delayTimer.setSingleShot(True)
        if not (qtpy.PYQT4 or qtpy.PYSIDE):
            self._delayTimer.setTimerType(Qt.PreciseTimer)
        self._delayTimer.timeout.connect(self.filterChanged)

        self._ui.filterEdit.textChanged.connect(self._delayTimer.start)

        self._menu = QMenu()
        self._menu.triggered.connect(self._addVariable)

    filterChanged = Signal()

    @Slot(list)
    def setVariables(self, var):
        self._menu.clear()
        for v in var:
            self._menu.addAction(v)

    def setFilterString(self, filt):
        self._ui.filterEdit.setPlainText(filt)

    @Property(str, fset=setFilterString, doc="String describing the filter")
    def filterString(self):
        s = self._ui.filterEdit.toPlainText()
        return self.varNameRex.subn("\\1", s)[0]

    def getFilter(self):
        filterStr = self.filterString
        filterStrList = filterStr.split("\n")

        def filterFunc(data):
            filter = np.ones(len(data), dtype=bool)
            for f in filterStrList:
                with suppress(Exception):
                    filter &= data.eval(f, local_dict={}, global_dict={})
            return filter

        return filterFunc

    @Slot(QAction)
    def _addVariable(self, act):
        self._ui.filterEdit.textCursor().insertText(act.text())

    @Slot(str)
    def on_showVarLabel_linkActivated(self, link):
        if not self._menu.isEmpty():
            self._menu.exec(QCursor.pos())