Patch level : 4.0

Files correlati     : xvaga.dll
Ricompilazione Demo : [ ]
Commento            :
Tolte deprecazioni ed aggiunti gradienti


git-svn-id: svn://10.65.10.50/trunk@14925 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2007-02-19 09:36:55 +00:00
parent a44ba2f2a7
commit 7ad9cab875
4 changed files with 99 additions and 51 deletions

View File

@ -41,12 +41,12 @@
// Funzione interna di utilita' // Funzione interna di utilita'
MENU_ITEM* xvt_menu_duplicate_tree(const MENU_ITEM* m); MENU_ITEM* xvt_menu_duplicate_tree(const MENU_ITEM* m);
XVT_CONFIG* _config_ = NULL;
wxWindow* _task_win = NULL; wxWindow* _task_win = NULL;
wxWindow* _mouse_trapper = NULL; wxWindow* _mouse_trapper = NULL;
RCT _startup_rect = { 0,0,0,0 }; RCT _startup_rect = { 0,0,0,0 };
wxString* _startup_dir = NULL; wxString _startup_dir;
wxString _strDefaultStatbarText; wxString _strDefaultStatbarText;
wxString _appl_name;
static wxHashTable _nice_windows; static wxHashTable _nice_windows;
static wxHashTable _nice_icons; static wxHashTable _nice_icons;
@ -56,6 +56,9 @@ static XVT_ERRMSG_HANDLER _error_handler = NULL;
#define XVT_ASSERT(test) assert_box((test), __LINE__, __FILE__ ) #define XVT_ASSERT(test) assert_box((test), __LINE__, __FILE__ )
const wxString& _GetAppTitle()
{ return _appl_name; }
void assert_box(bool test, int line, const char * file) void assert_box(bool test, int line, const char * file)
{ {
if (!test) if (!test)
@ -63,9 +66,9 @@ void assert_box(bool test, int line, const char * file)
bool display = (_error_handler == NULL) || (_error_handler(SEV_FATAL, NULL) == FALSE); bool display = (_error_handler == NULL) || (_error_handler(SEV_FATAL, NULL) == FALSE);
if (display) if (display)
{ {
const wxString strMessage = wxString::Format("Sorry, the application passed some invalid parameters on line %d file %s.", line, file); wxString strMessage;
const wxString strCaption = "Emulated XVT Error "; strMessage.Printf("Sorry, the application passed some invalid parameters on line %d file %s.", line, file);
::wxMessageBox(strMessage, strCaption, wxOK|wxICON_ERROR); ::wxMessageBox(strMessage, _GetAppTitle(), wxOK|wxICON_ERROR);
} }
} }
} }
@ -110,7 +113,7 @@ wxRect NormalizeRCT(const RCT* prct)
wxString GetResourceIni() wxString GetResourceIni()
{ {
wxString strName; wxString strName;
strName = *_startup_dir; strName = _startup_dir;
strName += "/res/resource.ini"; strName += "/res/resource.ini";
return strName; return strName;
} }
@ -125,12 +128,12 @@ wxString GetResourceName(const char* type, int rid)
wxString val; wxString val;
if (ini.Read(wxString::Format("%d", rid), &val)) if (ini.Read(wxString::Format("%d", rid), &val))
{ {
strName = *_startup_dir; strName = _startup_dir;
strName += "/custom/"; strName += "/custom/";
strName += val; strName += val;
if (!wxFileExists(strName)) if (!wxFileExists(strName))
{ {
strName = *_startup_dir; strName = _startup_dir;
strName += "/res/"; strName += "/res/";
strName += val; strName += val;
} }
@ -1362,7 +1365,7 @@ void xvt_app_create(int argc, char **argv, unsigned long flags,
#endif #endif
_task_win_handler = eh; _task_win_handler = eh;
_config_ = config; _appl_name = config->appl_name;
const wxString title = config->taskwin_title; const wxString title = config->taskwin_title;
@ -1450,7 +1453,7 @@ void xvt_app_create(int argc, char **argv, unsigned long flags,
if (ret != 0) if (ret != 0)
{ {
// Simula main loop // Simula main loop
xvt_app_process_pending_events(); xvt_app_process_pending_events();
} }
a->ExitMainLoop(); // Non entrare nel main loop di wxWindows a->ExitMainLoop(); // Non entrare nel main loop di wxWindows
} }
@ -1479,9 +1482,8 @@ void xvt_app_process_pending_events(void)
if (a != NULL) if (a != NULL)
{ {
while (a->Pending()) while (a->Pending())
a->Dispatch(); a->Dispatch();
a->Yield(true);
a->Yield(true);
} }
} }
@ -1536,14 +1538,12 @@ char* xvt_cb_get_data(CB_FORMAT cbfmt, char *name, long *sizep)
BOOLEAN xvt_cb_has_format(CB_FORMAT fmt, char *name) BOOLEAN xvt_cb_has_format(CB_FORMAT fmt, char *name)
{ {
BOOLEAN ok = fmt == CB_TEXT && wxTheClipboard->IsSupported(wxDF_TEXT); return (fmt == CB_TEXT) && wxTheClipboard->IsSupported(wxDF_TEXT);
return ok;
} }
BOOLEAN xvt_cb_open(BOOLEAN writing) BOOLEAN xvt_cb_open(BOOLEAN writing)
{ {
wxTheClipboard->Open(); return wxTheClipboard->Open();
return TRUE;
} }
BOOLEAN xvt_cb_put_data(CB_FORMAT cbfmt, char *name, long size, PICTURE pic) BOOLEAN xvt_cb_put_data(CB_FORMAT cbfmt, char *name, long size, PICTURE pic)
@ -1737,16 +1737,6 @@ BOOLEAN xvt_dongle_sl_write_block(unsigned short reg, unsigned short size, const
// Common dialogs // Common dialogs
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
wxString _GetAppTitle()
{
wxString strTitle;
if (_config_ != NULL)
strTitle = _config_->appl_name;
else
strTitle = "CAMPO";
return strTitle;
}
COLOR xvt_dm_post_choose_color(WINDOW win, COLOR xc) COLOR xvt_dm_post_choose_color(WINDOW win, COLOR xc)
{ {
CAST_COLOR(xc, wc); CAST_COLOR(xc, wc);
@ -1772,7 +1762,6 @@ COLOR xvt_dm_post_choose_color(WINDOW win, COLOR xc)
return xc; return xc;
} }
class TwxCalendarDlg : public wxDialog class TwxCalendarDlg : public wxDialog
{ {
enum { ID_CAL = 1883 }; enum { ID_CAL = 1883 };
@ -1790,7 +1779,7 @@ public:
}; };
BEGIN_EVENT_TABLE(TwxCalendarDlg, wxDialog) BEGIN_EVENT_TABLE(TwxCalendarDlg, wxDialog)
EVT_CALENDAR(wxID_ANY, TwxCalendarDlg::OnCalendar) EVT_CALENDAR(wxID_ANY, TwxCalendarDlg::OnCalendar)
END_EVENT_TABLE() END_EVENT_TABLE()
void TwxCalendarDlg::OnCalendar(wxCalendarEvent& event) void TwxCalendarDlg::OnCalendar(wxCalendarEvent& event)
@ -1874,7 +1863,7 @@ BOOLEAN xvt_dm_post_speech(const char* text, int priority, BOOLEAN async)
return ok; return ok;
} }
ASK_RESPONSE xvt_dm_post_ask(const char* Btn1, const char*Btn2, const char* Btn3, const char* fmt) ASK_RESPONSE xvt_dm_post_ask(const char* Btn1, const char* Btn2, const char* Btn3, const char* fmt)
{ {
int nFlags = wxCENTRE | wxICON_QUESTION | wxYES_NO; int nFlags = wxCENTRE | wxICON_QUESTION | wxYES_NO;
if (Btn3 == NULL) if (Btn3 == NULL)
@ -1886,12 +1875,11 @@ ASK_RESPONSE xvt_dm_post_ask(const char* Btn1, const char*Btn2, const char* Btn3
nFlags |= wxCANCEL; nFlags |= wxCANCEL;
xvt_dm_post_speech(fmt, 3, TRUE); xvt_dm_post_speech(fmt, 3, TRUE);
const int answer = wxMessageBox(fmt, _GetAppTitle(), nFlags); const int answer = ::wxMessageBox(fmt, _GetAppTitle(), nFlags);
switch(answer) switch(answer)
{ {
case wxYES: xvt_dm_post_speech("si", 7, TRUE); break; case wxYES: xvt_dm_post_speech("si", 7, TRUE); break;
case wxNO : xvt_dm_post_speech("no", 7, TRUE); break; case wxNO : xvt_dm_post_speech("no", 7, TRUE); break;
default : xvt_dm_post_speech("annulla", 7, TRUE); break; default : xvt_dm_post_speech("annulla", 7, TRUE); break;
} }
@ -1996,14 +1984,14 @@ BOOLEAN xvt_dm_post_font_sel(WINDOW win, XVT_FNTID font_id, PRINT_RCD *precp, un
void xvt_dm_post_message(const char *fmt) void xvt_dm_post_message(const char *fmt)
{ {
xvt_dm_post_speech(fmt, 2, TRUE); xvt_dm_post_speech(fmt, 2, TRUE);
wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_INFORMATION); ::wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_INFORMATION);
xvt_dm_post_speech("OK", 7, TRUE); xvt_dm_post_speech("OK", 7, TRUE);
} }
void xvt_dm_post_note(const char *fmt) void xvt_dm_post_note(const char *fmt)
{ {
xvt_dm_post_speech(fmt, 2, TRUE); xvt_dm_post_speech(fmt, 2, TRUE);
wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_EXCLAMATION); ::wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_EXCLAMATION);
xvt_dm_post_speech("OK", 7, TRUE); xvt_dm_post_speech("OK", 7, TRUE);
} }
@ -2018,7 +2006,7 @@ char* xvt_dm_post_string_prompt(const char* message, char* response, int respons
void xvt_dm_post_warning(const char *fmt) void xvt_dm_post_warning(const char *fmt)
{ {
xvt_dm_post_speech(fmt, 1, TRUE); xvt_dm_post_speech(fmt, 1, TRUE);
wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_EXCLAMATION); ::wxMessageBox(fmt, _GetAppTitle(), wxOK | wxCENTRE | wxICON_EXCLAMATION);
xvt_dm_post_speech("OK", 7, TRUE); xvt_dm_post_speech("OK", 7, TRUE);
} }
@ -2320,6 +2308,47 @@ void xvt_dwin_draw_arc(WINDOW win, const RCT* r, int sx, int sy, int ex, int ey)
} }
} }
void xvt_dwin_draw_gradient_circular(WINDOW win, const RCT* r, COLOR col1, COLOR col2, const PNT* center)
{
if (r != NULL)
{
CAST_DC(win, dc);
const wxRect rect = NormalizeRCT(r);
CAST_COLOR(col1, color1);
CAST_COLOR(col2, color2);
if (center != NULL)
dc.GradientFillConcentric(rect, color1, color2, wxPoint(center->h, center->v));
else
dc.GradientFillConcentric(rect, color1, color2);
}
}
void xvt_dwin_draw_gradient_linear(WINDOW win, const RCT* r, COLOR col1, COLOR col2, int angle)
{
if (r != NULL)
{
CAST_DC(win, dc);
const wxRect rect = NormalizeRCT(r);
CAST_COLOR(col1, color1);
CAST_COLOR(col2, color2);
angle %= 360;
if (angle < 0)
angle += 360;
wxDirection dir = wxDOWN;
switch (angle / 90)
{
case 0: dir = wxRIGHT; break;
case 1: dir = wxUP; break;
case 2: dir = wxLEFT; break;
default: dir = wxDOWN; break;
}
dc.GradientFillLinear(rect, color1, color2, dir);
}
}
void xvt_dwin_draw_icon(WINDOW win, int x, int y, int rid) void xvt_dwin_draw_icon(WINDOW win, int x, int y, int rid)
{ {
wxIcon* ico = ::GetIconResource(rid); wxIcon* ico = ::GetIconResource(rid);
@ -3036,9 +3065,9 @@ BOOLEAN xvt_fsys_convert_str_to_fspec(const char *mbs, FILE_SPEC *fs)
void xvt_fsys_get_default_dir(DIRECTORY *dirp) void xvt_fsys_get_default_dir(DIRECTORY *dirp)
{ {
if (_startup_dir == NULL) if (_startup_dir.IsEmpty())
_startup_dir = new wxString(::wxGetCwd()); _startup_dir = ::wxGetCwd();
xvt_fsys_convert_str_to_dir(*_startup_dir, dirp); xvt_fsys_convert_str_to_dir(_startup_dir, dirp);
} }
BOOLEAN xvt_fsys_get_dir(DIRECTORY *dirp) BOOLEAN xvt_fsys_get_dir(DIRECTORY *dirp)
@ -3355,7 +3384,7 @@ XVT_IMAGE xvt_image_read(const char* filenamep)
wxString name; wxString name;
if (isalpha(filenamep[0u])) if (isalpha(filenamep[0u]))
{ {
name = *_startup_dir; name = _startup_dir;
name += "/"; name += "/";
} }
name += filenamep; name += filenamep;
@ -3733,6 +3762,15 @@ BOOLEAN xvt_rect_set_pos(RCT *rctp, PNT pos)
return ok; return ok;
} }
void xvt_rect_inflate(RCT *rctp, short ix, short iy)
{
if (rctp != NULL)
{
rctp->left -= ix; rctp->right += ix;
rctp->top -= iy; rctp->bottom += iy;
}
}
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Resource management // Resource management
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -4741,7 +4779,15 @@ long xvt_vobj_get_attr(WINDOW win, long data)
case ATTR_WIN_PM_DRAWABLE_TWIN: case ATTR_WIN_PM_DRAWABLE_TWIN:
ret = TRUE; ret = TRUE;
break; break;
default: SORRY_BOX(); break; case ATTR_ICON_WIDTH:
ret = wxSystemSettings::GetMetric(wxSYS_ICON_X);
break;
case ATTR_ICON_HEIGHT:
ret = wxSystemSettings::GetMetric(wxSYS_ICON_Y);
break;
default:
SORRY_BOX();
break;
} }
return ret; return ret;
} }

View File

@ -86,6 +86,6 @@ public:
virtual ~TPrintDC(); virtual ~TPrintDC();
}; };
wxString _GetAppTitle(); const wxString& _GetAppTitle();
#endif #endif

View File

@ -95,6 +95,8 @@ XVTDLL BOOLEAN xvt_dongle_sl_write_block(unsigned short reg, unsigned short size
XVTDLL void xvt_dwin_clear(WINDOW win, COLOR col); XVTDLL void xvt_dwin_clear(WINDOW win, COLOR col);
XVTDLL void xvt_dwin_draw_arc(WINDOW win, const RCT* r, int sx, int sy, int ex, int ey); XVTDLL void xvt_dwin_draw_arc(WINDOW win, const RCT* r, int sx, int sy, int ex, int ey);
XVTDLL void xvt_dwin_draw_icon(WINDOW win, int x, int y, int rid); XVTDLL void xvt_dwin_draw_icon(WINDOW win, int x, int y, int rid);
XVTDLL void xvt_dwin_draw_gradient_circular(WINDOW win, const RCT* r, COLOR col1, COLOR col2, const PNT* center); // Added by AGA
XVTDLL void xvt_dwin_draw_gradient_linear(WINDOW win, const RCT* r, COLOR col1, COLOR col2, int angle); // Added by AGA
XVTDLL void xvt_dwin_draw_image_on_pdf(WINDOW win, const char* name, RCT* dest); // Added by AGA XVTDLL void xvt_dwin_draw_image_on_pdf(WINDOW win, const char* name, RCT* dest); // Added by AGA
XVTDLL void xvt_dwin_draw_image(WINDOW win, XVT_IMAGE image, RCT* dest, RCT* source); XVTDLL void xvt_dwin_draw_image(WINDOW win, XVT_IMAGE image, RCT* dest, RCT* source);
XVTDLL void xvt_dwin_draw_oval(WINDOW Win, const RCT* r); XVTDLL void xvt_dwin_draw_oval(WINDOW Win, const RCT* r);
@ -262,6 +264,7 @@ XVTDLL void xvt_rect_offset(RCT *rctp, short dh, short dv);
XVTDLL void xvt_rect_set(RCT *rctp, short left, short top, short right, short bottom); XVTDLL void xvt_rect_set(RCT *rctp, short left, short top, short right, short bottom);
XVTDLL void xvt_rect_set_empty(RCT *rctp); XVTDLL void xvt_rect_set_empty(RCT *rctp);
XVTDLL BOOLEAN xvt_rect_set_pos(RCT *rctp, PNT pos); XVTDLL BOOLEAN xvt_rect_set_pos(RCT *rctp, PNT pos);
XVTDLL void xvt_rect_inflate(RCT *rctp, short ix, short iy);
XVTDLL void xvt_res_free_menu_tree(MENU_ITEM* tree); XVTDLL void xvt_res_free_menu_tree(MENU_ITEM* tree);
XVTDLL XVT_IMAGE xvt_res_get_image(int rid); XVTDLL XVT_IMAGE xvt_res_get_image(int rid);

View File

@ -450,12 +450,11 @@ CB_PICT, /* encapsulated picture */
CB_APPL /* app's own (must have name) */ CB_APPL /* app's own (must have name) */
} CB_FORMAT; } CB_FORMAT;
typedef struct s_xvt_config { typedef struct s_xvt_config
{
short menu_bar_ID; /* task menubar ResID */ short menu_bar_ID; /* task menubar ResID */
short about_box_ID; /* default aboutbox ResID */ short about_box_ID; /* default aboutbox ResID */
char *base_appl_name; /* application's "filename" */ const char* base_appl_name; /* application's "filename" */
char *appl_name; /* application's name */ const char* appl_name; /* application's name */
char *taskwin_title; /* title for task window */ const char* taskwin_title; /* title for task window */
} XVT_CONFIG; } XVT_CONFIG;