X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Ffind-dialog.c;h=123f7cf69b3148e4a846fc42a6646c4205a05f53;hb=c1f04750c4430bf3e7f0630842f879ee695b947d;hp=8dea41768ae6fba92d39f94cd037edc8f2d8ae30;hpb=fa710cebbb94a5fce5802902bc1cc8d52367d190;p=pspp diff --git a/src/ui/gui/find-dialog.c b/src/ui/gui/find-dialog.c index 8dea41768a..123f7cf69b 100644 --- a/src/ui/gui/find-dialog.c +++ b/src/ui/gui/find-dialog.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2007, 2009, 2011, 2012 Free Software Foundation + Copyright (C) 2007, 2009, 2011, 2012, 2015 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 @@ -20,37 +20,34 @@ which match particular strings */ #include -#include "find-dialog.h" -#include "psppire-selector.h" -#include "psppire-dialog.h" -#include "builder-wrapper.h" -#include "helper.h" -#include "psppire-data-window.h" -#include "dict-display.h" -#include -#include -#include -#include -#include "psppire-data-store.h" #include -#include -#include -#include -#include - #include +#include #include +#include -#include "xalloc.h" +#include "data/data-in.h" +#include "data/datasheet.h" +#include "data/format.h" +#include "data/value.h" +#include "libpspp/cast.h" +#include "libpspp/message.h" +#include "ui/gui/builder-wrapper.h" +#include "ui/gui/dict-display.h" +#include "ui/gui/find-dialog.h" +#include "ui/gui/helper.h" +#include "ui/gui/psppire-data-store.h" +#include "ui/gui/psppire-data-window.h" +#include "ui/gui/psppire-dialog.h" +#include "ui/gui/psppire-selector.h" + +#include "gl/xalloc.h" #include #define _(msgid) gettext (msgid) #define N_(msgid) msgid -/* FIXME: These shouldn't be here */ -#include "psppire-var-store.h" - struct find_dialog { GtkBuilder *xml; @@ -106,25 +103,17 @@ do_find (GObject *obj, const struct find_dialog *fd) gint column = -1; glong row; - g_object_get (fd->de->data_editor, "current-case", &row, NULL); - if ( row < 0 ) - row = 0; + row = 10; find_value (fd, row, &x, &column); - if ( x != -1) { gtk_notebook_set_current_page (GTK_NOTEBOOK (fd->de->data_editor), PSPPIRE_DATA_EDITOR_DATA_VIEW); - g_object_set (fd->de->data_editor, - "current-case", x, - "current-variable", column, - NULL); } - } /* Callback on the selector. @@ -196,13 +185,12 @@ find_dialog (PsppireDataWindow *de) GtkWidget *buttonbox; - PsppireVarStore *vs ; PsppireDataStore *ds ; fd.xml = builder_new ("find.ui"); fd.de = de; - find_button = gtk_button_new_from_stock (GTK_STOCK_FIND); + find_button = gtk_button_new_with_label (_("Find")); gtk_widget_show (find_button); buttonbox = get_widget_assert (fd.xml, "find-buttonbox"); @@ -215,12 +203,10 @@ find_dialog (PsppireDataWindow *de) selector = get_widget_assert (fd.xml, "find-selector"); g_object_get (de->data_editor, - "var-store", &vs, + "dictionary", &fd.dict, "data-store", &ds, NULL); - g_object_get (vs, "dictionary", &fd.dict, NULL); - fd.data = ds->datasheet; fd.variable_entry = get_widget_assert (fd.xml, "find-variable-entry"); @@ -323,6 +309,9 @@ cp1c (casenumber current, struct datasheet *data) static casenumber cm1 (casenumber current, struct datasheet *data) { + if (current == -1) + return datasheet_get_n_rows (data); + return current - 1; } @@ -332,6 +321,9 @@ cm1c (casenumber current, struct datasheet *data) { casenumber next = current; + if (current == -1) + return datasheet_get_n_rows (data); + backward_wrap (&next, data); return next; @@ -347,6 +339,9 @@ last (casenumber current, struct datasheet *data) static casenumber minus1 (casenumber current, struct datasheet *data) { + if (current == -1) + return 0; + return -1; } @@ -708,7 +703,6 @@ find_value (const struct find_dialog *fd, casenumber current_row, const char *target_string = gtk_entry_get_text (GTK_ENTRY (fd->value_entry)); enum string_cmp_flags flags = 0; - g_assert (current_row >= 0); var = dict_lookup_var (fd->dict->dict, var_name); if ( ! var )