Patch level : 10.0

Files correlati     : tutti
Ricompilazione Demo : [ ]
Commento            :
Aggiunta dicitura "Custom" a pie' paginea delle maschere personalizzate
Corretta decodifica tabelle comuni e di modulo


git-svn-id: svn://10.65.10.50/trunk@17691 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2008-11-21 10:14:46 +00:00
parent 7dd5d55116
commit 5ee91cc169
7 changed files with 90 additions and 104 deletions

View File

@ -53,8 +53,8 @@ TInfo_mask::TInfo_mask()
{ {
const word ser_no = dongle().number(); const word ser_no = dongle().number();
int year = 2008, release = 10, tag = 0, patch = 1; int year = 2091, release = 10, tag = 0, patch = 1;
TString80 versione = "2008.10.00 Patch 0001"; TString80 versione = "2091.10.00 Patch 0001";
if (main_app().get_version_info(year, release, tag, patch)) if (main_app().get_version_info(year, release, tag, patch))
versione.format("%d.%02d.%02d Patch %04d", year, release, tag, patch); versione.format("%d.%02d.%02d Patch %04d", year, release, tag, patch);
@ -137,15 +137,16 @@ TInfo_mask::TInfo_mask()
TString16 strmb; strmb.format("%ld Mb", mbfree); TString16 strmb; strmb.format("%ld Mb", mbfree);
add_row(TR("Spazio su disco"), strmb, mbfree < 512); add_row(TR("Spazio su disco"), strmb, mbfree < 512);
TString printer(userini.get("Name", "Printer")); TString printer;
printer = userini.get("Name", "Printer");
if (printer.blank()) if (printer.blank())
printer = "Nessuna"; printer = TR("Nessuna");
add_row(TR("Stampante"), printer, printer.len() >= 32); add_row(TR("Stampante"), printer, printer.len() >= 32);
xvt_print_pdf_version(printer.get_buffer(32), printer.size()); xvt_print_pdf_version(printer.get_buffer(), printer.size());
add_row(TR("Libreria PDF"), printer);
add_row(TR("Libreria GUI"), strwx);
add_row(TR("Libreria DB"), strdb); add_row(TR("Libreria DB"), strdb);
add_row(TR("Libreria GUI"), strwx);
add_row(TR("Libreria PDF"), printer);
add_row(TR("Libreria SQL"), strsql); add_row(TR("Libreria SQL"), strsql);
} }

View File

@ -305,6 +305,27 @@ XVT_FNTID xvtil_load_default_font()
return font; return font;
} }
#define XI_INVALID_BITMAP ((XI_BITMAP*)-1)
HIDDEN XI_BITMAP* get_background_bitmap(bool reload)
{
static XI_BITMAP* bmp = XI_INVALID_BITMAP;
if (reload || bmp == XI_INVALID_BITMAP)
{
if (bmp != NULL && bmp != XI_INVALID_BITMAP)
xi_bitmap_destroy(bmp);
bmp = NULL;
if (ADVANCED_GRAPHICS && !NATIVE_CONTROLS)
{
TConfig ini(CONFIG_GUI, "Colors");
TFilename back = ini.get("Tile");
if (back.custom_path())
bmp = xi_bitmap_create(back.get_buffer(), XI_BITMAP_TILE);
}
}
return bmp;
}
static byte event_map[XIE_LAST_EVENT]; static byte event_map[XIE_LAST_EVENT];
enum event_action { a_ignore, a_xvt, a_xvt_post, a_obj, a_child, a_update, a_select, a_post, a_debug }; enum event_action { a_ignore, a_xvt, a_xvt_post, a_obj, a_child, a_update, a_select, a_post, a_debug };
@ -338,19 +359,12 @@ void customize_colors()
ADVANCED_GRAPHICS = colors.get_bool("AdvancedGraphics", NULL, -1, ADVANCED_GRAPHICS); ADVANCED_GRAPHICS = colors.get_bool("AdvancedGraphics", NULL, -1, ADVANCED_GRAPHICS);
EASY_RIDER = colors.get_bool("EasyRider", NULL, -1, EASY_RIDER); EASY_RIDER = colors.get_bool("EasyRider", NULL, -1, EASY_RIDER);
EASY_RIDER_COLOR = blend_colors(NORMAL_BACK_COLOR, DISABLED_BACK_COLOR, 0.5); EASY_RIDER_COLOR = blend_colors(NORMAL_BACK_COLOR, DISABLED_BACK_COLOR, 0.5);
if (ADVANCED_GRAPHICS) NATIVE_CONTROLS = ADVANCED_GRAPHICS && colors.get_bool("NativeControls", NULL, -1, NATIVE_CONTROLS);
{
const long dt = xvt_vobj_get_attr(NULL_WIN, ATTR_DISPLAY_TYPE);
ADVANCED_GRAPHICS = dt == XVT_DISPLAY_DIRECT_COLOR; // Always true from 1995
if (ADVANCED_GRAPHICS)
{
NATIVE_CONTROLS = colors.get_bool("NativeControls", NULL, -1, NATIVE_CONTROLS);
xi_set_pref(XI_PREF_NATIVE_CTRLS, NATIVE_CONTROLS); xi_set_pref(XI_PREF_NATIVE_CTRLS, NATIVE_CONTROLS);
}
}
TOOL_SIZE = colors.get_int("ToolSize", NULL, -1, TOOL_SIZE); TOOL_SIZE = colors.get_int("ToolSize", NULL, -1, TOOL_SIZE);
TOOL_TEXT = colors.get_bool("ToolText", NULL, -1, TOOL_TEXT); TOOL_TEXT = colors.get_bool("ToolText", NULL, -1, TOOL_TEXT);
get_background_bitmap(true); // Reload background bitmap
const int SPEECH_MODE = colors.get_int("SpeechMode", NULL, -1, 0); const int SPEECH_MODE = colors.get_int("SpeechMode", NULL, -1, 0);
xvt_vobj_set_attr(NULL_WIN, ATTR_SPEECH_MODE, SPEECH_MODE); xvt_vobj_set_attr(NULL_WIN, ATTR_SPEECH_MODE, SPEECH_MODE);
@ -485,26 +499,6 @@ HIDDEN void init_fu_multiple(XI_OBJ* itf)
Y_FU_MULTIPLE = max_rct.bottom / 25; Y_FU_MULTIPLE = max_rct.bottom / 25;
} }
// OBSOLETE
// #define MASK_RECT_ID -883
HIDDEN XI_BITMAP* get_background_bitmap()
{
static XI_BITMAP* bmp = (XI_BITMAP*)-1;
if (bmp == (XI_BITMAP*)-1)
{
bmp = NULL;
if (ADVANCED_GRAPHICS && !NATIVE_CONTROLS)
{
TConfig ini(CONFIG_GUI, "Colors");
TFilename back = ini.get("Tile");
if (back.custom_path())
bmp = xi_bitmap_create(back.get_buffer(), XI_BITMAP_TILE);
}
}
return bmp;
}
WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy, WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy,
const char* caption, TWindow* msk) const char* caption, TWindow* msk)
{ {
@ -563,7 +557,7 @@ WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy,
def->v.itf->edit_menu = true; // Update edit menu items def->v.itf->edit_menu = true; // Update edit menu items
def->v.itf->menu_win = (XinWindow)TASK_WIN; // Window that owns the menu def->v.itf->menu_win = (XinWindow)TASK_WIN; // Window that owns the menu
XI_BITMAP* bmpback = get_background_bitmap(); XI_BITMAP* bmpback = get_background_bitmap(false);
if (bmpback != NULL) if (bmpback != NULL)
{ {
def->v.itf->back_color = 0; def->v.itf->back_color = 0;
@ -644,33 +638,6 @@ HIDDEN void xi_event_handler(XI_OBJ* itf, XI_EVENT* xiev)
} }
} }
} }
TWindow* msk = (TWindow*)xi_get_app_data(itf);
if (msk != NULL && msk->is_kind_of(CLASS_MASK))
{
const TMask& m = (const TMask&)*msk;
WINDOW win = m.page_win(0);
if ((WINDOW)xi_get_window(itf) == win)
{
if (m.number() == 0 && m.source_file().find("custom") > 0)
{
RCT rct; xvt_vobj_get_client_rect(win, &rct);
rct.left += 2; rct.right -= 2; rct.bottom -= 2;
DRAW_CTOOLS dct;
xvt_dwin_get_draw_ctools(win, &dct);
dct.fore_color = FOCUS_COLOR;
dct.back_color = FOCUS_BACK_COLOR;
dct.opaque_text = TRUE;
xvt_dwin_set_draw_ctools(win, &dct);
xvt_dwin_set_font(win, DEF_FONT);
const char* text = "Custom";
const int tw = xvt_dwin_get_text_width(win, text, -1);
xvt_dwin_draw_text(win, rct.left, rct.bottom, text, -1);
xvt_dwin_draw_text(win, (rct.right-rct.left-tw)/2, rct.bottom, text, -1);
xvt_dwin_draw_text(win, rct.right-tw, rct.bottom, text, -1);
}
}
}
} }
break; break;
case a_select: case a_select:

View File

@ -904,6 +904,28 @@ void TMask::handler(WINDOW w, EVENT* ep)
return; return;
} }
if (ep->type == E_UPDATE && w == page_win(0))
{
if (source_file().find("custom") > 0)
{
RCT rct; xvt_vobj_get_client_rect(w, &rct);
rct.left += 2; rct.right -= 2; rct.bottom -= 2;
DRAW_CTOOLS dct;
xvt_dwin_get_draw_ctools(w, &dct);
dct.fore_color = FOCUS_COLOR;
dct.back_color = FOCUS_BACK_COLOR;
dct.opaque_text = TRUE;
xvt_dwin_set_draw_ctools(w, &dct);
//xvt_dwin_set_font(w, DEF_FONT);
xvt_dwin_set_clip(w, NULL);
const char* text = "Custom";
const int tw = xvt_dwin_get_text_width(w, text, -1);
xvt_dwin_draw_text(w, rct.left, rct.bottom, text, -1);
xvt_dwin_draw_text(w, (rct.right-rct.left-tw)/2, rct.bottom, text, -1);
xvt_dwin_draw_text(w, rct.right-tw, rct.bottom, text, -1);
}
}
TWindow::handler(w, ep); TWindow::handler(w, ep);
} }

View File

@ -800,8 +800,8 @@ static const TString& bytes2str(long b)
if (b > 0) if (b > 0)
{ {
const long mega = 1024*1024; const long mega = 1024*1024;
if (b >= mega) if (b >= 2*mega)
tmp.format("%.1lf MBytes", double(b)/mega); tmp.format("%.2lf MBytes", double(b)/mega);
else else
{ {
const long kappa = 1024; const long kappa = 1024;

View File

@ -720,7 +720,11 @@ TObject* TDecoder::rec2obj(const TRectype& curr) const
const TString& TDecoder::decode(const char* code) const TString& TDecoder::decode(const char* code)
{ {
if (code && *code)
{
TString80 key; TString80 key;
if (strchr(code, '|') == NULL)
{
switch (file().num()) switch (file().num())
{ {
case LF_TABMOD: key << file().get("MOD") << '|' << file().get("CUST") << '|'; // Fall down case LF_TABMOD: key << file().get("MOD") << '|' << file().get("CUST") << '|'; // Fall down
@ -728,16 +732,19 @@ const TString& TDecoder::decode(const char* code)
case LF_TABCOM: key << file().name() << '|'; break; case LF_TABCOM: key << file().name() << '|'; break;
default: break; default: break;
} }
}
key << code; key << code;
const TString& obj = (const TString&)query(key); const TString& obj = (const TString&)query(key);
return obj; return obj;
}
return EMPTY_STRING;
} }
const TString& TDecoder::decode(long code) const TString& TDecoder::decode(long code)
{ {
if (code > 0) if (code > 0)
{ {
TString16 c; c << code; TString8 c; c << code;
return decode(c); return decode(c);
} }
return EMPTY_STRING; return EMPTY_STRING;
@ -772,7 +779,7 @@ const TRectype& TRecord_cache::get(const char* key)
const TRectype& TRecord_cache::get(long key) const TRectype& TRecord_cache::get(long key)
{ {
TString16 str; str << key; TString8 str; str << key;
return get(str); return get(str);
} }
@ -792,7 +799,7 @@ const TString& TRecord_cache::get(long key, const char* field)
TRecord_cache& TDB_cache::rec_cache(int file) TRecord_cache& TDB_cache::rec_cache(int file)
{ {
CHECKD(file >= LF_USER, "Invalid file ", file); CHECKD(file >= LF_USER && file < LF_EXTERNAL, "Invalid file ", file);
TRecord_cache* rc = (TRecord_cache*)objptr(file); TRecord_cache* rc = (TRecord_cache*)objptr(file);
if (rc == NULL) if (rc == NULL)
{ {

View File

@ -243,7 +243,7 @@ TSheet_control::TSheet_control(
for (h = new_header.get(0), i = 0; h && i < MAX_COL; h = new_header.get(), i++) for (h = new_header.get(0), i = 0; h && i < MAX_COL; h = new_header.get(), i++)
{ {
long attr = XI_ATR_VISIBLE | XI_ATR_ENABLED | XI_ATR_AUTOSCROLL | XI_ATR_READONLY; long attr = XI_ATR_VISIBLE | XI_ATR_ENABLED | XI_ATR_AUTOSCROLL | XI_ATR_READONLY;
if (_type[i] == 'C') if (i == 0 && _type[i] == 'C')
attr |= XI_ATR_SELECTABLE; attr |= XI_ATR_SELECTABLE;
if (_type[i] == 'R' || _type[i] == 'V' || _type[i] == 'P') // Right, Currency, Price if (_type[i] == 'R' || _type[i] == 'V' || _type[i] == 'P') // Right, Currency, Price
attr |= XI_ATR_RJUST; attr |= XI_ATR_RJUST;
@ -296,7 +296,7 @@ TSheet_control::TSheet_control(
XI_OBJ** column = xi_get_member_list(_obj, &num); XI_OBJ** column = xi_get_member_list(_obj, &num);
for (i = 0; i < num; i++) for (i = 0; i < num; i++)
{ {
RCT rct; xi_get_rect(column[i], (XinRect *) &rct); RCT rct; xi_get_rect(column[i], (XinRect*)&rct);
_default_width[i] = rct.right - rct.left; _default_width[i] = rct.right - rct.left;
} }
} }
@ -357,7 +357,6 @@ void TSheet_control::update(long n)
} }
else else
{ {
// xi_cell_request(_obj);
int num = 0; int num = 0;
const long* handle = xi_get_list_info(_obj, &num); const long* handle = xi_get_list_info(_obj, &num);
@ -761,7 +760,7 @@ bool TSheet_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
{ {
case 'C': // Set value for "checkable" cell case 'C': // Set value for "checkable" cell
{ {
const bool on = checked(rec); const bool on = col == 0 ? checked(rec) : row(rec).get_char(col) > ' ';
xiev->v.cell_request.icon_rid = on ? ICO_CHECK_ON : ICO_CHECK_OFF; xiev->v.cell_request.icon_rid = on ? ICO_CHECK_ON : ICO_CHECK_OFF;
} }
break; break;

View File

@ -143,7 +143,7 @@ TVariable_rectype::TVariable_rectype(const TVariable_rectype& r)
: TRectype((const TRectype &) r), _memo_fld_to_load(FALSE) : TRectype((const TRectype &) r), _memo_fld_to_load(FALSE)
{ {
_virtual_fields = r._virtual_fields; _virtual_fields = r._virtual_fields;
_memo_fld = r._memo_fld; set_memo_fld(r._memo_fld);
} }
void TVariable_rectype::unknown_field(const char* name) const void TVariable_rectype::unknown_field(const char* name) const
@ -203,13 +203,8 @@ void TVariable_rectype::set_variables(TExpression * e) const
void TVariable_rectype::set_memo_fld( const char * fieldname) void TVariable_rectype::set_memo_fld( const char * fieldname)
{ {
if (fieldname && *fieldname) if (fieldname && *fieldname && type(fieldname) == _memofld)
{
if (type(fieldname) == _memofld)
_memo_fld = fieldname; _memo_fld = fieldname;
else
NFCHECK("Campo memo non esistente %s", fieldname);
}
else else
_memo_fld.cut(0); _memo_fld.cut(0);
} }
@ -228,7 +223,6 @@ TObject* TVariable_rectype::dup() const
} }
TFieldtypes TVariable_rectype::type(const char* fieldname) const TFieldtypes TVariable_rectype::type(const char* fieldname) const
{ {
if (_virtual_fields.objptr(fieldname)) if (_virtual_fields.objptr(fieldname))
return _alfafld; return _alfafld;
@ -237,7 +231,6 @@ TFieldtypes TVariable_rectype::type(const char* fieldname) const
int TVariable_rectype::length(const char* fieldname) const int TVariable_rectype::length(const char* fieldname) const
{ {
if (_virtual_fields.objptr(fieldname)) if (_virtual_fields.objptr(fieldname))
return ((TVariable_field *)_virtual_fields.objptr(fieldname))->lenght(); return ((TVariable_field *)_virtual_fields.objptr(fieldname))->lenght();
@ -246,7 +239,6 @@ int TVariable_rectype::length(const char* fieldname) const
int TVariable_rectype::ndec(const char* fieldname) const int TVariable_rectype::ndec(const char* fieldname) const
{ {
if (_virtual_fields.objptr(fieldname)) if (_virtual_fields.objptr(fieldname))
return 0; return 0;
@ -257,7 +249,7 @@ int TVariable_rectype::ndec(const char* fieldname) const
bool TVariable_rectype::exist(const char* fieldname) const bool TVariable_rectype::exist(const char* fieldname) const
{ {
if (_virtual_fields.is_key(fieldname)) if (_virtual_fields.is_key(fieldname))
return TRUE; return true;
return TRectype::exist(fieldname); return TRectype::exist(fieldname);
} }
@ -323,18 +315,16 @@ void TVariable_rectype::zero(const char* fieldname)
} }
HIDDEN void zero_virtual_fields(const TObject & o) HIDDEN void zero_virtual_field(const TObject & o)
{ {
TVariable_field & v = (TVariable_field &) o; TVariable_field & v = (TVariable_field &) o;
v.zero(); v.zero();
} }
void TVariable_rectype::zero(char c) void TVariable_rectype::zero(char c)
{ {
TRectype::zero(c); TRectype::zero(c);
_virtual_fields.for_each(zero_virtual_fields); _virtual_fields.for_each(zero_virtual_field);
} }
@ -355,7 +345,7 @@ TRectype & TVariable_rectype::operator =(const TRectype & rec)
{ {
TRectype::operator =(rec); TRectype::operator =(rec);
_virtual_fields.for_each(zero_virtual_fields); _virtual_fields.for_each(zero_virtual_field);
return *this; return *this;
} }
@ -363,7 +353,7 @@ TRectype & TVariable_rectype::operator =(const TRectype & rec)
TRectype & TVariable_rectype::operator =(const char* rec) TRectype & TVariable_rectype::operator =(const char* rec)
{ {
TRectype::operator =(rec); TRectype::operator =(rec);
_virtual_fields.for_each(zero_virtual_fields); _virtual_fields.for_each(zero_virtual_field);
return *this; return *this;
} }