Aggiunta regexp alla ricerca nelle viswin-
Primo commit in diretta da Windows git-svn-id: svn://10.65.10.50/trunk@2979 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
84b7a30800
commit
e96e638f19
@ -1,3 +1,4 @@
|
||||
#define F_STRING 101
|
||||
#define F_DIRECT 102
|
||||
#define F_REGEXP 104
|
||||
#define F_CASE 103
|
@ -17,7 +17,12 @@ END
|
||||
|
||||
BOOLEAN F_CASE
|
||||
BEGIN
|
||||
PROMPT 36 2 "Maiuscolo/Minuscolo"
|
||||
PROMPT 2 2 "Maiuscolo/Minuscolo"
|
||||
END
|
||||
|
||||
BOOLEAN F_REGEXP
|
||||
BEGIN
|
||||
PROMPT 36 2 "Espress. regolare"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
#include <text.h>
|
||||
#include <xvtility.h>
|
||||
#include <regexp.h>
|
||||
|
||||
static char TEXT_TMP[513];
|
||||
|
||||
@ -425,7 +426,8 @@ long TTextfile::search(
|
||||
//
|
||||
// @flag TRUE | Ricerca dalla posizione indicata all'inizio della riga (default)
|
||||
// @flag FALSE | Ricerca dalla posizione indicata alla fine della riga
|
||||
bool casesens) // @parm Indica se ricerca il testo con criterio case sensitive (default FALSE)
|
||||
bool casesens, // @parm Indica se ricerca il testo con criterio case sensitive (default FALSE)
|
||||
bool regexp) // @parm indica se considerare la stringa un'espressione regolare (def. FALSE)
|
||||
|
||||
// @comm Cerca in una riga per volta rispettando i formati
|
||||
{
|
||||
@ -436,9 +438,17 @@ long TTextfile::search(
|
||||
for (long i = from; down ? (i < lines()) : (i >= 0); down ? i++ : i--)
|
||||
{
|
||||
lin = line(i);
|
||||
if (!casesens) lin.lower();
|
||||
if ((ret = lin.find(text)) != -1)
|
||||
return i;
|
||||
if (regexp)
|
||||
{
|
||||
if (match(txt, lin))
|
||||
return i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!casesens) lin.lower();
|
||||
if ((ret = lin.find(text)) != -1)
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1l;
|
||||
}
|
||||
|
@ -180,7 +180,8 @@ public:
|
||||
void destroy();
|
||||
|
||||
// @cmember Cerca una stringa di testo all'interno di una riga
|
||||
long search (const char* txt, int& pos, long from = 0, bool down = TRUE, bool casesens = FALSE);
|
||||
long search (const char* txt, int& pos, long from = 0, bool down = TRUE,
|
||||
bool casesens = FALSE, bool regexp = FALSE);
|
||||
// @cmember Sostituisce un testo all'interno di una riga
|
||||
int replace(long line, const char* txt, int pos = 0, int len = -1);
|
||||
|
||||
|
@ -2371,9 +2371,10 @@ long TViswin::search(
|
||||
//
|
||||
// @flag TRUE | Ricerca dalla posizione indicata all'inizio della riga (default)
|
||||
// @flag FALSE | Ricerca dalla posizione indicata alla fine della riga
|
||||
bool cs) // @parm Indica se ricerca il testo con criterio case sensitive (default FALSE)
|
||||
bool cs, // @parm Indica se ricerca il testo con criterio case sensitive (default FALSE)
|
||||
bool regx) // @parm indica se considerare espressioni regolari (def FALSE)
|
||||
{
|
||||
return _txt.search(txt,pos,from,down, cs);
|
||||
return _txt.search(txt,pos,from,down, cs, regx);
|
||||
}
|
||||
|
||||
// @doc INTERNAL
|
||||
@ -2411,10 +2412,13 @@ void TViswin::find()
|
||||
{
|
||||
_txt_to_find = m.get(F_STRING);
|
||||
_down_dir = m.get(F_DIRECT) == "D";
|
||||
_case_sensitive = m.get_bool(F_CASE);
|
||||
_case_sensitive = m.get_bool(F_CASE);
|
||||
_regexp = m.get_bool(F_REGEXP);
|
||||
|
||||
int x;
|
||||
|
||||
long l = search(_txt_to_find, x, _point.y, _down_dir, _case_sensitive);
|
||||
long l = search(_txt_to_find, x, _point.y, _down_dir, _case_sensitive,
|
||||
_regexp);
|
||||
if (l == -1l)
|
||||
{
|
||||
_last_found.y = -1l;
|
||||
|
@ -316,7 +316,8 @@ public:
|
||||
void add_line(const char* l);
|
||||
|
||||
// @cmember Funzione di ricerca non interattiva
|
||||
long search (const char* txt, int& pos, long from = 0, bool down = TRUE, bool casesens = FALSE);
|
||||
long search (const char* txt, int& pos, long from = 0, bool down = TRUE,
|
||||
bool casesens = FALSE, bool regx = FALSE);
|
||||
// @cmember Funzione di sostituzione di un testo all'interno di una riga non interattiva
|
||||
int replace(long line, const char* txt, int pos = 0, int len = -1);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user