From b20caf2b8926c59f17495c7595524a2715c2b5d7 Mon Sep 17 00:00:00 2001 From: "Ira W. Snyder" Date: Sat, 26 Jan 2008 11:32:39 -0800 Subject: [PATCH] [Window] Add the ability to set the initial number of TildaTerminals This gives TildaWindow the ability to start an arbitrary number of TildaTerminals when it is started. This is an oft-requested feature. :) --- tilda-config.c | 1 + tilda-window.c | 30 +++++++++++++++++++++++++++--- tilda-window.h | 1 + 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/tilda-config.c b/tilda-config.c index cc33fb1..b1b6575 100644 --- a/tilda-config.c +++ b/tilda-config.c @@ -42,6 +42,7 @@ tilda_config_setup_defaults () g_hash_table_insert (config_defaults, "width", "600"); g_hash_table_insert (config_defaults, "x-position", "0"); g_hash_table_insert (config_defaults, "y-position", "0"); + g_hash_table_insert (config_defaults, "initial-terminals", "1"); g_hash_table_insert (config_defaults, "tab-position", "top"); g_hash_table_insert (config_defaults, "animation-orientation", "top"); g_hash_table_insert (config_defaults, "animation-delay", "15000"); diff --git a/tilda-window.c b/tilda-window.c index 618e862..8e8ff6a 100644 --- a/tilda-window.c +++ b/tilda-window.c @@ -522,6 +522,7 @@ enum tilda_window_properties { TILDA_WINDOW_WIDTH, TILDA_WINDOW_X_POSITION, TILDA_WINDOW_Y_POSITION, + TILDA_WINDOW_INITIAL_TERMINALS, TILDA_WINDOW_TAB_POSITION, TILDA_WINDOW_ANIMATION_ORIENTATION, @@ -609,6 +610,11 @@ tilda_window_set_property (GObject *object, debug_printf ("window y position: %d\n", self->y_position); break; + case TILDA_WINDOW_INITIAL_TERMINALS: + self->initial_terminals = g_value_get_int (value); + debug_printf ("window initial terminals: %d\n", self->initial_terminals); + break; + case TILDA_WINDOW_TAB_POSITION: self->tab_position = g_value_get_int (value); gtk_notebook_set_tab_pos (GTK_NOTEBOOK(self->notebook), self->tab_position); @@ -715,6 +721,10 @@ tilda_window_get_property (GObject *object, g_value_set_int (value, self->y_position); break; + case TILDA_WINDOW_INITIAL_TERMINALS: + g_value_set_int (value, self->initial_terminals); + break; + case TILDA_WINDOW_TAB_POSITION: g_value_set_int (value, self->tab_position); break; @@ -771,6 +781,7 @@ tilda_window_constructor (GType type, GObject *obj; TildaWindow *self; + gint i; /* Invoke parent constructor */ TildaWindowClass *klass; @@ -811,6 +822,7 @@ tilda_window_constructor (GType type, tilda_window_config_int_property (self, "width"); tilda_window_config_int_property (self, "x-position"); tilda_window_config_int_property (self, "y-position"); + tilda_window_config_int_property (self, "initial-terminals"); tilda_window_config_int_property (self, "animation-delay"); tilda_window_config_enum_property (self, "tab-position"); @@ -823,9 +835,9 @@ tilda_window_constructor (GType type, tilda_window_config_boolean_property (self, "centered-horizontally"); tilda_window_config_boolean_property (self, "centered-vertically"); - // FIXME: It should be configurable how many terms we add at startup - tilda_window_add_terminal (self); - tilda_window_add_terminal (self); + /* Add the initial terminal(s) */ + for (i=0; iinitial_terminals; ++i) + tilda_window_add_terminal (self); /* Show us if we're ready. If not, just remain hidden. All sub-widgets must * be gtk_widget_show()n by this point. */ @@ -992,6 +1004,18 @@ tilda_window_class_init (gpointer g_class, TILDA_WINDOW_Y_POSITION, pspec); + pspec = g_param_spec_int ("initial-terminals", + _("Window's inital number of terminals"), + NULL, + 1, + INT_MAX, + 1, + G_PARAM_READWRITE); + + g_object_class_install_property (gobject_class, + TILDA_WINDOW_INITIAL_TERMINALS, + pspec); + pspec = g_param_spec_int ("tab-position", _("Position of window's tab bar"), NULL, diff --git a/tilda-window.h b/tilda-window.h index a6c8b61..d036c89 100644 --- a/tilda-window.h +++ b/tilda-window.h @@ -51,6 +51,7 @@ struct _TildaWindow { gint width; gint x_position; gint y_position; + gint initial_terminals; // FIXME: these really should be enum's if possible gint tab_position; -- 2.34.1