X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fhelper.c;h=bae608afa7ab060aeae46ad5782fc914548efabc;hb=38c2638eed90f33225870563c4be183097e4155a;hp=5ed0e98845c9b8e74282e07deb14dc5e256e2f24;hpb=d0371553a98cd169353bf6d211e375e5ffc3a3bd;p=pspp-builds.git diff --git a/src/ui/gui/helper.c b/src/ui/gui/helper.c index 5ed0e988..bae608af 100644 --- a/src/ui/gui/helper.c +++ b/src/ui/gui/helper.c @@ -25,6 +25,7 @@ #include #include "helper.h" #include "message-dialog.h" +#include #include #include #include @@ -91,7 +92,7 @@ text_to_value (const gchar *text, union value *v, } msg_disable (); - ok = data_in (ss_cstr (text), LEGACY_NATIVE, format.type, 0, 0, + ok = data_in (ss_cstr (text), LEGACY_NATIVE, format.type, 0, 0, 0, v, fmt_var_width (&format)); msg_enable (); @@ -129,17 +130,16 @@ pspp_locale_to_utf8 (const gchar *text, gssize len, GError **err) static void give_help (void) { - static struct msg m = { - MSG_GENERAL, - MSG_NOTE, - {0, -1}, - 0, - }; - - if (! m.text) - m.text=g_strdup (_("Sorry. The help system hasn't yet been implemented.")); - - popup_message (&m); + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (NULL, + GTK_DIALOG_MODAL, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, + _("Sorry. The help system hasn't yet " + "been implemented.")); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); } void @@ -150,6 +150,8 @@ connect_help (GladeXML *xml) GList *i; for ( i = g_list_first (helps); i ; i = g_list_next (i)) g_signal_connect (GTK_WIDGET (i->data), "clicked", give_help, 0); + + g_list_free (helps); } @@ -240,8 +242,7 @@ execute_syntax (struct getl_interface *sss) reader = proc_extract_active_file_data (the_dataset); if (!lazy_casereader_destroy (reader, lazy_serial)) - psppire_data_store_set_case_file (the_data_store, - psppire_case_file_new (reader)); + psppire_data_store_set_reader (the_data_store, reader); som_flush (); @@ -252,48 +253,47 @@ execute_syntax (struct getl_interface *sss) -#ifdef G_ENABLE_DEBUG -# define g_marshal_value_peek_int(v) g_value_get_int (v) -#else -# define g_marshal_value_peek_int(v) (v)->data[0].v_int -#endif +/* Create a deep copy of SRC */ +GtkListStore * +clone_list_store (const GtkListStore *src) +{ + GtkTreeIter src_iter; + gboolean ok; + gint i; + const gint n_cols = gtk_tree_model_get_n_columns (GTK_TREE_MODEL (src)); + GType *types = g_malloc (sizeof (*types) * n_cols); + int row = 0; + GtkListStore *dest; -/* VOID:INT,INT,INT */ -void -marshaller_VOID__INT_INT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__INT_INT_INT) (gpointer data1, - gint arg_1, - gint arg_2, - gint arg_3, - gpointer data2); - register GMarshalFunc_VOID__INT_INT_INT callback; - register GCClosure *cc = (GCClosure*) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 4); - - if (G_CCLOSURE_SWAP_DATA (closure)) - { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } - else + for (i = 0 ; i < n_cols; ++i ) + types[i] = gtk_tree_model_get_column_type (GTK_TREE_MODEL (src), i); + + dest = gtk_list_store_newv (n_cols, types); + + for (ok = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (src), + &src_iter); + ok; + ok = gtk_tree_model_iter_next (GTK_TREE_MODEL (src), &src_iter)) { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; + GtkTreeIter dest_iter; + gtk_list_store_append (dest, &dest_iter); + + for (i = 0 ; i < n_cols; ++i ) + { + GValue val = {0}; + + gtk_tree_model_get_value (GTK_TREE_MODEL (src), &src_iter, i, &val); + gtk_list_store_set_value (dest, &dest_iter, i, &val); + + g_value_unset (&val); + } + row++; } - callback = (GMarshalFunc_VOID__INT_INT_INT) (marshal_data ? marshal_data : cc->callback); - callback (data1, - g_marshal_value_peek_int (param_values + 1), - g_marshal_value_peek_int (param_values + 2), - g_marshal_value_peek_int (param_values + 3), - data2); + g_free (types); + + return dest; } + +