From: Ira W. Snyder Date: Tue, 15 Jan 2008 21:59:37 +0000 (-0800) Subject: [Terminal] Add scrollbar-position property X-Git-Url: https://www.irasnyder.com/gitweb/?a=commitdiff_plain;h=f700382da8724c1c3cd0b6fa898129605255a91a;p=tilda-gobject.git [Terminal] Add scrollbar-position property 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. --- diff --git a/tilda-terminal.c b/tilda-terminal.c index 0accb98..c765eca 100644 --- a/tilda-terminal.c +++ b/tilda-terminal.c @@ -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", diff --git a/tilda-terminal.h b/tilda-terminal.h index d56800a..e9d8f28 100644 --- a/tilda-terminal.h +++ b/tilda-terminal.h @@ -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.