Correzioni per impostazione stampante

git-svn-id: svn://10.65.10.50/trunk@3565 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-09-11 14:31:58 +00:00
parent 864a978cfc
commit bd157f52bf

View File

@ -951,11 +951,15 @@ HIDDEN bool set_windows_print_device (TMask_field& f, KEY key)
char szDevice[80]; char szDevice[80];
GetProfileString ("devices", pdev, "", szDevice, sizeof (szDevice)); GetProfileString ("devices", pdev, "", szDevice, sizeof (szDevice));
pdev << "," << szDevice; pdev << "," << szDevice;
char szOldPrinter[80];
GetProfileString ("windows", "device", ",,,", szOldPrinter, sizeof (szOldPrinter));
// scrivi (e semmai lo si risistema poi) // scrivi (e semmai lo si risistema poi)
WriteProfileString("windows", "device", pdev); WriteProfileString("windows", "device", pdev);
pr.set_printrcd(); pr.set_printrcd();
pr.set_win_formlen(); pr.set_win_formlen();
WriteProfileString("windows", "device", szOldPrinter);
const int MAX_FAMILIES = 128; const int MAX_FAMILIES = 128;
char* family[MAX_FAMILIES]; char* family[MAX_FAMILIES];
@ -1066,17 +1070,21 @@ TPrinter::TPrinter()
char defPrinter[80]; char defPrinter[80];
char szDevice[50]; char szDevice[50];
// get default printer driver
GetProfileString ("windows", "device", ",,,", defPrinter, sizeof(defPrinter));
TToken_string pdev (defPrinter, ',');
GetProfileString ("devices", pdev, "", szDevice, sizeof(szDevice));
pdev.add(szDevice);
const TString80 p1(pdev.get(0)); // current printer
TToken_string& pn2 = getprinternames(); // get printer names TToken_string& pn2 = getprinternames(); // get printer names
_curprn = pn2.get_pos(p1); if (_curprn >= pn2.items())
CHECKS(_curprn >= 0, "Can't find printer ", (const char*)p1); {
// get default printer driver
GetProfileString ("windows", "device", ",,,", defPrinter, sizeof(defPrinter));
TToken_string pdev (defPrinter, ',');
GetProfileString ("devices", pdev, "", szDevice, sizeof(szDevice));
pdev.add(szDevice);
const TString80 p1(pdev.get(0)); // current printer
_curprn = pn2.get_pos(p1);
}
CHECK(_curprn >= 0, "Can't find printer ");
set_fincatura("+++++++++-|"); set_fincatura("+++++++++-|");
#else #else
@ -1747,8 +1755,8 @@ bool TPrinter::set()
#if XVT_OS == XVT_OS_WIN #if XVT_OS == XVT_OS_WIN
pn2 = getprinternames(); pn2 = getprinternames();
char old_default[80]; // char old_default[80];
GetProfileString ("windows", "device", ",,,", old_default, sizeof(old_default)); // GetProfileString ("windows", "device", ",,,", old_default, sizeof(old_default));
const int np = pn2.items(); const int np = pn2.items();
for (i = 0; i < np; i++) for (i = 0; i < np; i++)
@ -1757,13 +1765,13 @@ bool TPrinter::set()
TList_field& plst = (TList_field&)mask.field (MSK_PRINTERS); TList_field& plst = (TList_field&)mask.field (MSK_PRINTERS);
plst.replace_items(pn1, pn2); // Genera printer list plst.replace_items(pn1, pn2); // Genera printer list
mask.set(MSK_PRINTERS, _curprn); // Genera font list
set_windows_print_device(mask.field(MSK_PRINTERS), K_TAB); set_windows_print_device(mask.field(MSK_PRINTERS), K_TAB);
font_handler(mask.field(MSK_FONT),K_TAB); font_handler(mask.field(MSK_FONT),K_TAB);
mask.set(MSK_PRINTERS, _curprn); // Genera font list
mask.set(MSK_FONT, _fontname); // Genera size list mask.set(MSK_FONT, _fontname); // Genera size list
mask.set(MSK_SIZE, _ch_size);
mask.set_handler (MSK_PRINTERS, set_windows_print_device); mask.set_handler (MSK_PRINTERS, set_windows_print_device);
mask.set_handler (MSK_FONT, font_handler); mask.set_handler (MSK_FONT, font_handler);
mask.set(MSK_SIZE, _ch_size);
mask.set(MSK_LINES, _lines_per_inch); mask.set(MSK_LINES, _lines_per_inch);
mask.set(MSK_ISGRAPHICS, _isgraphics ? "X" : ""); mask.set(MSK_ISGRAPHICS, _isgraphics ? "X" : "");
@ -1777,8 +1785,13 @@ bool TPrinter::set()
else else
mask.set (MSK_TYPE, "0"); mask.set (MSK_TYPE, "0");
KEY k; KEY k;
int oldprn = _curprn;
int oldprn = _curprn;
s_printrcd * rcd = get_printrcd();
TString oldrcd(_print_rcd_size);
memcpy((char *) (const char *) oldrcd, rcd, _print_rcd_size);
while ((k = mask.run ()) != K_ESC && k != K_ENTER && k != K_INS) while ((k = mask.run ()) != K_ESC && k != K_ENTER && k != K_INS)
{ {
@ -1804,19 +1817,23 @@ bool TPrinter::set()
} }
} }
/*
if (k == K_ESC || k == K_ENTER) if (k == K_ESC || k == K_ENTER)
{ {
// riaggiusta stampante default windows come prima // riaggiusta stampante default windows come prima
// curprn e rcd sono quelle di prima // curprn e rcd sono quelle di prima
main_app().enable_menu_item(M_FILE_PG_SETUP); main_app().enable_menu_item(M_FILE_PG_SETUP);
WriteProfileString("windows", "device", old_default); WriteProfileString("windows", "device", old_default);
} }
*/
if (k == K_ESC) if (k == K_ESC)
{ {
_curprn = oldprn; _curprn = oldprn;
set_printrcd(); // set_printrcd();
s_printrcd * rcd = get_printrcd();
memcpy(rcd, (const char *) oldrcd, _print_rcd_size);
set_win_formlen(); set_win_formlen();
delete msk; msk = NULL; delete msk; msk = NULL;
return FALSE; return FALSE;
} }
@ -1859,7 +1876,7 @@ bool TPrinter::set()
{ {
delete msk; delete msk;
msk = NULL; msk = NULL;
} }
return TRUE; return TRUE;
} }