Patch level : 10.0 376

Files correlati     : xvaga.pdf
Ricompilazione Demo : [ ]
Commento            :
Uniformato spessore linee in sede di stampa report su carta e/o pdf


git-svn-id: svn://10.65.10.50/trunk@19114 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2009-07-15 15:09:42 +00:00
parent 749cdab39c
commit 68bae27fdb
6 changed files with 95 additions and 30 deletions

View File

@ -1068,10 +1068,29 @@ bool OsWin32_IsWindowsServer()
void OsWin32_NumberFormat(char* str, int size) void OsWin32_NumberFormat(char* str, int size)
{ {
static char decsep = '\0', thosep = '\0';
char buf[80] = "";
if (!decsep)
{
::GetNumberFormat(LOCALE_USER_DEFAULT, 0, "1936.27", NULL, buf, sizeof(buf));
decsep = buf[strlen(buf)-3];
thosep = buf[1] == '9' ? '\0' : buf[1];
}
if (str && *str) if (str && *str)
{ {
char buf[80] = ""; int j = 0;
::GetNumberFormat(LOCALE_USER_DEFAULT, 0, str, NULL, buf, sizeof(buf)); for (int i = 0; str[i]; i++)
{
switch (str[i])
{
case '.': buf[j++] = decsep; break;
case ',': break; // Ignore thousand separator
default : buf[j++] = str[i]; break;
}
}
buf[j] = '\0';
wxStrncpy(str, buf, size); wxStrncpy(str, buf, size);
} }
} }

View File

@ -980,9 +980,14 @@ static FL_STATUS xvt_dm_post_file_ask(FILE_SPEC *fsp, const char *msg, int flags
wxString path = fsp->dir.path; wxString path = fsp->dir.path;
wxString name = MakeFileName(fsp->name, fsp->type); wxString name = MakeFileName(fsp->name, fsp->type);
wxString extension = fsp->type; wxString extension = fsp->type;
wxString mask = MakeFileName("*", fsp->type); wxString wild;
if (!extension.IsEmpty() && extension != "*")
wild << "File " << extension << " (*." << extension << ")|*." << extension << "|";
if (flags & wxFD_OPEN)
wild << "Tutti i file (*.*)|*.*|";
wild << '|';
wxString selectedname = wxFileSelector(msg, path, name, extension , mask, flags); wxString selectedname = wxFileSelector(msg, path, name, extension , wild, flags);
if (selectedname.IsEmpty()) if (selectedname.IsEmpty())
return FL_CANCEL; return FL_CANCEL;
xvt_fsys_convert_str_to_fspec(selectedname, fsp); xvt_fsys_convert_str_to_fspec(selectedname, fsp);
@ -994,13 +999,13 @@ static FL_STATUS xvt_dm_post_file_ask(FILE_SPEC *fsp, const char *msg, int flags
FL_STATUS xvt_dm_post_file_open(FILE_SPEC *fsp, const char *msg) FL_STATUS xvt_dm_post_file_open(FILE_SPEC *fsp, const char *msg)
{ {
const int flags = wxOPEN | wxFILE_MUST_EXIST; const int flags = wxFD_OPEN | wxFD_FILE_MUST_EXIST;
return xvt_dm_post_file_ask(fsp, msg, flags); return xvt_dm_post_file_ask(fsp, msg, flags);
} }
FL_STATUS xvt_dm_post_file_save(FILE_SPEC *fsp, const char *msg) FL_STATUS xvt_dm_post_file_save(FILE_SPEC *fsp, const char *msg)
{ {
const int flags = wxSAVE | wxOVERWRITE_PROMPT; const int flags = wxFD_SAVE | wxFD_OVERWRITE_PROMPT;
return xvt_dm_post_file_ask(fsp, msg, flags); return xvt_dm_post_file_ask(fsp, msg, flags);
} }
@ -2175,16 +2180,19 @@ BOOLEAN xvt_fsys_convert_fspec_to_str(const FILE_SPEC *fs, char *path, int sz_pa
BOOLEAN xvt_fsys_convert_str_to_fspec(const char *mbs, FILE_SPEC *fs) BOOLEAN xvt_fsys_convert_str_to_fspec(const char *mbs, FILE_SPEC *fs)
{ {
BOOLEAN ok = FALSE; BOOLEAN ok = FALSE;
if (mbs && *mbs && fs != NULL) if (fs != NULL)
{ {
memset(fs, 0, sizeof(FILE_SPEC)); memset(fs, 0, sizeof(FILE_SPEC));
wxStrcpy(fs->creator, "CAMPO");
if (mbs && *mbs)
{
char volume[_MAX_DRIVE], path[_MAX_PATH]; char volume[_MAX_DRIVE], path[_MAX_PATH];
xvt_fsys_parse_pathname(mbs, volume, path, fs->name, fs->type, NULL); xvt_fsys_parse_pathname(mbs, volume, path, fs->name, fs->type, NULL);
wxStrcpy(fs->dir.path, volume); wxStrcpy(fs->dir.path, volume);
wxStrcat(fs->dir.path, path); wxStrcat(fs->dir.path, path);
wxStrcpy(fs->creator, "CAMPO");
ok = fs->name[0] != '\0'; ok = fs->name[0] != '\0';
} }
}
return ok; return ok;
} }
@ -2990,6 +2998,12 @@ void xvt_rect_set_empty(RCT *rctp)
rctp->bottom = rctp->top; rctp->bottom = rctp->top;
} }
void xvt_rect_set_null(RCT* rctp)
{
XVT_ASSERT(rctp != NULL);
memset(rctp, 0, sizeof(RCT));
}
BOOLEAN xvt_rect_set_pos(RCT *rctp, PNT pos) BOOLEAN xvt_rect_set_pos(RCT *rctp, PNT pos)
{ {
BOOLEAN ok = rctp != NULL; BOOLEAN ok = rctp != NULL;
@ -4314,10 +4328,21 @@ long xvt_vobj_get_data(WINDOW win)
} }
RCT* xvt_vobj_get_outer_rect(WINDOW win, RCT *rctp) RCT* xvt_vobj_get_outer_rect(WINDOW win, RCT *rctp)
{
if (win != NULL_WIN)
{
if (win == SCREEN_WIN)
xvt_rect_set(rctp, 0, 0, wxSystemSettings::GetMetric(wxSYS_SCREEN_X), wxSystemSettings::GetMetric(wxSYS_SCREEN_Y));
else
{ {
CAST_WIN(win, w); CAST_WIN(win, w);
const wxRect rct = w.GetRect(); const wxRect rct = w.GetRect();
xvt_rect_set(rctp, rct.x, rct.y, rct.GetRight(), rct.GetBottom()); xvt_rect_set(rctp, rct.x, rct.y, rct.GetRight(), rct.GetBottom());
}
}
else
xvt_rect_set_null(rctp);
return rctp; return rctp;
} }

View File

@ -293,6 +293,7 @@ XVTDLL BOOLEAN xvt_rect_is_empty(const RCT *rctp);
XVTDLL void xvt_rect_offset(RCT *rctp, short dh, short dv); 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 void xvt_rect_set_null(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_rect_inflate(RCT *rctp, short ix, short iy);

View File

@ -1381,6 +1381,9 @@ bool TEsigner::Init(bool bLoad)
return ok = false; return ok = false;
xvt_sys_get_profile_string(strConfig, "fd", "Cert_"+m_strUser, "", str, sizeof(str)); xvt_sys_get_profile_string(strConfig, "fd", "Cert_"+m_strUser, "", str, sizeof(str));
if (*str == '\0') // Se non trova l'utente corrente di riprova con Guest
xvt_sys_get_profile_string(strConfig, "fd", "Cert_Guest", "", str, sizeof(str));
wxStringTokenizer strDllCert(str, ","); wxStringTokenizer strDllCert(str, ",");
m_strDllFile = strDllCert.GetNextToken(); m_strDllFile.MakeLower(); m_strDllFile = strDllCert.GetNextToken(); m_strDllFile.MakeLower();
m_strCertificate = strDllCert.GetNextToken(); m_strCertificate = strDllCert.GetNextToken();
@ -1394,7 +1397,11 @@ bool TEsigner::Init(bool bLoad)
m_strTSApwd = strDllCert.GetNextToken(); m_strTSApwd = strDllCert.GetNextToken();
m_strPolicy = strDllCert.GetNextToken(); m_strPolicy = strDllCert.GetNextToken();
m_strTSAcoding = strDllCert.GetNextToken(); m_strTSAcoding = strDllCert.GetNextToken();
if (m_strTSAcoding.IsEmpty()) if (m_strTSAcoding.IsEmpty())
m_strTSAcoding = wxT("binary");
if (m_strTSAuri.IsEmpty())
{ {
wxString msg; wxString msg;
msg << "Mancano i parametri per la marcatura temporale" msg << "Mancano i parametri per la marcatura temporale"
@ -1442,18 +1449,18 @@ bool TEsigner::Sign(const wxString& strInput, wxString& strOutput)
if ((m_strPin.IsEmpty() || m_strDllFile.IsEmpty()) && !Init(true)) if ((m_strPin.IsEmpty() || m_strDllFile.IsEmpty()) && !Init(true))
return false; return false;
const char* ext = strInput.EndsWith(".pdf") ? ".pdf" : ""; const char* ext = strInput.Lower().EndsWith(".pdf") ? ".pdf.p7m" : "";
if (strOutput.IsEmpty()) if (strOutput.IsEmpty())
strOutput = strInput.BeforeFirst('.') + ".p7m.pdf"; strOutput = strInput + ".p7m";
::wxRemoveFile(strOutput); // Altrimenti la fantastica dll s'incazza come una biscia
wxString strFile = strOutput; const wxString strFile = strOutput.BeforeFirst('.');
strFile = strFile.BeforeLast('.');
int res = 0; int res = 0;
if (m_strDllFile.EndsWith(".dll")) if (m_strDllFile.Lower().EndsWith(".dll"))
{ {
if (m_bMark && !m_strTSAcoding.IsEmpty()) // Firma con marcatura temporale if (m_bMark && !m_strTSAuri.IsEmpty()) // Firma con marcatura temporale
{ {
res = _SignPDF("S", "T", // "S"ignature with "T"oken or smartcard res = _SignPDF("S", "T", // "S"ignature with "T"oken or smartcard
(char*)(const char*)strInput, (char*)(const char*)strFile, (char*)(const char*)strInput, (char*)(const char*)strFile,
@ -1473,6 +1480,18 @@ bool TEsigner::Sign(const wxString& strInput, wxString& strOutput)
} }
} }
else else
{
if (m_bMark && !m_strTSAuri.IsEmpty()) // Firma con marcatura temporale
{
res = _SignPDF("S", "P", // "S"ignature with "P"fx file
(char*)(const char*)strInput, (char*)(const char*)strFile,
NULL, (char*)ext, NULL, NULL, (char*)(const char*)m_strDllFile, NULL,
(char*)(const char*)m_strPin, NULL, NULL,
(char*)(const char*)m_strTSAuri, (char*)(const char*)m_strTSAuser,
(char*)(const char*)m_strTSApwd, (char*)(const char*)m_strPolicy,
(char*)(const char*)m_strTSAcoding, NULL);
}
else
{ {
res = _SignPDF("S", "P", // "S"ignature with "P"fx file res = _SignPDF("S", "P", // "S"ignature with "P"fx file
(char*)(const char*)strInput, (char*)(const char*)strFile, (char*)(const char*)strInput, (char*)(const char*)strFile,
@ -1480,6 +1499,7 @@ bool TEsigner::Sign(const wxString& strInput, wxString& strOutput)
(char*)(const char*)m_strPin, NULL, NULL, (char*)(const char*)m_strPin, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL); NULL, NULL, NULL, NULL, NULL, NULL);
} }
}
if (res == 0) if (res == 0)
{ {

View File

@ -919,8 +919,8 @@ void TwxPDFDC::SetPen( const wxPen& pen )
wxString strScope = m_PDFlib->PDF_get_parameter(m_p, "scope", 0); wxString strScope = m_PDFlib->PDF_get_parameter(m_p, "scope", 0);
if (strScope != "document") if (strScope != "document")
{ {
double dWidth = m_pen.GetWidth(); const int nWidth = m_pen.GetWidth();
if (dWidth <= 0) dWidth = 1; const double dWidth = nWidth <= 0 ? 1 : nWidth;
m_PDFlib->PDF_setlinewidth(m_p, dWidth); m_PDFlib->PDF_setlinewidth(m_p, dWidth);
if (solid) if (solid)
m_PDFlib->PDF_setdash(m_p, 0, 0); m_PDFlib->PDF_setdash(m_p, 0, 0);

View File

@ -580,7 +580,7 @@ void TwxWindow::OnChar(wxKeyEvent& evt)
case WXK_NUMPAD9: case WXK_NUMPAD9:
evt.Skip(); evt.Skip();
return; return;
case WXK_NUMPAD_DECIMAL: // Arriva solo dalla 3.6.3 in poi case WXK_NUMPAD_DECIMAL: // Arriva solo dalla 2.6.3 in poi
case WXK_DECIMAL: // ??? Arriva sia '.' sia WXK_DECIMAL=340 case WXK_DECIMAL: // ??? Arriva sia '.' sia WXK_DECIMAL=340
if (nSkipNextDotKey == 0) if (nSkipNextDotKey == 0)
{ {