Next phase of Print Factory code.
Created a mini interface so that the generic wxPrintDialog can show a "printer" and a "status" line if the print factory wants this to be the case. Moved some code (print mode) back from the PostScript only print data to the general print data since it is sort of general. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30101 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -197,6 +197,7 @@ public:
|
|||||||
// in wxPageSetupDialogData
|
// in wxPageSetupDialogData
|
||||||
wxPrintQuality GetQuality() const { return m_printQuality; }
|
wxPrintQuality GetQuality() const { return m_printQuality; }
|
||||||
wxPrintBin GetBin() const { return m_bin; }
|
wxPrintBin GetBin() const { return m_bin; }
|
||||||
|
wxPrintMode GetPrintMode() const { return m_printMode; }
|
||||||
|
|
||||||
void SetNoCopies(int v) { m_printNoCopies = v; };
|
void SetNoCopies(int v) { m_printNoCopies = v; };
|
||||||
void SetCollate(bool flag) { m_printCollate = flag; };
|
void SetCollate(bool flag) { m_printCollate = flag; };
|
||||||
@@ -209,6 +210,7 @@ public:
|
|||||||
void SetPaperSize(const wxSize& sz) { m_paperSize = sz; }
|
void SetPaperSize(const wxSize& sz) { m_paperSize = sz; }
|
||||||
void SetQuality(wxPrintQuality quality) { m_printQuality = quality; }
|
void SetQuality(wxPrintQuality quality) { m_printQuality = quality; }
|
||||||
void SetBin(wxPrintBin bin) { m_bin = bin; }
|
void SetBin(wxPrintBin bin) { m_bin = bin; }
|
||||||
|
void SetPrintMode(wxPrintMode printMode) { m_printMode = printMode; }
|
||||||
|
|
||||||
wxString GetFilename() const { return m_filename; }
|
wxString GetFilename() const { return m_filename; }
|
||||||
void SetFilename( const wxString &filename ) { m_filename = filename; }
|
void SetFilename( const wxString &filename ) { m_filename = filename; }
|
||||||
@@ -229,6 +231,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
wxPrintBin m_bin;
|
wxPrintBin m_bin;
|
||||||
|
wxPrintMode m_printMode;
|
||||||
|
|
||||||
int m_printNoCopies;
|
int m_printNoCopies;
|
||||||
int m_printOrientation;
|
int m_printOrientation;
|
||||||
|
@@ -98,7 +98,6 @@ public:
|
|||||||
double GetPrinterScaleY() const { return m_printerScaleY; }
|
double GetPrinterScaleY() const { return m_printerScaleY; }
|
||||||
long GetPrinterTranslateX() const { return m_printerTranslateX; }
|
long GetPrinterTranslateX() const { return m_printerTranslateX; }
|
||||||
long GetPrinterTranslateY() const { return m_printerTranslateY; }
|
long GetPrinterTranslateY() const { return m_printerTranslateY; }
|
||||||
wxPrintMode GetPrintMode() const { return m_printMode; }
|
|
||||||
|
|
||||||
void SetPrinterCommand(const wxString& command) { m_printerCommand = command; }
|
void SetPrinterCommand(const wxString& command) { m_printerCommand = command; }
|
||||||
void SetPrinterOptions(const wxString& options) { m_printerOptions = options; }
|
void SetPrinterOptions(const wxString& options) { m_printerOptions = options; }
|
||||||
@@ -110,7 +109,6 @@ public:
|
|||||||
void SetPrinterTranslateX(long x) { m_printerTranslateX = x; }
|
void SetPrinterTranslateX(long x) { m_printerTranslateX = x; }
|
||||||
void SetPrinterTranslateY(long y) { m_printerTranslateY = y; }
|
void SetPrinterTranslateY(long y) { m_printerTranslateY = y; }
|
||||||
void SetPrinterTranslation(long x, long y) { m_printerTranslateX = x; m_printerTranslateY = y; }
|
void SetPrinterTranslation(long x, long y) { m_printerTranslateX = x; m_printerTranslateY = y; }
|
||||||
void SetPrintMode(wxPrintMode printMode) { m_printMode = printMode; }
|
|
||||||
|
|
||||||
#if wxUSE_STREAMS
|
#if wxUSE_STREAMS
|
||||||
wxOutputStream *GetOutputStream() { return m_outputStream; }
|
wxOutputStream *GetOutputStream() { return m_outputStream; }
|
||||||
@@ -126,7 +124,6 @@ private:
|
|||||||
double m_printerScaleY;
|
double m_printerScaleY;
|
||||||
long m_printerTranslateX;
|
long m_printerTranslateX;
|
||||||
long m_printerTranslateY;
|
long m_printerTranslateY;
|
||||||
wxPrintMode m_printMode;
|
|
||||||
#if wxUSE_STREAMS
|
#if wxUSE_STREAMS
|
||||||
wxOutputStream *m_outputStream;
|
wxOutputStream *m_outputStream;
|
||||||
#endif
|
#endif
|
||||||
@@ -201,7 +198,7 @@ public:
|
|||||||
virtual bool TransferDataFromWindow();
|
virtual bool TransferDataFromWindow();
|
||||||
virtual bool TransferDataToWindow();
|
virtual bool TransferDataToWindow();
|
||||||
|
|
||||||
wxComboBox *CreatePaperTypeChoice(int* x, int* y);
|
virtual wxComboBox *CreatePaperTypeChoice();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxRadioBox* m_orientationRadioBox;
|
wxRadioBox* m_orientationRadioBox;
|
||||||
|
@@ -62,9 +62,6 @@ public:
|
|||||||
wxPrintFactory() {}
|
wxPrintFactory() {}
|
||||||
virtual ~wxPrintFactory() {}
|
virtual ~wxPrintFactory() {}
|
||||||
|
|
||||||
virtual bool HasPageSetupDialog() = 0;
|
|
||||||
virtual bool HasPrintSetupDialog() = 0;
|
|
||||||
|
|
||||||
virtual wxPrinterBase *CreatePrinter( wxPrintDialogData* data ) = 0;
|
virtual wxPrinterBase *CreatePrinter( wxPrintDialogData* data ) = 0;
|
||||||
|
|
||||||
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
||||||
@@ -79,6 +76,20 @@ public:
|
|||||||
virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
|
virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
|
||||||
wxPrintData *data ) = 0;
|
wxPrintData *data ) = 0;
|
||||||
|
|
||||||
|
// What to do and what to show in the wxPrintDialog
|
||||||
|
// a) Use the generic print setup dialog or a native one?
|
||||||
|
virtual bool HasPrintSetupDialog() = 0;
|
||||||
|
virtual wxDialog *CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data ) = 0;
|
||||||
|
// b) Provide the "print to file" option ourselves or via print setup?
|
||||||
|
virtual bool HasOwnPrintToFile() = 0;
|
||||||
|
// c) Show current printer
|
||||||
|
virtual bool HasPrinterLine() = 0;
|
||||||
|
virtual wxString CreatePrinterLine() = 0;
|
||||||
|
// d) Show Status line for current printer?
|
||||||
|
virtual bool HasStatusLine() = 0;
|
||||||
|
virtual wxString CreateStatusLine() = 0;
|
||||||
|
|
||||||
|
|
||||||
virtual wxPrintNativeDataBase *CreatePrintNativeData() = 0;
|
virtual wxPrintNativeDataBase *CreatePrintNativeData() = 0;
|
||||||
|
|
||||||
static void SetPrintFactory( wxPrintFactory *factory );
|
static void SetPrintFactory( wxPrintFactory *factory );
|
||||||
@@ -89,11 +100,6 @@ public:
|
|||||||
class WXDLLEXPORT wxNativePrintFactory: public wxPrintFactory
|
class WXDLLEXPORT wxNativePrintFactory: public wxPrintFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual bool HasPageSetupDialog()
|
|
||||||
{ return true; }
|
|
||||||
virtual bool HasPrintSetupDialog()
|
|
||||||
{ return true; }
|
|
||||||
|
|
||||||
virtual wxPrinterBase *CreatePrinter( wxPrintDialogData *data );
|
virtual wxPrinterBase *CreatePrinter( wxPrintDialogData *data );
|
||||||
|
|
||||||
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
||||||
@@ -108,6 +114,14 @@ public:
|
|||||||
virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
|
virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
|
||||||
wxPrintData *data );
|
wxPrintData *data );
|
||||||
|
|
||||||
|
virtual bool HasPrintSetupDialog();
|
||||||
|
virtual wxDialog *CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data );
|
||||||
|
virtual bool HasOwnPrintToFile();
|
||||||
|
virtual bool HasPrinterLine();
|
||||||
|
virtual wxString CreatePrinterLine();
|
||||||
|
virtual bool HasStatusLine();
|
||||||
|
virtual wxString CreateStatusLine();
|
||||||
|
|
||||||
virtual wxPrintNativeDataBase *CreatePrintNativeData();
|
virtual wxPrintNativeDataBase *CreatePrintNativeData();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -171,6 +171,7 @@ wxPrintData::wxPrintData()
|
|||||||
m_nativePrintData = wxNativePrintData::Create() ;
|
m_nativePrintData = wxNativePrintData::Create() ;
|
||||||
#endif
|
#endif
|
||||||
m_bin = wxPRINTBIN_DEFAULT;
|
m_bin = wxPRINTBIN_DEFAULT;
|
||||||
|
m_printMode = wxPRINT_MODE_PRINTER;
|
||||||
m_printOrientation = wxPORTRAIT;
|
m_printOrientation = wxPORTRAIT;
|
||||||
m_printNoCopies = 1;
|
m_printNoCopies = 1;
|
||||||
m_printCollate = false;
|
m_printCollate = false;
|
||||||
@@ -228,6 +229,7 @@ void wxPrintData::operator=(const wxPrintData& data)
|
|||||||
m_paperId = data.m_paperId;
|
m_paperId = data.m_paperId;
|
||||||
m_paperSize = data.m_paperSize;
|
m_paperSize = data.m_paperSize;
|
||||||
m_bin = data.m_bin;
|
m_bin = data.m_bin;
|
||||||
|
m_printMode = data.m_printMode;
|
||||||
|
|
||||||
m_nativeData = data.GetNativeData();
|
m_nativeData = data.GetNativeData();
|
||||||
m_nativeData->m_ref++;
|
m_nativeData->m_ref++;
|
||||||
|
@@ -152,6 +152,74 @@ wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxNativePrintFactory::HasPrintSetupDialog()
|
||||||
|
{
|
||||||
|
#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
|
||||||
|
return false;
|
||||||
|
#elif defined(__WXMAC__)
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
// Only here do we need to provide the print setup
|
||||||
|
// dialog ourselves, the other platforms either have
|
||||||
|
// none, don't make it accessible or let you configure
|
||||||
|
// the printer from the wxPrintDialog anyway.
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
wxDialog *wxNativePrintFactory::CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data )
|
||||||
|
{
|
||||||
|
#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
|
||||||
|
return NULL;
|
||||||
|
#elif defined(__WXMAC__)
|
||||||
|
return NULL;
|
||||||
|
#else
|
||||||
|
// Only here do we need to provide the print setup
|
||||||
|
// dialog ourselves, the other platforms either have
|
||||||
|
// none, don't make it accessible or let you configure
|
||||||
|
// the printer from the wxPrintDialog anyway.
|
||||||
|
return new wxGenericPrintSetupDialog( parent, data );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxNativePrintFactory::HasOwnPrintToFile()
|
||||||
|
{
|
||||||
|
// Only relevant for PostScript and here the
|
||||||
|
// setup dialog provides no "print to file"
|
||||||
|
// option. In the GNOME setup dialog, the
|
||||||
|
// setup dialog has its own print to file.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxNativePrintFactory::HasPrinterLine()
|
||||||
|
{
|
||||||
|
// Only relevant for PostScript for now
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString wxNativePrintFactory::CreatePrinterLine()
|
||||||
|
{
|
||||||
|
// Only relevant for PostScript for now
|
||||||
|
|
||||||
|
// We should query "lpstat -d" here
|
||||||
|
return _("Generic PostScript");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxNativePrintFactory::HasStatusLine()
|
||||||
|
{
|
||||||
|
// Only relevant for PostScript for now
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString wxNativePrintFactory::CreateStatusLine()
|
||||||
|
{
|
||||||
|
// Only relevant for PostScript for now
|
||||||
|
|
||||||
|
// We should query "lpstat -r" or "lpstat -p" here
|
||||||
|
return _("Ready");
|
||||||
|
}
|
||||||
|
|
||||||
wxPrintNativeDataBase *wxNativePrintFactory::CreatePrintNativeData()
|
wxPrintNativeDataBase *wxNativePrintFactory::CreatePrintNativeData()
|
||||||
{
|
{
|
||||||
#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
|
#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
|
||||||
|
@@ -1801,10 +1801,7 @@ bool wxPostScriptDC::StartDoc( const wxString& message )
|
|||||||
{
|
{
|
||||||
wxCHECK_MSG( m_ok, false, wxT("invalid postscript dc") );
|
wxCHECK_MSG( m_ok, false, wxT("invalid postscript dc") );
|
||||||
|
|
||||||
wxPostScriptPrintNativeData *data =
|
if (m_printData.GetPrintMode() != wxPRINT_MODE_STREAM )
|
||||||
(wxPostScriptPrintNativeData *) m_printData.GetNativeData();
|
|
||||||
|
|
||||||
if (data->GetPrintMode() != wxPRINT_MODE_STREAM )
|
|
||||||
{
|
{
|
||||||
if (m_printData.GetFilename() == wxEmptyString)
|
if (m_printData.GetFilename() == wxEmptyString)
|
||||||
{
|
{
|
||||||
@@ -1971,7 +1968,7 @@ void wxPostScriptDC::EndDoc ()
|
|||||||
wxPostScriptPrintNativeData *data =
|
wxPostScriptPrintNativeData *data =
|
||||||
(wxPostScriptPrintNativeData *) m_printData.GetNativeData();
|
(wxPostScriptPrintNativeData *) m_printData.GetNativeData();
|
||||||
|
|
||||||
if (m_ok && (data->GetPrintMode() == wxPRINT_MODE_PRINTER))
|
if (m_ok && (m_printData.GetPrintMode() == wxPRINT_MODE_PRINTER))
|
||||||
{
|
{
|
||||||
wxString command;
|
wxString command;
|
||||||
command += data->GetPrinterCommand();
|
command += data->GetPrinterCommand();
|
||||||
@@ -2480,8 +2477,8 @@ void wxPostScriptDC::PsPrint( const char* psdata )
|
|||||||
{
|
{
|
||||||
wxPostScriptPrintNativeData *data =
|
wxPostScriptPrintNativeData *data =
|
||||||
(wxPostScriptPrintNativeData *) m_printData.GetNativeData();
|
(wxPostScriptPrintNativeData *) m_printData.GetNativeData();
|
||||||
|
|
||||||
switch(data->GetPrintMode())
|
switch (m_printData.GetPrintMode())
|
||||||
{
|
{
|
||||||
#if wxUSE_STREAMS
|
#if wxUSE_STREAMS
|
||||||
// append to output stream
|
// append to output stream
|
||||||
@@ -2505,8 +2502,8 @@ void wxPostScriptDC::PsPrint( int ch )
|
|||||||
{
|
{
|
||||||
wxPostScriptPrintNativeData *data =
|
wxPostScriptPrintNativeData *data =
|
||||||
(wxPostScriptPrintNativeData *) m_printData.GetNativeData();
|
(wxPostScriptPrintNativeData *) m_printData.GetNativeData();
|
||||||
|
|
||||||
switch (data->GetPrintMode())
|
switch (m_printData.GetPrintMode())
|
||||||
{
|
{
|
||||||
#if wxUSE_STREAMS
|
#if wxUSE_STREAMS
|
||||||
// append to output stream
|
// append to output stream
|
||||||
|
@@ -61,9 +61,6 @@
|
|||||||
#include "wx/paper.h"
|
#include "wx/paper.h"
|
||||||
#include "wx/filename.h"
|
#include "wx/filename.h"
|
||||||
|
|
||||||
// For print paper things
|
|
||||||
#include "wx/prntbase.h"
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -106,7 +103,6 @@ wxPostScriptPrintNativeData::wxPostScriptPrintNativeData()
|
|||||||
m_printerScaleY = 1.0;
|
m_printerScaleY = 1.0;
|
||||||
m_printerTranslateX = 0;
|
m_printerTranslateX = 0;
|
||||||
m_printerTranslateY = 0;
|
m_printerTranslateY = 0;
|
||||||
m_printMode = wxPRINT_MODE_FILE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxPostScriptPrintNativeData::~wxPostScriptPrintNativeData()
|
wxPostScriptPrintNativeData::~wxPostScriptPrintNativeData()
|
||||||
@@ -167,20 +163,46 @@ void wxGenericPrintDialog::Init(wxWindow * WXUNUSED(parent))
|
|||||||
// wxDEFAULT_DIALOG_STYLE | wxTAB_TRAVERSAL);
|
// wxDEFAULT_DIALOG_STYLE | wxTAB_TRAVERSAL);
|
||||||
|
|
||||||
wxBoxSizer *mainsizer = new wxBoxSizer( wxVERTICAL );
|
wxBoxSizer *mainsizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
// 1) top row
|
// 1) top row
|
||||||
|
|
||||||
|
wxPrintFactory* factory = wxPrintFactory::GetFactory();
|
||||||
|
|
||||||
wxStaticBoxSizer *topsizer = new wxStaticBoxSizer(
|
wxStaticBoxSizer *topsizer = new wxStaticBoxSizer(
|
||||||
new wxStaticBox( this, wxID_ANY, _( "Printer options" ) ), wxHORIZONTAL );
|
new wxStaticBox( this, wxID_ANY, _( "Printer options" ) ), wxHORIZONTAL );
|
||||||
|
wxFlexGridSizer *flex = new wxFlexGridSizer( 2 );
|
||||||
|
flex->AddGrowableCol( 1 );
|
||||||
|
topsizer->Add( flex, 1, wxGROW );
|
||||||
|
|
||||||
m_printToFileCheckBox = new wxCheckBox( this, wxPRINTID_PRINTTOFILE, _("Print to File") );
|
m_printToFileCheckBox = new wxCheckBox( this, wxPRINTID_PRINTTOFILE, _("Print to File") );
|
||||||
topsizer->Add( m_printToFileCheckBox, 0, wxCENTER|wxALL, 5 );
|
flex->Add( m_printToFileCheckBox, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||||
|
|
||||||
topsizer->Add( 60,2,1 );
|
if (factory->HasOwnPrintToFile())
|
||||||
|
m_printToFileCheckBox->Enable( false );
|
||||||
|
|
||||||
m_setupButton = new wxButton(this, wxPRINTID_SETUP, _("Setup...") );
|
m_setupButton = new wxButton(this, wxPRINTID_SETUP, _("Setup...") );
|
||||||
topsizer->Add( m_setupButton, 0, wxCENTER|wxALL, 5 );
|
flex->Add( m_setupButton, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
|
||||||
|
|
||||||
|
if (!factory->HasPrintSetupDialog())
|
||||||
|
m_setupButton->Enable( false );
|
||||||
|
|
||||||
|
if (factory->HasPrinterLine())
|
||||||
|
{
|
||||||
|
flex->Add( new wxStaticText( this, -1, _("Printer:") ),
|
||||||
|
0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||||
|
flex->Add( new wxStaticText( this, -1, factory->CreatePrinterLine() ),
|
||||||
|
0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||||
|
}
|
||||||
|
|
||||||
mainsizer->Add( topsizer, 0, wxLEFT|wxTOP|wxRIGHT, 10 );
|
if (factory->HasStatusLine())
|
||||||
|
{
|
||||||
|
flex->Add( new wxStaticText( this, -1, _("Status:") ),
|
||||||
|
0, wxALIGN_CENTER_VERTICAL|wxALL-wxTOP, 5 );
|
||||||
|
flex->Add( new wxStaticText( this, -1, factory->CreateStatusLine() ),
|
||||||
|
0, wxALIGN_CENTER_VERTICAL|wxALL-wxTOP, 5 );
|
||||||
|
}
|
||||||
|
|
||||||
|
mainsizer->Add( topsizer, 0, wxLEFT|wxTOP|wxRIGHT|wxGROW, 10 );
|
||||||
|
|
||||||
// 2) middle row with radio box
|
// 2) middle row with radio box
|
||||||
|
|
||||||
@@ -246,31 +268,7 @@ void wxGenericPrintDialog::Init(wxWindow * WXUNUSED(parent))
|
|||||||
|
|
||||||
int wxGenericPrintDialog::ShowModal()
|
int wxGenericPrintDialog::ShowModal()
|
||||||
{
|
{
|
||||||
if ( m_printDialogData.GetSetupDialog() )
|
return wxDialog::ShowModal();
|
||||||
{
|
|
||||||
// Make sure wxPrintData object reflects the settings now, in case the setup dialog
|
|
||||||
// changes it. In fact there aren't any common settings at
|
|
||||||
// present, but there might be in future.
|
|
||||||
// TransferDataFromWindow();
|
|
||||||
|
|
||||||
wxGenericPrintSetupDialog genericPrintSetupDialog( this, &m_printDialogData.GetPrintData() );
|
|
||||||
int ret = genericPrintSetupDialog.ShowModal();
|
|
||||||
if (ret != wxID_CANCEL)
|
|
||||||
{
|
|
||||||
// Transfer settings to the print dialog's print data.
|
|
||||||
m_printDialogData.GetPrintData() = genericPrintSetupDialog.GetPrintData();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restore the wxPrintData settings again (uncomment if any settings become
|
|
||||||
// common to both dialogs)
|
|
||||||
// TransferDataToWindow();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return wxDialog::ShowModal();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGenericPrintDialog::~wxGenericPrintDialog()
|
wxGenericPrintDialog::~wxGenericPrintDialog()
|
||||||
@@ -286,16 +284,13 @@ void wxGenericPrintDialog::OnOK(wxCommandEvent& WXUNUSED(event))
|
|||||||
if (m_printDialogData.GetToPage() < 1)
|
if (m_printDialogData.GetToPage() < 1)
|
||||||
m_printDialogData.SetToPage(m_printDialogData.GetFromPage());
|
m_printDialogData.SetToPage(m_printDialogData.GetFromPage());
|
||||||
|
|
||||||
wxPostScriptPrintNativeData *data =
|
|
||||||
(wxPostScriptPrintNativeData *) m_printDialogData.GetPrintData().GetNativeData();
|
|
||||||
|
|
||||||
// There are some interactions between the global setup data
|
// There are some interactions between the global setup data
|
||||||
// and the standard print dialog. The global printing 'mode'
|
// and the standard print dialog. The global printing 'mode'
|
||||||
// is determined by whether the user checks Print to file
|
// is determined by whether the user checks Print to file
|
||||||
// or not.
|
// or not.
|
||||||
if (m_printDialogData.GetPrintToFile())
|
if (m_printDialogData.GetPrintToFile())
|
||||||
{
|
{
|
||||||
data->SetPrintMode(wxPRINT_MODE_FILE);
|
m_printDialogData.GetPrintData().SetPrintMode(wxPRINT_MODE_FILE);
|
||||||
|
|
||||||
wxFileName fname( m_printDialogData.GetPrintData().GetFilename() );
|
wxFileName fname( m_printDialogData.GetPrintData().GetFilename() );
|
||||||
|
|
||||||
@@ -307,7 +302,7 @@ void wxGenericPrintDialog::OnOK(wxCommandEvent& WXUNUSED(event))
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data->SetPrintMode(wxPRINT_MODE_PRINTER);
|
m_printDialogData.GetPrintData().SetPrintMode(wxPRINT_MODE_PRINTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
EndModal(wxID_OK);
|
EndModal(wxID_OK);
|
||||||
@@ -331,10 +326,15 @@ void wxGenericPrintDialog::OnRange(wxCommandEvent& event)
|
|||||||
|
|
||||||
void wxGenericPrintDialog::OnSetup(wxCommandEvent& WXUNUSED(event))
|
void wxGenericPrintDialog::OnSetup(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
wxGenericPrintSetupDialog dialog( this, &m_printDialogData.GetPrintData() );
|
wxPrintFactory* factory = wxPrintFactory::GetFactory();
|
||||||
if (dialog.ShowModal() != wxID_CANCEL)
|
|
||||||
|
if (factory->HasPrintSetupDialog())
|
||||||
{
|
{
|
||||||
m_printDialogData = dialog.GetPrintData();
|
// The print setup dialog should change the
|
||||||
|
// print data in-place if not cancelled.
|
||||||
|
wxDialog *dialog = factory->CreatePrintSetupDialog( this, &m_printDialogData.GetPrintData() );
|
||||||
|
dialog->ShowModal();
|
||||||
|
dialog->Destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -428,8 +428,7 @@ TODO: collate and noCopies should be duplicated across dialog data and print dat
|
|||||||
|
|
||||||
wxDC *wxGenericPrintDialog::GetPrintDC()
|
wxDC *wxGenericPrintDialog::GetPrintDC()
|
||||||
{
|
{
|
||||||
// return new wxPostScriptDC(wxThePrintSetupData->GetPrinterFile(), false, (wxWindow *) NULL);
|
return new wxPostScriptDC(GetPrintDialogData().GetPrintData());
|
||||||
return new wxPostScriptDC(GetPrintDialogData().GetPrintData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -449,53 +448,94 @@ void wxGenericPrintSetupDialog::Init(wxPrintData* data)
|
|||||||
if ( data )
|
if ( data )
|
||||||
m_printData = *data;
|
m_printData = *data;
|
||||||
|
|
||||||
int staticBoxWidth = 300;
|
|
||||||
|
|
||||||
(void) new wxStaticBox(this, wxPRINTID_STATIC, _("Paper size"), wxPoint(10, 10), wxSize(staticBoxWidth, 60) );
|
wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
int xPos = 20;
|
wxBoxSizer *item1 = new wxBoxSizer( wxHORIZONTAL );
|
||||||
int yPos = 30;
|
main_sizer->Add( item1, 0, wxALL, 5 );
|
||||||
m_paperTypeChoice = CreatePaperTypeChoice(&xPos, &yPos);
|
|
||||||
|
|
||||||
wxString *choices = new wxString[2];
|
// printer options (on the left)
|
||||||
choices[0] = _("Portrait");
|
|
||||||
choices[1] = _("Landscape");
|
|
||||||
|
|
||||||
m_orientationRadioBox = new wxRadioBox(this, wxPRINTID_ORIENTATION, _("Orientation"),
|
wxBoxSizer *item2 = new wxBoxSizer( wxVERTICAL );
|
||||||
wxPoint(10, 80), wxDefaultSize, 2, choices, 1, wxRA_VERTICAL );
|
|
||||||
m_orientationRadioBox->SetSelection(0);
|
|
||||||
|
|
||||||
(void) new wxStaticBox(this, wxPRINTID_STATIC, _("Options"), wxPoint(10, 130), wxSize(staticBoxWidth, 50) );
|
wxStaticBox *item4 = new wxStaticBox( this, wxPRINTID_STATIC, _("Paper size") );
|
||||||
|
wxStaticBoxSizer *item3 = new wxStaticBoxSizer( item4, wxVERTICAL );
|
||||||
|
|
||||||
int colourYPos = 145;
|
m_paperTypeChoice = CreatePaperTypeChoice();
|
||||||
|
item3->Add( m_paperTypeChoice, 0, wxALIGN_CENTER|wxALL, 5 );
|
||||||
|
|
||||||
#ifdef __WXMOTIF__
|
item2->Add( item3, 0, wxALIGN_CENTER|wxALL, 5 );
|
||||||
colourYPos = 150;
|
|
||||||
|
wxString strs6[] =
|
||||||
|
{
|
||||||
|
_("Portrait"),
|
||||||
|
_("Landscape")
|
||||||
|
};
|
||||||
|
m_orientationRadioBox= new wxRadioBox( this, wxPRINTID_ORIENTATION, _("Orientation"), wxDefaultPosition, wxDefaultSize, 2, strs6, 1, wxRA_SPECIFY_ROWS );
|
||||||
|
item2->Add( m_orientationRadioBox, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||||
|
|
||||||
|
wxStaticBox *item8 = new wxStaticBox( this, -1, _("Options") );
|
||||||
|
wxStaticBoxSizer *item7 = new wxStaticBoxSizer( item8, wxHORIZONTAL );
|
||||||
|
|
||||||
|
m_colourCheckBox = new wxCheckBox( this, wxPRINTID_PRINTCOLOUR, _("Print in colour") );
|
||||||
|
item7->Add( m_colourCheckBox, 0, wxALIGN_CENTER|wxALL, 5 );
|
||||||
|
|
||||||
|
item2->Add( item7, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||||
|
|
||||||
|
item1->Add( item2, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||||
|
|
||||||
|
// spooling options (on the right)
|
||||||
|
|
||||||
|
wxStaticBox *item11 = new wxStaticBox( this, -1, _("Print spooling") );
|
||||||
|
wxStaticBoxSizer *item10 = new wxStaticBoxSizer( item11, wxVERTICAL );
|
||||||
|
|
||||||
|
wxStaticText *item12 = new wxStaticText( this, -1, _("Printer command:") );
|
||||||
|
item10->Add( item12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||||
|
|
||||||
|
wxBoxSizer *item13 = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
item13->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 );
|
||||||
|
|
||||||
|
m_printerCommandText = new wxTextCtrl( this, wxPRINTID_COMMAND, wxT(""), wxDefaultPosition, wxSize(160,-1) );
|
||||||
|
item13->Add( m_printerCommandText, 0, wxALIGN_CENTER|wxALL, 5 );
|
||||||
|
|
||||||
|
item10->Add( item13, 0, wxALIGN_CENTER|wxALL, 0 );
|
||||||
|
|
||||||
|
wxStaticText *item15 = new wxStaticText( this, -1, _("Printer options:") );
|
||||||
|
item10->Add( item15, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||||
|
|
||||||
|
wxBoxSizer *item16 = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
item16->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 );
|
||||||
|
|
||||||
|
m_printerOptionsText = new wxTextCtrl( this, wxPRINTID_OPTIONS, wxT(""), wxDefaultPosition, wxSize(160,-1) );
|
||||||
|
item16->Add( m_printerOptionsText, 0, wxALIGN_CENTER|wxALL, 5 );
|
||||||
|
|
||||||
|
item10->Add( item16, 0, wxALIGN_CENTER|wxALL, 0 );
|
||||||
|
|
||||||
|
item1->Add( item10, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
#if wxUSE_STATLINE
|
||||||
|
// static line
|
||||||
|
main_sizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_colourCheckBox = new wxCheckBox(this, wxPRINTID_PRINTCOLOUR, _("Print in colour"), wxPoint(15, colourYPos));
|
// buttons
|
||||||
|
|
||||||
(void) new wxStaticBox(this, wxPRINTID_STATIC, _("Print spooling"), wxPoint(330, 10), wxSize(200,170) );
|
main_sizer->Add( CreateButtonSizer( wxOK|wxCANCEL), 0, wxCENTER|wxALL, 10 );
|
||||||
|
|
||||||
(void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer command:"), wxPoint(340, 30));
|
SetAutoLayout( true );
|
||||||
|
SetSizer( main_sizer );
|
||||||
|
|
||||||
m_printerCommandText = new wxTextCtrl(this, wxPRINTID_COMMAND, wxEmptyString, wxPoint(360, 55), wxSize(150, wxDefaultCoord));
|
main_sizer->Fit( this );
|
||||||
|
Centre(wxBOTH);
|
||||||
|
|
||||||
(void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer options:"), wxPoint(340, 110));
|
|
||||||
|
|
||||||
m_printerOptionsText = new wxTextCtrl(this, wxPRINTID_OPTIONS, wxEmptyString, wxPoint(360, 135), wxSize(150, wxDefaultCoord));
|
|
||||||
|
|
||||||
wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(130, 200), wxSize(80, wxDefaultCoord));
|
|
||||||
(void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(320, 200), wxSize(80, wxDefaultCoord));
|
|
||||||
|
|
||||||
okButton->SetDefault();
|
|
||||||
okButton->SetFocus();
|
|
||||||
|
|
||||||
Fit();
|
Fit();
|
||||||
Centre(wxBOTH);
|
Centre(wxBOTH);
|
||||||
|
|
||||||
InitDialog();
|
InitDialog();
|
||||||
delete[] choices;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGenericPrintSetupDialog::~wxGenericPrintSetupDialog()
|
wxGenericPrintSetupDialog::~wxGenericPrintSetupDialog()
|
||||||
@@ -557,18 +597,11 @@ bool wxGenericPrintSetupDialog::TransferDataFromWindow()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxComboBox *wxGenericPrintSetupDialog::CreatePaperTypeChoice(int *x, int *y)
|
wxComboBox *wxGenericPrintSetupDialog::CreatePaperTypeChoice()
|
||||||
{
|
{
|
||||||
/* Should not be necessary
|
size_t n = wxThePrintPaperDatabase->GetCount();
|
||||||
if (!wxThePrintPaperDatabase)
|
wxString *choices = new wxString [n];
|
||||||
{
|
size_t sel = 0;
|
||||||
wxThePrintPaperDatabase = new wxPrintPaperDatabase;
|
|
||||||
wxThePrintPaperDatabase->CreateDatabase();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
size_t n = wxThePrintPaperDatabase->GetCount();
|
|
||||||
wxString *choices = new wxString [n];
|
|
||||||
size_t sel = 0;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < n; i++)
|
for (size_t i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
@@ -583,17 +616,16 @@ wxComboBox *wxGenericPrintSetupDialog::CreatePaperTypeChoice(int *x, int *y)
|
|||||||
wxComboBox *choice = new wxComboBox( this,
|
wxComboBox *choice = new wxComboBox( this,
|
||||||
wxPRINTID_PAPERSIZE,
|
wxPRINTID_PAPERSIZE,
|
||||||
_("Paper Size"),
|
_("Paper Size"),
|
||||||
wxPoint(*x, *y),
|
wxDefaultPosition,
|
||||||
wxSize(width, wxDefaultCoord),
|
wxSize(width, wxDefaultCoord),
|
||||||
n, choices );
|
n, choices );
|
||||||
|
|
||||||
// SetFont(thisFont);
|
|
||||||
|
|
||||||
delete[] choices;
|
delete[] choices;
|
||||||
|
|
||||||
choice->SetSelection(sel);
|
choice->SetSelection(sel);
|
||||||
return choice;
|
return choice;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_POSTSCRIPT
|
#endif // wxUSE_POSTSCRIPT
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user