Commit 31e3e985 authored by charras's avatar charras

Print and plot functions now properly prints all sheets in a complex hierarchy

parent 1fd73dff
...@@ -5,6 +5,13 @@ Started 2007-June-11 ...@@ -5,6 +5,13 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2009-Jan-08 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
++Eeschema:
Print and plot functions now properly prints all sheets in a complex hierarchy
plot files created have now a new filename in order to be compatible with complex hierarchies
2009-Jan-07 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2009-Jan-07 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================ ================================================================================
++Eeschema: ++Eeschema:
......
...@@ -117,21 +117,21 @@ IMPLEMENT_DYNAMIC_CLASS( WinEDA_PlotHPGLFrame, wxDialog ) ...@@ -117,21 +117,21 @@ IMPLEMENT_DYNAMIC_CLASS( WinEDA_PlotHPGLFrame, wxDialog )
BEGIN_EVENT_TABLE( WinEDA_PlotHPGLFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_PlotHPGLFrame, wxDialog )
////@begin WinEDA_PlotHPGLFrame event table entries ////@begin WinEDA_PlotHPGLFrame event table entries
EVT_RADIOBOX( ID_RADIOBOX, WinEDA_PlotHPGLFrame::OnRadioboxSelected ) EVT_RADIOBOX( ID_RADIOBOX, WinEDA_PlotHPGLFrame::OnRadioboxSelected )
EVT_SPINCTRL( ID_PEN_WIDTH_UPDATED, WinEDA_PlotHPGLFrame::OnPenWidthUpdatedUpdated ) EVT_SPINCTRL( ID_PEN_WIDTH_UPDATED, WinEDA_PlotHPGLFrame::OnPenWidthUpdatedUpdated )
EVT_SPINCTRL( ID_PEN_SPEED_UPDATED, WinEDA_PlotHPGLFrame::OnPenSpeedUpdatedUpdated ) EVT_SPINCTRL( ID_PEN_SPEED_UPDATED, WinEDA_PlotHPGLFrame::OnPenSpeedUpdatedUpdated )
EVT_SPINCTRL( ID_PEN_NUMBER_UPDATED, WinEDA_PlotHPGLFrame::OnPenNumberUpdatedUpdated ) EVT_SPINCTRL( ID_PEN_NUMBER_UPDATED, WinEDA_PlotHPGLFrame::OnPenNumberUpdatedUpdated )
EVT_BUTTON( ID_PLOT_HPGL_CURRENT_EXECUTE, WinEDA_PlotHPGLFrame::OnPlotHpglCurrentExecuteClick ) EVT_BUTTON( ID_PLOT_HPGL_CURRENT_EXECUTE, WinEDA_PlotHPGLFrame::OnPlotHpglCurrentExecuteClick )
EVT_BUTTON( ID_PLOT_HPGL_ALL_EXECUTE, WinEDA_PlotHPGLFrame::OnPlotHpglAllExecuteClick ) EVT_BUTTON( ID_PLOT_HPGL_ALL_EXECUTE, WinEDA_PlotHPGLFrame::OnPlotHpglAllExecuteClick )
EVT_BUTTON( wxID_CANCEL, WinEDA_PlotHPGLFrame::OnCancelClick ) EVT_BUTTON( wxID_CANCEL, WinEDA_PlotHPGLFrame::OnCancelClick )
EVT_BUTTON( ID_PLOT_ACCEPT_OFFSET, WinEDA_PlotHPGLFrame::OnPlotAcceptOffsetClick ) EVT_BUTTON( ID_PLOT_ACCEPT_OFFSET, WinEDA_PlotHPGLFrame::OnPlotAcceptOffsetClick )
////@end WinEDA_PlotHPGLFrame event table entries ////@end WinEDA_PlotHPGLFrame event table entries
...@@ -147,11 +147,11 @@ WinEDA_PlotHPGLFrame::WinEDA_PlotHPGLFrame() ...@@ -147,11 +147,11 @@ WinEDA_PlotHPGLFrame::WinEDA_PlotHPGLFrame()
WinEDA_PlotHPGLFrame::WinEDA_PlotHPGLFrame( WinEDA_DrawFrame* parent, WinEDA_PlotHPGLFrame::WinEDA_PlotHPGLFrame( WinEDA_DrawFrame* parent,
wxWindowID id, wxWindowID id,
const wxString& caption, const wxString& caption,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, const wxSize& size,
long style ) long style )
{ {
m_Parent = parent; m_Parent = parent;
Create( parent, id, caption, pos, size, style ); Create( parent, id, caption, pos, size, style );
...@@ -163,34 +163,36 @@ WinEDA_PlotHPGLFrame::WinEDA_PlotHPGLFrame( WinEDA_DrawFrame* parent, ...@@ -163,34 +163,36 @@ WinEDA_PlotHPGLFrame::WinEDA_PlotHPGLFrame( WinEDA_DrawFrame* parent,
* WinEDA_PlotHPGLFrame creator * WinEDA_PlotHPGLFrame creator
*/ */
bool WinEDA_PlotHPGLFrame::Create( wxWindow* parent, bool WinEDA_PlotHPGLFrame::Create( wxWindow* parent,
wxWindowID id, wxWindowID id,
const wxString& caption, const wxString& caption,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, const wxSize& size,
long style ) long style )
{ {
////@begin WinEDA_PlotHPGLFrame member initialisation ////@begin WinEDA_PlotHPGLFrame member initialisation
m_SizeOption = NULL; m_SizeOption = NULL;
m_ButtPenWidth = NULL; m_ButtPenWidth = NULL;
m_ButtPenSpeed = NULL; m_ButtPenSpeed = NULL;
m_ButtPenNum = NULL; m_ButtPenNum = NULL;
m_PlotOrgPosition_X = NULL; m_PlotOrgPosition_X = NULL;
m_PlotOrgPosition_Y = NULL; m_PlotOrgPosition_Y = NULL;
m_btClose = NULL; m_btClose = NULL;
m_MsgBox = NULL; m_MsgBox = NULL;
////@end WinEDA_PlotHPGLFrame member initialisation ////@end WinEDA_PlotHPGLFrame member initialisation
////@begin WinEDA_PlotHPGLFrame creation ////@begin WinEDA_PlotHPGLFrame creation
SetExtraStyle(wxWS_EX_BLOCK_EVENTS); SetExtraStyle( wxWS_EX_BLOCK_EVENTS );
wxDialog::Create( parent, id, caption, pos, size, style ); wxDialog::Create( parent, id, caption, pos, size, style );
CreateControls(); CreateControls();
if (GetSizer()) if( GetSizer() )
{ {
GetSizer()->SetSizeHints(this); GetSizer()->SetSizeHints( this );
} }
Centre(); Centre();
////@end WinEDA_PlotHPGLFrame creation ////@end WinEDA_PlotHPGLFrame creation
return true; return true;
} }
...@@ -209,104 +211,166 @@ void WinEDA_PlotHPGLFrame::CreateControls() ...@@ -209,104 +211,166 @@ void WinEDA_PlotHPGLFrame::CreateControls()
WinEDA_PlotHPGLFrame* itemDialog1 = this; WinEDA_PlotHPGLFrame* itemDialog1 = this;
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); wxBoxSizer* itemBoxSizer2 = new wxBoxSizer( wxVERTICAL );
itemDialog1->SetSizer(itemBoxSizer2); itemDialog1->SetSizer( itemBoxSizer2 );
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* itemBoxSizer3 = new wxBoxSizer( wxHORIZONTAL );
itemBoxSizer2->Add(itemBoxSizer3, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); itemBoxSizer2->Add( itemBoxSizer3, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 );
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxVERTICAL); wxBoxSizer* itemBoxSizer4 = new wxBoxSizer( wxVERTICAL );
itemBoxSizer3->Add(itemBoxSizer4, 0, wxGROW|wxALL, 5); itemBoxSizer3->Add( itemBoxSizer4, 0, wxGROW | wxALL, 5 );
wxArrayString m_SizeOptionStrings; wxArrayString m_SizeOptionStrings;
m_SizeOptionStrings.Add(_("Sheet Size")); m_SizeOptionStrings.Add( _( "Sheet Size" ) );
m_SizeOptionStrings.Add(_("Page Size A4")); m_SizeOptionStrings.Add( _( "Page Size A4" ) );
m_SizeOptionStrings.Add(_("Page Size A3")); m_SizeOptionStrings.Add( _( "Page Size A3" ) );
m_SizeOptionStrings.Add(_("Page Size A2")); m_SizeOptionStrings.Add( _( "Page Size A2" ) );
m_SizeOptionStrings.Add(_("Page Size A1")); m_SizeOptionStrings.Add( _( "Page Size A1" ) );
m_SizeOptionStrings.Add(_("Page Size A0")); m_SizeOptionStrings.Add( _( "Page Size A0" ) );
m_SizeOptionStrings.Add(_("Page Size A")); m_SizeOptionStrings.Add( _( "Page Size A" ) );
m_SizeOptionStrings.Add(_("Page Size B")); m_SizeOptionStrings.Add( _( "Page Size B" ) );
m_SizeOptionStrings.Add(_("Page Size C")); m_SizeOptionStrings.Add( _( "Page Size C" ) );
m_SizeOptionStrings.Add(_("Page Size D")); m_SizeOptionStrings.Add( _( "Page Size D" ) );
m_SizeOptionStrings.Add(_("Page Size E")); m_SizeOptionStrings.Add( _( "Page Size E" ) );
m_SizeOption = new wxRadioBox( itemDialog1, ID_RADIOBOX, _("Plot page size:"), wxDefaultPosition, wxDefaultSize, m_SizeOptionStrings, 1, wxRA_SPECIFY_COLS ); m_SizeOption = new wxRadioBox( itemDialog1, ID_RADIOBOX, _(
m_SizeOption->SetSelection(0); "Plot page size:" ), wxDefaultPosition, wxDefaultSize,
itemBoxSizer4->Add(m_SizeOption, 0, wxALIGN_LEFT|wxALL, 5); m_SizeOptionStrings, 1,
wxRA_SPECIFY_COLS );
wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxVERTICAL); m_SizeOption->SetSelection( 0 );
itemBoxSizer3->Add(itemBoxSizer6, 0, wxALIGN_TOP|wxALL, 5); itemBoxSizer4->Add( m_SizeOption, 0, wxALIGN_LEFT | wxALL, 5 );
wxStaticBox* itemStaticBoxSizer7Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Pen control:")); wxBoxSizer* itemBoxSizer6 = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* itemStaticBoxSizer7 = new wxStaticBoxSizer(itemStaticBoxSizer7Static, wxVERTICAL); itemBoxSizer3->Add( itemBoxSizer6, 0, wxALIGN_TOP | wxALL, 5 );
itemBoxSizer6->Add(itemStaticBoxSizer7, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxStaticBox* itemStaticBoxSizer7Static =
wxStaticText* itemStaticText8 = new wxStaticText( itemDialog1, wxID_STATIC, _("Pen Width ( mils )"), wxDefaultPosition, wxDefaultSize, 0 ); new wxStaticBox( itemDialog1, wxID_ANY, _( "Pen control:" ) );
itemStaticBoxSizer7->Add(itemStaticText8, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); wxStaticBoxSizer* itemStaticBoxSizer7 = new wxStaticBoxSizer( itemStaticBoxSizer7Static,
wxVERTICAL );
m_ButtPenWidth = new wxSpinCtrl( itemDialog1, ID_PEN_WIDTH_UPDATED, _T("1"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, 1, 100, 1 ); itemBoxSizer6->Add( itemStaticBoxSizer7, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 );
itemStaticBoxSizer7->Add(m_ButtPenWidth, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxStaticText* itemStaticText8 =
wxStaticText* itemStaticText10 = new wxStaticText( itemDialog1, wxID_STATIC, _("Pen Speed ( cm/s )"), wxDefaultPosition, wxDefaultSize, 0 ); new wxStaticText( itemDialog1, wxID_STATIC, _(
itemStaticBoxSizer7->Add(itemStaticText10, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); "Pen Width ( mils )" ), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer7->Add( itemStaticText8,
m_ButtPenSpeed = new wxSpinCtrl( itemDialog1, ID_PEN_SPEED_UPDATED, _T("1"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 100, 1 ); 0,
itemStaticBoxSizer7->Add(m_ButtPenSpeed, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT|wxBOTTOM, 5); wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE,
5 );
wxStaticText* itemStaticText12 = new wxStaticText( itemDialog1, wxID_STATIC, _("Pen Number"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer7->Add(itemStaticText12, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); m_ButtPenWidth = new wxSpinCtrl( itemDialog1, ID_PEN_WIDTH_UPDATED, _T(
"1" ), wxDefaultPosition, wxDefaultSize,
m_ButtPenNum = new wxSpinCtrl( itemDialog1, ID_PEN_NUMBER_UPDATED, _T("1"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 8, 1 ); wxSP_ARROW_KEYS | wxSP_WRAP, 1, 100, 1 );
itemStaticBoxSizer7->Add(m_ButtPenNum, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT|wxBOTTOM, 5); itemStaticBoxSizer7->Add( m_ButtPenWidth, 0, wxALIGN_LEFT | wxLEFT | wxRIGHT | wxBOTTOM, 5 );
wxStaticBox* itemStaticBoxSizer14Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Page offset:")); wxStaticText* itemStaticText10 =
wxStaticBoxSizer* itemStaticBoxSizer14 = new wxStaticBoxSizer(itemStaticBoxSizer14Static, wxVERTICAL); new wxStaticText( itemDialog1, wxID_STATIC, _(
itemBoxSizer6->Add(itemStaticBoxSizer14, 0, wxALIGN_LEFT|wxALL, 5); "Pen Speed ( cm/s )" ), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer7->Add( itemStaticText10,
wxStaticText* itemStaticText15 = new wxStaticText( itemDialog1, wxID_STATIC, _("Plot Offset X"), wxDefaultPosition, wxDefaultSize, 0 ); 0,
itemStaticBoxSizer14->Add(itemStaticText15, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE,
5 );
m_PlotOrgPosition_X = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer14->Add(m_PlotOrgPosition_X, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxBOTTOM, 5); m_ButtPenSpeed = new wxSpinCtrl( itemDialog1, ID_PEN_SPEED_UPDATED, _T(
"1" ), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS,
wxStaticText* itemStaticText17 = new wxStaticText( itemDialog1, wxID_STATIC, _("Plot Offset Y"), wxDefaultPosition, wxDefaultSize, 0 ); 1, 100, 1 );
itemStaticBoxSizer14->Add(itemStaticText17, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); itemStaticBoxSizer7->Add( m_ButtPenSpeed,
0,
m_PlotOrgPosition_Y = new wxTextCtrl( itemDialog1, ID_TEXTCTRL2, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT | wxBOTTOM,
itemStaticBoxSizer14->Add(m_PlotOrgPosition_Y, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxBOTTOM, 5); 5 );
itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxStaticText* itemStaticText12 = new wxStaticText( itemDialog1, wxID_STATIC, _(
"Pen Number" ), wxDefaultPosition,
wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL); wxDefaultSize, 0 );
itemBoxSizer3->Add(itemBoxSizer20, 0, wxALIGN_TOP|wxLEFT|wxTOP|wxBOTTOM, 5); itemStaticBoxSizer7->Add( itemStaticText12,
0,
wxButton* itemButton21 = new wxButton( itemDialog1, ID_PLOT_HPGL_CURRENT_EXECUTE, _("&Plot page"), wxDefaultPosition, wxDefaultSize, 0 ); wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE,
5 );
m_ButtPenNum = new wxSpinCtrl( itemDialog1, ID_PEN_NUMBER_UPDATED, _T(
"1" ), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1,
8, 1 );
itemStaticBoxSizer7->Add( m_ButtPenNum,
0,
wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT | wxBOTTOM,
5 );
wxStaticBox* itemStaticBoxSizer14Static =
new wxStaticBox( itemDialog1, wxID_ANY, _( "Page offset:" ) );
wxStaticBoxSizer* itemStaticBoxSizer14 = new wxStaticBoxSizer( itemStaticBoxSizer14Static,
wxVERTICAL );
itemBoxSizer6->Add( itemStaticBoxSizer14, 0, wxALIGN_LEFT | wxALL, 5 );
wxStaticText* itemStaticText15 =
new wxStaticText( itemDialog1, wxID_STATIC, _(
"Plot Offset X" ), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer14->Add( itemStaticText15,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE,
5 );
m_PlotOrgPosition_X = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T(
"" ), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer14->Add( m_PlotOrgPosition_X,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxBOTTOM,
5 );
wxStaticText* itemStaticText17 =
new wxStaticText( itemDialog1, wxID_STATIC, _(
"Plot Offset Y" ), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer14->Add( itemStaticText17,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP | wxADJUST_MINSIZE,
5 );
m_PlotOrgPosition_Y = new wxTextCtrl( itemDialog1, ID_TEXTCTRL2, _T(
"" ), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer14->Add( m_PlotOrgPosition_Y,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxBOTTOM,
5 );
itemBoxSizer3->Add( 5, 5, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
wxBoxSizer* itemBoxSizer20 = new wxBoxSizer( wxVERTICAL );
itemBoxSizer3->Add( itemBoxSizer20, 0, wxALIGN_TOP | wxLEFT | wxTOP | wxBOTTOM, 5 );
wxButton* itemButton21 =
new wxButton( itemDialog1, ID_PLOT_HPGL_CURRENT_EXECUTE, _(
"&Plot page" ), wxDefaultPosition, wxDefaultSize, 0 );
itemButton21->SetDefault(); itemButton21->SetDefault();
itemButton21->SetForegroundColour(wxColour(0, 128, 0)); itemButton21->SetForegroundColour( wxColour( 0, 128, 0 ) );
itemBoxSizer20->Add(itemButton21, 0, wxGROW|wxALL, 5); itemBoxSizer20->Add( itemButton21, 0, wxGROW | wxALL, 5 );
wxButton* itemButton22 = new wxButton( itemDialog1, ID_PLOT_HPGL_ALL_EXECUTE, _("Plot a&ll"), wxDefaultPosition, wxDefaultSize, 0 ); wxButton* itemButton22 = new wxButton( itemDialog1, ID_PLOT_HPGL_ALL_EXECUTE, _(
itemButton22->SetForegroundColour(wxColour(0, 0, 255)); "Plot a&ll" ), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer20->Add(itemButton22, 0, wxGROW|wxALL, 5); itemButton22->SetForegroundColour( wxColour( 0, 0, 255 ) );
itemBoxSizer20->Add( itemButton22, 0, wxGROW | wxALL, 5 );
m_btClose = new wxButton( itemDialog1, wxID_CANCEL, _("&Close"), wxDefaultPosition, wxDefaultSize, 0 ); m_btClose = new wxButton( itemDialog1, wxID_CANCEL, _(
m_btClose->SetForegroundColour(wxColour(128, 0, 0)); "&Close" ), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer20->Add(m_btClose, 0, wxGROW|wxALL, 5); m_btClose->SetForegroundColour( wxColour( 128, 0, 0 ) );
itemBoxSizer20->Add( m_btClose, 0, wxGROW | wxALL, 5 );
itemBoxSizer20->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); itemBoxSizer20->Add( 5, 5, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 );
wxButton* itemButton25 = new wxButton( itemDialog1, ID_PLOT_ACCEPT_OFFSET, _("&Accept Offset"), wxDefaultPosition, wxDefaultSize, 0 ); wxButton* itemButton25 = new wxButton( itemDialog1, ID_PLOT_ACCEPT_OFFSET, _(
itemButton25->SetForegroundColour(wxColour(101, 123, 68)); "&Accept Offset" ), wxDefaultPosition,
itemBoxSizer20->Add(itemButton25, 0, wxGROW|wxALL, 5); wxDefaultSize, 0 );
itemButton25->SetForegroundColour( wxColour( 101, 123, 68 ) );
itemBoxSizer20->Add( itemButton25, 0, wxGROW | wxALL, 5 );
m_MsgBox = new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxSize(-1, 110), wxTE_MULTILINE ); m_MsgBox =
itemBoxSizer2->Add(m_MsgBox, 0, wxGROW|wxALL, 5); new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T( "" ), wxDefaultPosition, wxSize( -1,
110 ),
wxTE_MULTILINE );
itemBoxSizer2->Add( m_MsgBox, 0, wxGROW | wxALL, 5 );
// Set validators // Set validators
m_SizeOption->SetValidator( wxGenericValidator(& HPGL_SizeSelect) ); m_SizeOption->SetValidator( wxGenericValidator( &HPGL_SizeSelect ) );
m_ButtPenWidth->SetValidator( wxGenericValidator(& g_HPGL_Pen_Descr.m_Pen_Diam) ); m_ButtPenWidth->SetValidator( wxGenericValidator( &g_HPGL_Pen_Descr.m_Pen_Diam ) );
m_ButtPenSpeed->SetValidator( wxGenericValidator(& g_HPGL_Pen_Descr.m_Pen_Speed) ); m_ButtPenSpeed->SetValidator( wxGenericValidator( &g_HPGL_Pen_Descr.m_Pen_Speed ) );
m_ButtPenNum->SetValidator( wxGenericValidator(& g_HPGL_Pen_Descr.m_Pen_Num) ); m_ButtPenNum->SetValidator( wxGenericValidator( &g_HPGL_Pen_Descr.m_Pen_Num ) );
////@end WinEDA_PlotHPGLFrame content construction ////@end WinEDA_PlotHPGLFrame content construction
SetFocus(); // Make ESC key working SetFocus(); // Make ESC key working
} }
...@@ -341,6 +405,7 @@ void WinEDA_PlotHPGLFrame::OnCancelClick( wxCommandEvent& event ) ...@@ -341,6 +405,7 @@ void WinEDA_PlotHPGLFrame::OnCancelClick( wxCommandEvent& event )
////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_PlotHPGLFrame. ////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_PlotHPGLFrame.
// Before editing this code, remove the block markers. // Before editing this code, remove the block markers.
event.Skip(); event.Skip();
////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_PlotHPGLFrame. ////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_PlotHPGLFrame.
} }
...@@ -373,8 +438,9 @@ wxBitmap WinEDA_PlotHPGLFrame::GetBitmapResource( const wxString& name ) ...@@ -373,8 +438,9 @@ wxBitmap WinEDA_PlotHPGLFrame::GetBitmapResource( const wxString& name )
{ {
// Bitmap retrieval // Bitmap retrieval
////@begin WinEDA_PlotHPGLFrame bitmap retrieval ////@begin WinEDA_PlotHPGLFrame bitmap retrieval
wxUnusedVar(name); wxUnusedVar( name );
return wxNullBitmap; return wxNullBitmap;
////@end WinEDA_PlotHPGLFrame bitmap retrieval ////@end WinEDA_PlotHPGLFrame bitmap retrieval
} }
...@@ -387,8 +453,9 @@ wxIcon WinEDA_PlotHPGLFrame::GetIconResource( const wxString& name ) ...@@ -387,8 +453,9 @@ wxIcon WinEDA_PlotHPGLFrame::GetIconResource( const wxString& name )
{ {
// Icon retrieval // Icon retrieval
////@begin WinEDA_PlotHPGLFrame icon retrieval ////@begin WinEDA_PlotHPGLFrame icon retrieval
wxUnusedVar(name); wxUnusedVar( name );
return wxNullIcon; return wxNullIcon;
////@end WinEDA_PlotHPGLFrame icon retrieval ////@end WinEDA_PlotHPGLFrame icon retrieval
} }
...@@ -402,10 +469,12 @@ void WinEDA_PlotHPGLFrame::SetPageOffsetValue() ...@@ -402,10 +469,12 @@ void WinEDA_PlotHPGLFrame::SetPageOffsetValue()
if( HPGL_SizeSelect != PAGE_DEFAULT ) if( HPGL_SizeSelect != PAGE_DEFAULT )
{ {
msg = ReturnStringFromValue( g_UnitMetric, msg = ReturnStringFromValue( g_UnitMetric,
Plot_sheet_list[HPGL_SizeSelect]->m_Offset.x, EESCHEMA_INTERNAL_UNIT ); Plot_sheet_list[HPGL_SizeSelect]->m_Offset.x,
EESCHEMA_INTERNAL_UNIT );
m_PlotOrgPosition_X->SetValue( msg ); m_PlotOrgPosition_X->SetValue( msg );
msg = ReturnStringFromValue( g_UnitMetric, msg = ReturnStringFromValue( g_UnitMetric,
Plot_sheet_list[HPGL_SizeSelect]->m_Offset.y, EESCHEMA_INTERNAL_UNIT ); Plot_sheet_list[HPGL_SizeSelect]->m_Offset.y,
EESCHEMA_INTERNAL_UNIT );
m_PlotOrgPosition_Y->SetValue( msg ); m_PlotOrgPosition_Y->SetValue( msg );
m_PlotOrgPosition_X->Enable( TRUE ); m_PlotOrgPosition_X->Enable( TRUE );
...@@ -507,7 +576,7 @@ void WinEDA_PlotHPGLFrame::ReturnSheetDims( BASE_SCREEN* screen, ...@@ -507,7 +576,7 @@ void WinEDA_PlotHPGLFrame::ReturnSheetDims( BASE_SCREEN* screen,
/*******************************************************************/ /*******************************************************************/
/* Fonction calculant les dims et offsets de trace de la feuille selectionnee /* Fonction calculant les dims et offsets de trace de la feuille selectionnee
* retourne: * retourne:
*/ */
{ {
Ki_PageDescr* PlotSheet; Ki_PageDescr* PlotSheet;
...@@ -526,24 +595,46 @@ void WinEDA_PlotHPGLFrame::ReturnSheetDims( BASE_SCREEN* screen, ...@@ -526,24 +595,46 @@ void WinEDA_PlotHPGLFrame::ReturnSheetDims( BASE_SCREEN* screen,
void WinEDA_PlotHPGLFrame::Plot_Schematic_HPGL( int Select_PlotAll, int HPGL_SheetSize ) void WinEDA_PlotHPGLFrame::Plot_Schematic_HPGL( int Select_PlotAll, int HPGL_SheetSize )
/***********************************************************************************/ /***********************************************************************************/
{ {
wxString PlotFileName, ShortFileName; WinEDA_SchematicFrame* schframe = (WinEDA_SchematicFrame*) m_Parent;
BASE_SCREEN* screen; wxString PlotFileName;
Ki_PageDescr* PlotSheet; SCH_SCREEN* screen = schframe->GetScreen();
wxSize SheetSize; SCH_SCREEN* oldscreen = screen;
wxPoint SheetOffset, PlotOffset; DrawSheetPath* sheetpath, * oldsheetpath = schframe->GetSheet();
int margin; Ki_PageDescr* PlotSheet;
wxSize SheetSize;
wxPoint SheetOffset, PlotOffset;
int margin;
g_PlotFormat = PLOT_FORMAT_HPGL; g_PlotFormat = PLOT_FORMAT_HPGL;
/* Build the screen list */ /* When printing all pages, the printed page is not the current page.
EDA_ScreenList ScreenList; * In complex hierarchies, we must setup references and others parameters in the printed SCH_SCREEN
* because in complex hierarchies a SCH_SCREEN (a schematic drawings)
* is shared between many sheets
*/
EDA_SheetList SheetList( NULL );
sheetpath = SheetList.GetFirst();
DrawSheetPath list;
if( Select_PlotAll == TRUE ) for( ; ; )
screen = ScreenList.GetFirst();
else
screen = m_Parent->GetBaseScreen();
for( ; screen != NULL; screen = ScreenList.GetNext() )
{ {
if( Select_PlotAll )
{
if( sheetpath == NULL )
break;
list.Clear();
if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) )
{
schframe->m_CurrentSheet = &list;
schframe->m_CurrentSheet->UpdateAllScreenReferences();
schframe->SetSheetNumberAndCount();
screen = schframe->m_CurrentSheet->LastScreen();
ActiveScreen = screen;
}
else // Should not occur
return;
sheetpath = SheetList.GetNext();
}
ReturnSheetDims( screen, SheetSize, SheetOffset ); ReturnSheetDims( screen, SheetSize, SheetOffset );
/* Calcul des echelles de conversion */ /* Calcul des echelles de conversion */
g_PlotScaleX = Scale_X * SCALE_HPGL; g_PlotScaleX = Scale_X * SCALE_HPGL;
...@@ -555,29 +646,26 @@ void WinEDA_PlotHPGLFrame::Plot_Schematic_HPGL( int Select_PlotAll, int HPGL_She ...@@ -555,29 +646,26 @@ void WinEDA_PlotHPGLFrame::Plot_Schematic_HPGL( int Select_PlotAll, int HPGL_She
g_PlotScaleY = g_PlotScaleY * (SheetSize.y - 2 * margin) / PlotSheet->m_Size.y; g_PlotScaleY = g_PlotScaleY * (SheetSize.y - 2 * margin) / PlotSheet->m_Size.y;
/* calcul des offsets */ /* calcul des offsets */
PlotOffset.x = -(int) (SheetOffset.x * SCALE_HPGL); PlotOffset.x = -(int) ( SheetOffset.x * SCALE_HPGL );
PlotOffset.y = (int) ( (SheetOffset.y + SheetSize.y) * SCALE_HPGL ); PlotOffset.y = (int) ( (SheetOffset.y + SheetSize.y) * SCALE_HPGL );
PlotOffset.x -= (int) (margin * SCALE_HPGL); PlotOffset.x -= (int) ( margin * SCALE_HPGL );
PlotOffset.y += (int) (margin * SCALE_HPGL); PlotOffset.y += (int) ( margin * SCALE_HPGL );
wxSplitPath( screen->m_FileName.GetData(), (wxString*) NULL, PlotFileName = schframe->GetUniqueFilenameForCurrentSheet() + wxT( ".plt" );
&ShortFileName, (wxString*) NULL );
wxString dirbuf = wxGetCwd() + STRING_DIR_SEP; SetLocaleTo_C_standard();
if( !ShortFileName.IsEmpty() )
PlotFileName = MakeFileName( dirbuf, ShortFileName, wxT( ".plt" ) );
else
PlotFileName = MakeFileName( dirbuf, g_DefaultSchematicFileName, wxT( ".plt" ) );
SetLocaleTo_C_standard( );
InitPlotParametresHPGL( PlotOffset, g_PlotScaleX, g_PlotScaleY ); InitPlotParametresHPGL( PlotOffset, g_PlotScaleX, g_PlotScaleY );
Plot_1_Page_HPGL( PlotFileName, screen ); Plot_1_Page_HPGL( PlotFileName, screen );
SetLocaleTo_Default( ); SetLocaleTo_Default();
screen = screen->Next();
if( Select_PlotAll == FALSE ) if( !Select_PlotAll )
break; break;
} }
m_MsgBox->AppendText( _( "** Plot End **\n" ) ); ActiveScreen = oldscreen;
schframe->m_CurrentSheet = oldsheetpath;
schframe->m_CurrentSheet->UpdateAllScreenReferences();
schframe->SetSheetNumberAndCount();
} }
...@@ -587,7 +675,7 @@ void WinEDA_PlotHPGLFrame::Plot_1_Page_HPGL( const wxString& FullFileName, ...@@ -587,7 +675,7 @@ void WinEDA_PlotHPGLFrame::Plot_1_Page_HPGL( const wxString& FullFileName,
/**************************************************************************/ /**************************************************************************/
/* Trace en format HPGL. d'une feuille de dessin /* Trace en format HPGL. d'une feuille de dessin
* 1 unite HPGL = 0.98 mils ( 1 mil = 1.02041 unite HPGL ) . * 1 unite HPGL = 0.98 mils ( 1 mil = 1.02041 unite HPGL ) .
*/ */
{ {
EDA_BaseStruct* DrawList; EDA_BaseStruct* DrawList;
...@@ -653,7 +741,7 @@ void WinEDA_PlotHPGLFrame::Plot_1_Page_HPGL( const wxString& FullFileName, ...@@ -653,7 +741,7 @@ void WinEDA_PlotHPGLFrame::Plot_1_Page_HPGL( const wxString& FullFileName,
deltaY = 8; deltaY = 8;
else else
{ {
angle = atan2( (double) (x2 - x1), (double) (y1 - y2) ); angle = atan2( (double) ( x2 - x1 ), (double) ( y1 - y2 ) );
deltaX = (int) ( 8 * sin( angle ) ); deltaX = (int) ( 8 * sin( angle ) );
deltaY = (int) ( 8 * cos( angle ) ); deltaY = (int) ( 8 * cos( angle ) );
} }
...@@ -663,7 +751,7 @@ void WinEDA_PlotHPGLFrame::Plot_1_Page_HPGL( const wxString& FullFileName, ...@@ -663,7 +751,7 @@ void WinEDA_PlotHPGLFrame::Plot_1_Page_HPGL( const wxString& FullFileName,
Move_Plume( wxPoint( x2 + deltaX, y2 - deltaY ), 'D' ); Move_Plume( wxPoint( x2 + deltaX, y2 - deltaY ), 'D' );
Move_Plume( wxPoint( x1 + deltaX, y1 - deltaY ), 'D' ); Move_Plume( wxPoint( x1 + deltaX, y1 - deltaY ), 'D' );
} }
break; break;
default: default:
Move_Plume( wxPoint( x1, y1 ), 'U' ); Move_Plume( wxPoint( x1, y1 ), 'U' );
......
...@@ -376,12 +376,11 @@ void WinEDA_PlotPSFrame::CreatePSFile( int AllPages, int pagesize ) ...@@ -376,12 +376,11 @@ void WinEDA_PlotPSFrame::CreatePSFile( int AllPages, int pagesize )
WinEDA_SchematicFrame* schframe = (WinEDA_SchematicFrame*) m_Parent; WinEDA_SchematicFrame* schframe = (WinEDA_SchematicFrame*) m_Parent;
SCH_SCREEN* screen = schframe->GetScreen(); SCH_SCREEN* screen = schframe->GetScreen();
SCH_SCREEN* oldscreen = screen; SCH_SCREEN* oldscreen = screen;
DrawSheetPath* oldsheetpath = schframe->GetSheet(); DrawSheetPath* sheetpath, *oldsheetpath = schframe->GetSheet();
wxString PlotFileName, ShortFileName; wxString PlotFileName;
Ki_PageDescr* PlotSheet, * RealSheet; Ki_PageDescr* PlotSheet, * RealSheet;
int BBox[4]; int BBox[4];
wxPoint plot_offset; wxPoint plot_offset;
DrawSheetPath* sheetpath;
g_PlotFormat = PLOT_FORMAT_POST; g_PlotFormat = PLOT_FORMAT_POST;
...@@ -433,32 +432,7 @@ void WinEDA_PlotPSFrame::CreatePSFile( int AllPages, int pagesize ) ...@@ -433,32 +432,7 @@ void WinEDA_PlotPSFrame::CreatePSFile( int AllPages, int pagesize )
plot_offset.x = 0; plot_offset.x = 0;
plot_offset.y = PlotSheet->m_Size.y; plot_offset.y = PlotSheet->m_Size.y;
/* If a screen is used more than once (complex hierarchy) we create more than once file PlotFileName = schframe->GetUniqueFilenameForCurrentSheet( ) + wxT( ".ps" );
* with the same basic filename
* To avoid that, we use the root filename and and the sheet path
* Or, if filename too long, sheet_name + sheet number
*/
wxSplitPath( g_RootSheet->GetFileName().GetData(), (wxString*) NULL,
&ShortFileName, (wxString*) NULL );
if ( (ShortFileName.Len() + schframe->m_CurrentSheet->PathHumanReadable().Len() ) < 50 )
{
ShortFileName += schframe->m_CurrentSheet->PathHumanReadable();
ShortFileName.Replace( wxT( "/" ), wxT( "-" ) );
ShortFileName.RemoveLast();
}
else
{
wxSplitPath( g_RootSheet->GetFileName().GetData(), (wxString*) NULL,
&ShortFileName, (wxString*) NULL );
ShortFileName << wxT("-") << screen->m_ScreenNumber;
}
wxString dirbuf = wxGetCwd() + STRING_DIR_SEP;
if( !ShortFileName.IsEmpty() )
PlotFileName = MakeFileName( dirbuf, ShortFileName, wxT( ".ps" ) );
else
PlotFileName = MakeFileName( dirbuf, g_DefaultSchematicFileName, wxT( ".ps" ) );
PlotOneSheetPS( PlotFileName, screen, RealSheet, BBox, plot_offset ); PlotOneSheetPS( PlotFileName, screen, RealSheet, BBox, plot_offset );
......
...@@ -450,7 +450,9 @@ void WinEDA_SchematicFrame::SetToolbars() ...@@ -450,7 +450,9 @@ void WinEDA_SchematicFrame::SetToolbars()
} }
/************************************/
int WinEDA_SchematicFrame::BestZoom() int WinEDA_SchematicFrame::BestZoom()
/************************************/
{ {
int dx, dy, ii, jj; int dx, dy, ii, jj;
int bestzoom; int bestzoom;
...@@ -471,6 +473,40 @@ int WinEDA_SchematicFrame::BestZoom() ...@@ -471,6 +473,40 @@ int WinEDA_SchematicFrame::BestZoom()
return bestzoom; return bestzoom;
} }
/*******************************************************************/
wxString WinEDA_SchematicFrame::GetUniqueFilenameForCurrentSheet( )
/*******************************************************************/
/** Function GetUniqueFilenameForCurrentSheet
* @return a filename that can be used in plot and print functions
* for the current screen anad sheet path.
* This filename is unique and must be used insteed of the sreen filename
* (or scheen filename) when one must creates file for each sheet in the heierarchy.
* because in complex hierarchies a sheet and a SCH_SCREEN is used more than once
* Name is <root sheet filename>-<sheet path>
* and has no extension.
* However if filename is too long name is <sheet filename>-<sheet number>
*/
{
wxString filename;
wxSplitPath( g_RootSheet->GetFileName().GetData(), (wxString*) NULL,
&filename, (wxString*) NULL );
if ( (filename.Len() + m_CurrentSheet->PathHumanReadable().Len() ) < 50 )
{
filename += m_CurrentSheet->PathHumanReadable();
filename.Replace( wxT( "/" ), wxT( "-" ) );
filename.RemoveLast();
}
else
{
wxSplitPath( g_RootSheet->GetFileName().GetData(), (wxString*) NULL,
&filename, (wxString*) NULL );
filename << wxT("-") << GetScreen()->m_ScreenNumber;
}
return filename;
}
/**************************************************************/ /**************************************************************/
void WinEDA_SchematicFrame::OnAnnotate( wxCommandEvent& event ) void WinEDA_SchematicFrame::OnAnnotate( wxCommandEvent& event )
......
...@@ -159,9 +159,20 @@ public: ...@@ -159,9 +159,20 @@ public:
*/ */
void DeleteAnnotation( bool aCurrentSheetOnly, bool aRedraw ); void DeleteAnnotation( bool aCurrentSheetOnly, bool aRedraw );
// FUnctions used for hierarchy handling // Functions used for hierarchy handling
void InstallPreviousSheet(); void InstallPreviousSheet();
void InstallNextScreen( DrawSheetStruct* Sheet ); void InstallNextScreen( DrawSheetStruct* Sheet );
/** Function GetUniqueFilenameForCurrentSheet
* @return a filename that can be used in plot and print functions
* for the current screen anad sheet path.
* This filename is unique and must be used insteed of the sreen filename
* (or scheen filename) when one must creates file for each sheet in the heierarchy.
* because in complex hierarchies a sheet and a SCH_SCREEN is used more than once
* Name is <root sheet filename>-<sheet path>
* and has no extension.
* However if filename is too long name is <sheet filename>-<sheet number>
*/
wxString GetUniqueFilenameForCurrentSheet( );
/** /**
* Function SetSheetNumberAndCount * Function SetSheetNumberAndCount
......
...@@ -192,7 +192,7 @@ void WinEDA_PrintSVGFrame::CreateControls() ...@@ -192,7 +192,7 @@ void WinEDA_PrintSVGFrame::CreateControls()
SetFont( *g_DialogFont ); SetFont( *g_DialogFont );
////@begin WinEDA_PrintSVGFrame content construction ////@begin WinEDA_PrintSVGFrame content construction
// Generated by DialogBlocks, 27/08/2008 08:07:11 (unregistered) // Generated by DialogBlocks, 08/01/2009 12:58:57 (unregistered)
WinEDA_PrintSVGFrame* itemDialog1 = this; WinEDA_PrintSVGFrame* itemDialog1 = this;
...@@ -227,7 +227,7 @@ void WinEDA_PrintSVGFrame::CreateControls() ...@@ -227,7 +227,7 @@ void WinEDA_PrintSVGFrame::CreateControls()
wxArrayString m_PagesOptionStrings; wxArrayString m_PagesOptionStrings;
m_PagesOptionStrings.Add(_("Current")); m_PagesOptionStrings.Add(_("Current"));
m_PagesOptionStrings.Add(_("All")); m_PagesOptionStrings.Add(_("All"));
m_PagesOption = new wxRadioBox( itemDialog1, ID_RADIOBOX1, _("Page Print:"), wxDefaultPosition, wxDefaultSize, m_PagesOptionStrings, 1, wxRA_SPECIFY_COLS ); m_PagesOption = new wxRadioBox( itemDialog1, ID_RADIOBOX_SELPAGE, _("Page Print:"), wxDefaultPosition, wxDefaultSize, m_PagesOptionStrings, 1, wxRA_SPECIFY_COLS );
m_PagesOption->SetSelection(0); m_PagesOption->SetSelection(0);
itemBoxSizer9->Add(m_PagesOption, 0, wxALIGN_LEFT|wxALL, 5); itemBoxSizer9->Add(m_PagesOption, 0, wxALIGN_LEFT|wxALL, 5);
...@@ -240,22 +240,14 @@ void WinEDA_PrintSVGFrame::CreateControls() ...@@ -240,22 +240,14 @@ void WinEDA_PrintSVGFrame::CreateControls()
itemButton12->SetForegroundColour(wxColour(0, 0, 198)); itemButton12->SetForegroundColour(wxColour(0, 0, 198));
itemBoxSizer9->Add(itemButton12, 0, wxGROW|wxALL, 5); itemBoxSizer9->Add(itemButton12, 0, wxGROW|wxALL, 5);
wxGrid* itemGrid13 = new wxGrid( itemDialog1, ID_GRID1, wxDefaultPosition, wxSize(200, 150), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL ); wxStaticText* itemStaticText13 = new wxStaticText( itemDialog1, wxID_STATIC, _("Filename:"), wxDefaultPosition, wxDefaultSize, 0 );
itemGrid13->SetDefaultColSize(50); itemBoxSizer2->Add(itemStaticText13, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
itemGrid13->SetDefaultRowSize(25);
itemGrid13->SetColLabelSize(25);
itemGrid13->SetRowLabelSize(50);
itemGrid13->CreateGrid(5, 5, wxGrid::wxGridSelectCells);
itemBoxSizer3->Add(itemGrid13, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxStaticText* itemStaticText14 = new wxStaticText( itemDialog1, wxID_STATIC, _("Filename:"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer2->Add(itemStaticText14, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_FileNameCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); m_FileNameCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer2->Add(m_FileNameCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); itemBoxSizer2->Add(m_FileNameCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxStaticText* itemStaticText16 = new wxStaticText( itemDialog1, wxID_STATIC, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 ); wxStaticText* itemStaticText15 = new wxStaticText( itemDialog1, wxID_STATIC, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer2->Add(itemStaticText16, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); itemBoxSizer2->Add(itemStaticText15, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_MessagesBox = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T(""), wxDefaultPosition, wxSize(-1, 100), wxTE_MULTILINE|wxTE_READONLY ); m_MessagesBox = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T(""), wxDefaultPosition, wxSize(-1, 100), wxTE_MULTILINE|wxTE_READONLY );
itemBoxSizer2->Add(m_MessagesBox, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); itemBoxSizer2->Add(m_MessagesBox, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
...@@ -311,18 +303,6 @@ wxIcon WinEDA_PrintSVGFrame::GetIconResource( const wxString& name ) ...@@ -311,18 +303,6 @@ wxIcon WinEDA_PrintSVGFrame::GetIconResource( const wxString& name )
} }
/******************************************************/
wxString WinEDA_PrintSVGFrame::ReturnFullFileName()
/******************************************************/
{
wxString name, ext;
name = m_Parent->GetBaseScreen()->m_FileName;
ChangeFileNameExt( name, wxT( ".svg" ) );
return name;
}
/********************************************/ /********************************************/
void WinEDA_PrintSVGFrame::SetPenWidth() void WinEDA_PrintSVGFrame::SetPenWidth()
/********************************************/ /********************************************/
...@@ -362,7 +342,7 @@ void WinEDA_PrintSVGFrame::PrintSVGDoc( wxCommandEvent& event ) ...@@ -362,7 +342,7 @@ void WinEDA_PrintSVGFrame::PrintSVGDoc( wxCommandEvent& event )
SetPenWidth(); SetPenWidth();
wxString FullFileName;
BASE_SCREEN* screen = m_Parent->GetBaseScreen(); BASE_SCREEN* screen = m_Parent->GetBaseScreen();
BASE_SCREEN* oldscreen = screen; BASE_SCREEN* oldscreen = screen;
#ifndef EESCHEMA #ifndef EESCHEMA
...@@ -388,14 +368,33 @@ void WinEDA_PrintSVGFrame::PrintSVGDoc( wxCommandEvent& event ) ...@@ -388,14 +368,33 @@ void WinEDA_PrintSVGFrame::PrintSVGDoc( wxCommandEvent& event )
#ifdef EESCHEMA #ifdef EESCHEMA
if( Select_PrintAll && m_Parent->m_Ident == SCHEMATIC_FRAME ) if( Select_PrintAll && m_Parent->m_Ident == SCHEMATIC_FRAME )
{ {
EDA_ScreenList ScreenList; WinEDA_SchematicFrame* schframe = (WinEDA_SchematicFrame*) m_Parent;
for( SCH_SCREEN* schscreen = ScreenList.GetFirst(); schscreen != NULL; DrawSheetPath* sheetpath, *oldsheetpath = schframe->GetSheet();
schscreen = ScreenList.GetNext() ) SCH_SCREEN* schscreen = schframe->GetScreen();
oldscreen = schscreen;
EDA_SheetList SheetList( NULL );
sheetpath = SheetList.GetFirst();
DrawSheetPath list;
for( ; ; )
{ {
/* Create all files *.svg */ if( sheetpath == NULL )
( (WinEDA_SchematicFrame*) m_Parent )->SetScreen( schscreen ); break;
wxString FullFileName = schscreen->m_FileName; list.Clear();
ChangeFileNameExt( FullFileName, wxT( ".svg" ) ); if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) )
{
schframe->m_CurrentSheet = &list;
schframe->m_CurrentSheet->UpdateAllScreenReferences();
schframe->SetSheetNumberAndCount();
schscreen = schframe->m_CurrentSheet->LastScreen();
ActiveScreen = schscreen;
}
else // Should not happen
return;
sheetpath = SheetList.GetNext();
FullFileName = schframe->GetUniqueFilenameForCurrentSheet( ) + wxT( ".svg" );
bool success = DrawPage( FullFileName, schscreen ); bool success = DrawPage( FullFileName, schscreen );
msg = _( "Create file " ) + FullFileName; msg = _( "Create file " ) + FullFileName;
if( !success ) if( !success )
...@@ -403,11 +402,14 @@ void WinEDA_PrintSVGFrame::PrintSVGDoc( wxCommandEvent& event ) ...@@ -403,11 +402,14 @@ void WinEDA_PrintSVGFrame::PrintSVGDoc( wxCommandEvent& event )
msg += wxT( "\n" ); msg += wxT( "\n" );
m_MessagesBox->AppendText( msg ); m_MessagesBox->AppendText( msg );
} }
schframe->m_CurrentSheet = oldsheetpath;
schframe->m_CurrentSheet->UpdateAllScreenReferences();
schframe->SetSheetNumberAndCount();
} }
else else
#endif #endif
{ {
wxString FullFileName = m_FileNameCtrl->GetValue(); FullFileName = m_FileNameCtrl->GetValue();
if( FullFileName.IsEmpty() ) if( FullFileName.IsEmpty() )
{ {
FullFileName = screen->m_FileName; FullFileName = screen->m_FileName;
......
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: svg_print.h // Name: svg_print.h
// Purpose: // Purpose:
// Author: jean-pierre Charras // Author: jean-pierre Charras
// Modified by: // Modified by:
// Created: 05/02/2006 11:05:20 // Created: 05/02/2006 11:05:20
// RCS-ID: // RCS-ID:
// Copyright: License GNU // Copyright: License GNU
// Licence: // Licence:
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 05/02/2006 11:05:20 // Generated by DialogBlocks (unregistered), 05/02/2006 11:05:20
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
////@begin includes ////@begin includes
#include "wx/valgen.h" #include "wx/valgen.h"
#include "wx/grid.h"
////@end includes ////@end includes
/*! /*!
...@@ -43,9 +42,8 @@ class wxBoxSizer; ...@@ -43,9 +42,8 @@ class wxBoxSizer;
#define ID_DIALOG 10000 #define ID_DIALOG 10000
#define ID_RADIOBOX_SETPRINTMODE 10007 #define ID_RADIOBOX_SETPRINTMODE 10007
#define ID_CHECKBOX 10004 #define ID_CHECKBOX 10004
#define ID_RADIOBOX1 10008 #define ID_RADIOBOX_SELPAGE 10008
#define ID_PRINT_EXECUTE 10002 #define ID_PRINT_EXECUTE 10002
#define ID_GRID1 10003
#define ID_TEXTCTRL 10001 #define ID_TEXTCTRL 10001
#define ID_TEXTCTRL1 10006 #define ID_TEXTCTRL1 10006
#define SYMBOL_WINEDA_PRINTSVGFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|wxFRAME_FLOAT_ON_PARENT|MAYBE_RESIZE_BORDER #define SYMBOL_WINEDA_PRINTSVGFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|wxFRAME_FLOAT_ON_PARENT|MAYBE_RESIZE_BORDER
...@@ -68,7 +66,7 @@ class wxBoxSizer; ...@@ -68,7 +66,7 @@ class wxBoxSizer;
*/ */
class WinEDA_PrintSVGFrame: public wxDialog class WinEDA_PrintSVGFrame: public wxDialog
{ {
DECLARE_DYNAMIC_CLASS( WinEDA_PrintSVGFrame ) DECLARE_DYNAMIC_CLASS( WinEDA_PrintSVGFrame )
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
...@@ -118,7 +116,6 @@ public: ...@@ -118,7 +116,6 @@ public:
void PrintSVGDoc(wxCommandEvent& event); void PrintSVGDoc(wxCommandEvent& event);
bool DrawPage(const wxString & FullFileName, BASE_SCREEN* screen); bool DrawPage(const wxString & FullFileName, BASE_SCREEN* screen);
wxString ReturnFullFileName();
////@begin WinEDA_PrintSVGFrame member variables ////@begin WinEDA_PrintSVGFrame member variables
wxBoxSizer* m_DialogPenWidthSizer; wxBoxSizer* m_DialogPenWidthSizer;
......
...@@ -556,7 +556,7 @@ ...@@ -556,7 +556,7 @@
<bool name="proxy-wxFIXED_MINSIZE">0</bool> <bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string> <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<document> <document>
<string name="title">"wxRadioBox: ID_RADIOBOX1"</string> <string name="title">"wxRadioBox: ID_RADIOBOX_SELPAGE"</string>
<string name="type">"dialog-control-document"</string> <string name="type">"dialog-control-document"</string>
<string name="filename">""</string> <string name="filename">""</string>
<string name="icon-name">"radiobox"</string> <string name="icon-name">"radiobox"</string>
...@@ -566,7 +566,7 @@ ...@@ -566,7 +566,7 @@
<long name="locked">0</long> <long name="locked">0</long>
<string name="created">"23/12/2006"</string> <string name="created">"23/12/2006"</string>
<string name="proxy-type">"wbRadioBoxProxy"</string> <string name="proxy-type">"wbRadioBoxProxy"</string>
<string name="proxy-Id name">"ID_RADIOBOX1"</string> <string name="proxy-Id name">"ID_RADIOBOX_SELPAGE"</string>
<long name="proxy-Id value">10008</long> <long name="proxy-Id value">10008</long>
<string name="proxy-Name">""</string> <string name="proxy-Name">""</string>
<string name="proxy-Class">"wxRadioBox"</string> <string name="proxy-Class">"wxRadioBox"</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment