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 (); } } }
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)); }