Changeset 47

Show
Ignore:
Timestamp:
04/12/07 12:55:20 (2 years ago)
Author:
inz
Message:

Configurable scrollback size.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • osso-xterm/trunk/etc/osso-xterm.schemas

    r20 r47  
    2020                        <locale name="C"> 
    2121                                <short>Show scrolling bar in window</short> 
     22                        </locale> 
     23                </schema> 
     24                <schema> 
     25                        <key>/schemas/apps/osso/xterm/scrollback</key> 
     26                        <applyto>/apps/osso/xterm/scrollback</applyto> 
     27                        <owner>osso-xterm</owner> 
     28                        <type>int</type> 
     29                        <default>200</default> 
     30                        <locale name="C"> 
     31                                <short>Number of lines in the scrollback 
     32                                buffer</short> 
    2233                        </locale> 
    2334                </schema> 
  • osso-xterm/trunk/src/terminal-gconf.h

    r20 r47  
    4747#define OSSO_XTERM_DEFAULT_BG_COLOR  "#FFFFFF" 
    4848 
     49/* Int */ 
     50#define OSSO_XTERM_GCONF_SCROLLBACK  OSSO_XTERM_GCONF_PATH "/scrollback" 
     51#define OSSO_XTERM_DEFAULT_SCROLLBACK 200 
     52 
    4953/* Boolean */ 
    5054#define OSSO_XTERM_GCONF_SCROLLBAR   OSSO_XTERM_GCONF_PATH "/scrollbar" 
  • osso-xterm/trunk/src/terminal-settings.c

    r25 r47  
    5050  GtkWidget   *fg_button; 
    5151  GtkWidget   *bg_button; 
     52  GtkWidget   *sb_spinner; 
    5253}; 
    5354 
     
    8081    GdkColor fg; 
    8182    GdkColor bg; 
     83    gint sb; 
    8284 
    8385    gchar *color_name; 
     
    109111    } 
    110112 
     113    sb = gconf_client_get_int(gc, OSSO_XTERM_GCONF_SCROLLBACK, NULL); 
     114    if (!sb) { 
     115            sb = OSSO_XTERM_DEFAULT_SCROLLBACK; 
     116    } 
     117 
    111118    g_object_unref(gc); 
    112119 
     
    121128    settings->fg_button = hildon_color_button_new_with_color(&fg); 
    122129    settings->bg_button = hildon_color_button_new_with_color(&bg); 
    123  
    124     gtk_container_add(GTK_CONTAINER(GTK_CONTAINER(GTK_DIALOG(settings)->vbox)), settings->font_button); 
    125     gtk_container_add(GTK_CONTAINER(GTK_CONTAINER(GTK_DIALOG(settings)->vbox)), settings->fg_button); 
    126     gtk_container_add(GTK_CONTAINER(GTK_CONTAINER(GTK_DIALOG(settings)->vbox)), settings->bg_button); 
     130    settings->sb_spinner = gtk_spin_button_new_with_range(1.0, 10000.0, 1.0); 
     131    gtk_spin_button_set_value(GTK_SPIN_BUTTON(settings->sb_spinner), (gdouble)sb); 
     132    hildon_gtk_entry_set_input_mode(GTK_ENTRY(settings->sb_spinner), HILDON_GTK_INPUT_MODE_NUMERIC); 
     133 
     134    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(settings)->vbox), settings->font_button); 
     135    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(settings)->vbox), settings->fg_button); 
     136    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(settings)->vbox), settings->bg_button); 
     137    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(settings)->vbox), settings->sb_spinner); 
    127138 
    128139    gtk_dialog_add_buttons(GTK_DIALOG(settings), 
     
    149160    const gchar *sep = g_utf8_strrchr(font, -1, ' '); 
    150161    gchar *color_name; 
     162    gint sb; 
    151163    GdkColor *color; 
    152164#if HILDON == 1 
     
    183195    g_free(color_name); 
    184196 
     197    sb = (gint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(settings->sb_spinner)); 
     198    gconf_client_set_int(gc, OSSO_XTERM_GCONF_SCROLLBACK, sb, NULL); 
     199 
    185200    g_object_unref(gc); 
    186201 
  • osso-xterm/trunk/src/terminal-widget.c

    r44 r47  
    779779} 
    780780 
     781static void 
     782terminal_widget_gconf_scrollback_lines(GConfClient    *client, 
     783                                       guint           conn_id, 
     784                                       GConfEntry     *entry, 
     785                                       TerminalWidget *widget) 
     786{ 
     787    gint lines = OSSO_XTERM_DEFAULT_SCROLLBACK; 
     788    if (entry && entry->value && entry->value->type == GCONF_VALUE_INT) { 
     789        lines = gconf_value_get_int(entry->value); 
     790    } 
     791    vte_terminal_set_scrollback_lines (VTE_TERMINAL (widget->terminal), lines); 
     792} 
    781793 
    782794static void 
    783795terminal_widget_update_scrolling_lines (TerminalWidget *widget) 
    784796{ 
    785     gint lines = 200; 
    786     vte_terminal_set_scrollback_lines (VTE_TERMINAL (widget->terminal), lines); 
     797    GConfEntry *entry; 
     798    GConfValue *value; 
     799    value = gconf_client_get (widget->gconf_client, 
     800            OSSO_XTERM_GCONF_SCROLLBACK, NULL); 
     801    entry = gconf_entry_new_nocopy (g_strdup(OSSO_XTERM_GCONF_SCROLLBACK), 
     802            value); 
     803 
     804    if (widget->scrollback_conid == 0) { 
     805        widget->scrollback_conid = gconf_client_notify_add( 
     806                widget->gconf_client, 
     807                OSSO_XTERM_GCONF_SCROLLBACK, 
     808                (GConfClientNotifyFunc)terminal_widget_gconf_scrollback_lines, 
     809                widget, 
     810                NULL, NULL); 
     811    } 
     812    terminal_widget_gconf_scrollback_lines (widget->gconf_client, 
     813            widget->scrollback_conid, 
     814            entry, 
     815            widget); 
     816    gconf_entry_unref(entry); 
    787817} 
    788818 
  • osso-xterm/trunk/src/terminal-widget.h

    r20 r47  
    6464  GConfClient         *gconf_client; 
    6565  guint                scrollbar_conid; 
     66  guint                scrollback_conid; 
    6667  guint                toolbar_conid; 
    6768  guint                keys_conid;