Пример #1
0
static void
check_correct_init (GdauiEntryWrapper *wrapper)
{
	if (!wrapper->priv->impl_is_correct) {
		GtkWidget *entry = NULL;
		GdauiEntryWrapperClass *klass;
		gboolean class_impl_error = FALSE;;

		klass = GDAUI_ENTRY_WRAPPER_CLASS (G_OBJECT_GET_CLASS (wrapper));
		if (! klass->create_entry) {
			g_warning ("create_entry () virtual function not implemented for object class %s",
				   G_OBJECT_TYPE_NAME (wrapper));
			class_impl_error = TRUE;
		}
		if (! klass->real_set_value) {
			g_warning ("real_set_value () virtual function not implemented for object class %s",
				   G_OBJECT_TYPE_NAME (wrapper));
			class_impl_error = TRUE;
		}
		if (! klass->real_get_value) {
			g_warning ("real_get_value () virtual function not implemented for object class %s",
				   G_OBJECT_TYPE_NAME (wrapper));
			class_impl_error = TRUE;
		}
		if (! klass->connect_signals) {
			g_warning ("connect_signals () virtual function not implemented for object class %s",
				   G_OBJECT_TYPE_NAME (wrapper));
			class_impl_error = TRUE;
		}
		if ((klass->value_is_null && !klass->value_is_equal_to) ||
		    (!klass->value_is_null && klass->value_is_equal_to)) {
			g_warning ("value_is_null() and value_is_equal_to() virtuals functions must eithe both be implemented for object class %s, or none must be implemented",
				   G_OBJECT_TYPE_NAME (wrapper));
			class_impl_error = TRUE;
		}

		if (!class_impl_error) {
			wrapper->priv->real_class = klass;
			wrapper->priv->impl_is_correct = TRUE;
			entry = (*wrapper->priv->real_class->create_entry) (wrapper);

			gdaui_entry_shell_pack_entry (GDAUI_ENTRY_SHELL (wrapper), entry);
			gtk_widget_show (entry);
			wrapper->priv->entry = entry;

			(*wrapper->priv->real_class->connect_signals) (wrapper, G_CALLBACK (contents_changed_cb),
								       G_CALLBACK (contents_activated_cb));
		}
		else {
			/* we need to exit because the program WILL BE unstable and WILL crash */
			g_assert_not_reached ();
		}
	}
}
Пример #2
0
static void
gdaui_entry_string_class_init (GdauiEntryStringClass * klass)
{
	GObjectClass   *object_class = G_OBJECT_CLASS (klass);

	object_class->dispose = gdaui_entry_string_dispose;

	GDAUI_ENTRY_WRAPPER_CLASS (klass)->create_entry = create_entry;
	GDAUI_ENTRY_WRAPPER_CLASS (klass)->real_set_value = real_set_value;
	GDAUI_ENTRY_WRAPPER_CLASS (klass)->real_get_value = real_get_value;
	GDAUI_ENTRY_WRAPPER_CLASS (klass)->connect_signals = connect_signals;
	GDAUI_ENTRY_WRAPPER_CLASS (klass)->set_editable = set_editable;
	GDAUI_ENTRY_WRAPPER_CLASS (klass)->grab_focus = grab_focus;

	/* Properties */
	object_class->set_property = gdaui_entry_string_set_property;
	object_class->get_property = gdaui_entry_string_get_property;

	g_object_class_install_property (object_class, PROP_MULTILINE,
					 g_param_spec_boolean ("multiline", NULL, NULL, FALSE, 
							       G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (object_class, PROP_EDITING_CANCELED,
					 g_param_spec_boolean ("editing-canceled", NULL, NULL, FALSE,
							       G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (object_class, PROP_OPTIONS,
					 g_param_spec_string ("options", NULL, NULL, NULL, G_PARAM_WRITABLE));
}