X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/89efaf2b6595e59af618556d7e79492cab50c73c..4e15d1caa03346c126015019c1fdf093033ef40b:/src/gtk/gnome/gprint.cpp diff --git a/src/gtk/gnome/gprint.cpp b/src/gtk/gnome/gprint.cpp index 3823149cad..17888b8a6d 100644 --- a/src/gtk/gnome/gprint.cpp +++ b/src/gtk/gnome/gprint.cpp @@ -34,6 +34,7 @@ #include "wx/dynlib.h" #include "wx/paper.h" #include "wx/dcprint.h" +#include "wx/testing.h" #include #include @@ -184,7 +185,7 @@ public: wxDL_METHOD_DEFINE( GtkWidget*, gnome_print_job_preview_new, (GnomePrintJob *gpm, const guchar *title), (gpm, title), NULL ) - DECLARE_NO_COPY_CLASS(wxGnomePrintLibrary) + wxDECLARE_NO_COPY_CLASS(wxGnomePrintLibrary); }; wxGnomePrintLibrary::wxGnomePrintLibrary() @@ -591,6 +592,8 @@ wxGnomePrintDialog::~wxGnomePrintDialog() int wxGnomePrintDialog::ShowModal() { + WX_TESTING_SHOW_MODAL_HOOK(); + int response = gtk_dialog_run (GTK_DIALOG (m_widget)); if (response == GNOME_PRINT_DIALOG_RESPONSE_CANCEL) @@ -609,7 +612,9 @@ int wxGnomePrintDialog::ShowModal() m_printDialogData.SetNoCopies( copies ); m_printDialogData.SetCollate( collate ); - switch (gs_libGnomePrint->gnome_print_dialog_get_range( (GnomePrintDialog*) m_widget )) + // Cast needed to avoid warnings because the gnome_print_dialog_get_range() + // is declared as returning a wrong enum type. + switch ( static_cast( gs_libGnomePrint->gnome_print_dialog_get_range( (GnomePrintDialog*) m_widget ))) { case GNOME_PRINT_RANGE_SELECTION: m_printDialogData.SetSelection( true ); @@ -734,6 +739,8 @@ wxPageSetupDialogData& wxGnomePageSetupDialog::GetPageSetupDialogData() int wxGnomePageSetupDialog::ShowModal() { + WX_TESTING_SHOW_MODAL_HOOK(); + wxGnomePrintNativeData *native = (wxGnomePrintNativeData*) m_pageDialogData.GetPrintData().GetNativeData(); @@ -843,8 +850,6 @@ bool wxGnomePrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt ) native->SetPrintJob( job ); - printout->SetIsPreview(false); - if (m_printDialogData.GetMinPage() < 1) m_printDialogData.SetMinPage(1); if (m_printDialogData.GetMaxPage() < 1) @@ -860,9 +865,6 @@ bool wxGnomePrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt ) dc = new wxGnomePrinterDC( printdata ); // TODO: check that this works #endif - if (m_native_preview) - printout->SetIsPreview(true); - if (!dc) { gs_libGnomePrint->gnome_print_job_close( job ); @@ -1065,7 +1067,8 @@ wxGnomePrinterDCImpl::DoGetPixel(wxCoord WXUNUSED(x1), void wxGnomePrinterDCImpl::DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2) { - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; + if ( m_pen.IsTransparent() ) + return; SetPen( m_pen ); @@ -1112,7 +1115,7 @@ void wxGnomePrinterDCImpl::DoDrawArc(wxCoord x1,wxCoord y1,wxCoord x2,wxCoord y2 while (alpha2 > 360) alpha2 -= 360; } - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); gs_libGnomePrint->gnome_print_moveto ( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc) ); @@ -1121,7 +1124,7 @@ void wxGnomePrinterDCImpl::DoDrawArc(wxCoord x1,wxCoord y1,wxCoord x2,wxCoord y2 gs_libGnomePrint->gnome_print_fill( m_gpc ); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); gs_libGnomePrint->gnome_print_newpath( m_gpc ); @@ -1154,7 +1157,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoo xx = 0.0; yy = 0.0; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -1166,7 +1169,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoo gs_libGnomePrint->gnome_print_fill( m_gpc ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); @@ -1188,10 +1191,11 @@ void wxGnomePrinterDCImpl::DoDrawPoint(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y)) void wxGnomePrinterDCImpl::DoDrawLines(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset) { - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; - if (n <= 0) return; + if ( m_pen.IsTransparent() ) + return; + SetPen (m_pen); int i; @@ -1212,7 +1216,7 @@ void wxGnomePrinterDCImpl::DoDrawPolygon(int n, wxPoint points[], { if (n==0) return; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -1233,7 +1237,7 @@ void wxGnomePrinterDCImpl::DoDrawPolygon(int n, wxPoint points[], gs_libGnomePrint->gnome_print_fill( m_gpc ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); @@ -1268,7 +1272,7 @@ void wxGnomePrinterDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, width--; height--; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -1284,7 +1288,7 @@ void wxGnomePrinterDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); @@ -1308,7 +1312,7 @@ void wxGnomePrinterDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord wxCoord rad = wxRound( radius ); - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush(m_brush); gs_libGnomePrint->gnome_print_newpath(m_gpc); @@ -1340,7 +1344,7 @@ void wxGnomePrinterDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord CalcBoundingBox(x+width,y+height); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen(m_pen); gs_libGnomePrint->gnome_print_newpath(m_gpc); @@ -1424,7 +1428,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wx width--; height--; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); makeEllipticalPath( x, y, width, height ); @@ -1433,7 +1437,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wx CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); makeEllipticalPath( x, y, width, height ); @@ -1537,7 +1541,7 @@ wxGnomePrinterDCImpl::DoDrawBitmap(const wxBitmap& bitmap, wxCoord x, wxCoord y, bool WXUNUSED(useMask)) { - if (!bitmap.Ok()) return; + if (!bitmap.IsOk()) return; if (bitmap.HasPixbuf()) { @@ -1568,7 +1572,7 @@ wxGnomePrinterDCImpl::DoDrawBitmap(const wxBitmap& bitmap, { wxImage image = bitmap.ConvertToImage(); - if (!image.Ok()) return; + if (!image.IsOk()) return; gs_libGnomePrint->gnome_print_gsave( m_gpc ); double matrix[6]; @@ -1595,30 +1599,12 @@ void wxGnomePrinterDCImpl::DoDrawRotatedText(const wxString& text, wxCoord x, wx double xx = XLOG2DEV(x); double yy = YLOG2DEV(y); - bool underlined = m_font.Ok() && m_font.GetUnderlined(); + const wxScopedCharBuffer data(text.utf8_str()); - // FIXME-UTF8: wouldn't be needed if utf8_str() always returned a buffer -#if wxUSE_UNICODE_UTF8 - const char *data = text.utf8_str(); -#else - const wxCharBuffer data = text.utf8_str(); -#endif - - size_t datalen = strlen(data); - pango_layout_set_text( m_layout, data, datalen); - - if (underlined) - { - PangoAttrList *attrs = pango_attr_list_new(); - PangoAttribute *a = pango_attr_underline_new(PANGO_UNDERLINE_SINGLE); - a->start_index = 0; - a->end_index = datalen; - pango_attr_list_insert(attrs, a); - pango_layout_set_attributes(m_layout, attrs); - pango_attr_list_unref(attrs); - } + pango_layout_set_text(m_layout, data, data.length()); + const bool setAttrs = m_font.GTKSetPangoAttrs(m_layout); - if (m_textForegroundColour.Ok()) + if (m_textForegroundColour.IsOk()) { unsigned char red = m_textForegroundColour.Red(); unsigned char blue = m_textForegroundColour.Blue(); @@ -1664,7 +1650,7 @@ void wxGnomePrinterDCImpl::DoDrawRotatedText(const wxString& text, wxCoord x, wx gs_libGnomePrint->gnome_print_grestore( m_gpc ); - if (underlined) + if (setAttrs) { // undo underline attributes setting: pango_layout_set_attributes(m_layout, NULL); @@ -1682,7 +1668,7 @@ void wxGnomePrinterDCImpl::SetFont( const wxFont& font ) { m_font = font; - if (m_font.Ok()) + if (m_font.IsOk()) { if (m_fontdesc) pango_font_description_free( m_fontdesc ); @@ -1699,7 +1685,7 @@ void wxGnomePrinterDCImpl::SetFont( const wxFont& font ) void wxGnomePrinterDCImpl::SetPen( const wxPen& pen ) { - if (!pen.Ok()) return; + if (!pen.IsOk()) return; m_pen = pen; @@ -1765,7 +1751,7 @@ void wxGnomePrinterDCImpl::SetPen( const wxPen& pen ) void wxGnomePrinterDCImpl::SetBrush( const wxBrush& brush ) { - if (!brush.Ok()) return; + if (!brush.IsOk()) return; m_brush = brush; @@ -1913,12 +1899,7 @@ void wxGnomePrinterDCImpl::DoGetTextExtent(const wxString& string, wxCoord *widt // Set layout's text - // FIXME-UTF8: wouldn't be needed if utf8_str() always returned a buffer -#if wxUSE_UNICODE_UTF8 - const char *dataUTF8 = string.utf8_str(); -#else - const wxCharBuffer dataUTF8 = string.utf8_str(); -#endif + const wxScopedCharBuffer dataUTF8(string.utf8_str()); gint oldSize = 0; if ( theFont ) @@ -2043,8 +2024,7 @@ bool wxGnomePrintModule::OnInit() void wxGnomePrintModule::OnExit() { - delete gs_libGnomePrint; - gs_libGnomePrint = NULL; + wxDELETE(gs_libGnomePrint); } IMPLEMENT_DYNAMIC_CLASS(wxGnomePrintModule, wxModule)