#include #include #include #include #include "cg5100a.h" class CG51_App : public TConfig_application { bool _change_pcon; TString16 _val; void swap_file(int logicnum, bool tocom); public: virtual bool preprocess_config (TMask& mask, TConfig& config); virtual bool postprocess_config (TMask& mask, TConfig& config); virtual bool postprocess_config_changed(const char* par, const char* var, const char* oldv, const char* newv); virtual bool user_create() { _change_pcon = FALSE; return TRUE;} virtual bool user_destroy(); CG51_App() : TConfig_application(CONFIG_DITTA) {} virtual ~CG51_App() {} }; void CG51_App::swap_file(int logicnum, bool tocom) { TDir dir; TString file(16); dir.get(logicnum, _lock, _nordir, _sysdirop); file = dir.name(); file[0] = tocom ? '%' : '$'; dir.set(file, dir.eod(), dir.flags(), dir.des(), dir.expr()); dir.put(logicnum, _nordir, _sysdirop); dir.get(logicnum, _lock, (tocom ? _comdir :_nordir), _sysdirop); if (tocom) { file = dir.name(); file[0] = '%'; dir.set(file, dir.eod(), dir.flags(), dir.des(), dir.expr()); dir.put(logicnum, _comdir, _sysdirop); } if (dir.eox() == 0L) { TSystemisamfile s(logicnum); s.build(10L); } } bool CG51_App::user_destroy() { if (_change_pcon) { swap_file(LF_PCON, _val[0] == 'X'); swap_file(LF_CAUSALI, _val[0] == 'X'); swap_file(LF_RCAUSALI, _val[0] == 'X'); } return TRUE; } bool CG51_App::preprocess_config (TMask& mask, TConfig& config) { // these are disabled in normal applications TLocalisamfile mov(LF_MOV); const bool movempty = mov.empty(); mask.enable(CHK_ANCFCM, movempty); mask.enable(CHK_PCTCCM, movempty); disable_menu_item(M_FILE_NEW); disable_menu_item(M_FILE_REVERT); return TRUE; } bool CG51_App::postprocess_config(TMask& mask, TConfig& config) { enable_menu_item(M_FILE_NEW); enable_menu_item(M_FILE_REVERT); return TRUE; } bool CG51_App::postprocess_config_changed(const char* par, const char* var, const char* oldv, const char* newv) { TString v(var); if (v == "AnCfCm") { if (yesno_box("Confermi il cambiamento dell'anagrafica clienti/fornitori")) swap_file(LF_CLIFO, *newv == 'X'); else return FALSE; } else if (v == "PcTcCm") { if (yesno_box("Confermi il cambiamento del piano conti/causali")) { _change_pcon = TRUE; _val = newv; } else return FALSE; } return TRUE; } int cg5100 (int argc, char* argv[]) { CG51_App appc; appc.run(argc, argv, "Parametri Ditta"); return 0; }