Improve conversion between wxPaperSize and GtkPaperSize
by using a table to map the screwy Windows DMPAPER_* stuff, which wxWidgets stupidly uses. Eliminates many "Gtk-WARNING **: Unknown paper size", and the occasional "GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed". And fixes approximately one zillion memory leaks. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76268 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -43,11 +43,6 @@
|
||||
#include <gtk/gtkpagesetupunixdialog.h>
|
||||
#endif
|
||||
|
||||
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
#include "wx/graphics.h"
|
||||
#endif
|
||||
|
||||
#include "wx/link.h"
|
||||
wxFORCE_LINK_THIS_MODULE(gtk_print)
|
||||
|
||||
@@ -56,6 +51,177 @@ wxFORCE_LINK_THIS_MODULE(gtk_print)
|
||||
// Useful to convert angles from degrees to radians.
|
||||
static const double DEG2RAD = M_PI / 180.0;
|
||||
|
||||
// Map wxPaperSize to GtkPaperSize names
|
||||
// Ordering must be the same as wxPaperSize enum
|
||||
static const char* const gs_paperList[] = {
|
||||
NULL, // wxPAPER_NONE
|
||||
"na_letter", // wxPAPER_LETTER
|
||||
"na_legal", // wxPAPER_LEGAL
|
||||
"iso_a4", // wxPAPER_A4
|
||||
"na_c", // wxPAPER_CSHEET
|
||||
"na_d", // wxPAPER_DSHEET
|
||||
"na_e", // wxPAPER_ESHEET
|
||||
"na_letter", // wxPAPER_LETTERSMALL
|
||||
"na_ledger", // wxPAPER_TABLOID
|
||||
"na_ledger", // wxPAPER_LEDGER
|
||||
"na_invoice", // wxPAPER_STATEMENT
|
||||
"na_executive", // wxPAPER_EXECUTIVE
|
||||
"iso_a3", // wxPAPER_A3
|
||||
"iso_a4", // wxPAPER_A4SMALL
|
||||
"iso_a5", // wxPAPER_A5
|
||||
"jis_b4", // wxPAPER_B4 "B4 (JIS) 257 x 364 mm"
|
||||
"jis_b5", // wxPAPER_B5 "B5 (JIS) 182 x 257 mm"
|
||||
"om_folio", // wxPAPER_FOLIO
|
||||
"na_quarto", // wxPAPER_QUARTO
|
||||
"na_10x14", // wxPAPER_10X14
|
||||
"na_ledger", // wxPAPER_11X17
|
||||
"na_letter", // wxPAPER_NOTE
|
||||
"na_number-9", // wxPAPER_ENV_9
|
||||
"na_number-10", // wxPAPER_ENV_10
|
||||
"na_number-11", // wxPAPER_ENV_11
|
||||
"na_number-12", // wxPAPER_ENV_12
|
||||
"na_number-14", // wxPAPER_ENV_14
|
||||
"iso_dl", // wxPAPER_ENV_DL
|
||||
"iso_c5", // wxPAPER_ENV_C5
|
||||
"iso_c3", // wxPAPER_ENV_C3
|
||||
"iso_c4", // wxPAPER_ENV_C4
|
||||
"iso_c6", // wxPAPER_ENV_C6
|
||||
"iso_c6c5", // wxPAPER_ENV_C65
|
||||
"iso_b4", // wxPAPER_ENV_B4
|
||||
"iso_b5", // wxPAPER_ENV_B5
|
||||
"iso_b6", // wxPAPER_ENV_B6
|
||||
"om_italian", // wxPAPER_ENV_ITALY
|
||||
"na_monarch", // wxPAPER_ENV_MONARCH
|
||||
"na_personal", // wxPAPER_ENV_PERSONAL
|
||||
"na_fanfold-us", // wxPAPER_FANFOLD_US
|
||||
"na_fanfold-eur", // wxPAPER_FANFOLD_STD_GERMAN
|
||||
"na_foolscap", // wxPAPER_FANFOLD_LGL_GERMAN
|
||||
"iso_b4", // wxPAPER_ISO_B4
|
||||
"jpn_hagaki", // wxPAPER_JAPANESE_POSTCARD
|
||||
"na_9x11", // wxPAPER_9X11
|
||||
"na_10x11", // wxPAPER_10X11
|
||||
"na_11x15", // wxPAPER_15X11
|
||||
"om_invite", // wxPAPER_ENV_INVITE
|
||||
"na_letter-extra", // wxPAPER_LETTER_EXTRA
|
||||
"na_legal-extra", // wxPAPER_LEGAL_EXTRA
|
||||
"na_arch-b", // wxPAPER_TABLOID_EXTRA
|
||||
"iso_a4-extra", // wxPAPER_A4_EXTRA
|
||||
"na_letter", // wxPAPER_LETTER_TRANSVERSE
|
||||
"iso_a4", // wxPAPER_A4_TRANSVERSE
|
||||
"na_letter-extra", // wxPAPER_LETTER_EXTRA_TRANSVERSE
|
||||
"na_super-a", // wxPAPER_A_PLUS
|
||||
"na_super-b", // wxPAPER_B_PLUS
|
||||
"na_letter-plus", // wxPAPER_LETTER_PLUS
|
||||
"om_folio", // wxPAPER_A4_PLUS "A4 Plus 210 x 330 mm" (no A4 Plus in PWG standard)
|
||||
"iso_a5", // wxPAPER_A5_TRANSVERSE
|
||||
"jis_b5", // wxPAPER_B5_TRANSVERSE "B5 (JIS) Transverse 182 x 257 mm"
|
||||
"iso_a3-extra", // wxPAPER_A3_EXTRA
|
||||
"iso_a5-extra", // wxPAPER_A5_EXTRA
|
||||
"iso_b5-extra", // wxPAPER_B5_EXTRA
|
||||
"iso_a2", // wxPAPER_A2
|
||||
"iso_a3", // wxPAPER_A3_TRANSVERSE
|
||||
"iso_a3-extra", // wxPAPER_A3_EXTRA_TRANSVERSE
|
||||
"jpn_oufuku", // wxPAPER_DBL_JAPANESE_POSTCARD
|
||||
"iso_a6", // wxPAPER_A6
|
||||
"jpn_kaku2", // wxPAPER_JENV_KAKU2
|
||||
"jpn_kaku3_216x277mm", // wxPAPER_JENV_KAKU3
|
||||
"jpn_chou3", // wxPAPER_JENV_CHOU3
|
||||
"jpn_chou4", // wxPAPER_JENV_CHOU4
|
||||
"na_letter", // wxPAPER_LETTER_ROTATED
|
||||
"iso_a3", // wxPAPER_A3_ROTATED
|
||||
"iso_a4", // wxPAPER_A4_ROTATED
|
||||
"iso_a5", // wxPAPER_A5_ROTATED
|
||||
"jis_b4", // wxPAPER_B4_JIS_ROTATED
|
||||
"jis_b5", // wxPAPER_B5_JIS_ROTATED
|
||||
"jpn_hagaki", // wxPAPER_JAPANESE_POSTCARD_ROTATED
|
||||
"jpn_oufuku", // wxPAPER_DBL_JAPANESE_POSTCARD_ROTATED
|
||||
"iso_a6", // wxPAPER_A6_ROTATED
|
||||
"jpn_kaku2", // wxPAPER_JENV_KAKU2_ROTATED
|
||||
"jpn_kaku3_216x277mm", // wxPAPER_JENV_KAKU3_ROTATED
|
||||
"jpn_chou3", // wxPAPER_JENV_CHOU3_ROTATED
|
||||
"jpn_chou4", // wxPAPER_JENV_CHOU4_ROTATED
|
||||
"jis_b6", // wxPAPER_B6_JIS
|
||||
"jis_b6", // wxPAPER_B6_JIS_ROTATED
|
||||
"na_11x12", // wxPAPER_12X11
|
||||
"jpn_you4", // wxPAPER_JENV_YOU4
|
||||
"jpn_you4", // wxPAPER_JENV_YOU4_ROTATED
|
||||
"prc_16k", // wxPAPER_P16K
|
||||
"prc_32k", // wxPAPER_P32K
|
||||
"prc_32k", // wxPAPER_P32KBIG
|
||||
"prc_1", // wxPAPER_PENV_1
|
||||
"prc_2", // wxPAPER_PENV_2
|
||||
"prc_3", // wxPAPER_PENV_3
|
||||
"prc_4", // wxPAPER_PENV_4
|
||||
"prc_5", // wxPAPER_PENV_5
|
||||
"prc_6", // wxPAPER_PENV_6
|
||||
"prc_7", // wxPAPER_PENV_7
|
||||
"prc_8", // wxPAPER_PENV_8
|
||||
"prc_9", // wxPAPER_PENV_9
|
||||
"prc_10", // wxPAPER_PENV_10
|
||||
"prc_16k", // wxPAPER_P16K_ROTATED
|
||||
"prc_32k", // wxPAPER_P32K_ROTATED
|
||||
"prc_32k", // wxPAPER_P32KBIG_ROTATED
|
||||
"prc_1", // wxPAPER_PENV_1_ROTATED
|
||||
"prc_2", // wxPAPER_PENV_2_ROTATED
|
||||
"prc_3", // wxPAPER_PENV_3_ROTATED
|
||||
"prc_4", // wxPAPER_PENV_4_ROTATED
|
||||
"prc_5", // wxPAPER_PENV_5_ROTATED
|
||||
"prc_6", // wxPAPER_PENV_6_ROTATED
|
||||
"prc_7", // wxPAPER_PENV_7_ROTATED
|
||||
"prc_8", // wxPAPER_PENV_8_ROTATED
|
||||
"prc_9", // wxPAPER_PENV_9_ROTATED
|
||||
"prc_10", // wxPAPER_PENV_10_ROTATED
|
||||
"iso_a0", // wxPAPER_A0
|
||||
"iso_a1" // wxPAPER_A1
|
||||
};
|
||||
|
||||
static GtkPaperSize* wxGetGtkPaperSize(wxPaperSize paperId, const wxSize& size)
|
||||
{
|
||||
// if wxPaperSize is valid, get corresponding GtkPaperSize
|
||||
if (paperId > 0 && size_t(paperId) < WXSIZEOF(gs_paperList))
|
||||
return gtk_paper_size_new(gs_paperList[paperId]);
|
||||
|
||||
// if size is not valid, use a default GtkPaperSize
|
||||
if (size.x < 1 || size.y < 1)
|
||||
return gtk_paper_size_new(gtk_paper_size_get_default());
|
||||
|
||||
#if GTK_CHECK_VERSION(2,12,0)
|
||||
#ifndef __WXGTK3__
|
||||
if (gtk_check_version(2,12,0) == NULL)
|
||||
#endif
|
||||
{
|
||||
// look for a size match in GTK's GtkPaperSize list
|
||||
const double w = size.x;
|
||||
const double h = size.y;
|
||||
GtkPaperSize* paperSize = NULL;
|
||||
GList* list = gtk_paper_size_get_paper_sizes(true);
|
||||
for (GList* p = list; p; p = p->next)
|
||||
{
|
||||
GtkPaperSize* paperSize2 = static_cast<GtkPaperSize*>(p->data);
|
||||
if (paperSize == NULL &&
|
||||
fabs(w - gtk_paper_size_get_width(paperSize2, GTK_UNIT_MM)) < 1 &&
|
||||
fabs(h - gtk_paper_size_get_height(paperSize2, GTK_UNIT_MM)) < 1)
|
||||
{
|
||||
paperSize = paperSize2;
|
||||
}
|
||||
else
|
||||
gtk_paper_size_free(paperSize2);
|
||||
}
|
||||
g_list_free(list);
|
||||
|
||||
if (paperSize)
|
||||
return paperSize
|
||||
}
|
||||
#endif // GTK >= 2.12
|
||||
|
||||
// last resort, use a custom GtkPaperSize
|
||||
const wxString title = _("Custom size");
|
||||
char name[40];
|
||||
g_snprintf(name, sizeof(name), "custom_%ux%u", size.x, size.y);
|
||||
return gtk_paper_size_new_custom(
|
||||
name, title.utf8_str(), size.x, size.y, GTK_UNIT_MM);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// wxGtkPrintModule
|
||||
// Initialized when starting the app : if it successfully load the gtk-print framework,
|
||||
@@ -301,96 +467,36 @@ bool wxGtkPrintNativeData::TransferTo( wxPrintData &data )
|
||||
|
||||
data.SetCollate(gtk_print_settings_get_collate (m_config));
|
||||
|
||||
// Paper formats : these are the most common paper formats.
|
||||
wxPaperSize paperId = wxPAPER_NONE;
|
||||
GtkPaperSize *paper_size = gtk_print_settings_get_paper_size (m_config);
|
||||
if (!paper_size)
|
||||
data.SetPaperId(wxPAPER_NONE);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new (GTK_PAPER_NAME_A3)))
|
||||
data.SetPaperId(wxPAPER_A3);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new (GTK_PAPER_NAME_A4)))
|
||||
data.SetPaperId(wxPAPER_A4);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new (GTK_PAPER_NAME_A5)))
|
||||
data.SetPaperId(wxPAPER_A5);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new (GTK_PAPER_NAME_B5)))
|
||||
data.SetPaperId(wxPAPER_B5);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new (GTK_PAPER_NAME_LETTER)))
|
||||
data.SetPaperId(wxPAPER_LETTER);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new (GTK_PAPER_NAME_LEGAL)))
|
||||
data.SetPaperId(wxPAPER_LEGAL);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new (GTK_PAPER_NAME_EXECUTIVE)))
|
||||
data.SetPaperId(wxPAPER_EXECUTIVE);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"na_number-10")))
|
||||
data.SetPaperId(wxPAPER_ENV_10);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"iso-c5")))
|
||||
data.SetPaperId(wxPAPER_ENV_C5);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"iso-c6")))
|
||||
data.SetPaperId(wxPAPER_ENV_C6);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"jis-b5")))
|
||||
data.SetPaperId(wxPAPER_B5_TRANSVERSE);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"iso-b5")))
|
||||
data.SetPaperId(wxPAPER_ENV_B5);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"na_monarch")))
|
||||
data.SetPaperId(wxPAPER_ENV_MONARCH);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"engineering-c")))
|
||||
data.SetPaperId( wxPAPER_CSHEET);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"engineering-d")))
|
||||
data.SetPaperId( wxPAPER_DSHEET);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"engineering-e")))
|
||||
data.SetPaperId( wxPAPER_ESHEET);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"letter")))
|
||||
data.SetPaperId( wxPAPER_LETTERSMALL);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"engineering-b")))
|
||||
data.SetPaperId( wxPAPER_TABLOID);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"ledger")))
|
||||
data.SetPaperId( wxPAPER_LEDGER);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"statement")))
|
||||
data.SetPaperId( wxPAPER_STATEMENT);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( GTK_PAPER_NAME_A4 )))
|
||||
data.SetPaperId( wxPAPER_A4SMALL);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"iso-b4")))
|
||||
data.SetPaperId( wxPAPER_B4);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"folio")))
|
||||
data.SetPaperId( wxPAPER_FOLIO);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"quarto")))
|
||||
data.SetPaperId( wxPAPER_QUARTO);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"10x14")))
|
||||
data.SetPaperId( wxPAPER_10X14);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"ledger")))
|
||||
data.SetPaperId( wxPAPER_11X17);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"letter")))
|
||||
data.SetPaperId( wxPAPER_NOTE);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"na-number-9-envelope")))
|
||||
data.SetPaperId( wxPAPER_ENV_9);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"number-11")))
|
||||
data.SetPaperId( wxPAPER_ENV_11);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"number-12")))
|
||||
data.SetPaperId( wxPAPER_ENV_12);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"number-14")))
|
||||
data.SetPaperId( wxPAPER_ENV_14);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"iso-designated")))
|
||||
data.SetPaperId( wxPAPER_ENV_DL);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"iso-c3")))
|
||||
data.SetPaperId( wxPAPER_ENV_C3);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"iso-c4")))
|
||||
data.SetPaperId( wxPAPER_ENV_C4);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"c6/c5")))
|
||||
data.SetPaperId( wxPAPER_ENV_C65);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"iso-b4")))
|
||||
data.SetPaperId( wxPAPER_ENV_B4);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"iso-b6")))
|
||||
data.SetPaperId( wxPAPER_ENV_B6);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"Italian")))
|
||||
data.SetPaperId( wxPAPER_ENV_ITALY);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"personal")))
|
||||
data.SetPaperId( wxPAPER_ENV_PERSONAL);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"fanfold-us")))
|
||||
data.SetPaperId( wxPAPER_FANFOLD_US);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"fanfold-European")))
|
||||
data.SetPaperId( wxPAPER_FANFOLD_STD_GERMAN);
|
||||
else if (gtk_paper_size_is_equal(paper_size,gtk_paper_size_new ( (const gchar*)"foolscap")))
|
||||
data.SetPaperId( wxPAPER_FANFOLD_LGL_GERMAN);
|
||||
else
|
||||
data.SetPaperId(wxPAPER_NONE);
|
||||
if (paper_size)
|
||||
{
|
||||
const char* name = gtk_paper_size_get_name(paper_size);
|
||||
for (size_t i = 1; i < WXSIZEOF(gs_paperList); i++)
|
||||
{
|
||||
if (strcmp(name, gs_paperList[i]) == 0)
|
||||
{
|
||||
paperId = static_cast<wxPaperSize>(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (paperId == wxPAPER_NONE)
|
||||
{
|
||||
// look for a size match in wxThePrintPaperDatabase
|
||||
const wxSize size(
|
||||
int(10 * gtk_paper_size_get_width(paper_size, GTK_UNIT_MM)),
|
||||
int(10 * gtk_paper_size_get_height(paper_size, GTK_UNIT_MM)));
|
||||
|
||||
paperId = wxThePrintPaperDatabase->GetSize(size);
|
||||
|
||||
// if no match, set custom size
|
||||
if (paperId == wxPAPER_NONE)
|
||||
data.SetPaperSize(size);
|
||||
}
|
||||
|
||||
gtk_paper_size_free(paper_size);
|
||||
}
|
||||
data.SetPaperId(paperId);
|
||||
|
||||
data.SetPrinterName(gtk_print_settings_get_printer(m_config));
|
||||
|
||||
@@ -451,96 +557,9 @@ bool wxGtkPrintNativeData::TransferFrom( const wxPrintData &data )
|
||||
|
||||
gtk_print_settings_set_collate (m_config, data.GetCollate());
|
||||
|
||||
// Paper formats: these are the most common paper formats.
|
||||
switch (data.GetPaperId())
|
||||
{
|
||||
case wxPAPER_A3: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new (GTK_PAPER_NAME_A3));
|
||||
break;
|
||||
case wxPAPER_A4: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new (GTK_PAPER_NAME_A4));
|
||||
break;
|
||||
case wxPAPER_A5: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new (GTK_PAPER_NAME_A5));
|
||||
break;
|
||||
case wxPAPER_B5_TRANSVERSE: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "jis-b5"));
|
||||
break;
|
||||
case wxPAPER_B5: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new (GTK_PAPER_NAME_B5));
|
||||
break;
|
||||
case wxPAPER_LETTER: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new (GTK_PAPER_NAME_LETTER));
|
||||
break;
|
||||
case wxPAPER_LEGAL: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new (GTK_PAPER_NAME_LEGAL));
|
||||
break;
|
||||
case wxPAPER_EXECUTIVE: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new (GTK_PAPER_NAME_EXECUTIVE));
|
||||
break;
|
||||
case wxPAPER_ENV_10: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "na_number-10"));
|
||||
break;
|
||||
case wxPAPER_ENV_C5: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "iso-c5"));
|
||||
break;
|
||||
case wxPAPER_ENV_C6: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "iso-c6"));
|
||||
break;
|
||||
case wxPAPER_ENV_B5: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "iso-c5b5"));
|
||||
break;
|
||||
case wxPAPER_ENV_MONARCH: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "na_monarch"));
|
||||
break;
|
||||
case wxPAPER_CSHEET: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "engineering-c"));
|
||||
break;
|
||||
case wxPAPER_DSHEET: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "engineering-d"));
|
||||
break;
|
||||
case wxPAPER_ESHEET: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "engineering-e"));
|
||||
break;
|
||||
case wxPAPER_LETTERSMALL: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "letter"));
|
||||
break;
|
||||
case wxPAPER_TABLOID: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "engineering-b"));
|
||||
break;
|
||||
case wxPAPER_LEDGER: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "ledger"));
|
||||
break;
|
||||
case wxPAPER_STATEMENT: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "statement"));
|
||||
break;
|
||||
case wxPAPER_A4SMALL: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new (GTK_PAPER_NAME_A4));
|
||||
break;
|
||||
case wxPAPER_B4: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "iso-b4"));
|
||||
break;
|
||||
case wxPAPER_FOLIO: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "folio"));
|
||||
break;
|
||||
case wxPAPER_QUARTO: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "quarto"));
|
||||
break;
|
||||
case wxPAPER_10X14: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "10x14"));
|
||||
break;
|
||||
case wxPAPER_11X17: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "ledger"));
|
||||
break;
|
||||
case wxPAPER_NOTE: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "letter"));
|
||||
break;
|
||||
case wxPAPER_ENV_9: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "na-number-9-envelope"));
|
||||
break;
|
||||
case wxPAPER_ENV_11: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "number-11"));
|
||||
break;
|
||||
case wxPAPER_ENV_12: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "number-12"));
|
||||
break;
|
||||
case wxPAPER_ENV_14: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "number-14"));
|
||||
break;
|
||||
case wxPAPER_ENV_DL: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "iso-designated"));
|
||||
break;
|
||||
case wxPAPER_ENV_C3: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "iso-c3"));
|
||||
break;
|
||||
case wxPAPER_ENV_C4: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "iso-c4"));
|
||||
break;
|
||||
case wxPAPER_ENV_C65: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "c6/c5"));
|
||||
break;
|
||||
case wxPAPER_ENV_B4: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "iso-b4"));
|
||||
break;
|
||||
case wxPAPER_ENV_B6: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "iso-b6"));
|
||||
break;
|
||||
case wxPAPER_ENV_ITALY: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "Italian"));
|
||||
break;
|
||||
case wxPAPER_ENV_PERSONAL: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "personal"));
|
||||
break;
|
||||
case wxPAPER_FANFOLD_US: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "fanfold-us"));
|
||||
break;
|
||||
case wxPAPER_FANFOLD_STD_GERMAN: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "fanfold-European"));
|
||||
break;
|
||||
case wxPAPER_FANFOLD_LGL_GERMAN: gtk_print_settings_set_paper_size(m_config, gtk_paper_size_new ((const gchar*) "foolscap"));
|
||||
break;
|
||||
case wxPAPER_NONE:
|
||||
default: break;
|
||||
}
|
||||
GtkPaperSize* paperSize = wxGetGtkPaperSize(data.GetPaperId(), data.GetPaperSize());
|
||||
gtk_print_settings_set_paper_size(m_config, paperSize);
|
||||
gtk_paper_size_free(paperSize);
|
||||
|
||||
gtk_print_settings_set_printer(m_config, data.GetPrinterName().utf8_str());
|
||||
|
||||
@@ -750,15 +769,15 @@ int wxGtkPageSetupDialog::ShowModal()
|
||||
GtkPageSetup* oldPageSetup = native->GetPageSetupFromSettings(nativeData);
|
||||
|
||||
// If the user used a custom paper format the last time he printed, we have to restore it too.
|
||||
if (m_pageDialogData.GetPrintData().GetPaperId() == wxPAPER_NONE)
|
||||
wxPaperSize paperId = m_pageDialogData.GetPrintData().GetPaperId();
|
||||
if (paperId == wxPAPER_NONE)
|
||||
{
|
||||
wxSize customPaperSize = m_pageDialogData.GetPaperSize();
|
||||
if (customPaperSize.GetWidth() > 0 && customPaperSize.GetHeight() > 0)
|
||||
{
|
||||
wxString title = _("Custom size");
|
||||
GtkPaperSize* customSize = gtk_paper_size_new_custom ("custom", title.mb_str(), (gdouble) customPaperSize.GetWidth(), (gdouble) customPaperSize.GetHeight(), GTK_UNIT_MM);
|
||||
GtkPaperSize* customSize = wxGetGtkPaperSize(paperId, customPaperSize);
|
||||
gtk_page_setup_set_paper_size_and_default_margins (oldPageSetup, customSize);
|
||||
g_object_unref(customSize);
|
||||
gtk_paper_size_free(customSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user