Patch level : 2.0 nopatch

Files correlati     : bagn003.msk
Ricompilazione Demo : [ ]
Commento            :

Migliorata gestione Stampante Generica solo testo


git-svn-id: svn://10.65.10.50/trunk@11546 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-10-29 14:52:23 +00:00
parent 205436a6b1
commit e40a17842f
6 changed files with 64 additions and 18 deletions

View File

@ -5,3 +5,4 @@
#define F_COPIES 105
#define F_FROMPAGE 106
#define F_TOPAGE 107
#define F_FORM 108

View File

@ -1,8 +1,8 @@
#include <bagn003.h>
PAGE "Stampa" -1 -1 66 10
PAGE "Stampa" -1 -1 66 11
GROUPBOX DLG_NULL 64 5
GROUPBOX DLG_NULL 64 6
BEGIN
PROMPT 1 0 "@bStampante"
END
@ -13,45 +13,51 @@ BEGIN
FLAGS "D"
END
STRING F_FORM 80 50
BEGIN
PROMPT 2 2 "Form "
FLAGS "D"
END
STRING F_FONT 80 32
BEGIN
PROMPT 2 2 "Font "
PROMPT 2 3 "Font "
FLAGS "D"
END
NUMBER F_SIZE 4
BEGIN
PROMPT 48 2 "Carattere "
PROMPT 48 3 "Carattere "
FLAGS "D"
END
BOOLEAN F_ISGRAPHICS
BEGIN
PROMPT 2 3 "Stampa elementi grafici"
PROMPT 2 4 "Stampa elementi grafici"
FLAGS "D"
END
GROUPBOX DLG_NULL 64 4
BEGIN
PROMPT 1 5 "@bSelezione"
PROMPT 1 6 "@bSelezione"
END
NUMBER F_FROMPAGE 4
BEGIN
PROMPT 2 6 "Da pagina "
PROMPT 2 7 "Da pagina "
CHECKTYPE REQUIRED
FLAGS "U"
END
NUMBER F_TOPAGE 4
BEGIN
PROMPT 2 7 "a pagina "
PROMPT 2 8 "a pagina "
FLAGS "U"
END
NUMBER F_COPIES 3
BEGIN
PROMPT 43 6 "Numero di copie "
PROMPT 43 7 "Numero di copie "
FLAGS "U"
CHECKTYPE REQUIRED
END

View File

@ -2436,6 +2436,12 @@ bool TPrint_section::update()
if (!esito) ok = FALSE;
}
}
if (ok && _sec_type == 'B' && _page_type == odd_page)
{
printer().set_form_name(_form->filename());
}
return ok;
}
@ -4527,7 +4533,9 @@ void TForm::read(
// read base form
TFilename n(_name); n.ext("frm");
n.custom_path();
if (!n.exist())
if (n.exist())
_filename = n;
else
fatal_box("Il form '%s' non esiste.",(const char*)n);
TScanner scanner(n);

View File

@ -86,6 +86,8 @@ class TForm : public TObject
// @cmember:(INTERNAL) Nome del profilo di stampa
TString _name;
// @cmember:(INTERNAL) Nome fisico del file profilo di stampa
TFilename _filename;
// @cmember:(INTERNAL) Codice del profilo di stampa
TString _code;
// @cmember:(INTERNAL) Nome del font da utilizzare
@ -300,6 +302,9 @@ public:
// @cmember Ritorna il codice del profilo di stampa
const TString& code() const
{ return _code; }
// @cmember Ritorna il nome fisico del file del profilo di stampa
const TFilename& filename() const
{ return _filename; }
// @cmember Ritorna se il form è un modulo a pagine fisse
bool fixed_pages() const
{ return _npages>0; }

View File

@ -203,7 +203,7 @@ TPrinter_setup_mask::TPrinter_setup_mask()
set(MSK_FONT, _font); // Fare solo quando la lista e' piena
set(MSK_SIZE, pr._ch_size); // Fare solo quando la lista e' piena
set(MSK_LINES, pr._lines_per_inch);
set(MSK_ISGRAPHICS, pr._isgraphics ? "X" : "");
set(MSK_ISGRAPHICS, pr.isgraphics() ? "X" : "");
_skip_events = FALSE;
}
@ -411,6 +411,7 @@ bool TPrint_txt_info::edit()
TPrinter& p = printer();
TMask msk("bagn003");
msk.set(F_PRINTER, p.printername());
msk.set(F_FORM, p.get_form_name());
msk.set(F_FONT, p.fontname());
msk.set(F_SIZE, p.get_char_size());
msk.set(F_ISGRAPHICS, p.isgraphics() ? "X" : "");
@ -437,6 +438,28 @@ TPrint_txt_info::TPrint_txt_info(TTextfile& txt)
_lastpage = (li+ps-1) / ps;
}
// @cmember Ritorna vero se la stampante e' generica/solo testo
bool TPrinter::is_generic() const
{
bool yes = _dots_per_line == 1;
if (!yes)
yes = _prname.find("Generic") >= 0;
return yes;
}
// @cmember Ritorna vero se sono attivati gli elementi grafici
bool TPrinter::isgraphics() const
{
return _isgraphics;
}
// @cmember Attivati gli elementi grafici se possibile
bool TPrinter::set_graphics(bool g)
{
_isgraphics = g && !is_generic();
return _isgraphics;
}
BOOLEAN TPrinter::start_print(long data)
{
const TPrint_txt_info *pd = (TPrint_txt_info *) data;
@ -1221,7 +1244,7 @@ void TPrinter::read_configuration(
_fontname = iniptr->get("Font", NULL, -1, XVT_FFN_FIXED); // Nome del font
_ch_size = iniptr->get_int("Size", NULL, -1, 10); // Dimensione del font
_lines_per_inch = iniptr->get_int("Lines", NULL, -1, 6); // Linee per pollice
_isgraphics = iniptr->get_bool("Graphic", NULL, -1, TRUE); // Grafica attiva
set_graphics(iniptr->get_bool("Graphic", NULL, -1, TRUE)); // Grafica attiva
bool read_rcd = FALSE;
@ -1599,9 +1622,7 @@ void TPrinter::set_fink_mode(
// oppure non ha il flag di stampa elementi grafici attivato, la fincatura sara'
// in modo testo.
{
_fink_mode = f;
if (_fink_mode && (is_generic() || !_isgraphics))
_fink_mode = FALSE;
_fink_mode = f && isgraphics();
}
// @doc EXTERNAL

View File

@ -211,6 +211,8 @@ class TPrinter : public TObject
TArray _footer;
// @cmember:(INTERNAL) Nome della stampante corrente
TString _prname;
// @cmember:(INTERNAL) Nome dell'ultimo TForm utilizzato
TFilename _formname;
// @cmember:(INTERNAL) Lunghezza della pagina logica
int _formlen;
// @cmember:(INTERNAL) Larghezza della pagina logica
@ -579,9 +581,9 @@ public:
// @cmember Ritorna la definizione di stampa in punti per linea
int get_dots_per_line() const { return _dots_per_line; }
// @cmember Ritorna se la stampante e' abilitata a stampare grafica
bool isgraphics() const { return _isgraphics; }
bool isgraphics() const;
// @cmember Setta la stampante per l'abilitazione a stampare in grafica
void set_graphics(bool g) { _isgraphics=g; }
bool set_graphics(bool g);
// @cmember Setta l'offset verticale e orizzontale in caratteri
void set_offset(int a, int b) { _l_offset=a; _c_offset=b;}
// @cmember ritorna la riga di background se si stampa in modo testo
@ -604,6 +606,9 @@ public:
// @cmember Setta il nome del font di stampa
void set_fontname(const char *name)
{ _fontname = name; }
void set_form_name(const char* n) { _formname = n; }
const TFilename& get_form_name() const { return _formname; }
// @cmember Legge la configurazione della stampante
void read_configuration(const char* parag = NULL);
@ -612,7 +617,7 @@ public:
int set_bookmark(const char* txt, int father = -1);
// @cmember Ritorna vero se la stampante e' generica/solo testo
bool is_generic() { return (_dots_per_line == 1); }
bool is_generic() const;
// @cmember Calcola la dimensione del font per le colonne desiderate
int calc_font_size(int columns) const;