projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
examples: Change extensions from .stat to .sps.
[pspp]
/
src
/
ui
/
gui
/
find-dialog.c
diff --git
a/src/ui/gui/find-dialog.c
b/src/ui/gui/find-dialog.c
index 40e91bc0179f1f801a8d22086725735f5810af48..0f856f94629d29c58383d9a1fc3d078015b47bf4 100644
(file)
--- 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.
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2007, 2009 Free Software Foundation
+ Copyright (C) 2007, 2009
, 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
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
@@
-23,6
+23,7
@@
which match particular strings */
#include "find-dialog.h"
#include "psppire-selector.h"
#include "psppire-dialog.h"
#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 "helper.h"
#include "psppire-data-window.h"
#include "dict-display.h"
@@
-34,6
+35,7
@@
which match particular strings */
#include <ctype.h>
#include <sys/types.h>
#include <regex.h>
#include <ctype.h>
#include <sys/types.h>
#include <regex.h>
+#include <libpspp/cast.h>
#include <libpspp/message.h>
#include <gtk/gtk.h>
#include <libpspp/message.h>
#include <gtk/gtk.h>
@@
-183,10
+185,8
@@
value_labels_toggled (GtkToggleButton *tb, gpointer data)
/* Pops up the Find dialog box
*/
void
/* Pops up the Find dialog box
*/
void
-find_dialog (
GObject *o, gpointer data
)
+find_dialog (
PsppireDataWindow *de
)
{
{
- PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
-
struct find_dialog fd;
GtkWidget *dialog ;
struct find_dialog fd;
GtkWidget *dialog ;
@@
-207,7
+207,7
@@
find_dialog (GObject *o, gpointer data)
buttonbox = get_widget_assert (fd.xml, "find-buttonbox");
buttonbox = get_widget_assert (fd.xml, "find-buttonbox");
-
gtk
_box_pack_start_defaults (GTK_BOX (buttonbox), find_button);
+
psppire
_box_pack_start_defaults (GTK_BOX (buttonbox), find_button);
gtk_box_reorder_child (GTK_BOX (buttonbox), find_button, 0);
dialog = get_widget_assert (fd.xml, "find-dialog");
gtk_box_reorder_child (GTK_BOX (buttonbox), find_button, 0);
dialog = get_widget_assert (fd.xml, "find-dialog");
@@
-424,7
+424,6
@@
struct comparator
{
const struct variable *var;
enum string_cmp_flags flags;
{
const struct variable *var;
enum string_cmp_flags flags;
- const PsppireDict *dict;
bool (*compare) (const struct comparator *,
const union value *);
bool (*compare) (const struct comparator *,
const union value *);
@@
-499,7
+498,7
@@
string_value_compare (const struct comparator *cmptr,
g_return_val_if_fail (width > 0, false);
assert ( ! (cmptr->flags & STR_CMP_LABELS));
g_return_val_if_fail (width > 0, false);
assert ( ! (cmptr->flags & STR_CMP_LABELS));
- text = value_to_text (*val, cmptr->
dict, *var_get_write_format (cmptr->var)
);
+ text = value_to_text (*val, cmptr->
var
);
if ( cmptr->flags & STR_CMP_SUBSTR)
found = (NULL != g_strstr_len (text, width, ssc->pattern));
if ( cmptr->flags & STR_CMP_SUBSTR)
found = (NULL != g_strstr_len (text, width, ssc->pattern));
@@
-528,7
+527,7
@@
regexp_value_compare (const struct comparator *cmptr,
g_return_val_if_fail (width > 0, false);
g_return_val_if_fail (width > 0, false);
- text = value_to_text (*val, cmptr->
dict, *var_get_write_format (cmptr->var)
);
+ text = value_to_text (*val, cmptr->
var
);
/* We must remove trailing whitespace, otherwise $ will not match where
one would expect */
g_strchomp (text);
/* We must remove trailing whitespace, otherwise $ will not match where
one would expect */
g_strchomp (text);
@@
-566,7
+565,8
@@
regexp_label_compare (const struct comparator *cmptr,
static void
regexp_destroy (struct comparator *cmptr)
{
static void
regexp_destroy (struct comparator *cmptr)
{
- struct regexp_comparator *rec = (struct regexp_comparator *) cmptr;
+ struct regexp_comparator *rec
+ = UP_CAST (cmptr, struct regexp_comparator, parent);
regfree (&rec->re);
}
regfree (&rec->re);
}
@@
-574,39
+574,37
@@
regexp_destroy (struct comparator *cmptr)
static void
cmptr_value_destroy (struct comparator *cmptr)
{
static void
cmptr_value_destroy (struct comparator *cmptr)
{
- struct value_comparator *vc = (struct value_comparator *) cmptr;
+ struct value_comparator *vc
+ = UP_CAST (cmptr, struct value_comparator, parent);
value_destroy (&vc->pattern, var_get_width (cmptr->var));
}
static struct comparator *
value_destroy (&vc->pattern, var_get_width (cmptr->var));
}
static struct comparator *
-value_comparator_create (const struct variable *var, const
PsppireDict *dict, const
char *target)
+value_comparator_create (const struct variable *var, const char *target)
{
struct value_comparator *vc = xzalloc (sizeof (*vc));
{
struct value_comparator *vc = xzalloc (sizeof (*vc));
- struct comparator *cmptr =
(struct comparator *) vc
;
+ struct comparator *cmptr =
&vc->parent
;
cmptr->flags = 0;
cmptr->var = var;
cmptr->compare = value_compare ;
cmptr->destroy = cmptr_value_destroy;
cmptr->flags = 0;
cmptr->var = var;
cmptr->compare = value_compare ;
cmptr->destroy = cmptr_value_destroy;
- cmptr->dict = dict;
- text_to_value (target,
dict,
var, &vc->pattern);
+ text_to_value (target, var, &vc->pattern);
return cmptr;
}
static struct comparator *
return cmptr;
}
static struct comparator *
-string_comparator_create (const struct variable *var, const PsppireDict *dict,
- const char *target,
+string_comparator_create (const struct variable *var, const char *target,
enum string_cmp_flags flags)
{
struct string_comparator *ssc = xzalloc (sizeof (*ssc));
enum string_cmp_flags flags)
{
struct string_comparator *ssc = xzalloc (sizeof (*ssc));
- struct comparator *cmptr =
(struct comparator *) ssc
;
+ struct comparator *cmptr =
&ssc->parent
;
cmptr->flags = flags;
cmptr->var = var;
cmptr->flags = flags;
cmptr->var = var;
- cmptr->dict = dict;
if ( flags & STR_CMP_LABELS)
cmptr->compare = string_label_compare;
if ( flags & STR_CMP_LABELS)
cmptr->compare = string_label_compare;
@@
-620,16
+618,15
@@
string_comparator_create (const struct variable *var, const PsppireDict *dict,
static struct comparator *
static struct comparator *
-regexp_comparator_create (const struct variable *var, const
PsppireDict *dict, const
char *target,
+regexp_comparator_create (const struct variable *var, const char *target,
enum string_cmp_flags flags)
{
int code;
struct regexp_comparator *rec = xzalloc (sizeof (*rec));
enum string_cmp_flags flags)
{
int code;
struct regexp_comparator *rec = xzalloc (sizeof (*rec));
- struct comparator *cmptr =
(struct comparator *) rec
;
+ struct comparator *cmptr =
&rec->parent
;
cmptr->flags = flags;
cmptr->var = var;
cmptr->flags = flags;
cmptr->var = var;
- cmptr->dict = dict;
cmptr->compare = (flags & STR_CMP_LABELS)
? regexp_label_compare : regexp_value_compare ;
cmptr->compare = (flags & STR_CMP_LABELS)
? regexp_label_compare : regexp_value_compare ;
@@
-679,16
+676,16
@@
comparator_destroy (struct comparator *cmptr)
static struct comparator *
static struct comparator *
-comparator_factory (const struct variable *var, const
PsppireDict *dict, const
char *str,
+comparator_factory (const struct variable *var, const char *str,
enum string_cmp_flags flags)
{
if ( flags & STR_CMP_REGEXP )
enum string_cmp_flags flags)
{
if ( flags & STR_CMP_REGEXP )
- return regexp_comparator_create (var,
dict,
str, flags);
+ return regexp_comparator_create (var, str, flags);
if ( flags & (STR_CMP_SUBSTR | STR_CMP_LABELS) )
if ( flags & (STR_CMP_SUBSTR | STR_CMP_LABELS) )
- return string_comparator_create (var,
dict,
str, flags);
+ return string_comparator_create (var, str, flags);
- return value_comparator_create (var,
dict,
str);
+ return value_comparator_create (var, str);
}
}
@@
-734,7
+731,7
@@
find_value (const struct find_dialog *fd, casenumber current_row,
casenumber i;
const struct casenum_iterator *ip = get_iteration_params (fd);
struct comparator *cmptr =
casenumber i;
const struct casenum_iterator *ip = get_iteration_params (fd);
struct comparator *cmptr =
- comparator_factory (var,
fd->dict,
target_string, flags);
+ comparator_factory (var, target_string, flags);
value_init (&val, width);
if ( ! cmptr)
value_init (&val, width);
if ( ! cmptr)