From 5ee91cc169f9aec12756fcfb61ac3916c37be365 Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 21 Nov 2008 10:14:46 +0000 Subject: [PATCH] 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 --- include/about.cpp | 15 ++++---- include/controls.cpp | 83 +++++++++++++------------------------------- include/mask.cpp | 22 ++++++++++++ include/netsock.cpp | 4 +-- include/recarray.cpp | 31 ++++++++++------- include/sheet.cpp | 11 +++--- include/varrec.cpp | 28 +++++---------- 7 files changed, 90 insertions(+), 104 deletions(-) diff --git a/include/about.cpp b/include/about.cpp index 49da746cf..e76da540c 100755 --- a/include/about.cpp +++ b/include/about.cpp @@ -53,8 +53,8 @@ TInfo_mask::TInfo_mask() { const word ser_no = dongle().number(); - int year = 2008, release = 10, tag = 0, patch = 1; - TString80 versione = "2008.10.00 Patch 0001"; + int year = 2091, release = 10, tag = 0, patch = 1; + TString80 versione = "2091.10.00 Patch 0001"; if (main_app().get_version_info(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); 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()) - printer = "Nessuna"; + printer = TR("Nessuna"); add_row(TR("Stampante"), printer, printer.len() >= 32); - xvt_print_pdf_version(printer.get_buffer(32), printer.size()); - add_row(TR("Libreria PDF"), printer); - add_row(TR("Libreria GUI"), strwx); + xvt_print_pdf_version(printer.get_buffer(), printer.size()); add_row(TR("Libreria DB"), strdb); + add_row(TR("Libreria GUI"), strwx); + add_row(TR("Libreria PDF"), printer); add_row(TR("Libreria SQL"), strsql); } diff --git a/include/controls.cpp b/include/controls.cpp index dfc5aa900..a4af9b117 100755 --- a/include/controls.cpp +++ b/include/controls.cpp @@ -305,6 +305,27 @@ XVT_FNTID xvtil_load_default_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]; 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); EASY_RIDER = colors.get_bool("EasyRider", NULL, -1, EASY_RIDER); EASY_RIDER_COLOR = blend_colors(NORMAL_BACK_COLOR, DISABLED_BACK_COLOR, 0.5); - if (ADVANCED_GRAPHICS) - { - const long dt = xvt_vobj_get_attr(NULL_WIN, ATTR_DISPLAY_TYPE); - ADVANCED_GRAPHICS = dt == XVT_DISPLAY_DIRECT_COLOR; // Always true from 1995 + NATIVE_CONTROLS = ADVANCED_GRAPHICS && colors.get_bool("NativeControls", NULL, -1, NATIVE_CONTROLS); + xi_set_pref(XI_PREF_NATIVE_CTRLS, NATIVE_CONTROLS); - if (ADVANCED_GRAPHICS) - { - NATIVE_CONTROLS = colors.get_bool("NativeControls", NULL, -1, NATIVE_CONTROLS); - xi_set_pref(XI_PREF_NATIVE_CTRLS, NATIVE_CONTROLS); - } - } TOOL_SIZE = colors.get_int("ToolSize", NULL, -1, TOOL_SIZE); 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); 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; } -// 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, 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->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) { 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; case a_select: diff --git a/include/mask.cpp b/include/mask.cpp index 43af635a8..c6a68796e 100755 --- a/include/mask.cpp +++ b/include/mask.cpp @@ -903,6 +903,28 @@ void TMask::handler(WINDOW w, EVENT* ep) } 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); } diff --git a/include/netsock.cpp b/include/netsock.cpp index 34684ac37..a98cb0f22 100755 --- a/include/netsock.cpp +++ b/include/netsock.cpp @@ -800,8 +800,8 @@ static const TString& bytes2str(long b) if (b > 0) { const long mega = 1024*1024; - if (b >= mega) - tmp.format("%.1lf MBytes", double(b)/mega); + if (b >= 2*mega) + tmp.format("%.2lf MBytes", double(b)/mega); else { const long kappa = 1024; diff --git a/include/recarray.cpp b/include/recarray.cpp index e32e9f3ee..0dbcb7ce8 100755 --- a/include/recarray.cpp +++ b/include/recarray.cpp @@ -720,24 +720,31 @@ TObject* TDecoder::rec2obj(const TRectype& curr) const const TString& TDecoder::decode(const char* code) { - TString80 key; - switch (file().num()) + if (code && *code) { - case LF_TABMOD: key << file().get("MOD") << '|' << file().get("CUST") << '|'; // Fall down - case LF_TAB: - case LF_TABCOM: key << file().name() << '|'; break; - default: break; + TString80 key; + if (strchr(code, '|') == NULL) + { + switch (file().num()) + { + case LF_TABMOD: key << file().get("MOD") << '|' << file().get("CUST") << '|'; // Fall down + case LF_TAB: + case LF_TABCOM: key << file().name() << '|'; break; + default: break; + } + } + key << code; + const TString& obj = (const TString&)query(key); + return obj; } - key << code; - const TString& obj = (const TString&)query(key); - return obj; + return EMPTY_STRING; } const TString& TDecoder::decode(long code) { if (code > 0) { - TString16 c; c << code; + TString8 c; c << code; return decode(c); } return EMPTY_STRING; @@ -772,7 +779,7 @@ const TRectype& TRecord_cache::get(const char* key) const TRectype& TRecord_cache::get(long key) { - TString16 str; str << key; + TString8 str; str << key; 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) { - CHECKD(file >= LF_USER, "Invalid file ", file); + CHECKD(file >= LF_USER && file < LF_EXTERNAL, "Invalid file ", file); TRecord_cache* rc = (TRecord_cache*)objptr(file); if (rc == NULL) { diff --git a/include/sheet.cpp b/include/sheet.cpp index 13efe7c39..a639fc0c7 100755 --- a/include/sheet.cpp +++ b/include/sheet.cpp @@ -243,11 +243,11 @@ TSheet_control::TSheet_control( 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; - if (_type[i] == 'C') - attr |= XI_ATR_SELECTABLE; + if (i == 0 && _type[i] == 'C') + attr |= XI_ATR_SELECTABLE; if (_type[i] == 'R' || _type[i] == 'V' || _type[i] == 'P') // Right, Currency, Price attr |= XI_ATR_RJUST; - coldef = xi_add_column_def(listdef, FIRST_FIELD+i+1000, attr, i+1, + coldef = xi_add_column_def(listdef, FIRST_FIELD+i+1000, attr, i+1, v_width[i] * XI_FU_MULTIPLE, m_width[i], (char*)h); coldef->app_data = (long)this; @@ -296,7 +296,7 @@ TSheet_control::TSheet_control( XI_OBJ** column = xi_get_member_list(_obj, &num); 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; } } @@ -357,7 +357,6 @@ void TSheet_control::update(long n) } else { - // xi_cell_request(_obj); int num = 0; 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 { - 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; } break; diff --git a/include/varrec.cpp b/include/varrec.cpp index f5bc9c8cf..00a126f64 100755 --- a/include/varrec.cpp +++ b/include/varrec.cpp @@ -143,7 +143,7 @@ TVariable_rectype::TVariable_rectype(const TVariable_rectype& r) : TRectype((const TRectype &) r), _memo_fld_to_load(FALSE) { _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 @@ -203,15 +203,10 @@ void TVariable_rectype::set_variables(TExpression * e) const void TVariable_rectype::set_memo_fld( const char * fieldname) { - if (fieldname && *fieldname) - { - if (type(fieldname) == _memofld) - _memo_fld = fieldname; - else - NFCHECK("Campo memo non esistente %s", fieldname); - } + if (fieldname && *fieldname && type(fieldname) == _memofld) + _memo_fld = fieldname; else - _memo_fld.cut(0); + _memo_fld.cut(0); } void TVariable_rectype::init_memo(TRecnotype recno, TIsam_handle file) @@ -228,7 +223,6 @@ TObject* TVariable_rectype::dup() const } TFieldtypes TVariable_rectype::type(const char* fieldname) const - { if (_virtual_fields.objptr(fieldname)) return _alfafld; @@ -237,7 +231,6 @@ TFieldtypes TVariable_rectype::type(const char* fieldname) const int TVariable_rectype::length(const char* fieldname) const - { if (_virtual_fields.objptr(fieldname)) 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 - { if (_virtual_fields.objptr(fieldname)) return 0; @@ -257,7 +249,7 @@ int TVariable_rectype::ndec(const char* fieldname) const bool TVariable_rectype::exist(const char* fieldname) const { if (_virtual_fields.is_key(fieldname)) - return TRUE; + return true; 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; v.zero(); } void TVariable_rectype::zero(char 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); - _virtual_fields.for_each(zero_virtual_fields); + _virtual_fields.for_each(zero_virtual_field); return *this; } @@ -363,7 +353,7 @@ TRectype & TVariable_rectype::operator =(const TRectype & rec) TRectype & TVariable_rectype::operator =(const char* rec) { TRectype::operator =(rec); - _virtual_fields.for_each(zero_virtual_fields); + _virtual_fields.for_each(zero_virtual_field); return *this; }