From 74bc0dd01b225f5b61bec6f93087ac24e23471cf Mon Sep 17 00:00:00 2001 From: "Ira W. Snyder" Date: Tue, 8 Jan 2008 21:32:30 -0800 Subject: [PATCH] [Terminal] Add string properties This adds the first basic implementation of getting / setting all of the string properties that will be used in TildaTerminal. --- Makefile | 7 +-- tilda-terminal.c | 124 ++++++++++++++++++++++++++++++++++++++++++++++- tilda-terminal.h | 39 +++++++++++++++ 3 files changed, 165 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index c05460e..7ca9fce 100644 --- 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 - - - diff --git a/tilda-terminal.c b/tilda-terminal.c index 06a712b..cda6399 100644 --- a/tilda-terminal.c +++ b/tilda-terminal.c @@ -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: */ - diff --git a/tilda-terminal.h b/tilda-terminal.h index 062cfdd..bf19ba2 100644 --- a/tilda-terminal.h +++ b/tilda-terminal.h @@ -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 { -- 2.34.1