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
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

View File

@ -1,7 +1,10 @@
#include <automask.h>
#include <colors.h>
#include <execp.h>
#include <modaut.h>
#include <treectrl.h>
#include <utility.h>
#include <defmask.h>
#include <varmask.h>
#include "cg2100.h"
@ -11,142 +14,56 @@
// 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;
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);
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:
void get_cur_colors(COLOR& back, COLOR& fore) const;
void set_cur_colors(COLOR back, COLOR fore);
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()
bool TColor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
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);
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)
switch (o.dlg())
{
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)
case DLG_DELREC:
if (e == fe_button)
{
if (use_back)
back = col;
else
fore = col;
cm.set_cur_colors(back, fore);
cm._sheet_mask->update();
m.set_focus();
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);