From a049f284d9144a28ec5903b5e67940698d481cbf Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 8 May 1996 11:02:26 +0000 Subject: [PATCH] Adattamento ai nuovi sheet git-svn-id: svn://10.65.10.50/trunk@2781 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/ba0.cpp | 57 +++++++++------------------- ba/ba1100.cpp | 61 +++++++++++++++++++++--------- ba/ba1100.h | 24 ++++++------ ba/ba1101.cpp | 63 ++++++++++--------------------- ba/ba1102.cpp | 100 +++++++++++--------------------------------------- ba/ba1300.cpp | 11 +++--- ba/ba1300.h | 8 ++-- ba/ba1301.cpp | 34 +++++++---------- 8 files changed, 137 insertions(+), 221 deletions(-) diff --git a/ba/ba0.cpp b/ba/ba0.cpp index 8288113d7..81e29dfdf 100755 --- a/ba/ba0.cpp +++ b/ba/ba0.cpp @@ -10,7 +10,7 @@ #include #include #include -#include + #include #include "ba0.h" @@ -24,8 +24,8 @@ class TPicture_mask : public TMask { TImage& _image; -protected: - virtual void handler(WINDOW win, EVENT* ep); +protected: // TMask + virtual void update(); public: TPicture_mask(const char* name, int dx, int dy, TImage& image); @@ -40,28 +40,10 @@ TPicture_mask::TPicture_mask(const char* name, int dx, int dy, TImage& image) _image.set_palette(win()); } - - -void TPicture_mask::handler(WINDOW win, EVENT* ep) +void TPicture_mask::update() { - TMask::handler(win, ep); - - if (ep->type == E_UPDATE) - { -#if XVT_OS == XVT_OS_WIN - if (_image.ok()) - { - _image.draw(win); - } - else -#endif - { - TTemp_window w(win); - const int max = 16; - for (int i = 0; i < max; i++) - w.rect(i*2, i, max-i*2, max-i); - } - } + if (_image.ok()) + _image.draw(win()); } /////////////////////////////////////////////////////////// @@ -83,24 +65,26 @@ class TMenu_application : public TApplication static int _last_button; static bool _find_button; +protected: // TApplication + virtual bool create(); + virtual bool destroy(); + virtual bool menu(MENU_TAG m); + virtual bool build_firm_data(long cod, bool flagcom = FALSE); + protected: void test_temp(); void load_menu(); int do_level(); int find_menu(const char* s) const; bool check_user(); - virtual bool create(); - virtual bool destroy(); - virtual bool menu(MENU_TAG m); - virtual bool build_firm_data(long cod, bool flagcom = FALSE); - static bool menu_item_handler(TMask_field&f, KEY k); static bool menu_find_handler(TMask_field&f, KEY k); bool module_enabled(const char * program) const; bool module_enabled(int module) const { return has_module(module);} public: - TMenu_application(const char* name) : _name(name) /*, _ditta_asked(FALSE) */ {} + TMenu_application(const char* name) : _name(name) {} + virtual ~TMenu_application() {} }; int TMenu_application::_last_button = 0; @@ -345,6 +329,7 @@ bool TMenu_application::menu_find_handler(TMask_field&f, KEY k) if (_last_button >= 0) { _find_button = TRUE; + f.set_focusdirty(FALSE); f.mask().stop_run(K_AUTO_ENTER); } else @@ -394,12 +379,6 @@ int TMenu_application::do_level() int y = 1; -#if XVT_OS == XVT_OS_WIN - TString16 t(format("#%d", BMP_STOPREC)); -#else - TString16 t; -#endif - for (int i = first+1; i < last; i++, y++) { TToken_string& row = (TToken_string&)_menu[i]; @@ -407,7 +386,7 @@ int TMenu_application::do_level() if (isdigit(*row.get())) item << "..."; menu.add_static(-1, 0, item, x+4, y); const short id = 100+y; - menu.add_button(id, 0, t, x, y, 1, 1); + menu.add_button(id, 0, "", x, y, 1, 1, "", BMP_STOPREC); menu.set_handler(id, menu_item_handler); if (!_enabled[i]) menu.disable(id); } @@ -415,8 +394,8 @@ int TMenu_application::do_level() menu.add_string(99, 0, "", -12, -3, 50, "", bwidth+1); menu.set_handler(99, menu_find_handler); - t = first ? "Menu precedente" : "Fine"; - menu.add_button(first ? DLG_CANCEL : DLG_QUIT, 0, t, -22, -1, bwidth, 2); + menu.add_button(first ? DLG_CANCEL : DLG_QUIT, 0, + first ? "Menu precedente" : "Fine", -22, -1, bwidth, 2); if (first) menu.add_button(DLG_QUIT, 0, "Fine", -12, -1, bwidth, 2); diff --git a/ba/ba1100.cpp b/ba/ba1100.cpp index 143db2273..db3ff0b1a 100755 --- a/ba/ba1100.cpp +++ b/ba/ba1100.cpp @@ -803,27 +803,40 @@ void TManutenzione_app::convert_dir() void TManutenzione_app::update() { - bool lock_users = FALSE; + bool ok = TRUE; TIsamfile utenti(LF_USER, FALSE); utenti.open(_excllock); - if (utenti.curr().exist("CONNECTED")) - { - for (int err = utenti.first(); err == NOERR; err = utenti.next()) - { - const TString16 u = utenti.get("USERNAME"); - if (u != "PRASSI" && utenti.get_bool("CONNECTED")) + for (int err = utenti.first(); err == NOERR; err = utenti.next()) + { + const TString16 u = utenti.get("USERNAME"); + if (u == "PRASSI") + { + if (utenti.get("AUTSTR") == "CONVERTING") { - error_box("La conversione non puo' essere effettuata\n" - "se ci sono utenti collegati: %s", (const char*)u); - utenti.close(); - return; + ok = error_box("Impossibile proseguire: esiste gia' conversione in corso"); + break; + } + else + { + utenti.put("AUTSTR", "CONVERTING"); + utenti.rewrite(); + } + } + else + { + if (utenti.get_bool("CONNECTED")) + { + ok = error_box("La conversione non puo' essere effettuata\n" + "mentre l'utente %s e' collegato", (const char*)u); + break; } - } - lock_users = TRUE; - } + } + } utenti.close(); + if (!ok) + return; long firm = get_firm(); TString pref; @@ -836,7 +849,6 @@ void TManutenzione_app::update() if (prefix().filelevel() <= 199502L) { TExternal_app app("bacnv 4 0"); - app.run(); } @@ -866,8 +878,22 @@ void TManutenzione_app::update() if (firm > 0) set_firm(firm); else prefix().set(pref); - if (lock_users) - utenti.close(); + ok = FALSE; + while (!ok) + { + utenti.open(_excllock); + ok = utenti.ok(); + do_events(); + } + + utenti.put("USER", "PRASSI"); + if (utenti.read() == NOERR) + { + utenti.zero("AUTSTR"); + utenti.rewrite(); + } + utenti.close(); + end_wait(); } @@ -881,7 +907,6 @@ bool TManutenzione_app::menu(MENU_TAG m) while (!done) { - disable_menu_item(M_FILE_NEW); KEY key = _browse->run(); diff --git a/ba/ba1100.h b/ba/ba1100.h index 4b5c3533e..a0bdd6309 100755 --- a/ba/ba1100.h +++ b/ba/ba1100.h @@ -27,19 +27,20 @@ class TDir_sheet : public TSheet long _items; protected: - virtual void page_build(long first, byte rows); + virtual long get_items() const { return _items; } + virtual void get_row(long n, TToken_string& r); + virtual bool on_key(KEY k); public: - TDir_sheet(const char* title,byte buttons=0x8,const char* col = "N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Formula@33|Flags@7"); - ~TDir_sheet(); TDir* dir() const { return _dir; } TTrec* rec() const { return _rec; } void set_items(long items) { _items = items; } void add(); void rebuild() { _items = _dir->items();} - long items() const { return (_items);} + TDir_sheet(const char* title,byte buttons=0x8,const char* col = "N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Formula@33|Flags@7"); + ~TDir_sheet(); }; class TRec_sheet : public TObject @@ -58,32 +59,29 @@ protected: static bool key_notify(TSheet_field& s, int r, KEY k); static bool fld_notify(TSheet_field& s, int r, KEY k); void save(); - virtual long items() const { return _rec->fields(); } + + virtual long get_items() const { return _rec->fields(); } public: - TRec_sheet(int logicnum, const char * tab); - ~TRec_sheet(); TDir* dir() const { return _dir; } TTrec* rec() const { return _rec; } const char * descfname() const { return _descfname;} const char * tab() const { return _tab; } void edit(); + TRec_sheet(int logicnum, const char * tab); + virtual ~TRec_sheet(); }; class TEdit_file : public TObject { - - static bool memo_handler(TMask_field& f, KEY k); - protected: - KEY edit_record(TRectype& rec, bool readonly = FALSE); public: - bool browse(int num, const char* name); - TEdit_file() {} + TEdit_file() {} + virtual ~TEdit_file() {} }; #endif diff --git a/ba/ba1101.cpp b/ba/ba1101.cpp index 6e864a86d..c24985c8f 100755 --- a/ba/ba1101.cpp +++ b/ba/ba1101.cpp @@ -2,26 +2,20 @@ #include #include -#include -#include -#include #include #include #include +#include #include #include -#include -#include +#include #include #include "ba1100.h" TMask* TRec_sheet::_mask = NULL; -HIDDEN TToken_string s(256); - void TDir_sheet::add () - { _dir->get(LF_DIR, _lock, _nordir, _sysdirop); const int nitems = (int)_dir->eod() + 1; @@ -35,18 +29,14 @@ void TDir_sheet::add () d.zero(); d.put(nitems, _nordir, _sysdirop); _items = nitems; - - build_page(first() + 1); - update(); } TDir_sheet::TDir_sheet(const char* title, byte buttons, const char* colonne) -:TSheet(-1,-1, 0, 0, title, colonne, buttons) + :TSheet(0, 0, 0, 0, title, colonne, buttons) { _dir = new TDir; _rec = new TTrec; - maximize(); rebuild(); } @@ -78,29 +68,18 @@ bool TDir_sheet::on_key(KEY key) return TSheet::on_key(key); } -void TDir_sheet::page_build(long first, byte rows) - +void TDir_sheet::get_row(long n, TToken_string& l) { - TToken_string l(128); - - for (byte i = 0; i < rows; i++) - { - const int n = int(i+first+1); - _dir->get (n,_nolock,_nordir,_sysdirop); - - l = format("%3d", n); // Numero progressivo del file - l.add(_dir->name()); - const TRecnotype eod = _dir->eod(); - l.add(eod); - const TRecnotype eox = _dir->eox(); - l.add(eox); - const word len = _dir->len(); - l.add(format("%u", len)); - l.add(_dir->des()); - l.add(_dir->expr()); - l.add(_dir->flags()); - set_row(l, i); - } + n++; + _dir->get ((int)n,_nolock,_nordir,_sysdirop); + l.format("%3d", n); // Numero progressivo del file + l.add(_dir->name()); + l.add(_dir->eod()); + l.add(_dir->eox()); + l.add(format("%u", _dir->len())); + l.add(_dir->des()); + l.add(_dir->expr()); + l.add(_dir->flags()); } @@ -298,7 +277,7 @@ void TRec_sheet::edit() case K_ESC: return; case K_ENTER: - main_app().dispatch_e_menu(M_FILE_PRINT); + dispatch_e_menu(TASK_WIN, M_FILE_PRINT); break; case K_F6: { @@ -310,12 +289,10 @@ void TRec_sheet::edit() m.set(F_NOMEF, nout); if (m.run() == K_ENTER) { - TString80 nf(m.get(F_NOMEF)); - + const TFilename nf(m.get(F_NOMEF)); if (nf.not_empty()) { - ofstream out((const char*) nf); - + ofstream out(nf); out << *_rec; } } @@ -331,12 +308,10 @@ void TRec_sheet::edit() m.set(F_NOMEF, nout); if (m.run() == K_ENTER) { - TString80 nf(m.get(F_NOMEF)); - + const TFilename nf(m.get(F_NOMEF)); if (nf.not_empty()) { - ifstream in((const char*) nf); - + ifstream in(nf); in >> *_rec; nfields = _rec->fields(); f1.reset(); diff --git a/ba/ba1102.cpp b/ba/ba1102.cpp index d740c2b68..c058ec563 100755 --- a/ba/ba1102.cpp +++ b/ba/ba1102.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -13,57 +12,6 @@ HIDDEN TRectype* __rec; HIDDEN TRelation* __rel; HIDDEN TMask* __msk; -bool TEdit_file::memo_handler(TMask_field& f, KEY k) -{ - bool ok = TRUE; - - if (k == K_SPACE) - { - const int memoidx = f.dlg() - 400; - - // recuperate memo id and god (it.: godi) - int mcnt = 0; - long val = -1l; - - for (int i = 0; i < __rec->items(); i++) - { - if (__rec->type(__rec->fieldname(i)) == _memofld) - { - if (memoidx == mcnt++) - { - val = __rec->get_long(__rec->fieldname(i)); - break; - } - } - } - - ok = val != -1l; - if (ok) - { - // edit memo with apposit maskerings - TMask mm("Edit campo memo", 1, 78, 20); - mm.add_memo(501, 0, __rec->fieldname(i), 1, 1, 76,16); - mm.add_button(DLG_OK, 0, "", -12, -1, 9, 2); - mm.add_button(DLG_CANCEL, 0, "", -22, -1, 9, 2); - // build fieldref - TString80 fref; - // UARNIN! Non funziona necessariamente per le tabelle - // ma non abbiamo tabelle coi memo e quindi camm' ifottamme' - fref << __rec->num() << "->" << __rec->fieldname(i); - mm.field(501).set_field(fref); - // se tutto va bene basta fare cosi' - mm.autoload(__rel); - if (mm.run() == K_ENTER) - { - mm.autosave(__rel); - __msk->set (f.dlg() - 1,__rec->get(__rec->fieldname(i))); - } - // se invece va male, l'e' istes - } - } - return ok; -} - bool TEdit_file::browse(int logicnum, const char* name) { TRelation relation(logicnum); @@ -89,8 +37,14 @@ bool TEdit_file::browse(int logicnum, const char* name) TString16 name(n); name.lower(); name[0] = toupper(name[0]); head.add(name); - TFieldtypes t = curr.type(n); - const int len = (t == _datefld) ? 10 : curr.length(n); + const TFieldtypes t = curr.type(n); + int len = 0; + switch (t) + { + case _datefld: len = 10; break; + case _memofld: len = 50; break; + default : len = curr.length(n); break; + } head << '@' << max(len, (int)strlen(n)); if (t == _realfld || t == _intfld || t == _longfld || t == _wordfld || t == _realfld) head << 'R'; @@ -100,7 +54,6 @@ bool TEdit_file::browse(int logicnum, const char* name) KEY ch; TCursor_sheet sheet(&cursor, trac, name, head, superprassi ? 6 : 0); - sheet.maximize(); while ((ch = sheet.run()) != K_ESC) { @@ -195,11 +148,14 @@ KEY TEdit_file::edit_record(TRectype& rec, bool readonly) const int rows = recs > fpp ? 20 : recs+4; const int pages = recs/fpp + (recs % fpp ? 1 : 0); TMask m("Modifica record", pages, 78, rows); + if (pages > 1) m.add_default_tag_buttons(); int curpage = 0, currow = 1, nid = 100; const char* cp; int mcnt =0; + const char* flags = readonly ? "D" : ""; + for(int i = 0; (cp = rec.fieldname(i)) != NULL; i++) { // add fields ONE by ONE @@ -214,26 +170,26 @@ KEY TEdit_file::edit_record(TRectype& rec, bool readonly) case _longfld: case _wordfld: case _realfld: - m.add_number(nid++, curpage, s, 3, currow, len, "R", rec.ndec(cp)); + m.add_number(nid++, curpage, s, 3, currow, len, flags, rec.ndec(cp)); break; case _datefld: - m.add_date(nid++, curpage, s, 3, currow); + m.add_date(nid++, curpage, s, 3, currow, flags); break; case _charfld: + m.add_string(nid++, curpage, s, 3, currow, 1, flags); + break; case _boolfld: - m.add_string(nid++,curpage, s, 3, currow, 1); + m.add_boolean(nid++, curpage, s, 3, currow, flags); break; case _intzerofld: - case _longzerofld: - m.add_number(nid++, curpage, s, 3, currow, len, "Z", 0); + case _longzerofld: + { + TString16 f; f << flags << 'Z'; + m.add_number(nid++, curpage, s, 3, currow, len, f, 0); + } break; case _memofld: - m.add_zoom( nid++, curpage, s, 3, currow, 50, "", 50 ); - // memo del caz: add bottone per l'editing etc - // m.add_button (400+(mcnt++), curpage, "Edit", 35, currow, 9, 1); - // __rec = &rec; - // __msk = &m; - // m.set_handler(400+(mcnt-1), memo_handler); + m.add_zoom( nid++, curpage, s, 3, currow, 50, flags, 50 ); break; default: break; @@ -250,19 +206,7 @@ KEY TEdit_file::edit_record(TRectype& rec, bool readonly) else currow++; } - if (readonly) - { - const int max = m.fields(); - for (int i = 0; i < max; i++) - { - TMask_field& f = m.fld(i); - if (f.class_id() != CLASS_BUTTON_FIELD) - f.disable(); - } - } - const KEY k = m.run(); - if (k == K_ENTER && !readonly) { nid = 100; diff --git a/ba/ba1300.cpp b/ba/ba1300.cpp index 8050b7f18..2e7fe6d94 100755 --- a/ba/ba1300.cpp +++ b/ba/ba1300.cpp @@ -33,7 +33,7 @@ public: TTestSheet * get_sheet() {return _testsheet;} TTestProc * get_test() {return _test;} TMask * get_mask() {return _mask;} - TArray_sheet * field_sheet(TMask *); + TString_array& field_sheet(TMask *); }; @@ -78,11 +78,10 @@ bool BA1300_application::destroy() // releasev e arrmask return TApplication::destroy() ; } -TArray_sheet * BA1300_application::field_sheet(TMask * m) +TString_array& BA1300_application::field_sheet(TMask * m) { - TEdit_field& f=(TEdit_field&) m->field(F_FILE); - TArray_sheet * s=(TArray_sheet*) f.sheet()->sheet(); - return s; + TEdit_field& f = m->efield(F_FILE); + return f.sheet()->rows_array(); } bool BA1300_application::menu(MENU_TAG m) @@ -112,7 +111,7 @@ bool BA1300_application::menu(MENU_TAG m) riga.add(format("%ld",cdir->eox())); riga.add(format("%u",cdir->len())); riga.add(cdir->des()); - field_sheet(msk)->add(riga); + field_sheet(msk).add(riga); } msk->set_handler(F_SEQUENZA,seq_handler); if (msk->run()==K_ENTER) diff --git a/ba/ba1300.h b/ba/ba1300.h index b76fb0df0..916536b62 100755 --- a/ba/ba1300.h +++ b/ba/ba1300.h @@ -17,11 +17,13 @@ class TTestSheet : public TDir_sheet { TBit_array _oldstatus; // Previous status of selected files protected: - void page_build(long first, byte rows); + void get_row(long n, TToken_string& r); + public: - TTestSheet(const char* titolo, byte bottoni = 0x0); - ~TTestSheet() ; void sr_status(bool save=TRUE); + + TTestSheet(const char* titolo, byte bottoni = 0x0); + virtual ~TTestSheet() ; }; class TTestFile : public TBaseisamfile diff --git a/ba/ba1301.cpp b/ba/ba1301.cpp index 163cc0df5..5b9001da2 100755 --- a/ba/ba1301.cpp +++ b/ba/ba1301.cpp @@ -29,28 +29,22 @@ TTestSheet::TTestSheet(const char* titolo, byte bottoni) TTestSheet::~TTestSheet() {} -void TTestSheet::page_build(long first, byte rows) +void TTestSheet::get_row(long n, TToken_string& l) { - TToken_string l(128); - for (byte i = 0; i < rows; i++) - { - const int n = int(i+first+1); - dir()->get (n,_nolock,_nordir,_sysdirop); - l.cut(0); - l.add(""); - l.add(format("%3d", n)); // Numero progressivo del file - l.add(dir()->name()); - const TRecnotype eod = dir()->eod(); - l.add(format("%ld", eod)); - const TRecnotype eox = dir()->eox(); - l.add(format("%ld", eox)); - const word len = dir()->len(); - l.add(format("%u", len)); - l.add(dir()->des()); - l.add(format("%ld", dir()->flags())); - set_row(l, i); - } + dir()->get((int)n,_nolock,_nordir,_sysdirop); + l.cut(0); + l.add(""); + l.add(n); // Numero progressivo del file + l.add(dir()->name()); + const TRecnotype eod = dir()->eod(); + l.add(eod); + const TRecnotype eox = dir()->eox(); + l.add(eox); + const word len = dir()->len(); + l.add(format("%u", len)); + l.add(dir()->des()); + l.add(format("%ld", dir()->flags())); } void TTestSheet::sr_status(bool save)