Example #1
0
    def __init__(self, buffer, view_info):
        super(View, self).__init__()

        self.buffer = buffer

        # Init widget attributes.
        if get_emacs_func_result("eaf-emacs-running-in-wayland-native", []):
            self.setWindowFlags(Qt.FramelessWindowHint
                                | Qt.BypassWindowManagerHint)
        elif get_emacs_func_result("eaf-emacs-not-use-reparent-technology",
                                   []):
            self.setWindowFlags(Qt.FramelessWindowHint
                                | Qt.WindowStaysOnTopHint
                                | Qt.NoDropShadowWindowHint)
        else:
            self.setWindowFlags(Qt.FramelessWindowHint)

        self.setAttribute(Qt.WA_X11DoNotAcceptFocus, True)
        self.setContentsMargins(0, 0, 0, 0)
        self.installEventFilter(self)

        # Init attributes.
        self.view_info = view_info
        (self.buffer_id, self.emacs_xid, self.x, self.y, self.width,
         self.height) = view_info.split(":")
        self.x = int(self.x)
        self.y = int(self.y)
        self.width = int(self.width)
        self.height = int(self.height)

        # Build QGraphicsView.
        self.layout = QVBoxLayout(self)
        self.layout.setSpacing(0)
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.graphics_view = QGraphicsView(buffer, self)

        # Remove border from QGraphicsView.
        self.graphics_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphics_view.setRenderHints(QPainter.Antialiasing
                                          | QPainter.SmoothPixmapTransform
                                          | QPainter.TextAntialiasing)
        self.graphics_view.setFrameStyle(QFrame.NoFrame)

        # Fill background color.
        self.graphics_view.setBackgroundBrush(QBrush(buffer.background_color))

        # Add graphics view.
        self.layout.addWidget(self.graphics_view)

        # NOTE: show function must start before resize to trigger *first* resizeEvent after show.
        self.show()

        # Resize after show to trigger fit view operation.
        self.resize(self.width, self.height)

        self.buffer.aspect_ratio_change.connect(self.adjust_aspect_ratio)
    def run(self):
        while self.running_flag:
            in_minibuffer = get_emacs_func_result("minibufferp", [])

            if in_minibuffer:
                minibuffer_input = get_emacs_func_result("minibuffer-contents-no-properties", [])

                if minibuffer_input != self.search_string:
                    self.search_changed.emit(self.callback_tag, minibuffer_input)
                    self.search_string = minibuffer_input
            else:
                self.stop()

            import time
            time.sleep(0.1)
Example #3
0
    def run(self):
        while self.running_flag:
            ## In some cases, the markers may not be ready when fetch_marker_callback is first called,
            ## so we need to call fetch_marker_callback multiple times.
            if self.markers is None or len(self.markers) == 0:
                self.markers = self.fetch_marker_callback()
            minibuffer_input = get_emacs_func_result(
                "minibuffer-contents-no-properties", [])

            marker_input_quit = len(minibuffer_input) > 0 and minibuffer_input[
                -1] in self.marker_quit_keys
            marker_input_finish = minibuffer_input in self.markers

            if marker_input_quit:
                self.running_flag = False
                eval_in_emacs('exit-minibuffer', [])
                message_to_emacs("Quit marker selection.")
                self.match_marker.emit(self.callback_tag, minibuffer_input)
            elif marker_input_finish:
                self.running_flag = False
                eval_in_emacs('exit-minibuffer', [])
                message_to_emacs("Marker selected.")
                self.match_marker.emit(self.callback_tag, minibuffer_input)

            time.sleep(0.1)
    def reparent(self):
        # print("Reparent: ", self.buffer.url)
        qwindow = self.windowHandle()

        if not get_emacs_func_result("eaf-emacs-not-use-reparent-technology",
                                     []):
            qwindow.setParent(QWindow.fromWinId(int(self.emacs_xid)))

        qwindow.setPosition(QPoint(self.x, self.y))
 def try_hide_top_view(self):
     if get_emacs_func_result("eaf-emacs-not-use-reparent-technology", []):
         self.setWindowFlag(Qt.WindowStaysOnTopHint, False)
         self.hide()