/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "psppire-var-sheet.h"
#include <ui/gui/sheet/psppire-axis.h>
+#include "builder-wrapper.h"
#include "helper.h"
#include "customentry.h"
#include <data/variable.h>
+#include "data/value-labels.h"
#include "psppire-var-store.h"
+#include "ui/gui/val-labs-dialog.h"
#include <gettext.h>
#define _(msgid) gettext (msgid)
return FALSE;
}
+static void
+var_sheet_show_var_type_dialog (PsppireVarSheet *vs)
+{
+ PsppireVarStore *var_store;
+ struct fmt_spec format;
+ struct variable *var;
+ gint row;
+
+ var_store = PSPPIRE_VAR_STORE (psppire_sheet_get_model (PSPPIRE_SHEET (vs)));
+
+ psppire_sheet_get_active_cell (PSPPIRE_SHEET (vs), &row, NULL);
+ var = psppire_var_store_get_var (var_store, row);
+ g_return_if_fail (var != NULL);
+
+ format = *var_get_print_format (var);
+ psppire_var_type_dialog_run (GTK_WINDOW (gtk_widget_get_toplevel (
+ GTK_WIDGET (vs))), &format);
+ var_set_width (var, fmt_var_width (&format));
+ var_set_both_formats (var, &format);
+}
+
+static void
+var_sheet_show_val_labs_dialog (PsppireVarSheet *vs)
+{
+ PsppireVarStore *var_store;
+ struct val_labs *labels;
+ struct variable *var;
+ gint row;
+ var_store = PSPPIRE_VAR_STORE (psppire_sheet_get_model (PSPPIRE_SHEET (vs)));
+
+ psppire_sheet_get_active_cell (PSPPIRE_SHEET (vs), &row, NULL);
+ var = psppire_var_store_get_var (var_store, row);
+ g_return_if_fail (var != NULL);
+
+ labels = psppire_val_labs_dialog_run (GTK_WINDOW (gtk_widget_get_toplevel (
+ GTK_WIDGET (vs))), var);
+ if (labels)
+ {
+ var_set_value_labels (var, labels);
+ val_labs_destroy (labels);
+ }
+}
/*
Callback whenever the active cell changes on the var sheet.
customEntry =
PSPPIRE_CUSTOM_ENTRY (psppire_sheet_get_entry (sheet));
- val_labs_dialog_set_target_variable (vs->val_labs_dialog, var);
-
g_signal_connect_swapped (customEntry,
"clicked",
- G_CALLBACK (val_labs_dialog_show),
- vs->val_labs_dialog);
+ G_CALLBACK (var_sheet_show_val_labs_dialog),
+ vs);
}
break;
vs->missing_val_dialog->pv =
psppire_var_store_get_var (var_store, row);
- vs->missing_val_dialog->dict = var_store->dictionary;
-
g_signal_connect_swapped (customEntry,
"clicked",
G_CALLBACK (missing_val_dialog_show),
customEntry =
PSPPIRE_CUSTOM_ENTRY (psppire_sheet_get_entry (sheet));
-
- /* Popup the Variable Type dialog box */
- vs->var_type_dialog->pv = var;
-
g_signal_connect_swapped (customEntry,
"clicked",
- G_CALLBACK (var_type_dialog_show),
- vs->var_type_dialog);
+ G_CALLBACK (var_sheet_show_var_type_dialog),
+ vs);
}
break;
const gint current_value = g_strtod (s, NULL);
GtkObject *adj ;
- const struct fmt_spec *fmt = var_get_write_format (var);
+ const struct fmt_spec *fmt = var_get_print_format (var);
switch (column)
{
case PSPPIRE_VAR_STORE_COL_WIDTH:
}
adj = gtk_adjustment_new (current_value,
- r_min, r_max,
- 1.0, 1.0, 1.0 /* steps */
- );
+ r_min, r_max,
+ 1.0, 1.0, /* steps */
+ 0);
psppire_sheet_change_entry (sheet, GTK_TYPE_SPIN_BUTTON);
GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (vs));
- vs->val_labs_dialog = val_labs_dialog_create (GTK_WINDOW (toplevel),
- PSPPIRE_VAR_STORE (psppire_sheet_get_model (PSPPIRE_SHEET (vs))));
-
vs->missing_val_dialog = missing_val_dialog_create (GTK_WINDOW (toplevel));
- vs->var_type_dialog = var_type_dialog_create (GTK_WINDOW (toplevel));
-
+
/* Chain up to the parent class */
GTK_WIDGET_CLASS (parent_class)->realize (w);
}
{
PsppireVarSheet *vs = PSPPIRE_VAR_SHEET (w);
- g_free (vs->val_labs_dialog);
g_free (vs->missing_val_dialog);
- g_free (vs->var_type_dialog);
/* Chain up to the parent class */
GTK_WIDGET_CLASS (parent_class)->unrealize (w);