Sistemato numero di copie nella printer; la set() chiamata dalle applicazioni

non printapp nasconde la voce n. copie a meno che non si faccia
enable_multiple_copies()


git-svn-id: svn://10.65.10.50/trunk@243 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1994-09-15 07:52:53 +00:00
parent c1e97ca1f9
commit 7c792335de
8 changed files with 1043 additions and 1046 deletions

View File

@ -1,4 +1,4 @@
// $Id: printapp.cpp,v 1.7 1994-09-14 10:43:51 villa Exp $
// $Id: printapp.cpp,v 1.8 1994-09-15 07:52:43 villa Exp $
#include <ctype.h>
#include <stdarg.h>
@ -762,10 +762,11 @@ void TPrint_application::print()
// only external apps can change it
_repeat_print = FALSE;
ncopies = printer().n_copies();
// never print multiple copies if printer is viswin
// only application may repeat printing by setting _repeat_print
int nc = printer().printtype() == screenvis ? 1 : _ncopies;
int nc = printer().printtype() == screenvis ? 1 : ncopies;
// NULL cursor passed only prints once
// pre and post process do everything
@ -1242,7 +1243,6 @@ TPrint_application::TPrint_application ():TApplication (), _transtab (10),
{
_cur = NULL;
_repeat_print = FALSE;
_ncopies = 1;
_currow = _maxrow = 0;
_auto_ff = FALSE;
_wbar = _wcancel = TRUE;

View File

@ -72,7 +72,6 @@ class TPrint_application : public TApplication
TProgind* _prind;
const char* _picture;
MENU_TAG _last_choice;
int _ncopies;
bool _repeat_print;
// set the printer
@ -456,8 +455,6 @@ public:
{ printer().setcurrentpage(n); }
void set_n_copies(int n) { _ncopies = n; }
int get_n_copies() { return _ncopies; }
void repeat_print() { _repeat_print = TRUE; }
TPrint_application();

View File

@ -642,7 +642,7 @@ bool set_windows_print_device (TMask_field & f, KEY key)
TPrinter::TPrinter()
: _date (TODAY), _multiple_link (FALSE), _frozen (FALSE), _isgraphics (TRUE),
_lines_per_inch (6), _ch_size (12)
_lines_per_inch (6), _ch_size (12), _ncopies(1)
{
_footerhandler = _headerhandler = NULL;
@ -662,6 +662,8 @@ TPrinter::TPrinter()
_headersize = 0;
_footersize = 0;
_isopen = FALSE;
_multiple_copies = MainApp()->class_id() == CLASS_PRINTER_APPLICATION;
// read configuration file
read_configuration (_config);
#if XVT_OS == XVT_OS_WIN
@ -1149,6 +1151,7 @@ void TPrinter::set()
mask.hide(MSK_1_SETUP);
mask.hide(MSK_1_SIZE);
mask.hide(MSK_1_LINES);
if (!_multiple_copies) mask.hide(MSK_1_NPAGES);
pn1 = "";
pn2 = "";
@ -1171,11 +1174,7 @@ void TPrinter::set()
mask.set (MSK_1_PRINTERS, format ("%d", _curprn));
mask.set (MSK_1_CODES, format ("%d", _curcode));
mask.set (MSK_1_FILENAME, _printerfile);
int nc = 1;
if (MainApp()->class_id() == CLASS_PRINT_APPLICATION)
nc = ((TPrint_application*)MainApp())->get_n_copies();
mask.set(MSK_1_NPAGES, nc);
mask.set(MSK_1_NPAGES, _ncopies);
mask.reset (MSK_1_SAVE);
@ -1195,9 +1194,7 @@ void TPrinter::set()
// get user choices
_curprn = atoi(mask.get(MSK_1_PRINTERS));
if (MainApp()->class_id() == CLASS_PRINT_APPLICATION)
((TPrint_application*)MainApp())->set_n_copies(atoi(mask.get(MSK_1_NPAGES)));
_ncopies = atoi(mask.get(MSK_1_NPAGES));
PrinterDef& def = (PrinterDef &) get_description (_curprn);
switch (atoi(mask.get (MSK_1_TYPE)))
@ -1241,15 +1238,15 @@ void TPrinter::set()
((TList_field &) (mask.field (MSK_1_PRINTERS))).replace_items(pn1, pn2);
mask.set(MSK_1_PRINTERS, pn1.get(_curprn));
mask.hide(MSK_1_CODES);
if (!_multiple_copies) mask.hide(MSK_1_NPAGES);
mask.set(MSK_1_ISGRAPHICS, _isgraphics ? "X" : "");
mask.set(MSK_1_SIZE, _ch_size);
mask.set(MSK_1_LINES, _lines_per_inch);
int nc = 1;
if (MainApp()->class_id() == CLASS_PRINT_APPLICATION)
nc = ((TPrint_application*)MainApp())->get_n_copies();
mask.set(MSK_1_NPAGES, nc);
mask.set(MSK_1_NPAGES, _ncopies);
if (_printertype == fileprinter)
mask.set (MSK_1_TYPE, "1");
@ -1312,8 +1309,7 @@ void TPrinter::set()
mask.save ();
}
if (MainApp()->class_id() == CLASS_PRINT_APPLICATION)
((TPrint_application*)MainApp())->set_n_copies(atoi (mask.get (MSK_1_NPAGES)));
_ncopies = atoi (mask.get (MSK_1_NPAGES));
switch (atoi (mask.get (MSK_1_TYPE)))
{

View File

@ -158,6 +158,7 @@ class TPrinter : public TObject
TToken_string _printer_names;
bool _isgraphics;
bool _frozen;
int _ncopies;
#if XVT_OS == XVT_OS_WIN
PRINT_RCD* _print_rcd;
int _print_rcd_size;
@ -169,6 +170,7 @@ class TPrinter : public TObject
void _parse_background();
void _get_windows_printer_names(TToken_string& t);
bool _multiple_copies;
PRINTSECTIONHANDLER _headerhandler, _footerhandler;
LINKHANDLER _linkhandler;
@ -229,6 +231,8 @@ public:
TArray* getbgdesc() { return &_background; }
bool frozen() { return _frozen; }
void freeze(bool b = TRUE) { _frozen = b; }
int n_copies() { return _ncopies; }
void enable_multiple_copies(bool b = TRUE) { _multiple_copies = b; }
TToken_string& getprinternames();
TTextfile& get_txt() { return _txt; }