mask.cpp Migliorata scelta sheet cui mandare Alt+
strings.cpp Migliorata generazione nomi di file temporanei tabutil.cpp Aggiuornato uso della list_files utility.cpp Migliorata la list_files aggiungendo un parametro utility.h Cambiato prototipo della list_files git-svn-id: svn://10.65.10.50/trunk@5342 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
7c5f62cb56
commit
2b38285053
@ -767,7 +767,7 @@ bool TMask::on_key(
|
|||||||
case K_CTRL+'+':
|
case K_CTRL+'+':
|
||||||
if (is_running())
|
if (is_running())
|
||||||
{
|
{
|
||||||
for (int fire = _focus-1; fire <= _focus+1; fire++)
|
for (int fire = _focus+1; fire >= _focus-1; fire--)
|
||||||
{
|
{
|
||||||
if (fire >= 0 && fire < fields())
|
if (fire >= 0 && fire < fields())
|
||||||
{
|
{
|
||||||
|
@ -1144,20 +1144,36 @@ const TFilename& TFilename::temp(
|
|||||||
{
|
{
|
||||||
if (extension && *extension)
|
if (extension && *extension)
|
||||||
{
|
{
|
||||||
static unsigned long numero = 0;
|
TFilename mask(prefix);
|
||||||
|
if (mask.empty())
|
||||||
|
mask.tempdir();
|
||||||
|
|
||||||
TFilename prefisso(prefix);
|
mask.add("*");
|
||||||
if (prefisso.empty())
|
mask.ext(extension);
|
||||||
prefisso.tempdir();
|
const int preflen = strlen(mask.path());
|
||||||
if (is_not_slash(prefisso.right(1)[0]))
|
|
||||||
prefisso << SLASH;
|
TString_array list;
|
||||||
|
const int count = list_files(mask, list);
|
||||||
// Childish: You could use findfirst!
|
|
||||||
do
|
if (count > 0)
|
||||||
{
|
{
|
||||||
format("%s%ld", prefisso.get_buffer(), ++numero);
|
for (int i = 0; i < count; i++)
|
||||||
ext(extension);
|
{
|
||||||
} while (fexist(_str));
|
const char* name = (const char*)list.row(i) + preflen;
|
||||||
|
const long numero = atol(name) + 1;
|
||||||
|
mask.cut(preflen);
|
||||||
|
mask << numero;
|
||||||
|
mask.ext(extension);
|
||||||
|
if (list.find(mask) < 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const int star = mask.find('*');
|
||||||
|
mask[star] = '1';
|
||||||
|
}
|
||||||
|
set(mask);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1192,7 +1208,7 @@ const TFilename& TFilename::temp(
|
|||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
if (fexist(_str))
|
if (fexist(_str))
|
||||||
fatal_box("Il file '%s' esiste gia'", _str);
|
yesnofatal_box("Il file temporaneo '%s' esiste gia'", _str);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -207,11 +207,11 @@ void TTable::load_module_description()
|
|||||||
n << _tabname;
|
n << _tabname;
|
||||||
n.ext("msk");
|
n.ext("msk");
|
||||||
n.lower();
|
n.lower();
|
||||||
TToken_string f;
|
|
||||||
f.add(n);
|
TString_array f;
|
||||||
if (list_files(f) == 1)
|
if (list_files(n, f) == 1)
|
||||||
{
|
{
|
||||||
n = f.get(0);
|
n = f.row(0);
|
||||||
if (!fexist(n))
|
if (!fexist(n))
|
||||||
n.overwrite("ba",0);
|
n.overwrite("ba",0);
|
||||||
if (fexist(n))
|
if (fexist(n))
|
||||||
|
@ -10,6 +10,9 @@
|
|||||||
#include <xvt.h>
|
#include <xvt.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <xvtility.h>
|
||||||
|
|
||||||
|
|
||||||
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
|
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
|
||||||
#include <direct.h>
|
#include <direct.h>
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
@ -146,40 +149,44 @@ bool make_dir(
|
|||||||
// @rdesc Ritorna il numero di file che soddisfano la condizione passata (numero di elementi
|
// @rdesc Ritorna il numero di file che soddisfano la condizione passata (numero di elementi
|
||||||
// della token string)
|
// della token string)
|
||||||
int list_files(
|
int list_files(
|
||||||
TToken_string& filelist) // @parm Stringa contenente la condizione di estrazione
|
const char* filelist, // @parm Stringa contenente la maschera di estrazione
|
||||||
// della lista dei file
|
TString_array& result) // @parm Array da riempire con la lista dei file
|
||||||
|
|
||||||
// @comm Per comodita' la lista desiderata vine anch'essa messa in <p filelist> in quanto e'
|
// @comm Per comodita' la lista desiderata vine anch'essa messa in <p filelist> in quanto e'
|
||||||
// gia' costruita
|
// gia' costruita
|
||||||
{
|
{
|
||||||
TFilename dir(filelist.get(0));
|
TWait_cursor hourglass;
|
||||||
|
TFilename dir(filelist);
|
||||||
for (int i = dir.len()-1; i >= 0; i--)
|
for (int i = dir.len()-1; i >= 0; i--)
|
||||||
if (dir[i] == '/' || dir[i] == '\\') break;
|
if (dir[i] == '/' || dir[i] == '\\') break;
|
||||||
|
|
||||||
const TString16 mask(dir.mid(i+1));
|
TFilename mask(dir.mid(i+1));
|
||||||
dir.cut(i > 0 ? i : 0);
|
dir.cut(i > 0 ? i : 0);
|
||||||
|
|
||||||
xvt_fsys_save_dir();
|
xvt_fsys_save_dir();
|
||||||
DIRECTORY directory; xvt_fsys_convert_str_to_dir((char*)(const char*)dir, &directory);
|
|
||||||
BOOLEAN ok = xvt_fsys_set_dir(&directory);
|
|
||||||
if (!ok) fatal_box ("Impossibile entrare in %s", (const char*)dir);
|
|
||||||
|
|
||||||
SLIST files = xvt_fsys_list_files("", (char*)(const char*)mask, FALSE);
|
|
||||||
|
|
||||||
|
if (dir.not_empty())
|
||||||
|
{
|
||||||
|
DIRECTORY directory; xvt_fsys_convert_str_to_dir(dir.get_buffer(), &directory);
|
||||||
|
BOOLEAN ok = xvt_fsys_set_dir(&directory);
|
||||||
|
if (!ok)
|
||||||
|
fatal_box ("Impossibile entrare in %s", (const char*)dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
SLIST files = xvt_fsys_list_files("", mask.get_buffer(), FALSE);
|
||||||
const int count = xvt_slist_count(files);
|
const int count = xvt_slist_count(files);
|
||||||
filelist.spaces(count*12);
|
|
||||||
filelist.cut(0);
|
|
||||||
|
|
||||||
for (SLIST_ELT e = xvt_slist_get_first(files); e; e = xvt_slist_get_next(files, e))
|
for (SLIST_ELT e = xvt_slist_get_first(files); e; e = xvt_slist_get_next(files, e))
|
||||||
{
|
{
|
||||||
char* f = xvt_slist_get(files, e, NULL);
|
char* f = xvt_slist_get(files, e, NULL);
|
||||||
if (dir.not_empty())
|
if (dir.not_empty())
|
||||||
{
|
{
|
||||||
filelist.add(dir);
|
mask = dir;
|
||||||
filelist << '/' << f;
|
mask.add(f);
|
||||||
|
result.add(mask);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
filelist.add(f);
|
result.add(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
xvt_slist_destroy(files);
|
xvt_slist_destroy(files);
|
||||||
|
@ -16,7 +16,7 @@ enum os_type { os_Windows, os_Win32s, os_Windows95, os_WindowsNT };
|
|||||||
os_type get_os_type();
|
os_type get_os_type();
|
||||||
|
|
||||||
bool make_dir(const char* file);
|
bool make_dir(const char* file);
|
||||||
int list_files(TToken_string& names);
|
int list_files(const char* mask, TString_array& result);
|
||||||
const char * encode(const char* data);
|
const char * encode(const char* data);
|
||||||
const char * decode(const char* data);
|
const char * decode(const char* data);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user