[Terminal] Add string properties
authorIra W. Snyder <devel@irasnyder.com>
Wed, 9 Jan 2008 05:32:30 +0000 (21:32 -0800)
committerIra W. Snyder <devel@irasnyder.com>
Wed, 9 Jan 2008 05:32:30 +0000 (21:32 -0800)
This adds the first basic implementation of getting / setting all
of the string properties that will be used in TildaTerminal.

Makefile
tilda-terminal.c
tilda-terminal.h

index c05460e..7ca9fce 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,10 @@ CFLAGS=-ggdb -O1 -pipe
 GOBJ_CFLAGS=`pkg-config --cflags gobject-2.0`
 GOBJ_LIBS=`pkg-config --libs gobject-2.0`
 
+.PHONY: all memcheck-tt memcheck-tw memcheck clean
+
+all: tilda-window tilda-terminal
+
 tilda-window: tilda-window.o
        $(GCC) $(CFLAGS) $^ -o $@ $(GOBJ_LIBS)
 
@@ -28,6 +32,3 @@ clean:
        rm -f tilda-window
        rm -f tilda-terminal
 
-
-
-
index 06a712b..cda6399 100644 (file)
@@ -10,7 +10,13 @@ static GObjectClass *parent_class = NULL;
 
 enum tilda_terminal_properties {
        TILDA_TERMINAL_NUMBER = 1,
-       // TODO: All properties
+
+       /* All non-constructor-only properties */
+       TILDA_TERMINAL_BACKGROUND_IMAGE,
+       TILDA_TERMINAL_SHELL,
+       TILDA_TERMINAL_FONT,
+       TILDA_TERMINAL_TITLE,
+       TILDA_TERMINAL_WORKING_DIRECTORY,
 };
 
 static void
@@ -40,6 +46,37 @@ tilda_terminal_set_property (GObject      *object,
                        g_print ("terminal number: %d\n", self->number);
                        break;
 
+               case TILDA_TERMINAL_BACKGROUND_IMAGE:
+                       g_free (self->background_image);
+                       self->background_image = g_value_dup_string (value);
+                       // TODO: Actually set it in self->vte_term
+                       g_print ("terminal back img: %s\n", self->background_image);
+                       break;
+
+               case TILDA_TERMINAL_SHELL:
+                       g_free (self->shell);
+                       self->shell = g_value_dup_string (value);
+                       g_print ("terminal shell: %s\n", self->shell);
+                       break;
+
+               case TILDA_TERMINAL_FONT:
+                       g_free (self->font);
+                       self->font = g_value_dup_string (value);
+                       g_print ("terminal font: %s\n", self->font);
+                       break;
+
+               case TILDA_TERMINAL_TITLE:
+                       g_free (self->title);
+                       self->title = g_value_dup_string (value);
+                       g_print ("terminal title: %s\n", self->title);
+                       break;
+
+               case TILDA_TERMINAL_WORKING_DIRECTORY:
+                       g_free (self->working_directory);
+                       self->working_directory = g_value_dup_string (value);
+                       g_print ("terminal wrk dir: %s\n", self->working_directory);
+                       break;
+
                default:
                        /* We don't have this property... */
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -61,6 +98,26 @@ tilda_terminal_get_property (GObject    *object,
                        g_value_set_int (value, self->number);
                        break;
 
+               case TILDA_TERMINAL_BACKGROUND_IMAGE:
+                       g_value_set_string (value, self->background_image);
+                       break;
+
+               case TILDA_TERMINAL_SHELL:
+                       g_value_set_string (value, self->shell);
+                       break;
+
+               case TILDA_TERMINAL_FONT:
+                       g_value_set_string (value, self->font);
+                       break;
+
+               case TILDA_TERMINAL_TITLE:
+                       g_value_set_string (value, self->title);
+                       break;
+
+               case TILDA_TERMINAL_WORKING_DIRECTORY:
+                       g_value_set_string (value, self->working_directory);
+                       break;
+
                default:
                        /* We don't have this property... */
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -124,6 +181,11 @@ tilda_terminal_finalize (GObject *obj)
         */
 
        // TODO: g_free() any primitives here
+       g_free (self->background_image);
+       g_free (self->shell);
+       g_free (self->font);
+       g_free (self->title);
+       g_free (self->working_directory);
 
 
        /* Chain up to the parent class */
@@ -159,6 +221,56 @@ tilda_terminal_class_init (gpointer g_class,
        g_object_class_install_property (gobject_class,
                                                                         TILDA_TERMINAL_NUMBER,
                                                                         pspec);
+
+       pspec = g_param_spec_string ("background-image",
+                                                                "Terminal's background image",
+                                                                "Get/Set terminal's background image",
+                                                                NULL,
+                                                                G_PARAM_READWRITE);
+
+       g_object_class_install_property (gobject_class,
+                                                                        TILDA_TERMINAL_BACKGROUND_IMAGE,
+                                                                        pspec);
+
+       pspec = g_param_spec_string ("shell",
+                                                                "Terminal's shell",
+                                                                "Get/Set terminal's shell",
+                                                                NULL,
+                                                                G_PARAM_READWRITE);
+
+       g_object_class_install_property (gobject_class,
+                                                                        TILDA_TERMINAL_SHELL,
+                                                                        pspec);
+
+       pspec = g_param_spec_string ("font",
+                                                                "Terminal's font",
+                                                                "Get/Set terminal's font",
+                                                                NULL,
+                                                                G_PARAM_READWRITE);
+
+       g_object_class_install_property (gobject_class,
+                                                                        TILDA_TERMINAL_FONT,
+                                                                        pspec);
+
+       pspec = g_param_spec_string ("title",
+                                                                "Terminal's title",
+                                                                "Get/Set terminal's title",
+                                                                NULL,
+                                                                G_PARAM_READWRITE);
+
+       g_object_class_install_property (gobject_class,
+                                                                        TILDA_TERMINAL_TITLE,
+                                                                        pspec);
+
+       pspec = g_param_spec_string ("working-directory",
+                                                                "Terminal's initial working directory",
+                                                                "Get/Set terminal's initial working directory",
+                                                                NULL,
+                                                                G_PARAM_READWRITE);
+
+       g_object_class_install_property (gobject_class,
+                                                                        TILDA_TERMINAL_WORKING_DIRECTORY,
+                                                                        pspec);
 }
 
 GType
@@ -193,6 +305,7 @@ int main (int argc, char *argv[])
 {
        GObject *tt;
        gint test_number = INT_MIN;
+       gchar *test_string = NULL;
 
        /* Initialize the GObject type system */
        g_type_init ();
@@ -207,10 +320,17 @@ int main (int argc, char *argv[])
        g_object_get (G_OBJECT (tt), "number", &test_number, NULL);
        g_assert (test_number == 22);
 
+       g_object_set (G_OBJECT (tt), "font", "hello I'm a font");
+       g_object_set (G_OBJECT (tt), "font", "Bitstream Vera Sans Mono 13");
+
+       g_object_get (G_OBJECT (tt), "font", &test_string, NULL);
+       g_print ("Read Font: %s\n", test_string);
+       // NOTE: you MUST free the string!!!!
+       g_free (test_string);
+
        g_object_unref (G_OBJECT (tt));
 
        return 0;
 }
 
 /* vim: set ts=4 sts=4 sw=4 noet tw=112: */
-
index 062cfdd..bf19ba2 100644 (file)
@@ -18,7 +18,46 @@ struct _TildaTerminal {
        gboolean dispose_has_run;
 
        /* Instance Members */
+       // FIXME: ADD THESE BACK
+       // TildaWindow *tw;
+       // VteTerminal *vte_term;
        gint number;
+
+       gchar *background_image;
+       gchar *shell;
+       gchar *font;
+       gchar *title;
+       gchar *working_directory;
+
+       gint scrollback_lines;
+       gint transparency_percent;
+       // TODO: opacity, tint, etc
+
+       // TODO: these really are enums. Maybe the config system
+       // TODO: can be made to handle top, bottom, left, right.
+       // TODO: (similar to the true/false handling)
+       // TODO:
+       // TODO: or, maybe ints would just be better
+       // TODO: REMEMBER THOUGH: make the computer do what it's good at ;)
+       gint backspace_key;
+       gint delete_key;
+       gint dynamic_title;
+       gint exit_action;
+       gint colorscheme;
+       // FIXME: ADD THESE BACK
+       //GdkColor background_color;
+       //GdkColor foreground_color;
+       // TODO: all other colors supported by VTE
+
+       gboolean scroll_background;
+       gboolean scroll_on_output;
+       gboolean scroll_on_keystroke;
+       gboolean antialiased;
+       gboolean allow_bold_text;
+       gboolean cursor_blinks;
+       gboolean audible_bell;
+       gboolean visible_bell;
+       gboolean double_buffered;
 };
 
 struct _TildaTerminalClass {