[Window] Add the ability to set the initial number of TildaTerminals
[tilda-gobject.git] / tilda-window.c
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,