def override_gtk_theme(self): css_provider = Gtk.CssProvider() bg = Gdk.color_parse(ConfigManager.get_conf('color-background')) bg_hex = '#%02X%02X%02X' % (int((bg.red/65536.0)*256), int((bg.green/65536.0)*256), int((bg.blue/65536.0)*256)) css_provider.load_from_data(''' #notebook GtkPaned { -GtkPaned-handle-size: %i; } GtkVScrollbar { -GtkRange-slider-width: 5; } GtkVScrollbar.trough { background-image: none; background-color: %s; border-width: 0; border-radius: 0; } GtkVScrollbar.slider, GtkVScrollbar.slider:prelight, GtkVScrollbar.button { background-image: none; border-width: 0; background-color: alpha(#FFF, 0.4); border-radius: 10px; box-shadow: none; } ''' % (ConfigManager.get_conf('seperator-size'), bg_hex)) style_context = Gtk.StyleContext() style_context.add_provider_for_screen(self.screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
def __init__(self): super(Gtk.HBox, self).__init__() ConfigManager.add_callback(self.update_ui) self.vte = Vte.Terminal() self.pack_start(self.vte, True, True, 0) if ConfigManager.get_conf('show-scrollbar'): self.vscroll = Gtk.VScrollbar() self.vscroll.set_adjustment(self.vte.get_vadjustment()) self.pack_end(self.vscroll, False, True, 0) dir_conf = ConfigManager.get_conf('dir') if dir_conf == '$home$': run_dir = os.environ['HOME'] elif dir_conf == '$pwd$': run_dir = os.getcwd() else: run_dir = dir_conf self.vte.fork_command_full( Vte.PtyFlags.DEFAULT, run_dir, ConfigManager.get_conf('shell').split(), [], GLib.SpawnFlags.DO_NOT_REAP_CHILD, None, None) self.vte.connect('button-release-event', self.on_button_release) self.update_ui()
def __init__(self): super(Gtk.HBox, self).__init__() ConfigManager.add_callback(self.update_ui) self.vte = Vte.Terminal() self.pack_start(self.vte, True, True, 0) if ConfigManager.get_conf('show-scrollbar'): self.vscroll = Gtk.VScrollbar() self.vscroll.set_adjustment(self.vte.get_vadjustment()) self.pack_end(self.vscroll, False, True, 0) dir_conf = ConfigManager.get_conf('dir') if dir_conf == '$home$': run_dir = os.environ['HOME'] elif dir_conf == '$pwd$': run_dir = os.getcwd() else: run_dir = dir_conf self.vte.fork_command_full(Vte.PtyFlags.DEFAULT, run_dir, ConfigManager.get_conf('shell').split(), [], GLib.SpawnFlags.DO_NOT_REAP_CHILD, None, None) self.vte.connect('button-release-event', self.on_button_release) self.update_ui()
def on_window_losefocus(self, window, event): if self.slide_effect_running: return if ConfigManager.disable_losefocus_temporary: return if not ConfigManager.get_conf('losefocus-hiding'): return if self.get_property('visible'): self.losefocus_time = GdkX11.x11_get_server_time(self.get_window()) if ConfigManager.get_conf('use-animation'): self.slide_up() self.unrealize() self.hide()
def __init__(self, progname=[ConfigManager.get_conf('shell')], run_dir=None, term_id=0): super(Gtk.HBox, self).__init__() ConfigManager.add_callback(self.update_ui) self.progname = ' '.join(progname) self.id = VteObjectContainer.handle_id(term_id) self.parent = 0 self.vte = Vte.Terminal() self.pack_start(self.vte, True, True, 0) self.vscroll = Gtk.VScrollbar(self.vte.get_vadjustment()) self.pack_start(self.vscroll, False, False, 0) self.fork_process(progname, run_dir) for regex_string in regex_strings: regex_obj = GLib.Regex.new(regex_string, 0, 0) tag = self.vte.match_add_gregex(regex_obj, 0) self.vte.match_set_cursor_type(tag, Gdk.CursorType.HAND2) self.vte.connect('scroll-event', self.scroll_event) self.vte.connect('child-exited', self.on_child_exited) self.vte.connect('button-release-event', self.on_button_release) self.vte.connect('increase-font-size', self.change_font_size, 0.1) self.vte.connect('decrease-font-size', self.change_font_size, -0.1) self.update_ui()
def update_ui(self): #self.vte.set_background_saturation(ConfigManager.get_conf('transparency') / 100.0) #self.vte.set_opacity(int((100 - ConfigManager.get_conf(('transparency'))) / 100.0 * 65535)) self.vte.set_colors( Gdk.color_parse(ConfigManager.get_conf('color-text')), Gdk.color_parse(ConfigManager.get_conf('color-background')), []) #self.vte.set_background_image_file( # ConfigManager.get_conf('background-image')) if not ConfigManager.get_conf('use-default-font'): self.vte.set_font_from_string(ConfigManager.get_conf('font-name')) self.show_all()
def __init__(self, bare=False, progname=[ConfigManager.get_conf('shell')]): super(VteObjectContainer, self).__init__() if not bare: self.vte_list = [] self.active_terminal = VteObject(progname, None, 0) self.vte_list.append(self.active_terminal) self.pack_start(self.active_terminal , True, True, 0) self.show_all()
def __init__(self): globalhotkeys.init() self.hotkey = globalhotkeys.GlobalHotkey() self.bind_success = self.hotkey.bind(ConfigManager.get_conf('global-key'), lambda w: self.show_hide(), None) self.apps = [] self.old_apps = [] self.screenid = 0 self.on_doing = False self.is_running = False
def slide_down(self, i=1): step = ConfigManager.get_conf('step-count') self.slide_effect_running = True if not self.is_fullscreen: win_rect = self.monitor else: win_rect = self.get_screen_rectangle() if self.get_window() != None: self.get_window().enable_synchronized_configure() if i < step + 1: self.resize(win_rect.width, int(((win_rect.height/step) * i))) self.queue_resize() self.resizer.set_property('position', int(((win_rect.height/step) * i))) self.resizer.queue_resize() self.update_events() GObject.timeout_add(ConfigManager.get_conf('step-time'), self.slide_down, i+1) if self.get_window() != None: self.get_window().configure_finished() self.slide_effect_running = False
def cannot_bind(app): ConfigManager.set_conf('hide-on-start', False) ConfigManager.set_conf('losefocus-hiding', False) msgtext = _( "Another application using '%s'. Please open preferences and change the shortcut key." ) % ConfigManager.get_conf('global-key') msgbox = Gtk.MessageDialog(app, Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, msgtext) msgbox.run() msgbox.destroy()
def __init__(self): globalhotkeys.init() self.hotkey = globalhotkeys.GlobalHotkey() self.bind_success = self.hotkey.bind( ConfigManager.get_conf('global-key'), lambda w: self.show_hide(), None) self.apps = [] self.old_apps = [] self.screenid = 0 self.on_doing = False self.is_running = False
def slide_up(self, i=0): self.slide_effect_running = True step = ConfigManager.get_conf('step-count') if not self.is_fullscreen: win_rect = self.monitor else: win_rect = self.get_allocation() if self.get_window() != None: self.get_window().enable_synchronized_configure() if i < step+1: self.resize(win_rect.width, win_rect.height - int(((win_rect.height/step) * i))) self.queue_resize() self.update_events() GObject.timeout_add(ConfigManager.get_conf('step-time'), self.slide_up, i+1) else: self.hide() self.unrealize() if self.get_window() != None: self.get_window().configure_finished() self.slide_effect_running = False
def slide_down(self, i=1): step = ConfigManager.get_conf('step-count') self.slide_effect_running = True if not self.is_fullscreen: win_rect = self.monitor else: win_rect = self.get_screen_rectangle() if self.get_window() != None: self.get_window().enable_synchronized_configure() if i < step + 1: self.resize(win_rect.width, int(((win_rect.height / step) * i))) self.queue_resize() self.resizer.set_property('position', int(((win_rect.height / step) * i))) self.resizer.queue_resize() self.update_events() GObject.timeout_add(ConfigManager.get_conf('step-time'), self.slide_down, i + 1) if self.get_window() != None: self.get_window().configure_finished() self.slide_effect_running = False
def exit(self): if ConfigManager.get_conf('prompt-on-quit'): ConfigManager.disable_losefocus_temporary = True msgtext = _("Do you really want to quit?") msgbox = Gtk.MessageDialog(self, Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.WARNING, Gtk.ButtonsType.YES_NO, msgtext) response = msgbox.run() msgbox.destroy() ConfigManager.disable_losefocus_temporary = False if response != Gtk.ResponseType.YES: return False quit_prog()
def show_hide(self): if self.slide_effect_running: return event_time = self.hotkey.get_current_event_time() if (self.losefocus_time and self.losefocus_time >= event_time): return if self.get_visible(): if ConfigManager.get_conf('use-animation'): self.slide_up() else: self.hide() return else: self.update_ui() self.show() x11_win = self.get_window() x11_time = GdkX11.x11_get_server_time(x11_win) x11_win.focus(x11_time) if ConfigManager.get_conf('use-animation'): self.slide_down()
def show_hide(self): if self.slide_effect_running: return event_time = self.hotkey.get_current_event_time() if(self.losefocus_time and self.losefocus_time >= event_time): return if self.get_visible(): if ConfigManager.get_conf('use-animation'): self.slide_up() else: self.hide() return else: self.update_ui() self.show() x11_win = self.get_window() x11_time = GdkX11.x11_get_server_time(x11_win) x11_win.focus(x11_time) if ConfigManager.get_conf('use-animation'): self.slide_down()
def slide_up(self, i=0): self.slide_effect_running = True step = ConfigManager.get_conf('step-count') if not self.is_fullscreen: win_rect = self.monitor else: win_rect = self.get_allocation() if self.get_window() != None: self.get_window().enable_synchronized_configure() if i < step + 1: self.resize(win_rect.width, win_rect.height - int( ((win_rect.height / step) * i))) self.queue_resize() self.update_events() GObject.timeout_add(ConfigManager.get_conf('step-time'), self.slide_up, i + 1) else: self.hide() self.unrealize() if self.get_window() != None: self.get_window().configure_finished() self.slide_effect_running = False
def override_gtk_theme(self): css_provider = Gtk.CssProvider() bg = Gdk.color_parse(ConfigManager.get_conf('color-background')) bg_hex = '#%02X%02X%02X' % (int( (bg.red / 65536.0) * 256), int( (bg.green / 65536.0) * 256), int((bg.blue / 65536.0) * 256)) css_provider.load_from_data(''' #notebook GtkPaned { -GtkPaned-handle-size: %i; } GtkVScrollbar { -GtkRange-slider-width: 5; } GtkVScrollbar.trough { background-image: none; background-color: %s; border-width: 0; border-radius: 0; } GtkVScrollbar.slider, GtkVScrollbar.slider:prelight, GtkVScrollbar.button { background-image: none; border-width: 0; background-color: alpha(#FFF, 0.4); border-radius: 10px; box-shadow: none; } ''' % (ConfigManager.get_conf('seperator-size'), bg_hex)) style_context = Gtk.StyleContext() style_context.add_provider_for_screen(self.screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
def update_ui(self): self.set_keep_above(ConfigManager.get_conf('always-on-top')) self.set_decorated(ConfigManager.get_conf('use-border')) self.set_skip_taskbar_hint(ConfigManager.get_conf('skip-taskbar')) css_provider = Gtk.CssProvider() css_provider.load_from_data( '''#notebook GtkPaned {-GtkPaned-handle-size: %i;}''' % (ConfigManager.get_conf('seperator-size'))) style_context = Gtk.StyleContext() style_context.add_provider_for_screen(self.screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) if self.is_fullscreen: self.fullscreen() width = self.screen.get_width() height = self.screen.get_height() else: self.unfullscreen() width = ConfigManager.get_conf( 'width') * self.screen.get_width() / 100 height = ConfigManager.get_conf( 'height') * self.screen.get_height() / 100 self.resize(width, height) vertical_position = ConfigManager.get_conf( 'vertical-position') * self.screen.get_height() / 100 if vertical_position - (height / 2) < 0: vertical_position = 0 elif vertical_position + (height / 2) > self.screen.get_height(): vertical_position = self.screen.get_height() - (height / 2) else: vertical_position = vertical_position - (height / 2) horizontal_position = ConfigManager.get_conf( 'horizontal-position') * self.screen.get_width() / 100 if horizontal_position - (width / 2) < 0: horizontal_position = 0 elif horizontal_position + (width / 2) > self.screen.get_width(): horizontal_position = self.screen.get_width() - (width / 2) else: horizontal_position = horizontal_position - (width / 2) self.move(horizontal_position, vertical_position) self.show_all()
def fork_process(self, progname, run_dir=None): if run_dir == None: dir_conf = ConfigManager.get_conf('dir') if dir_conf == '$home$': run_dir = os.environ['HOME'] elif dir_conf == '$pwd$': run_dir = os.getcwd() else: run_dir = dir_conf self.pid = self.vte.fork_command_full( Vte.PtyFlags.DEFAULT, run_dir, progname, [], GLib.SpawnFlags.DO_NOT_REAP_CHILD, None, None)
def grab(self): Gdk.threads_enter() accelerator = ConfigManager.get_conf('global-key') Gdk.threads_leave() keyval, modifiers = Gtk.accelerator_parse(accelerator) if not accelerator or(not keyval and not modifiers): self.keycode = None self.modifiers = None return self.keycode= self.keymap.get_entries_for_keyval(keyval)[1][0].keycode self.modifiers = int(modifiers) catch = error.CatchError(error.BadAccess) self.root.grab_key(self.keycode, X.AnyModifier, True, X.GrabModeAsync, X.GrabModeSync,onerror=catch) self.display.sync() if catch.get_error(): return False return True
def __init__(self): super(TerminalWin, self).__init__() self.keybinding = None self.builder = Gtk.Builder() self.builder.add_from_file(ConfigManager.data_dir + 'ui/main.ui') ConfigManager.add_callback(self.update_ui) ConfigManager.show_hide_callback = self.show_hide self.screen = self.get_screen() self.losefocus_time = 0 self.init_transparency() self.init_ui() self.add_page() self.update_ui() if ConfigManager.get_conf('hide-on-start'): self.hide()
def __init__(self, name, monitor): super(TerminalWin, self).__init__() self.builder = Gtk.Builder() self.builder.set_translation_domain('terra') self.builder.add_from_file(ConfigManager.data_dir + 'ui/main.ui') self.name = name self.screen_id = int(name.split('-')[1]) ConfigManager.add_callback(self.update_ui) self.screen = self.get_screen() self.monitor = monitor self.init_transparency() self.init_ui() self.update_ui() if not ConfigManager.get_conf('hide-on-start'): self.show_all() self.paned_childs = []
def page_close(self, menu, sender): button_count = len(self.buttonbox.get_children()) # don't forget "radio_group_leader" if button_count <= 2: if (ConfigManager.get_conf('spawn-term-on-last-close')): self.add_page() else: return self.quit() page_no = 0 for i in self.buttonbox: if i != self.radio_group_leader: if i == sender: self.notebook.remove_page(page_no) self.buttonbox.remove(i) last_button = self.buttonbox.get_children()[-1] last_button.set_active(True) return True page_no = page_no + 1
def update_ui(self): self.unmaximize() self.stick() self.override_gtk_theme() self.set_keep_above(ConfigManager.get_conf('always-on-top')) self.set_decorated(ConfigManager.get_conf('use-border')) self.set_skip_taskbar_hint(ConfigManager.get_conf('skip-taskbar')) win_rect = self.monitor if ConfigManager.get_conf('hide-tab-bar'): self.tabbar.hide() self.tabbar.set_no_show_all(True) else: self.tabbar.set_no_show_all(False) self.tabbar.show() if self.is_fullscreen: win_rect = self.get_screen_rectangle() self.reshow_with_initial_size() self.move(win_rect.x, win_rect.y) self.fullscreen() # hide resizer if self.resizer.get_child2() != None: self.resizer.remove(self.resizer.get_child2()) # hide tab bar if ConfigManager.get_conf('hide-tab-bar-fullscreen'): self.tabbar.set_no_show_all(True) self.tabbar.hide() else: # show resizer if self.resizer.get_child2() == None: self.resizer.add2(Gtk.Box()) self.resizer.get_child2().show_all() # show tab bar if ConfigManager.get_conf('hide-tab-bar-fullscreen'): self.tabbar.set_no_show_all(False) self.tabbar.show() self.unfullscreen() self.reshow_with_initial_size() self.resize(win_rect.width, win_rect.height) self.move(win_rect.x, win_rect.y)
def grab(self): Gdk.threads_enter() accelerator = ConfigManager.get_conf('global-key') Gdk.threads_leave() keyval, modifiers = Gtk.accelerator_parse(accelerator) if not accelerator or (not keyval and not modifiers): self.keycode = None self.modifiers = None return self.keycode = self.keymap.get_entries_for_keyval(keyval)[1][0].keycode self.modifiers = int(modifiers) catch = error.CatchError(error.BadAccess) self.root.grab_key(self.keycode, X.AnyModifier, True, X.GrabModeAsync, X.GrabModeSync, onerror=catch) self.display.sync() if catch.get_error(): return False return True
def update_ui(self): self.set_keep_above(ConfigManager.get_conf('always-on-top')) self.set_decorated(ConfigManager.get_conf('use-border')) self.set_skip_taskbar_hint(ConfigManager.get_conf('skip-taskbar')) css_provider = Gtk.CssProvider() css_provider.load_from_data('''#notebook GtkPaned {-GtkPaned-handle-size: %i;}''' % (ConfigManager.get_conf('seperator-size'))) style_context = Gtk.StyleContext() style_context.add_provider_for_screen(self.screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) if self.is_fullscreen: self.fullscreen() width = self.screen.get_width() height = self.screen.get_height() else: self.unfullscreen() width = ConfigManager.get_conf('width') * self.screen.get_width() / 100 height = ConfigManager.get_conf('height') * self.screen.get_height() / 100 self.resize(width, height) vertical_position = ConfigManager.get_conf('vertical-position') * self.screen.get_height() / 100 if vertical_position - (height / 2) < 0: vertical_position = 0 elif vertical_position + (height / 2) > self.screen.get_height(): vertical_position = self.screen.get_height() - (height / 2) else: vertical_position = vertical_position - (height / 2) horizontal_position = ConfigManager.get_conf('horizontal-position') * self.screen.get_width() / 100 if horizontal_position - (width / 2) < 0: horizontal_position = 0 elif horizontal_position + (width / 2) > self.screen.get_width(): horizontal_position = self.screen.get_width() - (width / 2) else: horizontal_position = horizontal_position - (width / 2) self.move(horizontal_position, vertical_position) self.show_all()
def reset_progname(self, widget): self.progname = ConfigManager.get_conf('shell')
def update_ui(self): if ConfigManager.get_conf('show-scrollbar'): self.vscroll.set_no_show_all(False) else: self.vscroll.set_no_show_all(True) self.vscroll.hide() if ConfigManager.get_conf('infinite-scrollback'): self.vte.set_scrollback_lines(-1) else: self.vte.set_scrollback_lines(ConfigManager.get_conf('scrollback-lines')) self.vte.set_scroll_on_output(ConfigManager.get_conf('scroll-on-output')) self.vte.set_scroll_on_keystroke(ConfigManager.get_conf('scroll-on-keystroke')) if hasattr(self.vte, 'set_background_saturation'): self.vte.set_background_saturation(ConfigManager.get_conf('transparency') / 100.0) if hasattr(self.vte, 'set_background_transparent'): self.vte.set_background_transparent(ConfigManager.use_fake_transparency) if hasattr(self.vte, 'set_background_image_file'): self.vte.set_background_image_file( ConfigManager.get_conf('background-image')) self.vte.set_opacity(int((100 - ConfigManager.get_conf(('transparency'))) / 100.0 * 65535)) self.vte.set_word_chars(ConfigManager.get_conf('select-by-word')) self.vte.set_colors( Gdk.color_parse(ConfigManager.get_conf('color-text')), Gdk.color_parse(ConfigManager.get_conf('color-background')), []) if not ConfigManager.get_conf('use-default-font'): self.vte.set_font_from_string(ConfigManager.get_conf('font-name')) self.show_all()
def on_child_exited(self, event): self.fork_process([ConfigManager.get_conf('shell')])
def on_keypress(self, widget, event): if ConfigManager.key_event_compare('toggle-scrollbars-key', event): ConfigManager.set_conf('show-scrollbar', not ConfigManager.get_conf('show-scrollbar')) ConfigManager.save_config() ConfigManager.callback() return True if ConfigManager.key_event_compare('move-up-key', event): self.get_active_terminal().move(direction=1) return True if ConfigManager.key_event_compare('move-down-key', event): self.get_active_terminal().move(direction=2) return True if ConfigManager.key_event_compare('move-left-key', event): self.get_active_terminal().move(direction=3) return True if ConfigManager.key_event_compare('move-right-key', event): self.get_active_terminal().move(direction=4) return True if ConfigManager.key_event_compare('quit-key', event): self.quit() return True if ConfigManager.key_event_compare('select-all-key', event): self.get_active_terminal().select_all() return True if ConfigManager.key_event_compare('copy-key', event): self.get_active_terminal().copy_clipboard() return True if ConfigManager.key_event_compare('paste-key', event): self.get_active_terminal().paste_clipboard() return True if ConfigManager.key_event_compare('split-v-key', event): self.get_active_terminal().split_axis(None, 'h') return True if ConfigManager.key_event_compare('split-h-key', event): self.get_active_terminal().split_axis(None, 'v') return True if ConfigManager.key_event_compare('close-node-key', event): self.get_active_terminal().close_node(None) return True if ConfigManager.key_event_compare('fullscreen-key', event): self.toggle_fullscreen() return True if ConfigManager.key_event_compare('new-page-key', event): self.add_page() return True if ConfigManager.key_event_compare('rename-page-key', event): for button in self.buttonbox: if button != self.radio_group_leader and button.get_active(): self.page_rename(None, button) return True if ConfigManager.key_event_compare('close-page-key', event): for button in self.buttonbox: if button != self.radio_group_leader and button.get_active(): self.page_close(None, button) return True if ConfigManager.key_event_compare('next-page-key', event): page_button_list = self.buttonbox.get_children()[1:] for i in range(len(page_button_list)): if (page_button_list[i].get_active() == True): if (i + 1 < len(page_button_list)): page_button_list[i+1].set_active(True) else: page_button_list[0].set_active(True) return True if ConfigManager.key_event_compare('prev-page-key', event): page_button_list = self.buttonbox.get_children()[1:] for i in range(len(page_button_list)): if page_button_list[i].get_active(): if i > 0: page_button_list[i-1].set_active(True) else: page_button_list[-1].set_active(True) return True if ConfigManager.key_event_compare('move-page-left', event): i = 0 for button in self.buttonbox: if button != self.radio_group_leader and button.get_active(): if (i - 1) > 0: self.notebook.reorder_child(self.notebook.get_nth_page(i - 1), i - 2) self.buttonbox.reorder_child(button, i - 1) return True else: return False i += 1 if ConfigManager.key_event_compare('move-page-right', event): i = 0 for button in self.buttonbox: if button != self.radio_group_leader and button.get_active(): if (i + 1) < len(self.buttonbox): self.notebook.reorder_child(self.notebook.get_nth_page(i - 1), i) self.buttonbox.reorder_child(button, i + 1) return True else: return False i += 1
def on_losefocus(self, window, event): if ConfigManager.get_conf('losefocus-hiding') and not ConfigManager.disable_losefocus_temporary: self.hide()
def init_ui(self): builder = Gtk.Builder() builder.set_translation_domain('terra') builder.add_from_file(ConfigManager.data_dir + 'ui/preferences.ui') self.window = builder.get_object('preferences_window') self.window.connect('destroy', self.on_cancel_clicked) self.logo = builder.get_object('terra_logo') self.logo_buffer = GdkPixbuf.Pixbuf.new_from_file_at_size(ConfigManager.data_dir + 'image/terra.svg', 64, 64) self.logo.set_from_pixbuf(self.logo_buffer) self.version = builder.get_object('version') self.version.set_label(_("Version: ") + ConfigManager.version) self.btn_cancel = builder.get_object('btn_cancel') self.btn_cancel.connect('clicked', self.on_cancel_clicked) self.btn_apply = builder.get_object('btn_apply') self.btn_apply.connect('clicked', self.on_apply_clicked) self.btn_ok = builder.get_object('btn_ok') self.btn_ok.connect('clicked', self.on_ok_clicked) self.adj_seperator = builder.get_object('adjustment_seperator') self.adj_seperator.set_value(int(ConfigManager.get_conf('seperator-size')) * 1.0) self.adj_transparency = builder.get_object('adjustment_transparency') self.adj_transparency.set_value(int(ConfigManager.get_conf('transparency')) * 1.0) self.chk_hide_from_taskbar = builder.get_object('chk_hide_from_taskbar') self.chk_hide_from_taskbar.set_active(ConfigManager.get_conf('skip-taskbar')) self.chk_use_border = builder.get_object('chk_use_border') self.chk_use_border.set_active(ConfigManager.get_conf('use-border')) self.color_text = builder.get_object('color_text') self.color_text.set_color(Gdk.color_parse(ConfigManager.get_conf('color-text'))) self.color_background = builder.get_object('color_background') self.color_background.set_color(Gdk.color_parse(ConfigManager.get_conf('color-background'))) self.entry_shell = builder.get_object('entry_shell') self.entry_shell.set_text(ConfigManager.get_conf('shell')) self.entry_select_by_word = builder.get_object('entry_select_by_word') self.entry_select_by_word.set_text(ConfigManager.get_conf('select-by-word')) self.dir_custom = builder.get_object('dir_custom') self.radio_home = builder.get_object('radio_home') self.radio_pwd = builder.get_object('radio_pwd') self.radio_dir_custom = builder.get_object('radio_dir_custom') self.radio_dir_custom.connect('toggled', lambda w: self.toggle_sensitive(self.radio_dir_custom, [self.dir_custom])) dir_conf = ConfigManager.get_conf('dir') if dir_conf == '$home$': self.radio_home.set_active(True) elif dir_conf == '$pwd$': self.radio_pwd.set_active(True) else: self.radio_dir_custom.set_active(True) self.dir_custom.set_text(dir_conf) self.dir_custom.set_sensitive(True) self.background_image = builder.get_object('background_image') self.background_image.set_filename(ConfigManager.get_conf('background-image')) self.clear_background_image = builder.get_object('clear_background_image') self.clear_background_image.connect('clicked', lambda w: self.background_image.unselect_all()) self.font_name = builder.get_object('font_name') self.font_name.set_font_name(ConfigManager.get_conf('font-name')) self.font_name.set_sensitive(not ConfigManager.get_conf('use-default-font')) self.chk_use_system_font = builder.get_object('chk_use_system_font') self.chk_use_system_font.connect('toggled', lambda w: self.toggle_sensitive(self.chk_use_system_font, [self.font_name])) self.chk_use_system_font.set_active(ConfigManager.get_conf('use-default-font')) self.chk_show_scrollbar = builder.get_object('chk_show_scrollbar') self.chk_show_scrollbar.set_active(ConfigManager.get_conf('show-scrollbar')) self.chk_always_on_top = builder.get_object('chk_always_on_top') self.chk_always_on_top.set_active(ConfigManager.get_conf('always-on-top')) self.chk_losefocus = builder.get_object('chk_losefocus') self.chk_losefocus.set_active(ConfigManager.get_conf('losefocus-hiding')) self.chk_hide_on_start = builder.get_object('chk_hide_on_start') self.chk_hide_on_start.set_active(ConfigManager.get_conf('hide-on-start')) # store all keyboard shortcut entry boxes in array for connecting signals together. key_entries = [] self.fullscreen_key = builder.get_object('fullscreen_key') self.fullscreen_key.set_text(ConfigManager.get_conf('fullscreen-key')) key_entries.append(self.fullscreen_key) self.quit_key = builder.get_object('quit_key') self.quit_key.set_text(ConfigManager.get_conf('quit-key')) key_entries.append(self.quit_key) self.new_page_key = builder.get_object('new_page_key') self.new_page_key.set_text(ConfigManager.get_conf('new-page-key')) key_entries.append(self.new_page_key) self.close_page_key = builder.get_object('close_page_key') self.close_page_key.set_text(ConfigManager.get_conf('close-page-key')) key_entries.append(self.close_page_key) self.rename_page_key = builder.get_object('rename_page_key') self.rename_page_key.set_text(ConfigManager.get_conf('rename-page-key')) key_entries.append(self.rename_page_key) self.next_page_key = builder.get_object('next_page_key') self.next_page_key.set_text(ConfigManager.get_conf('next-page-key')) key_entries.append(self.next_page_key) self.prev_page_key = builder.get_object('prev_page_key') self.prev_page_key.set_text(ConfigManager.get_conf('prev-page-key')) key_entries.append(self.prev_page_key) self.move_page_left = builder.get_object('move_page_left') self.move_page_left.set_text(ConfigManager.get_conf('move-page-left')) key_entries.append(self.move_page_left) self.move_page_right = builder.get_object('move_page_right') self.move_page_right.set_text(ConfigManager.get_conf('move-page-right')) key_entries.append(self.move_page_right) self.global_key = builder.get_object('global_key') self.global_key.set_text(ConfigManager.get_conf('global-key')) key_entries.append(self.global_key) self.select_all_key = builder.get_object('select_all_key') self.select_all_key.set_text(ConfigManager.get_conf('select-all-key')) key_entries.append(self.select_all_key) self.copy_key = builder.get_object('copy_key') self.copy_key.set_text(ConfigManager.get_conf('copy-key')) key_entries.append(self.copy_key) self.paste_key = builder.get_object('paste_key') self.paste_key.set_text(ConfigManager.get_conf('paste-key')) key_entries.append(self.paste_key) self.split_v_key = builder.get_object('split_v_key') self.split_v_key.set_text(ConfigManager.get_conf('split-v-key')) key_entries.append(self.split_v_key) self.split_h_key = builder.get_object('split_h_key') self.split_h_key.set_text(ConfigManager.get_conf('split-h-key')) key_entries.append(self.split_h_key) self.close_node_key = builder.get_object('close_node_key') self.close_node_key.set_text(ConfigManager.get_conf('close-node-key')) key_entries.append(self.close_node_key) self.move_up_key = builder.get_object('move_up_key') self.move_up_key.set_text(ConfigManager.get_conf('move-up-key')) key_entries.append(self.move_up_key) self.move_down_key = builder.get_object('move_down_key') self.move_down_key.set_text(ConfigManager.get_conf('move-down-key')) key_entries.append(self.move_down_key) self.restore_defaults = builder.get_object('restore_defaults') self.restore_defaults.connect('clicked', lambda w: self.restore_defaults_cb()) self.move_left_key = builder.get_object('move_left_key') self.move_left_key.set_text(ConfigManager.get_conf('move-left-key')) key_entries.append(self.move_left_key) self.move_right_key = builder.get_object('move_right_key') self.move_right_key.set_text(ConfigManager.get_conf('move-right-key')) key_entries.append(self.move_right_key) self.toggle_scrollbars_key = builder.get_object('toggle_scrollbars_key') self.toggle_scrollbars_key.set_text(ConfigManager.get_conf('toggle-scrollbars-key')) key_entries.append(self.toggle_scrollbars_key) self.chk_run_on_startup = builder.get_object('chk_run_on_startup') self.chk_run_on_startup.set_active(os.path.exists(os.environ['HOME'] + '/.config/autostart/terra.desktop')) self.open_translation_page = builder.get_object('open_translation_page') self.open_translation_page.connect('clicked', lambda w: Gtk.show_uri(self.window.get_screen(), 'https://translations.launchpad.net/terra', GdkX11.x11_get_server_time(self.window.get_window()))) self.report_bug = builder.get_object('report_bug') self.report_bug.connect('clicked', lambda w: Gtk.show_uri(self.window.get_screen(), 'https://github.com/Sixdsn/terra-terminal/issues', GdkX11.x11_get_server_time(self.window.get_window()))) self.webpage = builder.get_object('webpage') self.webpage.connect('clicked', lambda w: Gtk.show_uri(self.window.get_screen(), 'http://terraterminal.org', GdkX11.x11_get_server_time(self.window.get_window()))) self.entry_scrollback_lines = builder.get_object('entry_scrollback_lines') self.entry_scrollback_lines.set_text(str(ConfigManager.get_conf('scrollback-lines'))) self.chk_scrollback_unlimited = builder.get_object('chk_scrollback_unlimited') self.chk_scrollback_unlimited.connect('toggled', lambda w: self.toggle_sensitive(self.chk_scrollback_unlimited, [self.entry_scrollback_lines])) self.chk_scrollback_unlimited.set_active(ConfigManager.get_conf('infinite-scrollback')) self.chk_scroll_on_output = builder.get_object('chk_scroll_on_output') self.chk_scroll_on_output.set_active(ConfigManager.get_conf('scroll-on-output')) self.chk_scroll_on_keystroke = builder.get_object('chk_scroll_on_keystroke') self.chk_scroll_on_keystroke.set_active(ConfigManager.get_conf('scroll-on-keystroke')) self.chk_hide_tab_bar = builder.get_object('chk_hide_tab_bar') self.chk_hide_tab_bar.set_active(ConfigManager.get_conf('hide-tab-bar')) self.chk_hide_tab_bar_fullscreen = builder.get_object('chk_hide_tab_bar_fullscreen') self.chk_hide_tab_bar_fullscreen.set_active(ConfigManager.get_conf('hide-tab-bar-fullscreen')) self.chk_prompt_on_quit = builder.get_object('chk_prompt_on_quit') self.chk_prompt_on_quit.set_active(ConfigManager.get_conf('prompt-on-quit')) self.spawn_term_on_last_close = builder.get_object('spawn-term-on-last-close') self.spawn_term_on_last_close.set_active(ConfigManager.get_conf('spawn-term-on-last-close')) self.entry_step_count = builder.get_object('entry_step_count') self.entry_step_count.set_text(str(ConfigManager.get_conf('step-count'))) self.entry_step_time = builder.get_object('entry_step_time') self.entry_step_time.set_text(str(ConfigManager.get_conf('step-time'))) self.chk_use_animation = builder.get_object('chk_use_animation') self.chk_use_animation.set_active(ConfigManager.get_conf('use-animation')) self.chk_use_animation.connect('toggled', lambda w: self.toggle_sensitive(self.chk_use_animation, [self.entry_step_time, self.entry_step_count])) for key_entry in key_entries: key_entry.connect('button-press-event', self.clear_key_entry) key_entry.connect('key-press-event', self.generate_key_string)
def cannot_bind(app): ConfigManager.set_conf('hide-on-start', False) ConfigManager.set_conf('losefocus-hiding', False) msgtext = _("Another application using '%s'. Please open preferences and change the shortcut key.") % ConfigManager.get_conf('global-key') msgbox = Gtk.MessageDialog(app, Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, msgtext) msgbox.run() msgbox.destroy()
def init_ui(self): builder = Gtk.Builder() builder.add_from_file(ConfigManager.data_dir + 'ui/preferences.ui') self.window = builder.get_object('preferences_window') self.window.connect('destroy', self.on_cancel_clicked) self.logo = builder.get_object('terra_logo') self.logo_buffer = GdkPixbuf.Pixbuf.new_from_file_at_size(ConfigManager.data_dir + 'image/terra.svg', 64, 64) self.logo.set_from_pixbuf(self.logo_buffer) self.version = builder.get_object('version') self.version.set_label('Version: ' + ConfigManager.version) self.btn_cancel = builder.get_object('btn_cancel') self.btn_cancel.connect('clicked', self.on_cancel_clicked) self.btn_apply = builder.get_object('btn_apply') self.btn_apply.connect('clicked', self.on_apply_clicked) self.btn_ok = builder.get_object('btn_ok') self.btn_ok.connect('clicked', self.on_ok_clicked) self.adj_seperator = builder.get_object('adjustment_seperator') self.adj_seperator.set_value(int(ConfigManager.get_conf('seperator-size')) * 1.0) self.adj_width = builder.get_object('adjustment_width') self.adj_width.set_value(int(ConfigManager.get_conf('width')) * 1.0) self.adj_height = builder.get_object('adjustment_height') self.adj_height.set_value(int(ConfigManager.get_conf('height')) * 1.0) self.adj_transparency = builder.get_object('adjustment_transparency') self.adj_transparency.set_value(int(ConfigManager.get_conf('transparency')) * 1.0) self.v_alig = builder.get_object('v_alig') self.v_alig.set_active(int(ConfigManager.get_conf('vertical-position')) / 50) self.h_alig = builder.get_object('h_alig') self.h_alig.set_active(int(ConfigManager.get_conf('horizontal-position')) / 50) self.chk_hide_from_taskbar = builder.get_object('chk_hide_from_taskbar') self.chk_hide_from_taskbar.set_active(ConfigManager.get_conf('skip-taskbar')) self.chk_use_border = builder.get_object('chk_use_border') self.chk_use_border.set_active(ConfigManager.get_conf('use-border')) self.color_text = builder.get_object('color_text') self.color_text.set_color(Gdk.color_parse(ConfigManager.get_conf('color-text'))) self.color_background = builder.get_object('color_background') self.color_background.set_color(Gdk.color_parse(ConfigManager.get_conf('color-background'))) self.entry_shell = builder.get_object('entry_shell') self.entry_shell.set_text(ConfigManager.get_conf('shell')) self.dir_custom = builder.get_object('dir_custom') self.radio_home = builder.get_object('radio_home') self.radio_pwd = builder.get_object('radio_pwd') self.radio_dir_custom = builder.get_object('radio_dir_custom') self.radio_dir_custom.connect('toggled', lambda w: self.dir_custom.set_sensitive(self.radio_dir_custom.get_active())) dir_conf = ConfigManager.get_conf('dir') if dir_conf == '$home$': self.radio_home.set_active(True) elif dir_conf == '$pwd$': self.radio_pwd.set_active(True) else: self.radio_dir_custom.set_active(True) self.dir_custom.set_text(dir_conf) self.dir_custom.set_sensitive(True) self.background_image = builder.get_object('background_image') self.background_image.set_filename(ConfigManager.get_conf('background-image')) self.clear_background_image = builder.get_object('clear_background_image') self.clear_background_image.connect('clicked', lambda w: self.background_image.unselect_all()) self.font_name = builder.get_object('font_name') self.font_name.set_font_name(ConfigManager.get_conf('font-name')) self.chk_use_system_font = builder.get_object('chk_use_system_font') self.chk_use_system_font.connect('toggled', lambda w: self.font_name.set_sensitive(not self.chk_use_system_font.get_active())) self.chk_use_system_font.set_active(ConfigManager.get_conf('use-default-font')) self.chk_show_scrollbar = builder.get_object('chk_show_scrollbar') self.chk_show_scrollbar.set_active(ConfigManager.get_conf('show-scrollbar')) self.chk_always_on_top = builder.get_object('chk_always_on_top') self.chk_always_on_top.set_active(ConfigManager.get_conf('always-on-top')) self.chk_losefocus = builder.get_object('chk_losefocus') self.chk_losefocus.set_active(ConfigManager.get_conf('losefocus-hiding')) self.chk_hide_on_start = builder.get_object('chk_hide_on_start') self.chk_hide_on_start.set_active(ConfigManager.get_conf('hide-on-start')) self.fullscreen_key = builder.get_object('fullscreen_key') self.fullscreen_key.set_text(ConfigManager.get_conf('fullscreen-key')) self.fullscreen_key.connect('key-press-event', self.generate_key_string) self.quit_key = builder.get_object('quit_key') self.quit_key.set_text(ConfigManager.get_conf('quit-key')) self.quit_key.connect('key-press-event', self.generate_key_string) self.new_page_key = builder.get_object('new_page_key') self.new_page_key.set_text(ConfigManager.get_conf('new-page-key')) self.new_page_key.connect('key-press-event', self.generate_key_string) self.close_page_key = builder.get_object('close_page_key') self.close_page_key.set_text(ConfigManager.get_conf('close-page-key')) self.close_page_key.connect('key-press-event', self.generate_key_string) self.rename_page_key = builder.get_object('rename_page_key') self.rename_page_key.set_text(ConfigManager.get_conf('rename-page-key')) self.rename_page_key.connect('key-press-event', self.generate_key_string) self.next_page_key = builder.get_object('next_page_key') self.next_page_key.set_text(ConfigManager.get_conf('next-page-key')) self.next_page_key.connect('key-press-event', self.generate_key_string) self.prev_page_key = builder.get_object('prev_page_key') self.prev_page_key.set_text(ConfigManager.get_conf('prev-page-key')) self.prev_page_key.connect('key-press-event', self.generate_key_string) self.global_key = builder.get_object('global_key') self.global_key.set_text(ConfigManager.get_conf('global-key')) self.global_key.connect('key-press-event', self.generate_key_string) self.select_all_key = builder.get_object('select_all_key') self.select_all_key.set_text(ConfigManager.get_conf('select-all-key')) self.select_all_key.connect('key-press-event', self.generate_key_string) self.copy_key = builder.get_object('copy_key') self.copy_key.set_text(ConfigManager.get_conf('copy-key')) self.copy_key.connect('key-press-event', self.generate_key_string) self.paste_key = builder.get_object('paste_key') self.paste_key.set_text(ConfigManager.get_conf('paste-key')) self.paste_key.connect('key-press-event', self.generate_key_string) self.split_v_key = builder.get_object('split_v_key') self.split_v_key.set_text(ConfigManager.get_conf('split-v-key')) self.split_v_key.connect('key-press-event', self.generate_key_string) self.split_h_key = builder.get_object('split_h_key') self.split_h_key.set_text(ConfigManager.get_conf('split-h-key')) self.split_h_key.connect('key-press-event', self.generate_key_string) self.close_node_key = builder.get_object('close_node_key') self.close_node_key.set_text(ConfigManager.get_conf('close-node-key')) self.close_node_key.connect('key-press-event', self.generate_key_string) self.chk_run_on_startup = builder.get_object('chk_run_on_startup') self.chk_run_on_startup.set_active(os.path.exists(os.environ['HOME'] + '/.config/autostart/terra.desktop')) self.open_project_homepage = builder.get_object('open_project_homepage') self.open_project_homepage.connect('clicked', lambda w: os.system('xdg-open https://launchpad.net/terra')) self.report_bug = builder.get_object('report_bug') self.report_bug.connect('clicked', lambda w: os.system('xdg-open https://bugs.launchpad.net/terra/+filebug'))
def init_ui(self): builder = Gtk.Builder() builder.set_translation_domain('terra') builder.add_from_file(ConfigManager.data_dir + 'ui/preferences.ui') self.window = builder.get_object('preferences_window') self.window.connect('destroy', self.on_cancel_clicked) self.logo = builder.get_object('terra_logo') self.logo_buffer = GdkPixbuf.Pixbuf.new_from_file_at_size( ConfigManager.data_dir + 'image/terra.svg', 64, 64) self.logo.set_from_pixbuf(self.logo_buffer) self.version = builder.get_object('version') self.version.set_label(_("Version: ") + ConfigManager.version) self.btn_cancel = builder.get_object('btn_cancel') self.btn_cancel.connect('clicked', self.on_cancel_clicked) self.btn_apply = builder.get_object('btn_apply') self.btn_apply.connect('clicked', self.on_apply_clicked) self.btn_ok = builder.get_object('btn_ok') self.btn_ok.connect('clicked', self.on_ok_clicked) self.adj_seperator = builder.get_object('adjustment_seperator') self.adj_seperator.set_value( int(ConfigManager.get_conf('seperator-size')) * 1.0) self.adj_transparency = builder.get_object('adjustment_transparency') self.adj_transparency.set_value( int(ConfigManager.get_conf('transparency')) * 1.0) self.chk_hide_from_taskbar = builder.get_object( 'chk_hide_from_taskbar') self.chk_hide_from_taskbar.set_active( ConfigManager.get_conf('skip-taskbar')) self.chk_use_border = builder.get_object('chk_use_border') self.chk_use_border.set_active(ConfigManager.get_conf('use-border')) self.color_text = builder.get_object('color_text') self.color_text.set_color( Gdk.color_parse(ConfigManager.get_conf('color-text'))) self.color_background = builder.get_object('color_background') self.color_background.set_color( Gdk.color_parse(ConfigManager.get_conf('color-background'))) self.entry_shell = builder.get_object('entry_shell') self.entry_shell.set_text(ConfigManager.get_conf('shell')) self.entry_select_by_word = builder.get_object('entry_select_by_word') self.entry_select_by_word.set_text( ConfigManager.get_conf('select-by-word')) self.dir_custom = builder.get_object('dir_custom') self.radio_home = builder.get_object('radio_home') self.radio_pwd = builder.get_object('radio_pwd') self.radio_dir_custom = builder.get_object('radio_dir_custom') self.radio_dir_custom.connect( 'toggled', lambda w: self.toggle_sensitive(self.radio_dir_custom, [self.dir_custom])) dir_conf = ConfigManager.get_conf('dir') if dir_conf == '$home$': self.radio_home.set_active(True) elif dir_conf == '$pwd$': self.radio_pwd.set_active(True) else: self.radio_dir_custom.set_active(True) self.dir_custom.set_text(dir_conf) self.dir_custom.set_sensitive(True) self.background_image = builder.get_object('background_image') self.background_image.set_filename( ConfigManager.get_conf('background-image')) self.clear_background_image = builder.get_object( 'clear_background_image') self.clear_background_image.connect( 'clicked', lambda w: self.background_image.unselect_all()) self.font_name = builder.get_object('font_name') self.font_name.set_font_name(ConfigManager.get_conf('font-name')) self.font_name.set_sensitive( not ConfigManager.get_conf('use-default-font')) self.chk_use_system_font = builder.get_object('chk_use_system_font') self.chk_use_system_font.connect( 'toggled', lambda w: self.toggle_sensitive( self.chk_use_system_font, [self.font_name])) self.chk_use_system_font.set_active( ConfigManager.get_conf('use-default-font')) self.chk_show_scrollbar = builder.get_object('chk_show_scrollbar') self.chk_show_scrollbar.set_active( ConfigManager.get_conf('show-scrollbar')) self.chk_always_on_top = builder.get_object('chk_always_on_top') self.chk_always_on_top.set_active( ConfigManager.get_conf('always-on-top')) self.chk_losefocus = builder.get_object('chk_losefocus') self.chk_losefocus.set_active( ConfigManager.get_conf('losefocus-hiding')) self.chk_hide_on_start = builder.get_object('chk_hide_on_start') self.chk_hide_on_start.set_active( ConfigManager.get_conf('hide-on-start')) # store all keyboard shortcut entry boxes in array for connecting signals together. key_entries = [] self.fullscreen_key = builder.get_object('fullscreen_key') self.fullscreen_key.set_text(ConfigManager.get_conf('fullscreen-key')) key_entries.append(self.fullscreen_key) self.quit_key = builder.get_object('quit_key') self.quit_key.set_text(ConfigManager.get_conf('quit-key')) key_entries.append(self.quit_key) self.new_page_key = builder.get_object('new_page_key') self.new_page_key.set_text(ConfigManager.get_conf('new-page-key')) key_entries.append(self.new_page_key) self.close_page_key = builder.get_object('close_page_key') self.close_page_key.set_text(ConfigManager.get_conf('close-page-key')) key_entries.append(self.close_page_key) self.rename_page_key = builder.get_object('rename_page_key') self.rename_page_key.set_text( ConfigManager.get_conf('rename-page-key')) key_entries.append(self.rename_page_key) self.next_page_key = builder.get_object('next_page_key') self.next_page_key.set_text(ConfigManager.get_conf('next-page-key')) key_entries.append(self.next_page_key) self.prev_page_key = builder.get_object('prev_page_key') self.prev_page_key.set_text(ConfigManager.get_conf('prev-page-key')) key_entries.append(self.prev_page_key) self.move_page_left = builder.get_object('move_page_left') self.move_page_left.set_text(ConfigManager.get_conf('move-page-left')) key_entries.append(self.move_page_left) self.move_page_right = builder.get_object('move_page_right') self.move_page_right.set_text( ConfigManager.get_conf('move-page-right')) key_entries.append(self.move_page_right) self.global_key = builder.get_object('global_key') self.global_key.set_text(ConfigManager.get_conf('global-key')) key_entries.append(self.global_key) self.select_all_key = builder.get_object('select_all_key') self.select_all_key.set_text(ConfigManager.get_conf('select-all-key')) key_entries.append(self.select_all_key) self.copy_key = builder.get_object('copy_key') self.copy_key.set_text(ConfigManager.get_conf('copy-key')) key_entries.append(self.copy_key) self.paste_key = builder.get_object('paste_key') self.paste_key.set_text(ConfigManager.get_conf('paste-key')) key_entries.append(self.paste_key) self.split_v_key = builder.get_object('split_v_key') self.split_v_key.set_text(ConfigManager.get_conf('split-v-key')) key_entries.append(self.split_v_key) self.split_h_key = builder.get_object('split_h_key') self.split_h_key.set_text(ConfigManager.get_conf('split-h-key')) key_entries.append(self.split_h_key) self.close_node_key = builder.get_object('close_node_key') self.close_node_key.set_text(ConfigManager.get_conf('close-node-key')) key_entries.append(self.close_node_key) self.move_up_key = builder.get_object('move_up_key') self.move_up_key.set_text(ConfigManager.get_conf('move-up-key')) key_entries.append(self.move_up_key) self.move_down_key = builder.get_object('move_down_key') self.move_down_key.set_text(ConfigManager.get_conf('move-down-key')) key_entries.append(self.move_down_key) self.restore_defaults = builder.get_object('restore_defaults') self.restore_defaults.connect('clicked', lambda w: self.restore_defaults_cb()) self.move_left_key = builder.get_object('move_left_key') self.move_left_key.set_text(ConfigManager.get_conf('move-left-key')) key_entries.append(self.move_left_key) self.move_right_key = builder.get_object('move_right_key') self.move_right_key.set_text(ConfigManager.get_conf('move-right-key')) key_entries.append(self.move_right_key) self.toggle_scrollbars_key = builder.get_object( 'toggle_scrollbars_key') self.toggle_scrollbars_key.set_text( ConfigManager.get_conf('toggle-scrollbars-key')) key_entries.append(self.toggle_scrollbars_key) self.chk_run_on_startup = builder.get_object('chk_run_on_startup') self.chk_run_on_startup.set_active( os.path.exists(os.environ['HOME'] + '/.config/autostart/terra.desktop')) self.open_translation_page = builder.get_object( 'open_translation_page') self.open_translation_page.connect( 'clicked', lambda w: Gtk.show_uri( self.window.get_screen(), 'https://translations.launchpad.net/terra', GdkX11.x11_get_server_time(self.window.get_window()))) self.report_bug = builder.get_object('report_bug') self.report_bug.connect( 'clicked', lambda w: Gtk.show_uri( self.window.get_screen(), 'https://github.com/Sixdsn/terra-terminal/issues', GdkX11.x11_get_server_time(self.window.get_window()))) self.webpage = builder.get_object('webpage') self.webpage.connect( 'clicked', lambda w: Gtk.show_uri( self.window.get_screen(), 'http://terraterminal.org', GdkX11.x11_get_server_time(self.window.get_window()))) self.entry_scrollback_lines = builder.get_object( 'entry_scrollback_lines') self.entry_scrollback_lines.set_text( str(ConfigManager.get_conf('scrollback-lines'))) self.chk_scrollback_unlimited = builder.get_object( 'chk_scrollback_unlimited') self.chk_scrollback_unlimited.connect( 'toggled', lambda w: self.toggle_sensitive( self.chk_scrollback_unlimited, [self.entry_scrollback_lines])) self.chk_scrollback_unlimited.set_active( ConfigManager.get_conf('infinite-scrollback')) self.chk_scroll_on_output = builder.get_object('chk_scroll_on_output') self.chk_scroll_on_output.set_active( ConfigManager.get_conf('scroll-on-output')) self.chk_scroll_on_keystroke = builder.get_object( 'chk_scroll_on_keystroke') self.chk_scroll_on_keystroke.set_active( ConfigManager.get_conf('scroll-on-keystroke')) self.chk_hide_tab_bar = builder.get_object('chk_hide_tab_bar') self.chk_hide_tab_bar.set_active( ConfigManager.get_conf('hide-tab-bar')) self.chk_hide_tab_bar_fullscreen = builder.get_object( 'chk_hide_tab_bar_fullscreen') self.chk_hide_tab_bar_fullscreen.set_active( ConfigManager.get_conf('hide-tab-bar-fullscreen')) self.chk_prompt_on_quit = builder.get_object('chk_prompt_on_quit') self.chk_prompt_on_quit.set_active( ConfigManager.get_conf('prompt-on-quit')) self.spawn_term_on_last_close = builder.get_object( 'spawn-term-on-last-close') self.spawn_term_on_last_close.set_active( ConfigManager.get_conf('spawn-term-on-last-close')) self.entry_step_count = builder.get_object('entry_step_count') self.entry_step_count.set_text( str(ConfigManager.get_conf('step-count'))) self.entry_step_time = builder.get_object('entry_step_time') self.entry_step_time.set_text(str(ConfigManager.get_conf('step-time'))) self.chk_use_animation = builder.get_object('chk_use_animation') self.chk_use_animation.set_active( ConfigManager.get_conf('use-animation')) self.chk_use_animation.connect( 'toggled', lambda w: self.toggle_sensitive(self.chk_use_animation, [ self.entry_step_time, self.entry_step_count ])) for key_entry in key_entries: key_entry.connect('button-press-event', self.clear_key_entry) key_entry.connect('key-press-event', self.generate_key_string)
def on_losefocus(self, window, event): if ConfigManager.get_conf( 'losefocus-hiding' ) and not ConfigManager.disable_losefocus_temporary: self.hide()
def main(): GObject.threads_init() app = TerminalWin() keybinding = GlobalKeyBinding() app.keybinding = keybinding ConfigManager.ref_keybinding = keybinding ConfigManager.ref_show_hide = app.show_hide keybinding.connect('activate', lambda w: app.show_hide()) if not keybinding.grab(): ConfigManager.set_conf('losefocus-hiding', 'False') ConfigManager.set_conf('hide-on-start', 'False') app.update_ui() msgtext = "Another application using '%s'. Please open preferences and change the shortcut key." % ConfigManager.get_conf('global-key') msgbox = Gtk.MessageDialog(app, Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, msgtext) msgbox.run() msgbox.destroy() else: keybinding.start() Gtk.main()
def main(): GObject.threads_init() app = TerminalWin() keybinding = GlobalKeyBinding() app.keybinding = keybinding ConfigManager.ref_keybinding = keybinding ConfigManager.ref_show_hide = app.show_hide keybinding.connect('activate', lambda w: app.show_hide()) if not keybinding.grab(): ConfigManager.set_conf('losefocus-hiding', 'False') ConfigManager.set_conf('hide-on-start', 'False') app.update_ui() msgtext = "Another application using '%s'. Please open preferences and change the shortcut key." % ConfigManager.get_conf( 'global-key') msgbox = Gtk.MessageDialog(app, Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, msgtext) msgbox.run() msgbox.destroy() else: keybinding.start() Gtk.main()
def on_keypress(self, widget, event): if ConfigManager.key_event_compare('toggle-scrollbars-key', event): ConfigManager.set_conf( 'show-scrollbar', not ConfigManager.get_conf('show-scrollbar')) ConfigManager.save_config() ConfigManager.callback() return True if ConfigManager.key_event_compare('move-up-key', event): self.get_active_terminal().move(direction=1) return True if ConfigManager.key_event_compare('move-down-key', event): self.get_active_terminal().move(direction=2) return True if ConfigManager.key_event_compare('move-left-key', event): self.get_active_terminal().move(direction=3) return True if ConfigManager.key_event_compare('move-right-key', event): self.get_active_terminal().move(direction=4) return True if ConfigManager.key_event_compare('quit-key', event): self.quit() return True if ConfigManager.key_event_compare('select-all-key', event): self.get_active_terminal().select_all() return True if ConfigManager.key_event_compare('copy-key', event): self.get_active_terminal().copy_clipboard() return True if ConfigManager.key_event_compare('paste-key', event): self.get_active_terminal().paste_clipboard() return True if ConfigManager.key_event_compare('split-v-key', event): self.get_active_terminal().split_axis(None, 'h') return True if ConfigManager.key_event_compare('split-h-key', event): self.get_active_terminal().split_axis(None, 'v') return True if ConfigManager.key_event_compare('close-node-key', event): self.get_active_terminal().close_node(None) return True if ConfigManager.key_event_compare('fullscreen-key', event): self.toggle_fullscreen() return True if ConfigManager.key_event_compare('new-page-key', event): self.add_page() return True if ConfigManager.key_event_compare('rename-page-key', event): for button in self.buttonbox: if button != self.radio_group_leader and button.get_active(): self.page_rename(None, button) return True if ConfigManager.key_event_compare('close-page-key', event): for button in self.buttonbox: if button != self.radio_group_leader and button.get_active(): self.page_close(None, button) return True if ConfigManager.key_event_compare('next-page-key', event): page_button_list = self.buttonbox.get_children()[1:] for i in range(len(page_button_list)): if (page_button_list[i].get_active() == True): if (i + 1 < len(page_button_list)): page_button_list[i + 1].set_active(True) else: page_button_list[0].set_active(True) return True if ConfigManager.key_event_compare('prev-page-key', event): page_button_list = self.buttonbox.get_children()[1:] for i in range(len(page_button_list)): if page_button_list[i].get_active(): if i > 0: page_button_list[i - 1].set_active(True) else: page_button_list[-1].set_active(True) return True if ConfigManager.key_event_compare('move-page-left', event): i = 0 for button in self.buttonbox: if button != self.radio_group_leader and button.get_active(): if (i - 1) > 0: self.notebook.reorder_child( self.notebook.get_nth_page(i - 1), i - 2) self.buttonbox.reorder_child(button, i - 1) return True else: return False i += 1 if ConfigManager.key_event_compare('move-page-right', event): i = 0 for button in self.buttonbox: if button != self.radio_group_leader and button.get_active(): if (i + 1) < len(self.buttonbox): self.notebook.reorder_child( self.notebook.get_nth_page(i - 1), i) self.buttonbox.reorder_child(button, i + 1) return True else: return False i += 1