diff --git a/mr/mr0.cpp b/mr/mr0.cpp index c0ece0e05..81ee2f0a1 100755 --- a/mr/mr0.cpp +++ b/mr/mr0.cpp @@ -7,9 +7,12 @@ int main(int argc, char** argv) int a = argc > 1 ? (argv[1][1] - '0') : 0; switch (a) { + case 3: + mr0400(argc,argv); break; // parametri ditta + case 0: default: mr0100(argc, argv); } exit(0); return 0; -} \ No newline at end of file +} diff --git a/mr/mr0.h b/mr/mr0.h index 869498b3c..a8f6ecafc 100755 --- a/mr/mr0.h +++ b/mr/mr0.h @@ -1,2 +1,8 @@ -int mr0100(int argc, char* argv[]); +#ifndef __MR0_H +#define __MR0_H + +int mr0100(int argc, char* argv[]); +int mr0400(int argc, char* argv[]); + +#endif // __PR0_H diff --git a/mr/mr0.url b/mr/mr0.url index bfee45114..20b583c28 100755 --- a/mr/mr0.url +++ b/mr/mr0.url @@ -1 +1,14 @@ #include + +/* mr0 -0 Gestione tabelle */ + +MENU TASK_MENUBAR + SUBMENU MENU_FILE "~File" + +/* mr0 -3 Parametri ditta */ +MENUBAR MENU_BAR(1) + +MENU MENU_BAR(1) + SUBMENU MENU_FILE "~File" + + diff --git a/mr/mr0100.cpp b/mr/mr0100.cpp index d7479ee61..5a5fd0c8c 100755 --- a/mr/mr0100.cpp +++ b/mr/mr0100.cpp @@ -1,4 +1,3 @@ -#include #include #include "mr0.h" @@ -6,18 +5,21 @@ #include "mrtblnp.h" +#ifndef TTable_application +#define TTable_application Tab_application +#endif + TTable_application& app() { return (TTable_application&)main_app(); } /////////////////////////////////////////////////////////// // TMRP_mask /////////////////////////////////////////////////////////// -class TMRP_mask : public TAutomask +class TMRP_mask : public TCalendar_mask { TMRP_calendar* _calendar; protected: - virtual TMask_field* parse_field(TScanner& scanner); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: @@ -25,14 +27,6 @@ public: virtual ~TMRP_mask(); }; -TMask_field* TMRP_mask::parse_field(TScanner& scanner) -{ - const TString& k = scanner.key(); - if (k == "CA") - return new TCalendar_field(this); - return TAutomask::parse_field(scanner); -} - bool TMRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { const TString16 tn = app().get_tabname(); @@ -87,9 +81,8 @@ bool TMRP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) } TMRP_mask::TMRP_mask(const char* name, int num) - : _calendar(NULL) + : TCalendar_mask(name, num), _calendar(NULL) { - read_mask(name, num, 0); set_handlers(); } diff --git a/mr/mr0400.cpp b/mr/mr0400.cpp new file mode 100755 index 000000000..4115867eb --- /dev/null +++ b/mr/mr0400.cpp @@ -0,0 +1,136 @@ +// 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) +{ + 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 +{ + TMRP_calendar* _calendar; + TCalendar_mask *_mask; + +protected: + virtual TMask* get_mask() { return _mask; } + virtual TMask* create_mask(const TFilename& f) { return new TConf_MRP_mask(f); } + virtual void destroy_mask() { delete _mask; } + virtual void save_mask(bool tosave); +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; _calendar = NULL;} + virtual ~TConf_MRP_application() {} +}; + +void TConf_MRP_application::save_mask(bool tosave) +{ + if (tosave) + _calendar->write(); + + TConfig_application::save_mask(tosave); +} + +bool TConf_MRP_application::preprocess_config (TMask& mask, TConfig& config) +{ + TToken_string ora_inizio("",':'); + + for (int i = 0; i < NTURNI; i++) + { + // Traduce le ore ed i minuti + const short h = F_T1HINIZIO+(i*4); + ora_inizio = config.get("TINIZIO","mr", i); + mask.set(h,ora_inizio.get(0)); // Hour... + mask.set(h+1,ora_inizio.get(1)); // Minutes... + const long tdurata = config.get_long("TDURATA", "mr", i); + const int hours = (int)tdurata / 60; // numero di ore + const int minutes = (int)tdurata % 60; // numero di minuti + mask.set(h+2, hours); + mask.set(h+3, minutes); + } + //mask.set(F_GESTIMPIANTI, config.get_bool("GESTIMPIANTI", "mr")); + //mask.set(F_NTURNI, config.get_int("NTURNI", "mr")); + // Carica il calendario + TCalendar_field& cf = (TCalendar_field&)mask.field(F_CALENDAR); + cf.set_calendar(_calendar, mask.get_int(F_YEAR)); + cf.win().force_update(); + return TRUE; +} + +bool TConf_MRP_application::postprocess_config (TMask& mask, TConfig& config) +{ + TToken_string ora_inizio("",':'); + for (int i = 0; i < NTURNI; i++) + { + // Traduce le ore ed i minuti + const short h = F_T1HINIZIO+(i*4); + ora_inizio.add(mask.get(h),0); // Hour... + ora_inizio.add(mask.get(h+1),1); // Minutes + config.set("TINIZIO",ora_inizio,"mr", TRUE, i); + const int durata_h = mask.get_int(h+2); + const int durata_m = mask.get_int(h+3); + const long minutes = durata_h * 60 + durata_m; + config.set("TDURATA", minutes, "mr", TRUE, i); + } + config.set("GESTIMPIANTI", mask.get_bool(F_GESTIMPIANTI), "mr"); + config.set("NTURNI", mask.get_int(F_NTURNI), "mr"); + return TRUE; +} + +bool TConf_MRP_application::user_create() +{ + TConfig conf(CONFIG_DITTA); + conf.set( "EdMask", "mr0400a", "mr"); + _calendar = new TMRP_calendar(); // Calendario standard + return TRUE; +} + +bool TConf_MRP_application::user_destroy() +{ + if (_calendar) + delete _calendar; + return TRUE; +} + +int mr0400(int argc, char* argv[]) +{ + TConf_MRP_application app; + + app.run(argc, argv, "Parametri gestione MRP"); + return 0; +} diff --git a/mr/mr0400.h b/mr/mr0400.h new file mode 100755 index 000000000..766d8284e --- /dev/null +++ b/mr/mr0400.h @@ -0,0 +1,44 @@ +#ifndef __MR0400_H +#define __MR0400_H + +#define F_GESTIMPIANTI 101 +#define F_NTURNI 102 +#define F_T1HINIZIO 103 +#define F_T1MINIZIO 104 +#define F_T1HDURATA 105 +#define F_T1MDURATA 106 +#define F_T2HINIZIO 107 +#define F_T2MINIZIO 108 +#define F_T2HDURATA 109 +#define F_T2MDURATA 110 +#define F_T3HINIZIO 111 +#define F_T3MINIZIO 112 +#define F_T3HDURATA 113 +#define F_T3MDURATA 114 +#define F_T4HINIZIO 115 +#define F_T4MINIZIO 116 +#define F_T4HDURATA 117 +#define F_T4MDURATA 118 +#define F_T5HINIZIO 119 +#define F_T5MINIZIO 120 +#define F_T5HDURATA 121 +#define F_T5MDURATA 122 +#define F_T6HINIZIO 123 +#define F_T6MINIZIO 124 +#define F_T6HDURATA 125 +#define F_T6MDURATA 126 +#define F_T7HINIZIO 127 +#define F_T7MINIZIO 128 +#define F_T7HDURATA 129 +#define F_T7MDURATA 130 +#define F_T8HINIZIO 131 +#define F_T8MINIZIO 132 +#define F_T8HDURATA 133 +#define F_T8MDURATA 134 + +#define F_YEAR 201 +#define F_CALENDAR 202 + +#endif + + diff --git a/mr/mr0400a.uml b/mr/mr0400a.uml new file mode 100755 index 000000000..652bb0495 --- /dev/null +++ b/mr/mr0400a.uml @@ -0,0 +1,319 @@ +#include "mr0400.h" + +TOOLBAR "" 0 20 0 2 + +BUTTON DLG_OK 10 2 +BEGIN +PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 10 2 +BEGIN +PROMPT -22 -1 "" +END + +ENDPAGE + +PAGE "Parametri ditta" -1 -1 65 15 + +BOOLEAN F_GESTIMPIANTI +BEGIN + PROMPT 2 2 "Gestione impianti " + FIELD GESTIMPIANTI +END + +LISTBOX F_NTURNI 3 +BEGIN + PROMPT 2 4 "Numero turni " + ITEM "1|1" + MESSAGE CLEAR, 28@ + ITEM "2|2" + MESSAGE CLEAR, 38@|ENABLE,12@ + ITEM "3|3" + MESSAGE CLEAR, 48@|ENABLE,13@ + ITEM "4|4" + MESSAGE CLEAR, 58@|ENABLE,14@ + ITEM "5|5" + MESSAGE CLEAR, 68@|ENABLE,15@ + ITEM "6|6" + MESSAGE CLEAR, 78@|ENABLE,16@ + ITEM "7|7" + MESSAGE CLEAR, 8@|ENABLE,17@ + ITEM "8|8" + MESSAGE ENABLE,18@ + FIELD NTURNI +END + +NUMBER F_T1HINIZIO 2 +BEGIN + PROMPT 2 5 "Ora inizio primo turno " + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T1MINIZIO 2 +BEGIN + PROMPT 30 5 "" + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T1HDURATA 2 +BEGIN + PROMPT 36 5 "Durata " + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T1MDURATA 2 +BEGIN + PROMPT 47 5 "" + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T2HINIZIO 2 +BEGIN + PROMPT 2 6 "Ora inizio secondo turno " + GROUP 2 12 13 14 15 16 17 18 28 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T2MINIZIO 2 +BEGIN + PROMPT 30 6 "" + GROUP 2 12 13 14 15 16 17 18 28 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T2HDURATA 2 +BEGIN + PROMPT 36 6 "Durata " + GROUP 2 12 13 14 15 16 17 18 28 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T2MDURATA 2 +BEGIN + PROMPT 47 6 "" + GROUP 2 12 13 14 15 16 17 18 28 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T3HINIZIO 2 +BEGIN + PROMPT 2 7 "Ora inizio terzo turno " + GROUP 3 13 14 15 16 17 18 28 38 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T3MINIZIO 2 +BEGIN + PROMPT 30 7 "" + GROUP 3 13 14 15 16 17 18 28 38 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T3HDURATA 2 +BEGIN + PROMPT 36 7 "Durata " + GROUP 3 13 14 15 16 17 18 28 38 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T3MDURATA 2 +BEGIN + PROMPT 47 7 "" + GROUP 3 13 14 15 16 17 18 28 38 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + + +NUMBER F_T4HINIZIO 2 +BEGIN + PROMPT 2 8 "Ora inizio quarto turno " + GROUP 4 14 15 16 17 18 28 38 48 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T4MINIZIO 2 +BEGIN + PROMPT 30 8 "" + GROUP 4 14 15 16 17 18 28 38 48 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T4HDURATA 2 +BEGIN + PROMPT 36 8 "Durata " + GROUP 4 14 15 16 17 18 28 38 48 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T4MDURATA 2 +BEGIN + PROMPT 47 8 "" + GROUP 4 14 15 16 17 18 28 38 48 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T5HINIZIO 2 +BEGIN + PROMPT 2 9 "Ora inizio quinto turno " + GROUP 5 15 16 17 18 28 38 48 58 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T5MINIZIO 2 +BEGIN + PROMPT 30 9 "" + GROUP 5 15 16 17 18 28 38 48 58 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T5HDURATA 2 +BEGIN + PROMPT 36 9 "Durata " + GROUP 5 15 16 17 18 28 38 48 58 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T5MDURATA 2 +BEGIN + PROMPT 47 9 "" + GROUP 5 15 16 17 18 28 38 48 58 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T6HINIZIO 2 +BEGIN + PROMPT 2 10 "Ora inizio sesto turno " + GROUP 6 16 17 18 28 38 48 58 68 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T6MINIZIO 2 +BEGIN + PROMPT 30 10 "" + GROUP 6 16 17 18 28 38 48 58 68 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T6HDURATA 2 +BEGIN + PROMPT 36 10 "Durata " + GROUP 6 16 17 18 28 38 48 58 68 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T6MDURATA 2 +BEGIN + PROMPT 47 10 "" + GROUP 6 16 17 18 28 38 48 58 68 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T7HINIZIO 2 +BEGIN + PROMPT 2 11 "Ora inizio settimo turno " + GROUP 7 17 18 28 38 48 58 68 78 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T7MINIZIO 2 +BEGIN + PROMPT 30 11 "" + GROUP 7 17 18 28 38 48 58 68 78 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T7HDURATA 2 +BEGIN + PROMPT 36 11 "Durata " + GROUP 7 17 18 28 38 48 58 68 78 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T7MDURATA 2 +BEGIN + PROMPT 47 11 "" + GROUP 7 17 18 28 38 48 58 68 78 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + + +NUMBER F_T8HINIZIO 2 +BEGIN + PROMPT 2 12 "Ora inizio ottavo turno " + GROUP 8 18 28 38 48 58 68 78 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T8MINIZIO 2 +BEGIN + PROMPT 30 12 "" + GROUP 8 18 28 38 48 58 68 78 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +NUMBER F_T8HDURATA 2 +BEGIN + PROMPT 36 12 "Durata " + GROUP 8 18 28 38 48 58 68 78 + NUM_EXPR {(#THIS_FIELD <= 23)} + WARNING "Ora non valida" +END + +NUMBER F_T8MDURATA 2 +BEGIN + PROMPT 47 12 "" + GROUP 8 18 28 38 48 58 68 78 + NUM_EXPR {(#THIS_FIELD <= 59)} + WARNING "Ora non valida" +END + +ENDPAGE + +PAGE "Calendario" -1 -1 65 15 + +NUMBER F_YEAR 4 +BEGIN + PROMPT 1 1 "Anno " + FLAGS "AD" +END + +CALENDAR F_CALENDAR -3 -1 +BEGIN + PROMPT 0 2 "" +END + +ENDPAGE + +ENDMASK + diff --git a/mr/mrplib.cpp b/mr/mrplib.cpp index d9640bd65..89a103060 100755 --- a/mr/mrplib.cpp +++ b/mr/mrplib.cpp @@ -475,4 +475,22 @@ void TCalendar_field::set_calendar(TMRP_calendar* cal, int year) { TCalendar_win& cw = (TCalendar_win&)win(); cw.set_calendar(cal, year); -} \ No newline at end of file +} + +/////////////////////////////////////////////////////////// +// TCalendar_mask +/////////////////////////////////////////////////////////// + +TMask_field* TCalendar_mask::parse_field(TScanner& scanner) +{ + const TString& k = scanner.key(); + if (k == "CA") + return new TCalendar_field(this); + return TAutomask::parse_field(scanner); +} + +TCalendar_mask::TCalendar_mask(const char* name, int num) +{ + read_mask(name, num, 0); +} + diff --git a/mr/mrplib.h b/mr/mrplib.h index 9d43e14dd..54aac12f2 100755 --- a/mr/mrplib.h +++ b/mr/mrplib.h @@ -1,8 +1,8 @@ #ifndef __MRPLIB_H #define __MRPLIB_H -#ifndef __MASK_H -#include +#ifndef __AUTOMASK_H +#include #endif class TMRP_calendar : public TObject @@ -54,5 +54,13 @@ public: virtual ~TCalendar_field() { } }; +class TCalendar_mask : public TAutomask +{ +protected: + virtual TMask_field* parse_field(TScanner& scanner); +public: + TCalendar_mask(const char* name, int num = 0); + virtual ~TCalendar_mask() {}; +}; #endif