// Gestione parametri ditta MRP #ifndef __CONFAPP_H #include #endif #include "mrplib.h" #include "mr0400.h" #define NTURNI 8 class TConf_MRP_mask : public TCalendar_mask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TConf_MRP_mask(const char* name, int num = 0); virtual ~TConf_MRP_mask(); }; bool TConf_MRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { case F_YEAR: if (e == fe_init || e == fe_modify) update_calendar(F_CALENDAR, F_YEAR); break; default: break; } return TRUE; } TConf_MRP_mask::TConf_MRP_mask(const char* name, int num) : TCalendar_mask(name, num) { set_handlers(); } TConf_MRP_mask::~TConf_MRP_mask() { } ////////////////////////////////////////////////// // TConf_MRP_application ////////////////////////////////////////////////// class TConf_MRP_application : public TConfig_application { TConf_MRP_mask *_mask; protected: virtual TMask* get_mask() { return _mask; } virtual TMask* create_mask(const TFilename& f) { if (_mask == NULL) _mask = new TConf_MRP_mask(f); return _mask;} virtual void destroy_mask() { delete _mask; _mask = NULL; } public: virtual bool preprocess_config (TMask& mask, TConfig& config); virtual bool postprocess_config (TMask& mask, TConfig& config); virtual bool user_create(); virtual bool user_destroy(); TConf_MRP_application() : TConfig_application(CONFIG_DITTA) { _mask = NULL;} virtual ~TConf_MRP_application() {} }; bool TConf_MRP_application::preprocess_config (TMask& mask, TConfig& c) { TMRP_config& config=(TMRP_config&)c; for (int i = 0; i < NTURNI; i++) { const short h = F_T1HINIZIO+(i*4); // inizio turno mask.set(h , config.ora_inizio_turno(i)); // Hour... mask.set(h+1, config.min_inizio_turno(i)); // Minutes... // durata turno mask.set(h+2, config.ore_durata_turno(i)); mask.set(h+3, config.min_durata_turno(i)); mask.set(F_T1NUMPERS+i,config.numpers_turno(i)); } // Carica il calendario ((TCalendar_mask&)mask).update_calendar(F_CALENDAR, F_YEAR); return TRUE; } bool TConf_MRP_application::postprocess_config (TMask& mask, TConfig& c) { TMRP_config& config=(TMRP_config&)c; for (int i = 0; i < NTURNI; i++) { // Traduce le ore ed i minuti const short h = F_T1HINIZIO+(i*4); config.set_inizio_turno(i,mask.get_int(h) ,mask.get_int(h+1)); config.set_durata_turno(i,mask.get_int(h+2),mask.get_int(h+3)); // numero di persone config.set_numpers_turno(i,mask.get_int(F_T1NUMPERS+i)); } config.set_gestimpianti(mask.get_bool(F_GESTIMPIANTI)); config.set_turni(mask.get_int(F_NTURNI)); TString paragraph(config.get_paragraph()); config.set_paragraph(""); // Akkrokkio per salvare il calendario... ((const TCalendar_mask&)mask).calendar().write(); config.set_paragraph(paragraph); // re-read return TRUE; } bool TConf_MRP_application::user_create() { TConfig conf(CONFIG_DITTA); conf.set( "EdMask", "mr0400a", "mr"); return TRUE; } bool TConf_MRP_application::user_destroy() { return TRUE; } int mr0400(int argc, char* argv[]) { TConf_MRP_application app; app.run(argc, argv, "Parametri gestione MRP"); return 0; }