From e370d9fbb56d6688cc2a79e44d1026009c56a30c Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Sun, 7 Sep 2008 19:43:03 +0100 Subject: [PATCH] more specific updates for the profile editor --- terminatorlib/prefs_profile.py | 73 ++++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 7 deletions(-) diff --git a/terminatorlib/prefs_profile.py b/terminatorlib/prefs_profile.py index 47cff088..8e57feda 100644 --- a/terminatorlib/prefs_profile.py +++ b/terminatorlib/prefs_profile.py @@ -6,8 +6,10 @@ from terminatorlib.version import APP_NAME, APP_VERSION import gtk class ProfileEditor: - appearance = ['titlebars', 'titletips', 'allow_bold', 'silent_bell', 'background_color', 'background_darkness', 'background_type', 'background_image', 'cursor_blink', 'font', 'foreground_color', 'scrollbar_position', 'scroll_background', 'palette', 'use_system_font', 'use_theme_colors', 'force_no_bell', 'enable_real_transparency'] - behaviour = ['delete_binding', 'emulation', 'scroll_on_keystroke', 'scroll_on_output', 'scrollback_lines', 'focus'] + appearance = ['titlebars', 'titletips', 'allow_bold', 'silent_bell', 'background_darkness', 'background_type', 'background_image', 'cursor_blink', 'font', 'scrollbar_position', 'scroll_background', 'use_system_font', 'use_theme_colors', 'force_no_bell', 'enable_real_transparency'] + colours = ['foreground_color','background_color', 'palette'] + behaviour = ['backspace_binding', 'delete_binding', 'emulation', 'scroll_on_keystroke', 'scroll_on_output', 'scrollback_lines', 'focus', 'focus_on_close', 'exit_action', 'word_chars', 'mouse_autohide', 'use_custom_command', 'custom_command', 'http_proxy', 'encoding'] + globals = ['fullscreen', 'maximise', 'borderless', 'handle_size', 'cycle_term_tab', 'close_button_on_tab', 'copy_on_selection', 'extreme_tabs', 'try_posix_regexp'] data = {'titlebars': ['Show titlebars', 'This places a bar above each terminal which displays its title.'], 'titletips': ['Show title tooltips', 'This adds a tooltip to each terminal which contains its title'], 'allow_bold': ['Allow bold text', 'Controls whether or not the terminals will honour requests for bold text'], @@ -19,11 +21,30 @@ class ProfileEditor: self.notebook = gtk.Notebook() self.window.add (self.notebook) + self.notebook.append_page (self.auto_add (gtk.Table (), self.globals), gtk.Label ("Global Settings")) + self.notebook.append_page (self.auto_add (gtk.Table (), Defaults['keybindings']), gtk.Label ("Keybindings")) self.notebook.append_page (self.auto_add (gtk.Table (), self.appearance), gtk.Label ("Appearance")) + self.notebook.append_page (self.auto_add (gtk.Table (), self.colours), gtk.Label ("Colours")) self.notebook.append_page (self.auto_add (gtk.Table (), self.behaviour), gtk.Label ("Behaviour")) self.window.show_all () + def source_get_type (self, key): + if Defaults.has_key (key): + return Defaults[key].__class__.__name__ + elif Defaults['keybindings'].has_key (key): + return Defaults['keybindings'][key].__class__.__name__ + else: + raise KeyError + + def source_get_value (self, key): + if Defaults.has_key (key): + return Defaults[key] + elif Defaults['keybindings'].has_key (key): + return Defaults['keybindings'][key] + else: + raise KeyError + def auto_add (self, table, list): row = 0 for key in list: @@ -34,14 +55,11 @@ class ProfileEditor: label_text = key.replace ('_', ' ').capitalize () label = gtk.Label (label_text) - type = Defaults[key].__class__.__name__ - value = Defaults[key] + type = self.source_get_type (key) + value = self.source_get_value (key) widget = None if key == 'font': - #widget = gtk.FontSelection() - #widget.set_preview_text("Terminator: The robot future of terminals") - #widget.set_font_name(value) widget = gtk.FontButton(value) elif key == 'scrollback_lines': # estimated byte size per line according to g-t: @@ -62,6 +80,47 @@ class ProfileEditor: widget.append_text ('click') widget.append_text ('sloppy') widget.set_active (0) + elif key == 'background_type': + widget = gtk.combo_box_new_text() + widget.append_text ('solid') + widget.append_text ('image') + widget.append_text ('transparent') + widget.set_active (0) + elif key == 'background_darkness': + widget = gtk.HScale () + widget.set_digits (1) + widget.set_draw_value (True) + widget.set_value_pos (gtk.POS_LEFT) + widget.set_range (0, 1) + widget.set_value (value) + elif key == 'handle_size': + widget = gtk.HScale () + widget.set_digits (0) + widget.set_draw_value (True) + widget.set_value_pos (gtk.POS_LEFT) + widget.set_range (-1, 5) + widget.set_value (value) + elif key == 'foreground_color': + widget = gtk.ColorButton (gtk.gdk.color_parse (value)) + elif key == 'background_color': + widget = gtk.ColorButton (gtk.gdk.color_parse (value)) + elif key == 'palette': + colours = value.split (':') + numcolours = len (colours) + widget = gtk.Table (2, numcolours / 2) + x = 0 + y = 0 + for thing in colours: + if x == numcolours / 2: + y += 1 + x = 0 + widget.attach (gtk.ColorButton (gtk.gdk.color_parse (thing)), x, x + 1, y, y + 1) + x += 1 + elif key == 'background_image': + widget = gtk.FileChooserButton('Select a File') + filter = gtk.FileFilter() + filter.add_mime_type ('image/*') + widget.add_filter (filter) else: if type == "bool": widget = gtk.CheckButton ()