Patch level : 10.0

Files correlati     : ba0.exe
Ricompilazione Demo : [ ]
Commento            :
Migliorato tempo di attesa tra il rilascio del dongle locale ed il lancio di una applicazione da menu


git-svn-id: svn://10.65.10.50/branches/R_10_00@21621 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-02-10 16:20:04 +00:00
parent 550dfdeed4
commit aeccb0f86d
6 changed files with 38 additions and 42 deletions

View File

@ -88,15 +88,15 @@ long TExternal_app::run(
if (!async && utente)
{
if (dongle().local()) // Rilascio la chiave il prima possibile
dongle().logout();
close_all = _path.starts_with("ba1 -0") && prefix_valid();
if (close_all) //se lancia la gestione archivi forza la chiusura dei files e pure dei tracciati!
prefix().set("");
else
safely_close_closeable_isamfiles();
if (dongle().local())
dongle().logout();
// Programma normale (non menu) che chiama "collega"
if (iconize && is_outlook_menu_chain())
{

View File

@ -289,7 +289,7 @@ HIDDEN int find_tabapp(TConfig& cfg, void* jolly)
if (info._relapp.not_empty())
return 2;
}
if (cfg.exist(info._var3))
if (info._var3.full() && cfg.exist(info._var3))
{
info._relapp = cfg.get(info._var3);
if (info._relapp.not_empty())
@ -299,14 +299,14 @@ HIDDEN int find_tabapp(TConfig& cfg, void* jolly)
return 0;
}
bool get_tabapp(const char * tabname, TString& app)
bool get_tabapp(const char* tabname, TString& app)
{
TConfig ini(CONFIG_GENERAL);
TConfig ini(CONFIG_GENERAL, "Main");
TCallbackTableinfo fi;
TTable t(tabname);
fi._var1.format("Edit_%s", t.name());
fi._var2.format("Edit_%d", t.num());
fi._var2.format("Edit_%d", t.num() == LF_TABCOM ? LF_TAB : LF_TABCOM);
fi._var3.format("Edit_%d", t.num() == LF_TABCOM ? LF_TAB : LF_TABCOM);
fi._module = t.module();
ini.for_each_paragraph(find_tabapp, &fi);
@ -317,11 +317,11 @@ bool get_tabapp(const char * tabname, TString& app)
if (app.empty())
{
app = "ba3 -0";
if (fi._module.compare("ba", 2, TRUE) != 0)
if (!fi._module.starts_with("ba")) // Compatibility mode :-(
{
TConfig c(CONFIG_STUDIO, fi._module);
if (c.exist("TabPrg"))
app = c.get("TabPrg");
const TString& tp = ini_get_string(CONFIG_STUDIO, fi._module, "TabPrg");
if (tp.full())
app = tp;
}
}
app << ' ' << tabname;
@ -3963,9 +3963,9 @@ bool TRectype::edit(int logicnum, const char* alternate_key_fields, const char*
r.settab(_tab);
TString app = hint;
if (app.empty())
if (app.blank())
r.get_relapp(app);
if (app.not_empty())
if (app.full())
{
const RecDes& recd = r.rec_des(); // Descrizione del record della testata
const KeyDes& kd = recd.Ky[0]; // Elenco dei campi della chiave 1
@ -3981,11 +3981,11 @@ bool TRectype::edit(int logicnum, const char* alternate_key_fields, const char*
if (key_fields.empty_items())
key_fields = key_labels;
TFilename ininame; ininame.temp();
TFilename ininame; ininame.temp("lnk", "ini");
{
TConfig ini(ininame, "Transaction");
ini.set("Action", "LINK");
TString16 p; p << logicnum;
TString8 p; p << logicnum;
ini.set_paragraph(p);
FOR_EACH_TOKEN(key_labels, tok)

View File

@ -168,7 +168,7 @@ public:
// @cmember Ritorna l'identificatore della classe maschera
virtual word class_id() const;
// @cmember Ritorna TRUE se la maschera deriva dalla classe <p c>
// @cmember Ritorna true se la maschera deriva dalla classe <p c>
virtual bool is_kind_of(word c) const;
// @cmember Ritorna il numero della pagina corrente
@ -240,13 +240,13 @@ public:
void set_focus_field(short id);
virtual void notify_focus_field(short id);
// @cmember Controlla i campi di una maschera (TRUE se tutti validi)
// @cmember Controlla i campi di una maschera (true se tutti validi)
bool check_fields();
// @cmember Esegue il check e i messaggi sul campo <p fld_id> della maschera
virtual void check_field( short fld_id );
// @cmember Forza la chiusura della maschera
virtual bool stop_run(KEY key);
// @cmember Controlla se la maschera puo' essere chiusa (TRUE se puo' esserlo)
// @cmember Controlla se la maschera puo' essere chiusa (true se puo' esserlo)
virtual bool can_be_closed() const;
// @cmember Permette di aprire una maschera
@ -254,7 +254,7 @@ public:
// @cmember Permette di chiudere una maschera
virtual void close();
// @cmember Permette di attivare/disattivare tutta la pagina
virtual void activate(bool on = TRUE);
virtual void activate(bool on = true);
virtual void set_focus();
// @cmember Converte un identificatore di campo nella sua posizione
@ -333,7 +333,7 @@ public:
virtual void on_firm_change();
// @cmember Abilita/disabilita un campo
virtual void enable(short fld_id, bool on = TRUE);
virtual void enable(short fld_id, bool on = true);
// @cmember Disabilita un campo (chiama <mf TMask::enable>)
void disable(short fld_id)
{ enable(fld_id, false); }
@ -347,24 +347,24 @@ public:
// @cmember Disabilita una pagina e tutte le successive (chiama <mf TMask::enable_page>)
void disable_page(byte p)
{ enable_page(p, false); }
// @cmember Controlla se una pagina e' disabilitata (TRUE se disabilitata)
// @cmember Controlla se una pagina e' disabilitata (true se disabilitata)
bool page_enabled(byte p) const;
// @cmember Ritorna il numero di chiavi utilizzate nei campi della maschera
word num_keys() const;
// @cmember Abilita/disabilita i campi di una chiave sulla maschera
void enable_key(word key, bool on = TRUE);
void enable_key(word key, bool on = true);
// @cmember Disabilita i campi di una chiave sulla maschera (chiama <mf TMask::enable_key>)
void disable_key(word key)
{ enable_key(key, false); }
// @cmember Ritorna il l'identificatore di un campo della chiave <p key>
TEditable_field* get_key_field(word key, bool first) const;
// @cmember Controlla se la chiave <p key> ha un valore significativo
// (TRUE se il valore e' valido)
// (true se il valore e' valido)
bool key_valid(word key) const;
// @cmember Permette di mostrare/nascondere un campo (chiama <mf TMask_field::show>)
virtual void show(short fld_id = -1, bool on = TRUE);
virtual void show(short fld_id = -1, bool on = true);
// @cmember Permette di nascondere un campo (chiama <mf TMask::show>)
void hide(short fld_id = 0)
{ show(fld_id, false); }
@ -402,7 +402,7 @@ public:
// @cmember Salva il profilo <p num>
int save_profile(int num = 0, const char* desc = NULL) const;
// @cmember Carica il profilo <p num>
int load_profile(int num = 0, bool reset = TRUE);
int load_profile(int num = 0, bool reset = true);
// @cmember Elimina il profilo <p num>
bool kill_profile(int num);
@ -413,27 +413,26 @@ public:
short dirty() const;
// @cmember Setta lo sheet di cui la maschera gestisce le righe
void set_sheet(TSheet_field* s)
{ _sheet = s; }
void set_sheet(TSheet_field* s) { _sheet = s; }
// @cmember Ritorna lo sheet che gestisce la maschera
TSheet_field* get_sheet() const
{ return _sheet; }
// @cmember Ritorna se la maschera e' contenuta in uno sheet (TRUE se contenuta)
// @cmember Ritorna se la maschera e' contenuta in uno sheet (true se contenuta)
bool is_sheetmask() const
{ return _sheet != NULL; }
// @cmember Ritorna TRUE se la maschera non ha modalita' di utilizzo (vedi <t TMaskmode>)
// @cmember Ritorna true se la maschera non ha modalita' di utilizzo (vedi <t TMaskmode>)
bool no_mode() const
{ return _mode == NO_MODE; }
// @cmember Ritorna TRUE se la maschera e' in modalita' di richiesta (vedi <t TMaskmode>)
// @cmember Ritorna true se la maschera e' in modalita' di richiesta (vedi <t TMaskmode>)
bool query_mode() const
{ return _mode == MODE_QUERY || _mode == MODE_QUERYINS; }
// @cmember Ritorna TRUE se la maschera e' in modalita' di modifica (vedi <t TMaskmode>)
// @cmember Ritorna true se la maschera e' in modalita' di modifica (vedi <t TMaskmode>)
bool edit_mode() const
{ return _mode == MODE_MOD; }
// @cmember Ritorna TRUE se la maschera e' in modalita' di inserimento (vedi <t TMaskmode>)
// @cmember Ritorna true se la maschera e' in modalita' di inserimento (vedi <t TMaskmode>)
bool insert_mode() const
{ return _mode == MODE_QUERYINS || _mode == MODE_INS; }

View File

@ -1394,17 +1394,17 @@ const TFilename& TFilename::temp(
mask.ext(extension);
const int star = mask.find('*');
CHECK(star>=0, "Invalid temp file mask");
TString_array list;
const int count = list_files(mask, list);
if (count > 0)
{
for (int i = 0; i < count; i++)
FOR_EACH_ARRAY_ROW(list, i, row)
{
const char* name = (const char*)list.row(i) + star;
const char* name = row->mid(star);
const long numero = atol(name) + 1;
mask.cut(star);
mask = row->left(star);
mask << numero;
mask.ext(extension);
if (list.find(mask) < 0)

View File

@ -144,16 +144,13 @@ void TTable::load_module_description()
// cerca se esiste il file ??<TAB_NAME>.MSK tramite la funzione list_files(),
// ne estrae il module dai primi 2 caratteri e la descrizione dalla intestazione
// della prima pagina.
_des_mod_loaded = TRUE;
_des_mod_loaded = true;
TFilename n;
n << "recdesc/d" << _tabname;
n.ext("des");
n.lower();
if (n.exist())
{
TConfig des(n, "TabDescr");
_module = des.get("Module");
}
_module = ini_get_string(n, "TabDescr", "Module");
n = "??tb";
n << _tabname;
n.ext("msk");

View File

@ -665,7 +665,7 @@ HIDDEN bool _strcalc_val(TMask_field& f, KEY k)
HIDDEN bool _onereq_val(TMask_field& f, KEY k)
{
if (k != K_ENTER|| f.mask().mode() == MODE_QUERY)
if (k != K_ENTER || f.mask().mode() == MODE_QUERY)
return true;
const int nparms = get_val_param_count();