From 51ed2733f0dce99e53d7bbdd6a1707ab6800761c Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 17 Mar 2009 11:03:49 +0000 Subject: [PATCH] Patch level : 10.0 260 Files correlati : bcg2.exe cg2100k.msk Ricompilazione Demo : [ ] Commento : Aggiunto supporto per le Property Grid git-svn-id: svn://10.65.10.50/trunk@18533 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2100k.uml | 40 ++------- cg/cg2106.cpp | 230 ++++++++++++++++++++----------------------------- 2 files changed, 99 insertions(+), 171 deletions(-) diff --git a/cg/cg2100k.uml b/cg/cg2100k.uml index 3bb784de0..1daabad06 100755 --- a/cg/cg2100k.uml +++ b/cg/cg2100k.uml @@ -1,10 +1,8 @@ -PAGE "Colori delle righe di prima nota" -1 -1 42 15 +PAGE "Colori delle righe di prima nota" -1 -1 42 16 -SPREADSHEET 101 -1 -3 +PROPERTIES DLG_USER -1 12 BEGIN PROMPT 1 1 "Colori" - ITEM "Colore@32" - FLAGS "D" END ENDPAGE @@ -13,46 +11,20 @@ TOOLBAR "topbar" 0 0 0 2 BUTTON DLG_OK 10 2 BEGIN - PROMPT -33 -1 "" + PROMPT 1 -1 "" END -BUTTON 102 10 2 +BUTTON DLG_DELREC 10 2 BEGIN - PROMPT -13 -1 "A~zzera" - PICTURE TOOL_DELREC + PROMPT 2 -1 "A~zzera" END BUTTON DLG_CANCEL 10 2 BEGIN - PROMPT -23 -1 "" + PROMPT 3 -1 "" END ENDPAGE ENDMASK -PAGE "Colore" -1 -1 40 10 - -STRING 101 32 -BEGIN - PROMPT 1 1 "Tipo " -END - -BUTTON 100 14 2 -BEGIN - PROMPT 2 5 "~Sfondo" -END - -BUTTON 99 14 2 -BEGIN - PROMPT 22 5 "~Testo" -END - -BUTTON DLG_OK 14 2 -BEGIN - PROMPT -11 -1 "" -END - -ENDPAGE - -ENDMASK diff --git a/cg/cg2106.cpp b/cg/cg2106.cpp index 80aebdcaf..769a1feb4 100755 --- a/cg/cg2106.cpp +++ b/cg/cg2106.cpp @@ -1,7 +1,10 @@ +#include #include #include #include +#include #include +#include #include #include "cg2100.h" @@ -11,142 +14,56 @@ // Maschere per colori /////////////////////////////////////////////////////////// -class TRow_mask : public TMask -{ -public: - virtual void update(); - - TRow_mask(); - virtual ~TRow_mask() { } -}; - -class TColor_mask : public TVariable_mask +class TColor_mask : public TAutomask { - HIDDEN TRow_mask* _sheet_mask; - HIDDEN TMask* get_mask(int, TMask&) { return _sheet_mask; } + const char* const _tipi; protected: - static bool color_handler(TMask_field& f, KEY k); - static bool reset_handler(TMask_field& f, KEY k); - -public: - void get_cur_colors(COLOR& back, COLOR& fore) const; - void set_cur_colors(COLOR back, COLOR fore); + TProp_field& props() { return (TProp_field&)field(DLG_USER); } + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + void load_props(); + void reset_props(); + void save_props(); +public: TColor_mask(); - virtual ~TColor_mask(); }; -/////////////////////////////////////////////////////////// -// TRow_mask -/////////////////////////////////////////////////////////// - -TRow_mask* TColor_mask::_sheet_mask = NULL; - -TRow_mask::TRow_mask() - : TMask("cg2100k", 1) -{ } - -void TRow_mask::update() -{ - TSheet_field* s = get_sheet(); - TColor_mask& m = (TColor_mask&)s->mask(); - COLOR back, fore; - m.get_cur_colors(back, fore); - - _pixmap = TRUE; - set_pen(COLOR_BLACK); - - RCT rct; field(100).get_rect(rct); - set_brush(back); - frame(rct.left, 2*rct.top - rct.bottom - CHARY/2, rct.right, rct.top - CHARY/2, 0); - - field(99).get_rect(rct); - set_brush(fore); - frame(rct.left, 2*rct.top - rct.bottom - CHARY/2, rct.right, rct.top - CHARY/2, 0); - - _pixmap = FALSE; -} - -/////////////////////////////////////////////////////////// -// TColor_mask -/////////////////////////////////////////////////////////// - - -void TColor_mask::get_cur_colors(COLOR& back, COLOR& fore) const +bool TColor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { - TSheet_field& s = (TSheet_field&)fld(0); - TToken_string& row = s.row(s.selected()); - const char tipo = row[5]; - app().type2colors(tipo, back, fore); -} - -void TColor_mask::set_cur_colors(COLOR back, COLOR fore) -{ - TSheet_field& s = (TSheet_field&)fld(0); - int cur = s.selected(); - TToken_string& row = s.row(cur); - const char tipo = row[5]; - app().set_type_colors(tipo, back, fore); - s.set_back_and_fore_color(back, fore, cur); - s.force_update(cur); -} - -bool TColor_mask::color_handler(TMask_field& f, KEY k) -{ - if (k == K_SPACE) - { - TMask& m = f.mask(); - TColor_mask& cm = (TColor_mask&)m.get_sheet()->mask(); - - COLOR back, fore; - cm.get_cur_colors(back, fore); - const bool use_back = f.dlg() == 100; - - const COLOR col = choose_color(use_back ? back : fore, m.win()); - if (col != COLOR_INVALID) - { - if (use_back) - back = col; - else - fore = col; - cm.set_cur_colors(back, fore); - cm._sheet_mask->update(); - m.set_focus(); - } + switch (o.dlg()) + { + case DLG_DELREC: + if (e == fe_button) + { + reset_props(); + return false; // Evita chiusura maschera + } + break; + case DLG_USER: + switch (e) + { + case fe_init: + xvt_vobj_maximize(props().win().win()); + load_props(); + break; + case fe_close: + save_props(); + break; + default: + break; + } + break; + default: break; } - return TRUE; + return true; } -bool TColor_mask::reset_handler(TMask_field& f, KEY k) +void TColor_mask::load_props() { - if (k == K_SPACE && f.yesno_box(TR("Si desidera azzerare tutti i colori?"))) - { - app().reset_colors(); - TSheet_field& s = (TSheet_field&)f.mask().fld(0); - s.set_back_and_fore_color(COLOR_INVALID, COLOR_INVALID, -1); - s.force_update(); - } - return TRUE; -} - -TColor_mask::TColor_mask() - : TVariable_mask("cg2100k") -{ - set_handler(102, reset_handler); - - CHECK(_sheet_mask == NULL, "One color at time, please"); - _sheet_mask = new TRow_mask; - _sheet_mask->set_handler(99, color_handler); - _sheet_mask->set_handler(100, color_handler); - - TVariable_sheet_field& s = (TVariable_sheet_field&)fld(0); - s.set_getmask(get_mask); - - const char* const tipi = "TFSIDNAPRCGLKX"; const char* const desc[] = { - TR("Tot. doc./sdo partite"), + TR("Totale documento/saldo partite"), TR("Ritenute fiscali"), TR("Ritenute sociali"), TR("Generata (Imponibile)"), @@ -163,24 +80,63 @@ TColor_mask::TColor_mask() }; TPrimanota_application& a = app(); + TProp_field& ps = props(); + ps.freeze(true); - int row = 0, d = 0; - COLOR back, fore; - for (const char* c = tipi; *c; c++, d++) + int d = 0; + char prop[4] = "T_B"; + for (const char* k = _tipi; *k; k++, d++) { - a.type2colors(*c, back, fore); - TToken_string& riga = s.row(-1); - riga << TR("Riga ") << *c << " - " << desc[d]; - s.set_back_and_fore_color(back, fore, row++); + COLOR back, fore; + a.type2colors(*k, back, fore); + + prop[0] = *k; prop[1] = '\0'; + ps.set_property(prop, (const char*)NULL, desc[d]); + + prop[0] = *k; prop[1] = '_'; prop[2] = 'B'; + ps.set_property(prop, back, TR("Sfondo")); + + prop[2] = 'F'; + ps.set_property(prop, fore, TR("Testo")); + } + ps.freeze(false); +} + +void TColor_mask::reset_props() +{ + TProp_field& ps = props(); + ps.freeze(true); + char prop[4] = "T_B"; + for (const char* k = _tipi; *k; k++) + { + prop[0] = *k; + prop[2] = 'B'; + ps.set_property(prop, NORMAL_BACK_COLOR); + prop[2] = 'F'; + ps.set_property(prop, NORMAL_COLOR); + } + ps.freeze(false); +} + +void TColor_mask::save_props() +{ + TPrimanota_application& a = app(); + TProp_field& ps = props(); + + char prop[4] = "T_B"; + for (const char* k = _tipi; *k; k++) + { + prop[0] = *k; + prop[2] = 'B'; + const COLOR back = ps.get_color_property(prop); + prop[2] = 'F'; + const COLOR fore = ps.get_color_property(prop); + a.set_type_colors(*k, back, fore); } } -TColor_mask::~TColor_mask() -{ - delete _sheet_mask; - _sheet_mask = NULL; -} - +TColor_mask::TColor_mask() : TAutomask("cg2100k"), _tipi("TFSIDNAPRCGLKX") +{ } /////////////////////////////////////////////////////////// // Gestione righe colorate @@ -214,9 +170,9 @@ void TPrimanota_application::save_colors() bool should_delete = FALSE; if (tmp[5] == 'B') - should_delete = (col == NORMAL_BACK_COLOR); + should_delete = same_color(col, NORMAL_BACK_COLOR); else - should_delete = (col == NORMAL_COLOR); + should_delete = same_color(col, NORMAL_COLOR); if (should_delete) conf.remove(tmp);