#ifndef __FINDTEXT_H__ #define __FINDTEXT_H__ #include "dw_ext_iterator.h" /* * Return values of a_Findtext_search. */ typedef enum { FINDTEXT_SUCCESS, /* The next occurance of the pattern has been found. */ FINDTEXT_RESTART, /* There is no further occurance of the pattern, instead, the first occurance has been selected. */ FINDTEXT_NOT_FOUND /* The patten does not at all occur in the text. */ } FindtextResult; /* * See Findtext_compare for an explanation. */ typedef enum { FINDTEXT_FULL, FINDTEXT_FREE, FINDTEXT_LEFT, FINDTEXT_RIGHT } FindtextPatternType; typedef struct _FindtextState FindtextState; typedef struct _FindtextKey FindtextKey; /* * This structure is associated by the GtkDwViewport. */ struct _FindtextState { FindtextKey *key; gchar *keystr; gboolean case_sens; DwWidget *widget; /* The top of the widget tree, in which the search is done. From this, the iterator will be constructed. */ DwWordIterator *iterator; /* The position from where the next search will start. */ DwWordIterator *hl_iterator; /* The position from where key->len words are highlighted. */ gint first_hl_start, last_hl_end; }; struct _FindtextKey { gint len; gchar **words; FindtextPatternType *types; gint *nexttab; }; FindtextState* a_Findtext_state_new (void); void a_Findtext_state_destroy (FindtextState *state); void a_Findtext_state_set_widget (FindtextState *state, DwWidget *widget); FindtextResult a_Findtext_search (FindtextState *state, gchar *str, gboolean case_sens); void a_Findtext_reset_search (FindtextState *state); #endif /* __FINDTEXT_H__ */