X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Ffind-dialog.c;h=7764d04a9633b2cac6aed1decddbd858e45bd830;hb=46dfa3ec7417bbb7452f152a6b62435006259633;hp=63717dfa59948bc45c0d3a0ee7a7b74f89407294;hpb=d22c3971e926ceaf62416c6482fe0fb1dc5407f0;p=pspp-builds.git diff --git a/src/ui/gui/find-dialog.c b/src/ui/gui/find-dialog.c index 63717dfa..7764d04a 100644 --- a/src/ui/gui/find-dialog.c +++ b/src/ui/gui/find-dialog.c @@ -27,35 +27,33 @@ which match particular strings */ #include "data-editor.h" #include "dict-display.h" #include +#include #include #include #include "psppire-data-store.h" -#include #include #include #include #include - - #include #include #include +#include "xalloc.h" + #include #define _(msgid) gettext (msgid) #define N_(msgid) msgid /* FIXME: These shouldn't be here */ -#include #include "psppire-var-store.h" struct find_dialog { GladeXML *xml; PsppireDict *dict; - GtkSheet *data_sheet; struct datasheet *data; struct data_editor *de; GtkWidget *variable_entry; @@ -103,24 +101,29 @@ refresh (GObject *obj, const struct find_dialog *fd) static void do_find (GObject *obj, const struct find_dialog *fd) { - casenumber x; - gint column; - gint row; - gtk_sheet_get_active_cell (fd->data_sheet, &row, NULL); + casenumber x = -1; + gint column = -1; + glong row; + + g_object_get (fd->de->data_editor, "current-case", &row, NULL); if ( row < 0 ) row = 0; find_value (fd, row, &x, &column); + if ( x != -1) { - data_editor_select_sheet (fd->de, PAGE_DATA_SHEET); - - gtk_sheet_moveto (fd->data_sheet, x, column, 0.5, 0.5); + gtk_notebook_set_current_page (GTK_NOTEBOOK (fd->de->data_editor), + PSPPIRE_DATA_EDITOR_DATA_VIEW); - gtk_sheet_set_active_cell (fd->data_sheet, x, column); + g_object_set (fd->de->data_editor, + "current-case", x, + "current-variable", column, + NULL); } + } /* Callback on the selector. @@ -192,11 +195,9 @@ find_dialog (GObject *o, gpointer data) GtkWidget *selector; GtkWidget *find_button; - GtkSheet *var_sheet; - GtkSheet *data_sheet ; GtkWidget *buttonbox; - PsppireVarStore *vs ; + PsppireVarStore *vs ; PsppireDataStore *ds ; fd.xml = XML_NEW ("psppire.glade"); @@ -214,15 +215,13 @@ find_dialog (GObject *o, gpointer data) source = get_widget_assert (fd.xml, "find-variable-treeview"); selector = get_widget_assert (fd.xml, "find-selector"); - var_sheet = GTK_SHEET (get_widget_assert (de->xml, "variable_sheet")); - data_sheet = GTK_SHEET (get_widget_assert (de->xml, "data_sheet")); - - vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet)); - ds = PSPPIRE_DATA_STORE (gtk_sheet_get_model (data_sheet)); + g_object_get (de->data_editor, + "var-store", &vs, + "data-store", &ds, + NULL); fd.dict = vs->dict; fd.data = ds->case_file->datasheet; - fd.data_sheet = data_sheet; fd.variable_entry = get_widget_assert (fd.xml, "find-variable-entry"); fd.value_entry = get_widget_assert (fd.xml, "find-value-entry"); @@ -252,7 +251,8 @@ find_dialog (GObject *o, gpointer data) source, fd.variable_entry, insert_source_row_into_entry, - is_currently_in_entry + is_currently_in_entry, + NULL ); g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), &fd); @@ -376,7 +376,7 @@ enum iteration_type{ n_iterators }; -static struct casenum_iterator ip[n_iterators] = +static const struct casenum_iterator ip[n_iterators] = { {cp1, last, forward}, {cp1c, cm1, forward_wrap}, @@ -387,7 +387,7 @@ static struct casenum_iterator ip[n_iterators] = /* A factory returning an iterator according to the dialog box's settings */ -static struct casenum_iterator * +static const struct casenum_iterator * get_iteration_params (const struct find_dialog *fd) { gboolean wrap = gtk_toggle_button_get_active @@ -464,7 +464,7 @@ value_compare (const struct comparator *cmptr, const union value *v) { const struct value_comparator *vc = (const struct value_comparator *) cmptr; - return 0 == compare_values (v, vc->pattern, var_get_width (cmptr->var)); + return 0 == compare_values (v, vc->pattern, cmptr->var); } @@ -598,8 +598,9 @@ value_comparator_create (const struct variable *var, const char *target) vc->pattern = value_create (width); if ( ! data_in (ss_cstr (target), + LEGACY_NATIVE, fmt->type, - 0, 0, + 0, 0, 0, vc->pattern, width) ) { free (vc); @@ -742,7 +743,7 @@ find_value (const struct find_dialog *fd, casenumber current_row, { union value *val = value_create (width); casenumber i; - struct casenum_iterator *ip = get_iteration_params (fd); + const struct casenum_iterator *ip = get_iteration_params (fd); struct comparator *cmptr = comparator_factory (var, target_string, flags);