X-Git-Url: https://irasnyder.com/gitweb/?a=blobdiff_plain;f=tilda-terminal.c;h=8c0ba0c951d9dcc7fd949794f02a068b4f8bfe93;hb=cb11a6373cc816707176e7e9b11b5b273e4173f8;hp=06a712ba47d8b929135921b618f8509951717c78;hpb=b10473197a4e969f9e7e4dbb70d9d5f8a4a1092d;p=tilda-gobject.git diff --git a/tilda-terminal.c b/tilda-terminal.c index 06a712b..8c0ba0c 100644 --- a/tilda-terminal.c +++ b/tilda-terminal.c @@ -10,7 +10,16 @@ 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, + + TILDA_TERMINAL_SCROLLBACK_LINES, + TILDA_TERMINAL_TRANSPARENCY_PERCENT, }; static void @@ -40,6 +49,47 @@ 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; + + case TILDA_TERMINAL_SCROLLBACK_LINES: + self->scrollback_lines = g_value_get_int (value); + g_print ("terminal scrollback lines: %d\n", self->scrollback_lines); + break; + + case TILDA_TERMINAL_TRANSPARENCY_PERCENT: + self->transparency_percent = g_value_get_int (value); + g_print ("terminal transp percent: %d\n", self->transparency_percent); + break; + default: /* We don't have this property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -61,6 +111,34 @@ 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; + + case TILDA_TERMINAL_SCROLLBACK_LINES: + g_value_set_int (value, self->scrollback_lines); + break; + + case TILDA_TERMINAL_TRANSPARENCY_PERCENT: + g_value_set_int (value, self->transparency_percent); + break; + default: /* We don't have this property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -124,6 +202,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 +242,80 @@ 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); + + pspec = g_param_spec_int ("scrollback-lines", + "Terminal's scrollback amount (lines)", + "Get/Set terminal's scrollback amount", + 0, + INT_MAX, // TODO: artificially limit this? + 1000, + G_PARAM_READWRITE); + + g_object_class_install_property (gobject_class, + TILDA_TERMINAL_SCROLLBACK_LINES, + pspec); + + pspec = g_param_spec_int ("transparency-percent", + "Terminal's transparency (percent)", + "Get/Set terminal's transparency", + 0, + 100, + 0, + G_PARAM_READWRITE); + + g_object_class_install_property (gobject_class, + TILDA_TERMINAL_TRANSPARENCY_PERCENT, + pspec); } GType @@ -193,6 +350,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 +365,19 @@ 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_set (G_OBJECT (tt), "transparency-percent", 50); + g_object_unref (G_OBJECT (tt)); return 0; } /* vim: set ts=4 sts=4 sw=4 noet tw=112: */ -