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:
parent
7dd5d55116
commit
5ee91cc169
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user