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)
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()