X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9e19da0f2ad5fe82c24ae82c281786b64d0156d5..abd474ea63667f727940a009cc3e0b23ba9f418f:/src/gtk/print.cpp?ds=inline diff --git a/src/gtk/print.cpp b/src/gtk/print.cpp index 2c3376d044..071c5e6733 100644 --- a/src/gtk/print.cpp +++ b/src/gtk/print.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/gtk/print.cpp +// Name: src/gtk/print.cpp // Author: Anthony Bretaudeau // Purpose: GTK printing support // Created: 2007-08-25 @@ -36,7 +36,13 @@ #include "wx/paper.h" #include + +#if GTK_CHECK_VERSION(2,14,0) +#include +#else #include +#endif + #if wxUSE_GRAPHICS_CONTEXT #include "wx/graphics.h" @@ -51,7 +57,7 @@ wxFORCE_LINK_THIS_MODULE(gtk_print) #include "wx/gtk/private/object.h" -// Usefull to convert angles from/to Rad to/from Deg. +// Useful to convert angles from/to Rad to/from Deg. static const double RAD2DEG = 180.0 / M_PI; static const double DEG2RAD = M_PI / 180.0; @@ -543,7 +549,7 @@ bool wxGtkPrintNativeData::TransferFrom( const wxPrintData &data ) default: break; } - gtk_print_settings_set_printer(m_config, data.GetPrinterName()); + gtk_print_settings_set_printer(m_config, data.GetPrinterName().utf8_str()); return true; } @@ -661,8 +667,8 @@ int wxGtkPrintDialog::ShowModal() } else if (response == GTK_PRINT_OPERATION_RESULT_ERROR) { + wxLogError(_("Error while printing: ") + wxString(gError ? gError->message : "???")); g_error_free (gError); - wxLogError(_("Error while printing: ") + wxString::Format(_("%s"), gError->message)); return wxID_NO; // We use wxID_NO because there is no wxID_ERROR available } @@ -763,7 +769,9 @@ int wxGtkPageSetupDialog::ShowModal() wxString title(GetTitle()); if ( title.empty() ) title = _("Page Setup"); - GtkWidget *dlg = gtk_page_setup_unix_dialog_new(title, GTK_WINDOW(m_parent->m_widget)); + GtkWidget * + dlg = gtk_page_setup_unix_dialog_new(title.utf8_str(), + GTK_WINDOW(m_parent->m_widget)); gtk_page_setup_unix_dialog_set_print_settings( GTK_PAGE_SETUP_UNIX_DIALOG(dlg), nativeData); @@ -1730,7 +1738,7 @@ void wxGtkPrinterDCImpl::DoDrawRotatedText(const wxString& text, wxCoord x, wxCo angle = -angle; - bool underlined = m_font.Ok() && m_font.GetUnderlined(); + bool underlined = m_font.IsOk() && m_font.GetUnderlined(); const wxScopedCharBuffer data = text.utf8_str(); @@ -1748,7 +1756,7 @@ void wxGtkPrinterDCImpl::DoDrawRotatedText(const wxString& text, wxCoord x, wxCo pango_attr_list_unref(attrs); } - if (m_textForegroundColour.Ok()) + if (m_textForegroundColour.IsOk()) { unsigned char red = m_textForegroundColour.Red(); unsigned char blue = m_textForegroundColour.Blue(); @@ -1836,7 +1844,7 @@ void wxGtkPrinterDCImpl::SetFont( const wxFont& font ) { m_font = font; - if (m_font.Ok()) + if (m_font.IsOk()) { if (m_fontdesc) pango_font_description_free( m_fontdesc ); @@ -1853,7 +1861,7 @@ void wxGtkPrinterDCImpl::SetFont( const wxFont& font ) void wxGtkPrinterDCImpl::SetPen( const wxPen& pen ) { - if (!pen.Ok()) return; + if (!pen.IsOk()) return; m_pen = pen; @@ -1932,7 +1940,7 @@ void wxGtkPrinterDCImpl::SetPen( const wxPen& pen ) void wxGtkPrinterDCImpl::SetBrush( const wxBrush& brush ) { - if (!brush.Ok()) return; + if (!brush.IsOk()) return; m_brush = brush; @@ -2205,7 +2213,7 @@ void wxGtkPrinterDCImpl::SetPrintData(const wxPrintData& data) m_printData = data; } -// overriden for wxPrinterDC Impl +// overridden for wxPrinterDC Impl wxRect wxGtkPrinterDCImpl::GetPaperRect() const { @@ -2306,8 +2314,14 @@ void wxGtkPrintPreview::DetermineScaling() if (paper) { - m_previewPrintout->SetPPIScreen(wxGetDisplayPPI()); - m_previewPrintout->SetPPIPrinter( m_resolution, m_resolution ); + const wxSize screenPPI = wxGetDisplayPPI(); + int logPPIScreenX = screenPPI.GetWidth(); + int logPPIScreenY = screenPPI.GetHeight(); + int logPPIPrinterX = m_resolution; + int logPPIPrinterY = m_resolution; + + m_previewPrintout->SetPPIScreen( logPPIScreenX, logPPIScreenY ); + m_previewPrintout->SetPPIPrinter( logPPIPrinterX, logPPIPrinterY ); // Get width and height in points (1/72th of an inch) wxSize sizeDevUnits(paper->GetSizeDeviceUnits()); @@ -2334,8 +2348,8 @@ void wxGtkPrintPreview::DetermineScaling() m_previewPrintout->SetPaperRectPixels(wxRect(0, 0, m_pageWidth, m_pageHeight)); // At 100%, the page should look about page-size on the screen. - m_previewScaleX = 0.8 * 72.0 / (double)m_resolution; - m_previewScaleY = m_previewScaleX; + m_previewScaleX = float(logPPIScreenX) / logPPIPrinterX; + m_previewScaleY = float(logPPIScreenY) / logPPIPrinterY; } }