def accel_reset_terminal(self, *args): # TODO KEYBINDINGS ONLY """Callback to reset and clean the terminal""" HidePrevention(self.window).prevent() current_term = self.notebook.get_current_terminal() current_term.reset(True, True) HidePrevention(self.window).allow() return True
def on_rename(self, user_data): HidePrevention(self.get_toplevel()).prevent() dialog = RenameDialog(self.notebook.guake.window, self.label.get_text()) r = dialog.run() if r == Gtk.ResponseType.ACCEPT: new_text = TabNameUtils.shorten(dialog.get_text(), self.notebook.guake.settings) page_num = self.notebook.find_tab_index_by_label(self) self.notebook.rename_page(page_num, new_text, True) dialog.destroy() HidePrevention(self.get_toplevel()).allow()
def on_reset_custom_colors(self, user_data): HidePrevention(self.get_toplevel()).prevent() if PromptResetColorsDialog(self.notebook.guake.window).reset_tab_custom_colors(): page_num = self.notebook.find_tab_index_by_label(self) for t in self.notebook.get_nth_page(page_num).iter_terminals(): t.reset_custom_colors() self.notebook.guake.set_colors_from_settings_on_page(page_num=page_num) HidePrevention(self.get_toplevel()).allow() self.grab_focus_on_last_focused_terminal()
def on_button_press(self, target, event, user_data): if event.button == 3: # First send to background process if handled, do nothing else if (not event.get_state() & Gdk.ModifierType.SHIFT_MASK and Vte.Terminal.do_button_press_event( self.terminal, event)): return True menu = mk_terminal_context_menu( self.terminal, self.get_window(), self.get_settings(), TerminalContextMenuCallbacks( self.terminal, self.get_window(), self.get_settings(), self.get_root_box().get_notebook(), ), ) menu.connect("hide", MenuHideCallback(self.get_window()).on_hide) HidePrevention(self.get_window()).prevent() try: menu.popup_at_pointer(event) except AttributeError: # Gtk 3.18 fallback ("'Menu' object has no attribute 'popup_at_pointer'") menu.popup(None, None, None, None, event.button, event.time) self.terminal.grab_focus() return True self.terminal.grab_focus() return False
def hide(self): """Hides the main window of the terminal and sets the visible flag to False. """ if not HidePrevention(self.window).may_hide(): return self.hidden = True self.get_widget('window-root').unstick() self.window.hide() # Don't use hide_all here!
def on_window_losefocus(self, window, event): """Hides terminal main window when it loses the focus and if the window_losefocus gconf variable is True. """ if not HidePrevention(self.window).may_hide(): return value = self.settings.general.get_boolean('window-losefocus') visible = window.get_property('visible') self.losefocus_time = get_server_time(self.window) if visible and value: log.info("Hiding on focus lose") self.hide()
def show_hide(self, *args): """Toggles the main window visibility """ log.debug("Show_hide called") if self.forceHide: self.forceHide = False return if not HidePrevention(self.window).may_hide(): return if not self.win_prepare(): return if not self.window.get_property('visible'): log.info("Showing the terminal") self.show() self.set_terminal_focus() return # Disable the focus_if_open feature # - if doesn't work seamlessly on all system # - self.window.window.get_state doesn't provides us the right information on all # systems, especially on MATE/XFCE # # if self.client.get_bool(KEY('/general/focus_if_open')): # restore_focus = False # if self.window.window: # state = int(self.window.window.get_state()) # if ((state & GDK_WINDOW_STATE_STICKY or # state & GDK_WINDOW_STATE_WITHDRAWN # )): # restore_focus = True # else: # restore_focus = True # if not self.hidden: # restore_focus = True # if restore_focus: # log.debug("DBG: Restoring the focus to the terminal") # self.hide() # self.show() # self.window.window.focus() # self.set_terminal_focus() # return log.info("hiding the terminal") self.hide()
def find_tab(self, directory=None): log.debug("find") # TODO SEARCH HidePrevention(self.window).prevent() search_text = Gtk.TextView() dialog = Gtk.Dialog( _("Find"), self.window, Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Forward"), RESPONSE_FORWARD, _("Backward"), RESPONSE_BACKWARD, Gtk.STOCK_CANCEL, Gtk.ResponseType.NONE)) dialog.vbox.pack_end(search_text, True, True, 0) dialog.buffer = search_text.get_buffer() dialog.connect("response", self._dialog_response_callback) search_text.show() search_text.grab_focus() dialog.show_all()
def _dialog_response_callback(self, dialog, response_id): if response_id not in (RESPONSE_FORWARD, RESPONSE_BACKWARD): dialog.destroy() HidePrevention(self.window).allow() return start, end = dialog.buffer.get_bounds() search_string = start.get_text(end) log.debug("Searching for %r %s\n", search_string, "forward" if response_id == RESPONSE_FORWARD else "backward") current_term = self.notebook.get_current_terminal() log.debug("type: %r", type(current_term)) log.debug("dir: %r", dir(current_term)) current_term.search_set_gregex() current_term.search_get_gregex()
def on_button_press(self, target, event, user_data): if event.button == 3: menu = mk_tab_context_menu(self) menu.connect("hide", MenuHideCallback(self.get_toplevel()).on_hide) HidePrevention(self.get_toplevel()).prevent() try: menu.popup_at_pointer(event) except AttributeError: # Gtk 3.18 fallback ("'Menu' object has no attribute 'popup_at_pointer'") menu.popup(None, None, None, None, event.button, event.get_time()) return True if event.button == 2: prompt_cfg = self.notebook.guake.settings.general.get_int('prompt-on-close-tab') self.notebook.delete_page_by_label(self, prompt=prompt_cfg) return True if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS: self.on_rename(None) return False
def on_button_press(self, target, event, user_data): if event.button == 3: menu = mk_tab_context_menu(self) menu.connect("hide", MenuHideCallback(self.get_toplevel()).on_hide) HidePrevention(self.get_toplevel()).prevent() try: menu.popup_at_pointer(event) except AttributeError: # Gtk 3.18 fallback ("'Menu' object has no attribute 'popup_at_pointer'") menu.popup(None, None, None, None, event.button, event.get_time()) self.notebook.get_current_terminal().grab_focus() return True if event.button == 2: self.notebook.delete_page_by_label(self) return True if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS: self.on_rename(None) self.notebook.get_current_terminal().grab_focus() return False
def on_hide(self, *args): HidePrevention(self.window).allow()