Beispiel #1
0
    def __init__(self):
        super(Menu, self).__init__()

        self._app = MenuApp()
        self._app.minimize()
        self._current_request = None

        def respond(result):
            self._app.minimize()
            if self._current_request is not None:
                self._current_request.respond(result)
                self._current_request = None

        def cancel():
            if self._current_request is not None:
                self._current_request.done()
                self._current_request = None

        self._app.selected.connect(respond)
        self._app.dismissed.connect(cancel)
        self._app.dismissed.connect(self._app.minimize)
Beispiel #2
0
class Menu(QObject):
    finished = pyqtSignal()

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

        self._app = MenuApp()
        self._app.minimize()
        self._current_request = None

        def respond(result):
            self._app.minimize()
            if self._current_request is not None:
                self._current_request.respond(result)
                self._current_request = None

        def cancel():
            if self._current_request is not None:
                self._current_request.done()
                self._current_request = None

        self._app.selected.connect(respond)
        self._app.dismissed.connect(cancel)
        self._app.dismissed.connect(self._app.minimize)

    def exec_(self):
        self._app.exec_()
        return self.finished.emit()

    def prompt(self, request, command):
        self._current_request = request
        self._app.restore()

        try:
            self._app.setup(command.items, **command.options)
        except:
            request.done()
            raise

    def kill(self, request, command):
        self.finished.emit()
        self._app.quit()