/* --- prototypes --- */
static void psppire_dict_class_init (PsppireDictClass *class);
static void psppire_dict_init (PsppireDict *dict);
-static void psppire_dict_finalize (GObject *object);
+static void psppire_dict_dispose (GObject *object);
static void dictionary_tree_model_init (GtkTreeModelIface *iface);
parent_class = g_type_class_peek_parent (class);
- object_class->finalize = psppire_dict_finalize;
+ object_class->dispose = psppire_dict_dispose;
signals [BACKEND_CHANGED] =
g_signal_new ("backend-changed",
signals [VARIABLE_CHANGED] =
- g_signal_new ("variable_changed",
+ g_signal_new ("variable-changed",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_FIRST,
0,
signals [VARIABLE_INSERTED] =
- g_signal_new ("variable_inserted",
+ g_signal_new ("variable-inserted",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_FIRST,
0,
}
static void
-psppire_dict_finalize (GObject *object)
+psppire_dict_dispose (GObject *object)
{
PsppireDict *d = PSPPIRE_DICT (object);
- dict_destroy (d->dict);
+ dict_set_callbacks (d->dict, NULL, NULL);
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (parent_class)->dispose (object);
}
/* Pass on callbacks from src/data/dictionary, as
/* Stores a valid name for a new variable in DICT into the SIZE bytes in NAME.
Returns true if successful, false if SIZE is insufficient. */
-static bool
-auto_generate_var_name (const PsppireDict *dict, char *name, size_t size)
+bool
+psppire_dict_generate_name (const PsppireDict *dict, char *name, size_t size)
{
gint d;
return name;
}
-/* Insert a new variable at posn IDX, with the name NAME.
+/* Insert a new variable at posn IDX, with the name NAME, and return the
+ new variable.
If NAME is null, then a name will be automatically assigned.
*/
-void
+struct variable *
psppire_dict_insert_variable (PsppireDict *d, gint idx, const gchar *name)
{
- struct variable *var ;
+ struct variable *var;
char tmpname[64];
- g_return_if_fail (idx >= 0);
- g_return_if_fail (d);
- g_return_if_fail (PSPPIRE_IS_DICT (d));
+ g_return_val_if_fail (idx >= 0, NULL);
+ g_return_val_if_fail (d, NULL);
+ g_return_val_if_fail (PSPPIRE_IS_DICT (d), NULL);
- if ( ! name )
+ if (name == NULL)
{
- if (!auto_generate_var_name (d, tmpname, sizeof tmpname))
- g_return_if_reached ();
+ if (!psppire_dict_generate_name (d, tmpname, sizeof tmpname))
+ g_return_val_if_reached (NULL);
name = tmpname;
}
d->disable_insert_signal = FALSE;
g_signal_emit (d, signals[VARIABLE_INSERTED], 0, idx);
+
+ return var;
}
/* Delete N variables beginning at FIRST */