X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fvar-type-dialog.c;h=ea3d2e098a23c5eb464fea1ab596e6c09e4460cc;hb=2d9ee2dd5f5fbaeda0caf5a19ad4f018f4b22bc3;hp=dfdd895f6192f9964bda5785b02748d85441fe29;hpb=43b1296aafe7582e7dbe6c2b6a8b478d7d9b0fcf;p=pspp-builds.git diff --git a/src/ui/gui/var-type-dialog.c b/src/ui/gui/var-type-dialog.c index dfdd895f..ea3d2e09 100644 --- a/src/ui/gui/var-type-dialog.c +++ b/src/ui/gui/var-type-dialog.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2005, 2006 Free Software Foundation + Copyright (C) 2005, 2006, 2010, 2011, 2012 Free Software Foundation 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 @@ -21,19 +21,15 @@ #include #include -#include - #include #include -#include "var-type-dialog.h" - -#include "helper.h" - -#include -#include -#include - +#include "data/data-out.h" +#include "data/settings.h" +#include "data/variable.h" +#include "libpspp/message.h" +#include "ui/gui/builder-wrapper.h" +#include "ui/gui/var-type-dialog.h" struct tgs { @@ -126,7 +122,7 @@ static void update_width_decimals (const struct var_type_dialog *dialog); static void set_local_width_decimals (struct var_type_dialog *dialog) { - dialog->fmt_l = * var_get_write_format (dialog->pv); + dialog->fmt_l = * var_get_print_format (dialog->pv); switch (dialog->active_button) { @@ -263,12 +259,12 @@ preview_custom (GtkWidget *w, gpointer data) union value v; v.f = 1234.56; - sample_text = value_to_text (v, dialog->fmt_l); + sample_text = g_strchug (data_out (&v, NULL, &dialog->fmt_l)); gtk_label_set_text (GTK_LABEL (dialog->label_psample), sample_text); g_free (sample_text); v.f = -v.f; - sample_text = value_to_text (v, dialog->fmt_l); + sample_text = g_strchug (data_out (&v, NULL, &dialog->fmt_l)); gtk_label_set_text (GTK_LABEL (dialog->label_nsample), sample_text); g_free (sample_text); } @@ -316,29 +312,27 @@ set_format_type_from_treeview (GtkTreeView *treeview, gpointer data) dialog->fmt_l = custom_format; dialog->fmt_l.type = *(int*) g_value_get_pointer (&the_value); - } - - -/* Create the structure from the XML definitions */ +/* Create the structure */ struct var_type_dialog * -var_type_dialog_create (GladeXML *xml) +var_type_dialog_create (GtkWindow *toplevel) { gint i; struct var_type_dialog *dialog = g_malloc (sizeof (struct var_type_dialog)); - g_assert (xml); + GtkBuilder *xml = builder_new ("var-sheet-dialogs.ui"); dialog->window = get_widget_assert (xml,"var_type_dialog"); + dialog->active_button = -1; g_signal_connect (dialog->window, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); gtk_window_set_transient_for (GTK_WINDOW (dialog->window), - GTK_WINDOW (get_widget_assert (xml, "data_editor"))); + toplevel); dialog->radioButton[BUTTON_NUMERIC] = get_widget_assert (xml,"radiobutton1"); @@ -444,8 +438,8 @@ var_type_dialog_create (GladeXML *xml) g_object_unref (list_store); - g_signal_connect (GTK_OBJECT (dialog->date_format_treeview), "cursor-changed", - GTK_SIGNAL_FUNC (set_format_from_treeview), dialog); + g_signal_connect (dialog->date_format_treeview, "cursor-changed", + G_CALLBACK (set_format_from_treeview), dialog); /* populate the dollar treeview */ @@ -467,7 +461,7 @@ var_type_dialog_create (GladeXML *xml) for ( i = 0 ; i < sizeof (dollar_format)/sizeof (dollar_format[0]) ; ++i ) { - char *template = fmt_dollar_template (&dollar_format[i]); + char *template = settings_dollar_template (&dollar_format[i]); gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, 0, template, @@ -481,13 +475,13 @@ var_type_dialog_create (GladeXML *xml) g_object_unref (list_store); - g_signal_connect (GTK_OBJECT (dialog->dollar_treeview), + g_signal_connect (dialog->dollar_treeview, "cursor-changed", - GTK_SIGNAL_FUNC (set_format_from_treeview), dialog); + G_CALLBACK (set_format_from_treeview), dialog); - g_signal_connect_swapped (GTK_OBJECT (dialog->dollar_treeview), + g_signal_connect_swapped (dialog->dollar_treeview, "cursor-changed", - GTK_SIGNAL_FUNC (update_width_decimals), dialog); + G_CALLBACK (update_width_decimals), dialog); /* populate the custom treeview */ @@ -525,24 +519,24 @@ var_type_dialog_create (GladeXML *xml) g_object_unref (list_store); - g_signal_connect (GTK_OBJECT (dialog->custom_treeview), + g_signal_connect (dialog->custom_treeview, "cursor-changed", - GTK_SIGNAL_FUNC (set_format_type_from_treeview), dialog); + G_CALLBACK (set_format_type_from_treeview), dialog); - g_signal_connect (GTK_OBJECT (dialog->custom_treeview), + g_signal_connect (dialog->custom_treeview, "cursor-changed", - GTK_SIGNAL_FUNC (preview_custom), dialog); + G_CALLBACK (preview_custom), dialog); - g_signal_connect (GTK_OBJECT (dialog->entry_width), + g_signal_connect (dialog->entry_width, "changed", - GTK_SIGNAL_FUNC (preview_custom), dialog); + G_CALLBACK (preview_custom), dialog); - g_signal_connect (GTK_OBJECT (dialog->entry_decimals), + g_signal_connect (dialog->entry_decimals, "changed", - GTK_SIGNAL_FUNC (preview_custom), dialog); + G_CALLBACK (preview_custom), dialog); /* Connect to the OK button */ @@ -554,10 +548,10 @@ var_type_dialog_create (GladeXML *xml) g_signal_connect (get_widget_assert (xml, "var_type_cancel") , "clicked", G_CALLBACK (hide_dialog), dialog); - - } + g_object_unref (xml); + return dialog; } @@ -665,21 +659,21 @@ select_treeview_from_format_type (GtkTreeView *treeview, static void var_type_dialog_set_state (struct var_type_dialog *dialog) { - const struct fmt_spec *write_spec ; + const struct fmt_spec *format ; GString *str = g_string_new (""); g_assert (dialog); g_assert (dialog->pv); /* Populate width and decimals */ - write_spec = var_get_write_format (dialog->pv); + format = var_get_print_format (dialog->pv); - g_string_printf (str, "%d", write_spec->d); + g_string_printf (str, "%d", format->d); gtk_entry_set_text (GTK_ENTRY (dialog->entry_decimals), str->str); - g_string_printf (str, "%d", write_spec->w); + g_string_printf (str, "%d", format->w); gtk_entry_set_text (GTK_ENTRY (dialog->entry_width), str->str); @@ -687,7 +681,7 @@ var_type_dialog_set_state (struct var_type_dialog *dialog) g_string_free (str, TRUE); /* Populate the radio button states */ - switch (write_spec->type) + switch (format->type) { case FMT_F: var_type_dialog_set_active_button (dialog, BUTTON_NUMERIC); @@ -710,7 +704,7 @@ var_type_dialog_set_state (struct var_type_dialog *dialog) var_type_dialog_set_active_button (dialog, BUTTON_DOLLAR); gtk_widget_show_all (dialog->width_decimals); - select_treeview_from_format (dialog->dollar_treeview, write_spec); + select_treeview_from_format (dialog->dollar_treeview, format); break; case FMT_DATE: case FMT_EDATE: @@ -728,7 +722,7 @@ var_type_dialog_set_state (struct var_type_dialog *dialog) var_type_dialog_set_active_button (dialog, BUTTON_DATE); gtk_widget_hide (dialog->width_decimals); gtk_widget_show (dialog->date_format_list); - select_treeview_from_format (dialog->date_format_treeview, write_spec); + select_treeview_from_format (dialog->date_format_treeview, format); break; case FMT_CCA: case FMT_CCB: @@ -737,7 +731,7 @@ var_type_dialog_set_state (struct var_type_dialog *dialog) case FMT_CCE: var_type_dialog_set_active_button (dialog, BUTTON_CUSTOM); select_treeview_from_format_type (dialog->custom_treeview, - write_spec->type); + format->type); gtk_widget_show_all (dialog->width_decimals); break; default: @@ -790,14 +784,12 @@ on_var_type_ok_clicked (GtkWidget *w, gpointer data) gint decimals = atoi (gtk_entry_get_text (GTK_ENTRY (dialog->entry_decimals))); - gint new_type = VAR_NUMERIC; gint new_width = 0; bool result = false; struct fmt_spec spec; switch (dialog->active_button) { case BUTTON_STRING: - new_type = VAR_STRING; new_width = width; result = make_output_format_try (&spec, FMT_A, width, 0); break; @@ -815,14 +807,16 @@ on_var_type_ok_clicked (GtkWidget *w, gpointer data) break; case BUTTON_DATE: case BUTTON_CUSTOM: - g_assert (fmt_check_output (&dialog->fmt_l)); - result = memcpy (&spec, &dialog->fmt_l, sizeof (struct fmt_spec)); + if (! fmt_check_output (&dialog->fmt_l)) + g_critical ("Invalid variable format"); + else + result = memcpy (&spec, &dialog->fmt_l, sizeof (struct fmt_spec)); break; case BUTTON_DOLLAR: result = make_output_format_try (&spec, FMT_DOLLAR, width, decimals); break; default: - g_print ("Unknown variable type: %d\n", dialog->active_button) ; + g_critical ("Unknown variable type: %d", dialog->active_button) ; result = false; break; }