#include #include #include "dt0300a.h" #include "dt0300b.h" class TConf_dt : public TConfig_application { TMask* _mask; char _current; protected: virtual TMask* get_mask() { return _mask; } virtual TMask* create_mask(const TFilename& f) { if (_mask == NULL) _mask = new TMask(f); return _mask;} virtual void destroy_mask() { delete _mask; _mask = NULL; } virtual void load_mask(); virtual void save_mask(bool tosave); bool save_mask_doc(TMask* mask); bool load_mask_doc(TMask* mask); bool save_mask_ditte(TMask* mask); bool load_mask_ditte(TMask* mask); public: virtual bool user_create( ); virtual bool user_destroy( ); TConf_dt() : TConfig_application() { _mask = NULL;} virtual ~TConf_dt( ){ } }; bool TConf_dt::load_mask_doc(TMask* mask) { TConfig* config_studio = get_config(); TConfig_application::load_mask(); TToken_string workstring; TSheet_field& sf_doc = mask->sfield(F_CONF_DOC); sf_doc.destroy(); for (int k = 0; config_studio->exist("ConfDoc", k); k++) { workstring= config_studio->get("ConfDoc", NULL, k); TToken_string& row = sf_doc.row(-1); row.add(workstring.get(0), 0); row.add(workstring.get(1), 1); row.add(workstring.get(2), 2); row.add(workstring.get(3), 3); row.add(workstring.get(4), 4); sf_doc.check_row(sf_doc.items()-1); } return TRUE; } bool TConf_dt::load_mask_ditte(TMask* mask) { TConfig* config_studio = get_config(); TConfig_application::load_mask(); TToken_string workstring; TSheet_field& sf_ditte = mask->sfield(F_CONF_DITTE); sf_ditte.destroy(); for (int k = 0; config_studio->exist("ConfDitte", k); k++) { workstring= config_studio->get("ConfDitte", NULL, k); TToken_string& row = sf_ditte.row(-1); row.add(workstring.get(0), 0); row.add(workstring.get(1), 1); row.add(workstring.get(2), 2); row.add(workstring.get(3), 3); row.add(workstring.get(4), 4); row.add(workstring.get(5), 5); sf_ditte.check_row(sf_ditte.items()-1); } return TRUE; } void TConf_dt::load_mask() { TMask* mask = get_mask(); if (mask==NULL) return; if (_current=='1') load_mask_doc(mask); if (_current=='2') load_mask_ditte(mask); } bool TConf_dt::save_mask_doc(TMask* mask) { TConfig* config_studio = get_config(); for (int k = 0; config_studio->exist("ConfDoc", k); k++) config_studio->remove("ConfDoc", k); TToken_string workstring; TSheet_field& sf_doc = mask->sfield(F_CONF_DOC); int c = 0; FOR_EACH_SHEET_ROW(sf_doc, j, line) { workstring.cut(0); workstring.add(line->get(0)); workstring.add(line->get(1)); workstring.add(line->get(2)); workstring.add(line->get(3)); workstring.add(line->get(4)); config_studio->set("ConfDoc", workstring, NULL, true, c++); } return TRUE; } bool TConf_dt::save_mask_ditte(TMask* mask) { TConfig* config_studio = get_config(); for (int k = 0; config_studio->exist("ConfDitte", k); k++) config_studio->remove("ConfDitte", k); TToken_string workstring; TSheet_field& sf_ditte = mask->sfield(F_CONF_DITTE); int c = 0; FOR_EACH_SHEET_ROW(sf_ditte, j, line) { workstring.cut(0); workstring.add(line->get(0)); if (!workstring.blank()) { workstring.add(line->get(1)); workstring.add(line->get(2)); workstring.add(line->get(3)); workstring.add(line->get(4)); workstring.add(line->get(5)); config_studio->set("ConfDitte", workstring, NULL, true, c++); } } return TRUE; } void TConf_dt::save_mask(bool tosave) { TMask* mask = get_mask(); if (mask==NULL) return; bool ask_save = mask->dirty() && !tosave; if (ask_save) tosave = yesno_box("Modifiche non registrate. Salvare?"); if (tosave) { TConfig_application::save_mask(tosave); if (_current == '1') save_mask_doc(mask); if (_current == '2') save_mask_ditte(mask); } } bool TConf_dt::user_create( ) { TString16 arg( argv(2) ); if( arg[ 0 ] != '-' ) fatal_box( TR( "Usage: dt0 -2 -[1|2]") ); _current = arg[1]; TConfig conf(CONFIG_STUDIO ); set_config(CONFIG_STUDIO); switch( _current ) { case '1': conf.set( "EdMask", "dt0300a", "dt"); break; case '2': conf.set( "EdMask", "dt0300b", "dt" ); break; default: fatal_box( TR("Usage: dt0 -2 -[1|2]") ); return FALSE; break; } return TRUE; } bool TConf_dt::user_destroy( ) { return TRUE; } int dt0300(int argc, char* argv[]) { TConf_dt app; app.run(argc, argv, TR("Configurazione modulo")); return 0; }