+static void
+psppire_missing_val_dialog_class_init (PsppireMissingValDialogClass *class)
+{
+ GObjectClass *gobject_class;
+ gobject_class = G_OBJECT_CLASS (class);
+
+ gobject_class->constructor = psppire_missing_val_dialog_constructor;
+ gobject_class->finalize = psppire_missing_val_dialog_finalize;
+ gobject_class->set_property = psppire_missing_val_dialog_set_property;
+ gobject_class->get_property = psppire_missing_val_dialog_get_property;
+
+ g_object_class_install_property (
+ gobject_class, PROP_VARIABLE,
+ g_param_spec_pointer ("variable",
+ "Variable",
+ "Variable whose missing values are to be edited. "
+ "The variable's print format and encoding are also "
+ "used for editing.",
+ G_PARAM_WRITABLE));
+
+ g_object_class_install_property (
+ gobject_class, PROP_MISSING_VALUES,
+ g_param_spec_pointer ("missing-values",
+ "Missing Values",
+ "Edited missing values.",
+ G_PARAM_READABLE));
+}
+
+static void
+psppire_missing_val_dialog_init (PsppireMissingValDialog *dialog)
+{
+ /* We do all of our work on widgets in the constructor function, because that
+ runs after the construction properties have been set. Otherwise
+ PsppireDialog's "orientation" property hasn't been set and therefore we
+ have no box to populate. */
+ mv_init (&dialog->mvl, 0);
+ dialog->encoding = NULL;
+}
+
+static void
+psppire_missing_val_dialog_finalize (GObject *obj)
+{
+ PsppireMissingValDialog *dialog = PSPPIRE_MISSING_VAL_DIALOG (obj);
+
+ mv_destroy (&dialog->mvl);
+ g_free (dialog->encoding);