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,
+
+ TILDA_TERMINAL_BACKSPACE_BINDING,
+ TILDA_TERMINAL_DELETE_BINDING,
+ TILDA_TERMINAL_DYNAMIC_TITLE,
+ TILDA_TERMINAL_EXIT_ACTION,
};
static void
* NOTE: any constructor-time values will be set later. */
self->dispose_has_run = FALSE;
self->number = 0;
+
+ self->vte_term = vte_terminal_new ();
+ self->scrollbar = gtk_vscrollbar_new (VTE_TERMINAL(self->vte_term)->adjustment);
+ self->hbox = gtk_hbox_new (FALSE, 0);
}
static void
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;
+
+ case TILDA_TERMINAL_BACKSPACE_BINDING:
+ self->backspace_binding = g_value_get_int (value);
+ //vte_terminal_set_backspace_binding (VTE_TERMINAL(self->vte_term), self->backspace_binding);
+ g_print ("terminal backspace key: %d\n", self->backspace_binding);
+ break;
+
+ case TILDA_TERMINAL_DELETE_BINDING:
+ self->delete_binding = g_value_get_int (value);
+ //vte_terminal_set_delete_binding (VTE_TERMINAL(self->vte_term), self->delete_binding);
+ g_print ("terminal delete key: %d\n", self->delete_binding);
+ break;
+
+ case TILDA_TERMINAL_DYNAMIC_TITLE:
+ self->dynamic_title = g_value_get_int (value);
+ g_print ("terminal dynamic title: %d\n", self->dynamic_title);
+ break;
+
+ case TILDA_TERMINAL_EXIT_ACTION:
+ self->exit_action = g_value_get_int (value);
+ g_print ("terminal exit action: %d\n", self->exit_action);
+ break;
+
default:
/* We don't have this property... */
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
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);
GObjectConstructParam *construct_properties)
{
GObject *obj;
+ TildaTerminal *self;
/* Invoke parent constructor */
TildaTerminalClass *klass;
* ctor properties have been set.
*
* TODO: This is the place to do DBus-init */
+ self = TILDA_TERMINAL(obj);
+
+ /* Pack into the hbox */
+ gtk_box_pack_end (GTK_BOX(self->hbox), self->scrollbar, FALSE, FALSE, 0);
+ gtk_box_pack_end (GTK_BOX(self->hbox), self->vte_term, TRUE, TRUE, 0);
+ gtk_widget_show (self->scrollbar);
+
+ g_signal_connect (G_OBJECT(self->vte_term), "child-exited",
+ G_CALLBACK(gtk_main_quit), self);
+
+ vte_terminal_fork_command (VTE_TERMINAL(self->vte_term), NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE);
return 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 */
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
return type;
}
+#if 0
+
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 ();
+ gtk_init (&argc, &argv);
tt = g_object_new (TILDA_TYPE_TERMINAL, "number", 10, NULL);
g_object_get (G_OBJECT (tt), "number", &test_number, NULL);
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: */
+#endif
+/* vim: set ts=4 sts=4 sw=4 noet tw=112: */