if(!m_config)
return false;
- GtkPrintQuality quality = gtk_print_settings_get_quality(m_config);
- if (quality == GTK_PRINT_QUALITY_HIGH)
- data.SetQuality(wxPRINT_QUALITY_HIGH);
- else if (quality == GTK_PRINT_QUALITY_LOW)
- data.SetQuality(wxPRINT_QUALITY_LOW);
- else if (quality == GTK_PRINT_QUALITY_DRAFT)
- data.SetQuality(wxPRINT_QUALITY_DRAFT);
- else
- data.SetQuality(wxPRINT_QUALITY_MEDIUM);
+ int resolution = gtk_print_settings_get_resolution(m_config);
+ if ( resolution > 0 )
+ {
+ // if resolution is explicitly set, use it
+ data.SetQuality(resolution);
+ }
+ else // use more vague "quality"
+ {
+ GtkPrintQuality quality = gtk_print_settings_get_quality(m_config);
+ if (quality == GTK_PRINT_QUALITY_HIGH)
+ data.SetQuality(wxPRINT_QUALITY_HIGH);
+ else if (quality == GTK_PRINT_QUALITY_LOW)
+ data.SetQuality(wxPRINT_QUALITY_LOW);
+ else if (quality == GTK_PRINT_QUALITY_DRAFT)
+ data.SetQuality(wxPRINT_QUALITY_DRAFT);
+ else
+ data.SetQuality(wxPRINT_QUALITY_MEDIUM);
+ }
data.SetNoCopies(gtk_print_settings_get_n_copies(m_config));
wxPrintData printdata = GetPrintDialogData().GetPrintData();
wxGtkPrintNativeData *native = (wxGtkPrintNativeData*) printdata.GetNativeData();
+ // We need to update printdata with the new data from the dialog and we
+ // have to do this here because this method needs this new data and we
+ // cannot update it earlier
+ native->SetPrintConfig(gtk_print_operation_get_print_settings(operation));
+ printdata.ConvertFromNative();
+
SetPrintContext(context);
native->SetPrintContext( context );
wxPrintout * WXUNUSED(printoutForPrinting),
wxPrintData *data)
{
- DetermineScaling();
-
// convert wxPrintQuality to resolution (input pointer can be NULL)
wxPrintQuality quality = data ? data->GetQuality() : wxPRINT_QUALITY_MEDIUM;
switch ( quality )
m_resolution = 1200;
break;
+ case wxPRINT_QUALITY_LOW:
+ m_resolution = 300;
+ break;
+
+ case wxPRINT_QUALITY_DRAFT:
+ m_resolution = 150;
+ break;
+
default:
+ if ( quality > 0 )
+ {
+ // positive values directly indicate print resolution
+ m_resolution = quality;
+ break;
+ }
+
wxFAIL_MSG( "unknown print quality" );
// fall through
m_resolution = 600;
break;
- case wxPRINT_QUALITY_LOW:
- m_resolution = 300;
- break;
-
- case wxPRINT_QUALITY_DRAFT:
- m_resolution = 150;
- break;
}
+
+ DetermineScaling();
}
wxGtkPrintPreview::wxGtkPrintPreview(wxPrintout *printout,