[Window] Add the ability to set the initial number of TildaTerminals
authorIra W. Snyder <devel@irasnyder.com>
Sat, 26 Jan 2008 19:32:39 +0000 (11:32 -0800)
committerIra W. Snyder <devel@irasnyder.com>
Sat, 26 Jan 2008 19:35:38 +0000 (11:35 -0800)
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
tilda-window.c
tilda-window.h

index cc33fb1..b1b6575 100644 (file)
@@ -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");
index 618e862..8e8ff6a 100644 (file)
@@ -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; i<self->initial_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,
index a6c8b61..d036c89 100644 (file)
@@ -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;