Patch level : 2.0 664

Files correlati     : xvaga.dll
Ricompilazione Demo : [ ]
Commento            :

Aggiunta possibilita' di customizzare anche le icone dei bottoni
Migliorata funzione per determinare il nome della stampante


git-svn-id: svn://10.65.10.50/trunk@11680 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-12-19 08:17:48 +00:00
parent 5e957d628a
commit b978a2d3d8
3 changed files with 69 additions and 45 deletions

View File

@ -67,8 +67,6 @@ void xvt_sys_sorry_box(const char * file,int line)
}
}
#define CAST_WIN(win,w) XVT_ASSERT(win != NULL_WIN); wxWindow& w = *(wxWindow*)win
static bool RectIntersect(const wxRect &rect1, const wxRect &rect2)
{
if (rect1.GetRight() < rect2.GetLeft())
@ -93,22 +91,33 @@ wxRect NormalizeRCT(const RCT* prct)
return rct;
}
wxString GetResourceName(const char* type, int rid)
wxString GetResourceIni()
{
wxString strName;
strName = *_startup_dir;
strName += "/res/resource.ini";
wxFileConfig ini("", "", strName);
return strName;
}
strName = "/"; strName += type; strName += "s";
wxString GetResourceName(const char* type, int rid)
{
wxFileConfig ini("", "", GetResourceIni());
wxString strName = "/"; strName += type; strName += "s";
ini.SetPath(strName);
wxString val;
if (ini.Read(wxString::Format("%d", rid), &val))
{
strName = *_startup_dir;
strName += "/res/";
strName += "/custom/";
strName += val;
if (!wxFileExists(strName))
{
strName = *_startup_dir;
strName += "/res/";
strName += val;
}
}
else
strName.Empty();
@ -725,7 +734,7 @@ void TwxWindow::OnChar(wxKeyEvent& event)
if (event.AltDown())
{
e.v.chr.control = TRUE;
if (k >= 'a' && k <= 'z')
if (isalnum(k))
k = toupper(k);
else
{
@ -970,6 +979,7 @@ TwxWindow::~TwxWindow()
_nice_windows.Delete((WINDOW)this);
}
#define CAST_WIN(win,w) XVT_ASSERT(win != NULL_WIN); wxWindow& w = *(wxWindow*)win
#define CAST_TWIN(win,w) XVT_ASSERT(win != NULL_WIN); TwxWindow& w = *(TwxWindow*)win; XVT_ASSERT(_task_win != &w);
#define CAST_TDC(win,dc) XVT_ASSERT(win != NULL_WIN); TDC& dc = _dc_map.GetTDC((TwxWindow*)win);
#define CAST_DC(win,dc) XVT_ASSERT(win != NULL_WIN); wxDC& dc = _dc_map.GetDC((TwxWindow*)win);
@ -1199,7 +1209,7 @@ void xvt_app_create(int argc, char **argv, unsigned long flags,
style |= wxMAXIMIZE;
_task_win = new TTaskWin(NULL, ICON_RSRC, title, pos, size, style);
_nice_windows.Put((long)_task_win, _task_win);
_nice_windows.Put((WINDOW)_task_win, _task_win);
wxMenu* Menus[3];
wxString Title[3];
@ -2346,17 +2356,18 @@ void xvt_dwin_set_std_cpen(WINDOW win, long flag)
void xvt_dwin_draw_line(WINDOW win, PNT pnt)
{
CAST_TDC(win, dc);
CAST_TDC(win, tdc);
const wxPoint to(pnt.h, pnt.v);
if (dc._pnt != to)
dc.GetDC().DrawLine(dc._pnt, to);
dc.GetDC().DrawPoint(to);
dc._pnt = to;
wxDC& dc = tdc.GetDC();
if (tdc._pnt != to)
dc.DrawLine(tdc._pnt, to);
dc.DrawPoint(to);
tdc._pnt = to;
}
void xvt_dwin_update(WINDOW win)
{
CAST_TWIN(win, w);
CAST_WIN(win, w);
w.Update();
}
@ -3310,14 +3321,12 @@ static void FillMenuItem(const wxString& strValue, MENU_ITEM* mi)
MENU_ITEM* xvt_res_get_menu(int rid)
{
wxString strName;
strName = *_startup_dir;
strName += "/res/resource.ini";
wxFileConfig ini("", "", strName);
wxFileConfig ini("", "", GetResourceIni());
const int MAX_MENU = 16;
MENU_ITEM* TheMenu = (MENU_ITEM*)xvt_mem_zalloc(sizeof(MENU_ITEM)*MAX_MENU);
wxString strName;
if (rid >= 10000 && rid < 10100)
{
wxFileName::SplitPath(wxTheApp->argv[0], NULL, &strName, NULL);
@ -3506,12 +3515,14 @@ static void AddWinToList(SLIST list, WINDOW win)
SLIST xvt_scr_list_wins()
{
SLIST list = xvt_slist_create();
_nice_windows.BeginFind();
for (wxNode *node = _nice_windows.Next(); node; node = _nice_windows.Next())
{
WINDOW win = (WINDOW)node->GetData();
AddWinToList(list, win);
for (wxNode* node = _nice_windows.Next(); node; node = _nice_windows.Next())
{
wxObject* pWin = node->GetData();
AddWinToList(list, (WINDOW)pWin);
}
return list;
}
@ -4122,15 +4133,6 @@ long xvt_vobj_get_attr(WINDOW win, long data)
ret = (long)_error_handler;
break;
case ATTR_NATIVE_GRAPHIC_CONTEXT:
/*
if (_nice_windows.Get(win) != NULL)
{
#ifdef WIN32
CAST_DC(win, dc);
ret = dc.GetHDC();
#endif
}
*/
SORRY_BOX(); // Obsoleto e non piu' usato
break;
case ATTR_NATIVE_WINDOW:

View File

@ -215,7 +215,8 @@ XVTDLL void xvt_palet_set_tolerance(XVT_PALETTE p, int t);
XVTDLL void xvt_print_close(void);
XVTDLL BOOLEAN xvt_print_close_page(PRINT_RCD *precp);
XVTDLL PRINT_RCD* xvt_print_create(int *sizep);
XVTDLL PRINT_RCD* xvt_print_create_by_name(int* sizep, const char* name);
XVTDLL PRINT_RCD* xvt_print_create_by_name(int* sizep, const char* name); // Added by Aga
XVTDLL int xvt_print_get_name(PRINT_RCD *precp, char* name, int sz_s); // Added by Aga
XVTDLL WINDOW xvt_print_create_win(PRINT_RCD *precp, char *title);
XVTDLL void xvt_print_destroy(PRINT_RCD *precp);
XVTDLL RCT* xvt_print_get_next_band(void);

View File

@ -254,7 +254,6 @@ BOOLEAN xvt_dm_post_page_setup(PRINT_RCD* precp)
TPRINT_RCD* rcd = (TPRINT_RCD*)precp;
wxPageSetupData& pdd = dlg.GetPageSetupData();
// pdd.EnablePrinter(false); // Vieta di cambiare stampante
wxPrintData& data = pdd.GetPrintData();
#ifdef WIN32
@ -289,12 +288,7 @@ long xvt_fmap_get_family_sizes(PRINT_RCD *precp, char *family, long *size_array,
{
#ifdef WIN32
TwxPrintOut* po = m_PrintoutCache.Get((TPRINT_RCD*)precp);
if (po->HasBadDriver())
{
HDC hdc = ::GetDC(NULL); // Screen DC
size = OsWin32_EnumerateSizes((unsigned int)hdc, family, size_array, scalable, max_sizes);
}
else
if (!po->HasBadDriver())
size = OsWin32_EnumerateSizes(po->GetDC()->GetHDC(), family, size_array, scalable, max_sizes);
#else
size = OsLinux_EnumerateSizes(family, size_array, scalable, max_sizes);
@ -315,11 +309,7 @@ long xvt_fmap_get_families(PRINT_RCD *precp, char **family_array, long max_famil
TwxPrintOut* po = m_PrintoutCache.Get((TPRINT_RCD*)precp);
size = OsWin32_EnumerateFamilies(po->GetDC()->GetHDC(), family_array, max_families);
if (size == 0)
{
po->SetBadDriver(true);
HDC hdc = ::GetDC(NULL); // Screen DC
size = OsWin32_EnumerateFamilies((unsigned int)hdc, family_array, max_families);
}
#else
size = OsLinux_EnumerateFamilies(family_array, max_families);
#endif
@ -447,6 +437,36 @@ BOOLEAN xvt_print_is_valid(PRINT_RCD* precp)
return ok;
}
int xvt_print_get_name(PRINT_RCD* precp, char* name, int sz_s)
{
#ifdef WIN32
wxString n = ((const char*)precp) + 4;
if (n.Length() > 30)
{
SLIST plist = xvt_print_list_devices();
for (SLIST_ELT pitem = xvt_slist_get_first(plist);
pitem != NULL; pitem = xvt_slist_get_next(plist, pitem))
{
const wxString pname = xvt_slist_get(plist, pitem, NULL);
if (pname.StartsWith(n))
{
n = pname;
break;
}
}
xvt_slist_destroy(plist);
}
if (name != NULL && sz_s > 0)
{
strncpy(name, n, sz_s);
name[sz_s-1] = '\0';
}
return n.Length();
#else
return 0; // TBI
#endif
}
BOOLEAN xvt_print_open(void)
{
return m_po == NULL;
@ -498,13 +518,14 @@ BOOLEAN xvt_print_start_thread(BOOLEAN(*print_fcn)(long), long data)
DestroyAbortWindow();
#ifdef WIN32
// Stampa un line feed aggiuntivo nella stampa su generica solo testo in Win 98
int w, h;
m_po->GetPPIPrinter(&w, &h);
if (h == 6)
if (h == 6) // Solo Win 98 torna 6 pixel per pollice = 1 pixel per riga
{
wxDC* dc = m_po->GetDC();
dc->StartPage();
OsWin32_SpoolRow("\n\n", 1, dc->GetHDC());
OsWin32_SpoolRow("\n\n", 1, dc->GetHDC()); // Probabilmente basta "\n" (visto che poi specifichiamo 1) ma non ci fidiamo
dc->EndPage();
}
#endif