[Terminal] Add scrollbar-position property
authorIra W. Snyder <devel@irasnyder.com>
Tue, 15 Jan 2008 21:59:37 +0000 (13:59 -0800)
committerIra W. Snyder <devel@irasnyder.com>
Tue, 15 Jan 2008 21:59:37 +0000 (13:59 -0800)
This was originally going to go in the TildaWindow class, but it really
is nice to have the scrollbar position customizable on a per-terminal
basis.

tilda-terminal.c
tilda-terminal.h

index 0accb98..c765eca 100644 (file)
@@ -278,6 +278,33 @@ tilda_terminal_set_transparent (TildaTerminal *self)
        vte_terminal_set_background_transparent (VTE_TERMINAL(self->vte_term), FALSE);
 }
 
+/**
+ * Set the scrollbar position of the given TildaTerminal to
+ * the value in self->scrollbar_position.
+ */
+static void
+tilda_terminal_set_scrollbar_position (TildaTerminal *self)
+{
+       enum scrollbar_positions { DISABLED, LEFT, RIGHT };
+       switch (self->scrollbar_position)
+       {
+               case LEFT:
+                       gtk_box_reorder_child (GTK_BOX(self->hbox), self->scrollbar, 0);
+                       gtk_widget_show (self->scrollbar);
+                       break;
+
+               case RIGHT:
+                       gtk_box_reorder_child (GTK_BOX(self->hbox), self->scrollbar, 1);
+                       gtk_widget_show (self->scrollbar);
+                       break;
+
+               case DISABLED:
+               default:
+                       gtk_widget_hide (self->scrollbar);
+                       break;
+       }
+}
+
 /*******************************************************************************
  * All GObject stuff is below. You probably don't need to change this...
  ******************************************************************************/
@@ -304,6 +331,7 @@ enum tilda_terminal_properties {
        TILDA_TERMINAL_DELETE_BINDING,
        TILDA_TERMINAL_DYNAMIC_TITLE,
        TILDA_TERMINAL_EXIT_ACTION,
+       TILDA_TERMINAL_SCROLLBAR_POSITION,
 
        TILDA_TERMINAL_SCROLL_BACKGROUND,
        TILDA_TERMINAL_SCROLL_ON_OUTPUT,
@@ -434,6 +462,12 @@ tilda_terminal_set_property (GObject      *object,
                        g_print ("terminal exit action: %d\n", self->exit_action);
                        break;
 
+               case TILDA_TERMINAL_SCROLLBAR_POSITION:
+                       self->scrollbar_position = g_value_get_int (value);
+                       tilda_terminal_set_scrollbar_position (self);
+                       g_print ("terminal scrollbar position: %d\n", self->scrollbar_position);
+                       break;
+
                case TILDA_TERMINAL_SCROLL_BACKGROUND:
                        self->scroll_background = g_value_get_boolean (value);
                        vte_terminal_set_scroll_background (VTE_TERMINAL(self->vte_term), self->scroll_background);
@@ -573,6 +607,10 @@ tilda_terminal_get_property (GObject    *object,
                        g_value_set_int (value, self->exit_action);
                        break;
 
+               case TILDA_TERMINAL_SCROLLBAR_POSITION:
+                       g_value_set_int (value, self->scrollbar_position);
+                       break;
+
                case TILDA_TERMINAL_SCROLL_BACKGROUND:
                        g_value_set_boolean (value, self->scroll_background);
                        break;
@@ -898,6 +936,18 @@ tilda_terminal_class_init (gpointer g_class,
                                                                         TILDA_TERMINAL_EXIT_ACTION,
                                                                         pspec);
 
+       pspec = g_param_spec_int ("scrollbar-position",
+                                                         "Terminal's scrollbar position",
+                                                         NULL,
+                                                         0,
+                                                         INT_MAX,
+                                                         0,
+                                                         G_PARAM_READWRITE);
+
+       g_object_class_install_property (gobject_class,
+                                                                        TILDA_TERMINAL_SCROLLBAR_POSITION,
+                                                                        pspec);
+
        pspec = g_param_spec_boolean ("scroll-background",
                                                                  "Controls terminal's scrolling behavior",
                                                                  "Get/Set terminal's scrolling behavior",
index d56800a..e9d8f28 100644 (file)
@@ -51,6 +51,7 @@ struct _TildaTerminal {
        gint delete_binding;
        gint dynamic_title;
        gint exit_action;
+       gint scrollbar_position;
        // TODO: gint colorscheme; the code can work around the need for
        // TODO: this value. Just check if the back and fore colors match
        // TODO: any pre-defined colorschemes exactly in the GUI.