X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fhelper.c;h=274635d7913b1412ce206416af7d393d64c1a4bb;hb=60fc7f6c520d2193364997bc50008a3a2665e089;hp=22072578d737fcc75333cbca70038adea29fa274;hpb=43b1296aafe7582e7dbe6c2b6a8b478d7d9b0fcf;p=pspp-builds.git diff --git a/src/ui/gui/helper.c b/src/ui/gui/helper.c index 22072578..274635d7 100644 --- a/src/ui/gui/helper.c +++ b/src/ui/gui/helper.c @@ -20,6 +20,8 @@ */ #include +#include + #include #include "helper.h" #include "message-dialog.h" @@ -38,6 +40,7 @@ #include #include #include "psppire-data-store.h" +#include #include @@ -162,17 +165,16 @@ extern struct dataset *the_dataset; extern struct source_stream *the_source_stream; extern PsppireDataStore *the_data_store; -gboolean +void execute_syntax (struct getl_interface *sss) { - gboolean status; struct lexer *lexer; struct casereader *reader = psppire_data_store_get_reader (the_data_store); proc_set_active_file_data (the_dataset, reader); - g_return_val_if_fail (proc_has_active_file (the_dataset), FALSE); + g_return_if_fail (proc_has_active_file (the_dataset)); lexer = lex_create (the_source_stream); @@ -190,11 +192,6 @@ execute_syntax (struct getl_interface *sss) lex_destroy (lexer); - /* GUI syntax needs this implicit EXECUTE command at the end of - every script. Otherwise commands like GET could leave the GUI - without a datasheet. */ - status = proc_execute (the_dataset); - psppire_dict_replace_dictionary (the_data_store->dict, dataset_dict (the_dataset)); @@ -204,7 +201,53 @@ execute_syntax (struct getl_interface *sss) psppire_data_store_set_case_file (the_data_store, pcf); } - return status; + som_flush (); } + +#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 + + +/* 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 + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + 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); +}