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_STRING 101
|
||||||
#define F_DIRECT 102
|
#define F_DIRECT 102
|
||||||
|
#define F_REGEXP 104
|
||||||
#define F_CASE 103
|
#define F_CASE 103
|
@ -17,7 +17,12 @@ END
|
|||||||
|
|
||||||
BOOLEAN F_CASE
|
BOOLEAN F_CASE
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 36 2 "Maiuscolo/Minuscolo"
|
PROMPT 2 2 "Maiuscolo/Minuscolo"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_REGEXP
|
||||||
|
BEGIN
|
||||||
|
PROMPT 36 2 "Espress. regolare"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 10 2
|
BUTTON DLG_OK 10 2
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <text.h>
|
#include <text.h>
|
||||||
#include <xvtility.h>
|
#include <xvtility.h>
|
||||||
|
#include <regexp.h>
|
||||||
|
|
||||||
static char TEXT_TMP[513];
|
static char TEXT_TMP[513];
|
||||||
|
|
||||||
@ -425,7 +426,8 @@ long TTextfile::search(
|
|||||||
//
|
//
|
||||||
// @flag TRUE | Ricerca dalla posizione indicata all'inizio della riga (default)
|
// @flag TRUE | Ricerca dalla posizione indicata all'inizio della riga (default)
|
||||||
// @flag FALSE | Ricerca dalla posizione indicata alla fine della riga
|
// @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
|
// @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--)
|
for (long i = from; down ? (i < lines()) : (i >= 0); down ? i++ : i--)
|
||||||
{
|
{
|
||||||
lin = line(i);
|
lin = line(i);
|
||||||
if (!casesens) lin.lower();
|
if (regexp)
|
||||||
if ((ret = lin.find(text)) != -1)
|
{
|
||||||
return i;
|
if (match(txt, lin))
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!casesens) lin.lower();
|
||||||
|
if ((ret = lin.find(text)) != -1)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return -1l;
|
return -1l;
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,8 @@ public:
|
|||||||
void destroy();
|
void destroy();
|
||||||
|
|
||||||
// @cmember Cerca una stringa di testo all'interno di una riga
|
// @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
|
// @cmember Sostituisce un testo all'interno di una riga
|
||||||
int replace(long line, const char* txt, int pos = 0, int len = -1);
|
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 TRUE | Ricerca dalla posizione indicata all'inizio della riga (default)
|
||||||
// @flag FALSE | Ricerca dalla posizione indicata alla fine della riga
|
// @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
|
// @doc INTERNAL
|
||||||
@ -2412,9 +2413,12 @@ void TViswin::find()
|
|||||||
_txt_to_find = m.get(F_STRING);
|
_txt_to_find = m.get(F_STRING);
|
||||||
_down_dir = m.get(F_DIRECT) == "D";
|
_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;
|
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)
|
if (l == -1l)
|
||||||
{
|
{
|
||||||
_last_found.y = -1l;
|
_last_found.y = -1l;
|
||||||
|
@ -316,7 +316,8 @@ public:
|
|||||||
void add_line(const char* l);
|
void add_line(const char* l);
|
||||||
|
|
||||||
// @cmember Funzione di ricerca non interattiva
|
// @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
|
// @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);
|
int replace(long line, const char* txt, int pos = 0, int len = -1);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user