diff --git a/include/default.url b/include/default.url index c1c3037d5..e914a1e2d 100755 --- a/include/default.url +++ b/include/default.url @@ -29,13 +29,6 @@ #include -MENUBAR TASK_MENUBAR - -MENU TASK_MENUBAR - SUBMENU M_FILE "~File" - SUBMENU M_EDIT "~Modifica" - SUBMENU M_HELP "~Help" - MENU M_FILE ITEM M_FILE_NEW "Scelta ~Ditta..." ITEM M_FILE_REVERT "Impostazione ~Parametri..." diff --git a/include/expr.h b/include/expr.h index a2316221f..7ca0cbc00 100755 --- a/include/expr.h +++ b/include/expr.h @@ -510,7 +510,7 @@ public: TExpression(const TExpression & expr); // @cmember Distruttore virtual ~TExpression() - {} + {} }; #endif // __EXPR_H diff --git a/include/isam.cpp b/include/isam.cpp index dea387f48..ff7db9acb 100755 --- a/include/isam.cpp +++ b/include/isam.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #ifdef DBG #define JOURNAL @@ -726,8 +727,9 @@ TBaseisamfile::TBaseisamfile( fatal_box("Non posso creare il file %s : errore n.ro %d", name, err); } _lasterr = NOERR; - _logicnum = -1; // LF_EXTERNAL qui - _current = new TRectype(this); + TFilename filename(name); + _logicnum = prefix().get_handle(filename); + _current = new TRectype(this); } TBaseisamfile::~TBaseisamfile() @@ -1182,7 +1184,7 @@ int TBaseisamfile::_open( num(), (const char*)filename); _recno = RECORD_NON_FISICO; - setkey(1); + setkey(_curr_key); _lasterr = NOERR; } else @@ -1666,7 +1668,6 @@ void TExternisamfile::init(const char* name, bool exclusive, bool index) int TExternisamfile::open(bool exclusive, bool index) { - _logicnum = -1; //qui _isam_handle = prefix().open_isamfile(_logicnum, _name, exclusive, index); if (_isam_handle > 0) { diff --git a/include/mainmenu.url b/include/mainmenu.url index a10c5cc12..0af1bfdb2 100755 --- a/include/mainmenu.url +++ b/include/mainmenu.url @@ -2,5 +2,5 @@ MENUBAR TASK_MENUBAR MENU TASK_MENUBAR SUBMENU M_FILE "~File" -/* SUBMENU M_EDIT "~Modifica" Unsupported! */ + SUBMENU M_EDIT "~Modifica" SUBMENU M_HELP "~Help" diff --git a/include/msksheet.cpp b/include/msksheet.cpp index 67e350d61..b417ffab6 100755 --- a/include/msksheet.cpp +++ b/include/msksheet.cpp @@ -970,7 +970,10 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev) case CLASS_LIST_FIELD: break; // Leave code as is case CLASS_BOOLEAN_FIELD: - xiev->v.cell_request.icon_rid = ICO_CHECK_ON; + if (*src == ' ') + xiev->v.cell_request.icon_rid = ICO_CHECK_OFF; + else + xiev->v.cell_request.icon_rid = ICO_CHECK_ON; break; case CLASS_CURRENCY_FIELD: if (e->driver(0)) diff --git a/include/prefix.cpp b/include/prefix.cpp index 6f1682415..65d80c0d6 100755 --- a/include/prefix.cpp +++ b/include/prefix.cpp @@ -569,6 +569,31 @@ bool TFile_manager::close_oldest() return oldest != NULL; } +// name : nome del file +TIsam_handle TFile_manager::get_handle(TFilename& name) +{ + + TFile_info* i = NULL; + TFilename fname(name); fname.ext(""); + for (int num = LF_EXTERNAL; (i = (TFile_info*)_fileinfo.objptr(num)) != NULL; num++) + { + if (i->pathname() == fname) + break; + } + if (i == NULL) + { + i = new TFile_info(num, name); + if (!i->ok()) + { + delete i; + return -60; + } + _fileinfo.add(i, num); + } + + return num; +} + // name : nome del file (vuoto per i file normali viene riempito automaticamente) // logicnum: numero logico del file (LF_EXTERNAL per gli esterni viene generato automaticamente) TIsam_handle TFile_manager::open(int& logicnum, TFilename& name, bool exclusive, bool index) @@ -576,12 +601,7 @@ TIsam_handle TFile_manager::open(int& logicnum, TFilename& name, bool exclusive, TIsam_handle num = logicnum; if (name.not_empty()) { - TFile_info* i = NULL; - for (num = LF_EXTERNAL; (i = (TFile_info*)_fileinfo.objptr(num)) != NULL; num++) - { - if (i->pathname() == name) - break; - } + num = get_handle(name); if (logicnum >= LF_EXTERNAL) logicnum = num; } diff --git a/include/prefix.h b/include/prefix.h index a6017ec97..f3ada9d6b 100755 --- a/include/prefix.h +++ b/include/prefix.h @@ -42,6 +42,7 @@ public: const TFilename& get_filename(TIsam_handle num) const; const FileDes& get_filedes(TIsam_handle num) const; const RecDes& get_recdes(int logicnum) const; + TIsam_handle get_handle(TFilename& name); const RecDes& update_recdes(int logicnum); TDirtype get_dirtype(int logicnum); bool add_recdes(int logicnum, TTrec& rec, TToken_string& keys); @@ -180,6 +181,9 @@ public: int get_handle(TIsam_handle name, int key = 0) { return _manager.get_handle(name, key); } + TIsam_handle get_handle(TFilename& name) + { return _manager.get_handle(name); } + const RecDes& get_recdes(int logicnum) const { return _manager.get_recdes(logicnum); } diff --git a/include/relation.cpp b/include/relation.cpp index d614b2d7c..a9ec0b57f 100755 --- a/include/relation.cpp +++ b/include/relation.cpp @@ -1230,6 +1230,8 @@ TRecnotype TCursor::update() file().curr().zero(); file().read(_isgteq); + _totrec = buildcursor(file().recno()); + const int handle = file().handle(); const TRecnotype eod = DB_reccount(handle);