Пример #1
0
    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)
Пример #2
0
    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()
Пример #3
0
    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()
Пример #4
0
    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()
Пример #5
0
    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()
Пример #6
0
    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()
Пример #7
0
    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()
Пример #8
0
 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()
Пример #9
0
 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
Пример #10
0
 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
Пример #11
0
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()
Пример #12
0
 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
Пример #13
0
 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
Пример #14
0
 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
Пример #15
0
    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()
Пример #16
0
    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()
Пример #17
0
    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()
Пример #18
0
 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
Пример #19
0
    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)
Пример #20
0
    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()
Пример #21
0
    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()
Пример #22
0
    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)
Пример #23
0
    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
Пример #24
0
    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()
Пример #25
0
    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 = []
Пример #26
0
    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()
Пример #27
0
    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 = []
Пример #28
0
    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
Пример #29
0
    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
Пример #30
0
    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)
Пример #31
0
    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)
Пример #32
0
    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
Пример #33
0
    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()
Пример #34
0
 def reset_progname(self, widget):
     self.progname = ConfigManager.get_conf('shell')
Пример #35
0
    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()
Пример #36
0
 def on_child_exited(self, event):
     self.fork_process([ConfigManager.get_conf('shell')])
Пример #37
0
    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
Пример #38
0
 def on_losefocus(self, window, event):
     if ConfigManager.get_conf('losefocus-hiding') and not ConfigManager.disable_losefocus_temporary:
         self.hide()
Пример #39
0
    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)
Пример #40
0
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()
Пример #41
0
    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'))
Пример #42
0
    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)
Пример #43
0
 def on_losefocus(self, window, event):
     if ConfigManager.get_conf(
             'losefocus-hiding'
     ) and not ConfigManager.disable_losefocus_temporary:
         self.hide()
Пример #44
0
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()
Пример #45
0
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()
Пример #46
0
    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