#include #include #include #include #include "celib.h" #include "ce3400.h" #include "ce3700a.h" #include "../cg/cglib01.h" #include "cespi.h" /////////////////////////////////////////////////////////// // Main Form /////////////////////////////////////////////////////////// class TECUP_form : public TCespi_list_form { protected: virtual bool validate(TForm_item& fld, TToken_string& val); public: void set_testata(const TMask& m); TECUP_form(); }; void TECUP_form::set_testata(const TMask& m) { TCespi_list_form::set_testata(m); } bool TECUP_form::validate(TForm_item& fld, TToken_string& val) { return TCespi_list_form::validate(fld, val); } TECUP_form::TECUP_form() : TCespi_list_form("ce3700a") { } /////////////////////////////////////////////////////////// // Main Mask /////////////////////////////////////////////////////////// class TECUP_mask : public TAutomask { protected: virtual bool on_field_event(TOperable_field& f, TField_event e, long jolly); public: TECUP_mask() : TAutomask("ce3700a") { } }; bool TECUP_mask::on_field_event(TOperable_field& f, TField_event e, long jolly) { switch (f.dlg()) { case F_USOPROM1: if (e == fe_close) { int up; for (up = 2; up >= 0; up--) if (get_bool(F_USOPROM1+up)) break; if (up < 0) return error_box(TR("E' necessario specificare almeno una percentuale di deducibilità")); } break; default: break; } return TRUE; } /////////////////////////////////////////////////////////// // Main Application /////////////////////////////////////////////////////////// class TECUP_app : public TSkeleton_application { int _gruppo; TString4 _specie; bool _usoprom[3]; int _veidip; static bool promis_filter(const TRelation* rel); protected: virtual void main_loop(); }; TECUP_app& app() { return (TECUP_app&)main_app(); } bool TECUP_app::promis_filter(const TRelation* rel) { const TRectype& cespi = rel->curr(); const TECUP_app& a = app(); if (cespi.get_int(CESPI_CODCGRA) != a._gruppo) return FALSE; if (cespi.get(CESPI_CODSPA) != a._specie) return FALSE; int up = cespi.get_int(CESPI_USOPROM); if (up > 0) up--; if (a._usoprom[up] == FALSE) return FALSE; if (a._veidip < 2) return cespi.get_bool(CESPI_VEIDIP) == (a._veidip != 0); return TRUE; } void TECUP_app::main_loop() { TECUP_mask m; ditta_cespiti().init_mask(m); m.set(F_USOPROM2, "X"); m.set(F_USOPROM3, "X"); m.set(F_VEIDIP, 2); while (m.run() != K_QUIT) { const int ese = m.get_int(F_ESERCIZIO); _gruppo = m.get_int(F_GRUPPO); _specie = m.get(F_SPECIE); ditta_cespiti().set_attivita(ese, _gruppo, _specie); for (int u = 0; u < 3; u++) _usoprom[u] = m.get_bool(F_USOPROM1+u); _veidip = m.get_int(F_VEIDIP); TECUP_form form; form.cursor()->set_filterfunction(promis_filter); form.set_testata(m); form.print(); xvtil_statbar_set(""); } } int ce3700(int argc, char* argv[]) { TECUP_app app; app.run(argc, argv, TR("Cespiti uso promiscuo")); return 0; }