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
This commit is contained in:
guy 2009-03-17 11:03:49 +00:00
parent 781b7bda8a
commit 51ed2733f0
2 changed files with 99 additions and 171 deletions

View File

@ -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 BEGIN
PROMPT 1 1 "Colori" PROMPT 1 1 "Colori"
ITEM "Colore@32"
FLAGS "D"
END END
ENDPAGE ENDPAGE
@ -13,46 +11,20 @@ TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -33 -1 "" PROMPT 1 -1 ""
END END
BUTTON 102 10 2 BUTTON DLG_DELREC 10 2
BEGIN BEGIN
PROMPT -13 -1 "A~zzera" PROMPT 2 -1 "A~zzera"
PICTURE TOOL_DELREC
END END
BUTTON DLG_CANCEL 10 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -23 -1 "" PROMPT 3 -1 ""
END END
ENDPAGE ENDPAGE
ENDMASK 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

View File

@ -1,7 +1,10 @@
#include <automask.h>
#include <colors.h> #include <colors.h>
#include <execp.h> #include <execp.h>
#include <modaut.h> #include <modaut.h>
#include <treectrl.h>
#include <utility.h> #include <utility.h>
#include <defmask.h>
#include <varmask.h> #include <varmask.h>
#include "cg2100.h" #include "cg2100.h"
@ -11,142 +14,56 @@
// Maschere per colori // Maschere per colori
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TRow_mask : public TMask class TColor_mask : public TAutomask
{
public:
virtual void update();
TRow_mask();
virtual ~TRow_mask() { }
};
class TColor_mask : public TVariable_mask
{ {
HIDDEN TRow_mask* _sheet_mask; const char* const _tipi;
HIDDEN TMask* get_mask(int, TMask&) { return _sheet_mask; }
protected: protected:
static bool color_handler(TMask_field& f, KEY k); TProp_field& props() { return (TProp_field&)field(DLG_USER); }
static bool reset_handler(TMask_field& f, KEY k); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void load_props();
public: void reset_props();
void get_cur_colors(COLOR& back, COLOR& fore) const; void save_props();
void set_cur_colors(COLOR back, COLOR fore);
public:
TColor_mask(); TColor_mask();
virtual ~TColor_mask();
}; };
/////////////////////////////////////////////////////////// bool TColor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
// 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
{ {
TSheet_field& s = (TSheet_field&)fld(0); switch (o.dlg())
TToken_string& row = s.row(s.selected()); {
const char tipo = row[5]; case DLG_DELREC:
app().type2colors(tipo, back, fore); if (e == fe_button)
} {
reset_props();
void TColor_mask::set_cur_colors(COLOR back, COLOR fore) return false; // Evita chiusura maschera
{ }
TSheet_field& s = (TSheet_field&)fld(0); break;
int cur = s.selected(); case DLG_USER:
TToken_string& row = s.row(cur); switch (e)
const char tipo = row[5]; {
app().set_type_colors(tipo, back, fore); case fe_init:
s.set_back_and_fore_color(back, fore, cur); xvt_vobj_maximize(props().win().win());
s.force_update(cur); load_props();
} break;
case fe_close:
bool TColor_mask::color_handler(TMask_field& f, KEY k) save_props();
{ break;
if (k == K_SPACE) default:
{ break;
TMask& m = f.mask(); }
TColor_mask& cm = (TColor_mask&)m.get_sheet()->mask(); break;
default: break;
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();
}
} }
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[] = const char* const desc[] =
{ {
TR("Tot. doc./sdo partite"), TR("Totale documento/saldo partite"),
TR("Ritenute fiscali"), TR("Ritenute fiscali"),
TR("Ritenute sociali"), TR("Ritenute sociali"),
TR("Generata (Imponibile)"), TR("Generata (Imponibile)"),
@ -163,24 +80,63 @@ TColor_mask::TColor_mask()
}; };
TPrimanota_application& a = app(); TPrimanota_application& a = app();
TProp_field& ps = props();
ps.freeze(true);
int row = 0, d = 0; int d = 0;
COLOR back, fore; char prop[4] = "T_B";
for (const char* c = tipi; *c; c++, d++) for (const char* k = _tipi; *k; k++, d++)
{ {
a.type2colors(*c, back, fore); COLOR back, fore;
TToken_string& riga = s.row(-1); a.type2colors(*k, back, fore);
riga << TR("Riga ") << *c << " - " << desc[d];
s.set_back_and_fore_color(back, fore, row++); 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() TColor_mask::TColor_mask() : TAutomask("cg2100k"), _tipi("TFSIDNAPRCGLKX")
{ { }
delete _sheet_mask;
_sheet_mask = NULL;
}
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Gestione righe colorate // Gestione righe colorate
@ -214,9 +170,9 @@ void TPrimanota_application::save_colors()
bool should_delete = FALSE; bool should_delete = FALSE;
if (tmp[5] == 'B') if (tmp[5] == 'B')
should_delete = (col == NORMAL_BACK_COLOR); should_delete = same_color(col, NORMAL_BACK_COLOR);
else else
should_delete = (col == NORMAL_COLOR); should_delete = same_color(col, NORMAL_COLOR);
if (should_delete) if (should_delete)
conf.remove(tmp); conf.remove(tmp);