Modificato l'editor in modo che richieda il profilo alla fine di ogni

sessione di editing: aggiunta la voce a menu che automaticamente chiama
la ask_profile(). Percio' e' stata spostata tutta la regione di codice
che richiedeva il profilo. In piu' tale maschera di richiesta puo'
essere impostata dall'applicazione (membro _m), poiche' nell'editor
dei profili EC e' diversa. Modificata anche la edit(), in modo che
funzioni in simbiosi col resto del programma.


git-svn-id: svn://10.65.10.50/trunk@2037 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1995-10-27 09:12:33 +00:00
parent 387fe9f9dd
commit 068c94d649
2 changed files with 76 additions and 66 deletions

View File

@ -2,7 +2,7 @@
#include "ba2100.h"
TForm_editor::TForm_editor() : _form(NULL), _extra(FALSE)
TForm_editor::TForm_editor() : _form(NULL), _extra(FALSE), _m(NULL)
{}
TForm_editor::~TForm_editor()
@ -30,81 +30,31 @@ bool TForm_editor::create()
code = atol(argv(a));
}
bool go = FALSE;
enable_menu_item(M_FILE_PRINT);
if ((form && code) || (form && code == 0 && _extra))
{
_form = new TForm(form, (code!=0) ? format("%05ld",code) : "", _extra ? 2 : 1);
enable_menu_item(M_FILE_PRINT);
if (!_extra) dispatch_e_menu(MENU_ITEM(31));
if (!_extra) dispatch_e_menu(MENU_ITEM(13));
}
else
{
TMask m("ba2100b");
m.set_handler(F_CODE, cod_handler);
if (form)
{
m.set(F_BASE, form);
m.disable(F_BASE);
}
if (code) m.set(F_CODE, code);
// choose form from mask
KEY k;
while ((k = m.run()) != K_QUIT)
{
TString16 fform = m.get(F_BASE);
TString80 fdesc = m.get(F_DESC);
long fcode = m.get_long(F_CODE);
if (k == K_ENTER)
{
_form = new TForm(fform, (fcode!=0) ? format("%05ld",fcode) : "", _extra ? 2 :1, fdesc);
form = fform;
go = TRUE;
break;
}
else if (k == K_DEL)
{
if (yesno_box("Confermare la cancellazione del profilo %05ld", fcode))
{
TLocalisamfile frm(LF_FORM);
frm.zero();
frm.put("TIPOPROF", fform);
frm.put("CODPROF", format("%05ld",fcode));
if (frm.read() == NOERR)
frm.remove();
TLocalisamfile rfr(LF_RFORM);
rfr.zero();
rfr.put("TIPOPROF", fform);
rfr.put("CODPROF", format("%05ld",fcode));
if (rfr.read() == NOERR)
{
for ( ; atol(rfr.get("CODPROF")) == fcode && rfr.get("TIPOPROF") == fform; rfr.next())
rfr.remove();
}
m.set(F_CODE,"");
m.set(F_BASE,"");
m.set(F_DESC,"");
}
}
}
}
dispatch_e_menu(MENU_ITEM(13));
if (go)
_m = new TMask("ba2100b");
if (form)
{
enable_menu_item(M_FILE_PRINT);
if (!_extra) dispatch_e_menu(MENU_ITEM(31));
_m->set(F_BASE, form);
_m->disable(F_BASE);
}
return form != NULL;
if (code) _m->set(F_CODE, code);
return TRUE;
}
bool TForm_editor::destroy()
{
if (_form) delete _form;
if (_m) delete _m;
return TApplication::destroy();
}
@ -113,6 +63,7 @@ bool TForm_editor::menu(MENU_TAG tag)
{
char sec = 'B';
pagetype pt = odd_page;
bool quit = FALSE;
switch(tag)
{
@ -120,6 +71,9 @@ bool TForm_editor::menu(MENU_TAG tag)
sec = 'R'; pt = odd_page; break;
case MENU_ITEM(12):
sec = 'D'; pt = odd_page; break;
case MENU_ITEM(13):
quit = ask_profile();
sec = 'B'; pt = odd_page; break;
case MENU_ITEM(21):
sec = 'H'; pt = odd_page; break;
case MENU_ITEM(22):
@ -156,8 +110,8 @@ bool TForm_editor::menu(MENU_TAG tag)
break;
}
edit(sec, pt);
return _extra;
if (!quit) edit(sec, pt);
return TRUE;
}
void TForm_editor::print()
@ -337,7 +291,8 @@ bool TForm_editor::edit(char s, pagetype t)
else
_form->write_profile();
}
if (!_extra) dispatch_e_menu(MENU_ITEM(13));
return dirty;
}
@ -397,6 +352,59 @@ bool TForm_editor::form_config() const
return ok;
}
bool TForm_editor::ask_profile()
{
_m->set_handler(F_CODE, cod_handler);
// choose form from mask
KEY k;
while ((k = _m->run()) != K_QUIT)
{
TString16 fform = _m->get(F_BASE);
TString80 fdesc = _m->get(F_DESC);
long fcode = _m->get_long(F_CODE);
if (k == K_ENTER)
{
if (_form != NULL) delete _form;
_form = new TForm(fform, (fcode!=0) ? format("%05ld",fcode) : "", _extra ? 2 :1, fdesc);
break;
}
else if (k == K_DEL)
{
if (yesno_box("Confermare la cancellazione del profilo %05ld", fcode))
{
TLocalisamfile frm(LF_FORM);
frm.zero();
frm.put("TIPOPROF", fform);
if (fcode != 0 )
frm.put("CODPROF", format("%05ld",fcode));
if (frm.read() == NOERR)
frm.remove();
TLocalisamfile rfr(LF_RFORM);
rfr.zero();
rfr.put("TIPOPROF", fform);
rfr.put("CODPROF", format("%05ld",fcode));
if (rfr.read() == NOERR)
{
for ( ; atol(rfr.get("CODPROF")) == fcode && rfr.get("TIPOPROF") == fform; rfr.next())
rfr.remove();
}
_m->set(F_CODE,"");
_m->set(F_BASE,"");
_m->set(F_DESC,"");
}
}
}
if (k == K_QUIT)
{
dispatch_e_menu(M_FILE_QUIT);
return TRUE;
}
return FALSE;
}
int ba2100(int argc, char* argv[])
{

View File

@ -9,7 +9,8 @@
class TForm_editor : public TApplication
{
TForm* _form;
TForm* _form;
TMask* _m;
bool _extra;
protected:
@ -23,6 +24,7 @@ protected:
bool& extra() { return _extra;}
void set_form(TForm * f) { _form = f; }
bool ask_profile();
bool edit_relation();
bool edit(char s, pagetype p);
bool form_config() const;