def new_page(self, directory=None): terminal = GuakeTerminal(self.guake) terminal.grab_focus() if not isinstance(directory, str): directory = os.environ['HOME'] try: if self.guake.settings.general.get_boolean('open-tab-cwd'): active_terminal = self.get_focused_terminal() directory = os.path.expanduser('~') if active_terminal: directory = active_terminal.get_current_directory() except Exception as e: pass terminal.spawn_sync_pid(directory) terminal_box = TerminalBox() terminal_box.set_terminal(terminal) root_terminal_box = RootTerminalBox(self.guake) root_terminal_box.set_child(terminal_box) page_num = self.append_page(root_terminal_box, None) self.set_tab_reorderable(root_terminal_box, True) self.show_all() # needed to show newly added tabs and pages # this is needed to initially set the last_terminal_focused, # one could also call terminal.get_parent().on_terminal_focus() terminal.emit("focus", Gtk.DirectionType.TAB_FORWARD) self.emit('terminal-spawned', terminal, terminal.pid) return root_terminal_box, page_num, terminal
def terminal_spawn(self, directory=None): terminal = GuakeTerminal(self.guake) terminal.grab_focus() terminal.connect( "key-press-event", lambda x, y: self.guake.accel_group.activate(x, y) if self.guake.accel_group else False, ) if not isinstance(directory, str): directory = os.environ["HOME"] try: if self.guake.settings.general.get_boolean("open-tab-cwd"): # Do last focused terminal still alive? active_terminal = self.get_current_terminal() if not active_terminal: # If not alive, can we get any focused terminal? active_terminal = self.get_focused_terminal() directory = os.path.expanduser("~") if active_terminal: # If found, we will use its directory as new terminal's directory directory = active_terminal.get_current_directory() except BaseException: pass log.info("Spawning new terminal at %s", directory) terminal.spawn_sync_pid(directory) return terminal
def terminal_spawn(self, directory=None): terminal = GuakeTerminal(self.guake) terminal.grab_focus() if not isinstance(directory, str): directory = os.environ['HOME'] try: if self.guake.settings.general.get_boolean('open-tab-cwd'): active_terminal = self.get_focused_terminal() directory = os.path.expanduser('~') if active_terminal: directory = active_terminal.get_current_directory() except Exception as e: pass terminal.spawn_sync_pid(directory) return terminal
def terminal_spawn(self, directory=None): terminal = GuakeTerminal(self.guake) terminal.grab_focus() if not isinstance(directory, str): directory = os.environ['HOME'] try: if self.guake.settings.general.get_boolean('open-tab-cwd'): # Do last focused terminal still alive? active_terminal = self.get_current_terminal() if not active_terminal: # If not alive, can we get any focused terminal? active_terminal = self.get_focused_terminal() directory = os.path.expanduser('~') if active_terminal: # If found, we will use its directory as new terminal's directory directory = active_terminal.get_current_directory() except Exception as e: pass log.info("Spawning new terminal at %s", directory) terminal.spawn_sync_pid(directory) return terminal
def __init__(self): """Setup the preferences dialog interface, loading images, adding filters to file choosers and connecting some signals. """ super(PrefsDialog, self).__init__(gladefile('prefs.glade'), root='config-window') self.add_callbacks(PrefsCallbacks()) self.client = gconf.client_get_default() # setting evtbox title bg eventbox = self.get_widget('eventbox-title') eventbox.modify_bg(gtk.STATE_NORMAL, eventbox.get_colormap().alloc_color("#ffffff")) # images ipath = pixmapfile('guake-notification.png') self.get_widget('image_logo').set_from_file(ipath) ipath = pixmapfile('quick-open.png') self.get_widget('image_quick_open').set_from_file(ipath) # the first position in tree will store the keybinding path in gconf, # and the user doesn't worry with this, let's hide that =D model = gtk.TreeStore(str, str, object, bool) treeview = self.get_widget('treeview-keys') treeview.set_model(model) treeview.set_rules_hint(True) treeview.connect('button-press-event', self.start_editing) renderer = gtk.CellRendererText() column = gtk.TreeViewColumn('keypath', renderer, text=0) column.set_visible(False) treeview.append_column(column) renderer = gtk.CellRendererText() column = gtk.TreeViewColumn(_('Action'), renderer, text=1) column.set_property('expand', True) treeview.append_column(column) renderer = gtk.CellRendererAccel() renderer.set_property('editable', True) renderer.connect('accel-edited', self.on_key_edited, model) renderer.connect('accel-cleared', self.on_key_cleared, model) column = gtk.TreeViewColumn(_('Shortcut'), renderer) column.set_cell_data_func(renderer, self.cell_data_func) column.set_property('expand', False) treeview.append_column(column) self.demo_terminal = GuakeTerminal() demo_terminal_box = self.get_widget('demo_terminal_box') demo_terminal_box.add(self.demo_terminal) default_params = {} pid = self.demo_terminal.fork_command(**default_params) self.demo_terminal.pid = pid self.populate_shell_combo() self.populate_keys_tree() self.populate_display_n() self.load_configs() self.get_widget('config-window').hide() # Preview when selecting a bgimage self.selection_preview = gtk.Image() self.file_filter = gtk.FileFilter() self.file_filter.add_pattern("*.jpg") self.file_filter.add_pattern("*.png") self.file_filter.add_pattern("*.svg") self.file_filter.add_pattern("*.jpeg") self.bgfilechooser = self.get_widget('background_image') self.bgfilechooser.set_preview_widget(self.selection_preview) self.bgfilechooser.set_filter(self.file_filter) self.bgfilechooser.connect('update-preview', self.update_preview, self.selection_preview)
def __init__(self, settings): """Setup the preferences dialog interface, loading images, adding filters to file choosers and connecting some signals. """ self.hotkey_alread_used = False self.store = None super(PrefsDialog, self).__init__(gladefile('prefs.glade'), root='config-window') self.settings = settings self.add_callbacks(PrefsCallbacks(self)) # window cleanup handler self.window = self.get_widget('config-window') self.get_widget('config-window').connect('destroy', self.on_destroy) # setting evtbox title bg eventbox = self.get_widget('eventbox-title') eventbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(255, 255, 255, 255)) # images ipath = pixmapfile('guake-notification.png') self.get_widget('image_logo').set_from_file(ipath) ipath = pixmapfile('quick-open.png') self.get_widget('image_quick_open').set_from_file(ipath) # Model format: # 0: the keybinding path in gsettings (str, hidden), # 1: label (str) # 2: human readable accelerator (str) # 3: gtk accelerator (str, hidden) self.store = Gtk.TreeStore(str, str, str, str) treeview = self.get_widget('treeview-keys') treeview.set_model(self.store) treeview.set_rules_hint(True) # TODO PORT this is killing the editing of the accl # treeview.connect('button-press-event', self.start_editing) renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn(_('Action'), renderer, text=1) column.set_property('expand', True) treeview.append_column(column) renderer = Gtk.CellRendererAccel() renderer.set_property('editable', True) renderer.connect('accel-edited', self.on_accel_edited) renderer.connect('accel-cleared', self.on_accel_cleared) column = Gtk.TreeViewColumn(_('Shortcut'), renderer, text=2) column.pack_start(renderer, True) column.set_property('expand', False) column.add_attribute(renderer, "accel-mods", 0) column.add_attribute(renderer, "accel-key", 1) treeview.append_column(column) self.demo_terminal = GuakeTerminal(self.settings) self.demo_terminal_box = self.get_widget('demo_terminal_box') self.demo_terminal_box.add(self.demo_terminal) pid = self.spawn_sync_pid(None, self.demo_terminal) self.demo_terminal.pid = pid self.populate_shell_combo() self.populate_keys_tree() self.populate_display_n() self.load_configs() self.get_widget('config-window').hide()
def __init__(self, settings): """Setup the preferences dialog interface, loading images, adding filters to file choosers and connecting some signals. """ super(PrefsDialog, self).__init__(gladefile('prefs.glade'), root='config-window') self.settings = settings self.add_callbacks(PrefsCallbacks(self)) # window cleanup handler self.window = self.get_widget('config-window') self.get_widget('config-window').connect('destroy', self.on_destroy) # setting evtbox title bg eventbox = self.get_widget('eventbox-title') eventbox.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(255, 255, 255, 255)) # images ipath = pixmapfile('guake-notification.png') self.get_widget('image_logo').set_from_file(ipath) ipath = pixmapfile('quick-open.png') self.get_widget('image_quick_open').set_from_file(ipath) # the first position in tree will store the keybinding path in gconf, # and the user doesn't worry with this, let's hide that =D model = Gtk.TreeStore(str, str, object, bool) treeview = self.get_widget('treeview-keys') treeview.set_model(model) treeview.set_rules_hint(True) # TODO PORT this is killing the editing of the accl # treeview.connect('button-press-event', self.start_editing) renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn('keypath', renderer, text=0) column.set_visible(False) treeview.append_column(column) renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn(_('Action'), renderer, text=1) column.set_property('expand', True) treeview.append_column(column) renderer = Gtk.CellRendererAccel() renderer.set_property('editable', True) renderer.connect('accel-edited', self.on_key_edited, model) renderer.connect('accel-cleared', self.on_key_cleared, model) column = Gtk.TreeViewColumn(_('Shortcut'), renderer) column.set_cell_data_func(renderer, self.cell_data_func) column.set_property('expand', False) treeview.append_column(column) self.demo_terminal = GuakeTerminal(self.settings) demo_terminal_box = self.get_widget('demo_terminal_box') demo_terminal_box.add(self.demo_terminal) pid = self.spawn_sync_pid(None, self.demo_terminal) self.demo_terminal.pid = pid self.populate_shell_combo() self.populate_keys_tree() self.populate_display_n() self.load_configs() self.get_widget('config-window').hide()