From 068c94d64982b14c5ecd1522e66d2c71f4f80164 Mon Sep 17 00:00:00 2001 From: angelo Date: Fri, 27 Oct 1995 09:12:33 +0000 Subject: [PATCH] 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 --- ba/ba2100.cpp | 138 ++++++++++++++++++++++++++------------------------ ba/baformed.h | 4 +- 2 files changed, 76 insertions(+), 66 deletions(-) diff --git a/ba/ba2100.cpp b/ba/ba2100.cpp index 38f99e17d..9edd961e1 100755 --- a/ba/ba2100.cpp +++ b/ba/ba2100.cpp @@ -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[]) { diff --git a/ba/baformed.h b/ba/baformed.h index c307f8250..ba823b688 100755 --- a/ba/baformed.h +++ b/ba/baformed.h @@ -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;