carve out TITLE_BLOCK class from BASE_SCREEN, add hashtables.h for PROPERTIES
This commit is contained in:
parent
6d3fd3a01d
commit
0cad6e7913
|
@ -14,7 +14,7 @@
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "class_base_screen.h"
|
#include "class_base_screen.h"
|
||||||
#include "drawtxt.h"
|
#include "drawtxt.h"
|
||||||
|
#include "class_title_block.h"
|
||||||
|
|
||||||
/* Plot sheet references
|
/* Plot sheet references
|
||||||
* margin is in mils (1/1000 inch)
|
* margin is in mils (1/1000 inch)
|
||||||
|
@ -479,12 +479,12 @@ void EDA_DRAW_FRAME::PlotWorkSheet( PLOTTER* plotter, BASE_SCREEN* screen )
|
||||||
switch( WsItem->m_Type )
|
switch( WsItem->m_Type )
|
||||||
{
|
{
|
||||||
case WS_DATE:
|
case WS_DATE:
|
||||||
msg += screen->m_Date;
|
msg += GetTitleBlock().GetDate();
|
||||||
bold = true;
|
bold = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WS_REV:
|
case WS_REV:
|
||||||
msg += screen->m_Revision;
|
msg += GetTitleBlock().GetRevision();
|
||||||
bold = true;
|
bold = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -517,37 +517,37 @@ void EDA_DRAW_FRAME::PlotWorkSheet( PLOTTER* plotter, BASE_SCREEN* screen )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WS_COMPANY_NAME:
|
case WS_COMPANY_NAME:
|
||||||
msg += screen->m_Company;
|
msg += GetTitleBlock().GetCompany();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||||
bold = true;
|
bold = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WS_TITLE:
|
case WS_TITLE:
|
||||||
msg += screen->m_Title;
|
msg += GetTitleBlock().GetTitle();
|
||||||
bold = true;
|
bold = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WS_COMMENT1:
|
case WS_COMMENT1:
|
||||||
msg += screen->m_Commentaire1;
|
msg += GetTitleBlock().GetComment1();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WS_COMMENT2:
|
case WS_COMMENT2:
|
||||||
msg += screen->m_Commentaire2;
|
msg += GetTitleBlock().GetComment2();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WS_COMMENT3:
|
case WS_COMMENT3:
|
||||||
msg += screen->m_Commentaire3;
|
msg += GetTitleBlock().GetComment3();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WS_COMMENT4:
|
case WS_COMMENT4:
|
||||||
msg += screen->m_Commentaire4;
|
msg += GetTitleBlock().GetComment4();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -72,9 +72,9 @@ void DIALOG_PAGES_SETTINGS::initDialog()
|
||||||
msg.Printf( format, m_Screen->m_ScreenNumber );
|
msg.Printf( format, m_Screen->m_ScreenNumber );
|
||||||
m_TextSheetNumber->SetLabel( msg );
|
m_TextSheetNumber->SetLabel( msg );
|
||||||
|
|
||||||
m_page = m_Parent->GetPageSettings();
|
PAGE_INFO pageInfo = m_Parent->GetPageSettings();
|
||||||
|
|
||||||
setCurrentPageSizeSelection();
|
setCurrentPageSizeSelection( pageInfo.GetType() );
|
||||||
|
|
||||||
switch( g_UserUnit )
|
switch( g_UserUnit )
|
||||||
{
|
{
|
||||||
|
@ -113,8 +113,7 @@ void DIALOG_PAGES_SETTINGS::initDialog()
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set validators
|
#if 0
|
||||||
// m_PageSizeBox->SetValidator( wxGenericValidator( &m_CurrentSelection ) );
|
|
||||||
m_TextRevision->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Revision ) );
|
m_TextRevision->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Revision ) );
|
||||||
m_TextTitle->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Title ) );
|
m_TextTitle->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Title ) );
|
||||||
m_TextCompany->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Company ) );
|
m_TextCompany->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Company ) );
|
||||||
|
@ -122,6 +121,18 @@ void DIALOG_PAGES_SETTINGS::initDialog()
|
||||||
m_TextComment2->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Commentaire2 ) );
|
m_TextComment2->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Commentaire2 ) );
|
||||||
m_TextComment3->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Commentaire3 ) );
|
m_TextComment3->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Commentaire3 ) );
|
||||||
m_TextComment4->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Commentaire4 ) );
|
m_TextComment4->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Commentaire4 ) );
|
||||||
|
#else
|
||||||
|
|
||||||
|
TITLE_BLOCK tb = m_Parent->GetTitleBlock();
|
||||||
|
|
||||||
|
m_TextRevision->SetValue( tb.GetRevision() );
|
||||||
|
m_TextTitle->SetValue( tb.GetTitle() );
|
||||||
|
m_TextCompany->SetValue( tb.GetCompany() );
|
||||||
|
m_TextComment1->SetValue( tb.GetComment1() );
|
||||||
|
m_TextComment2->SetValue( tb.GetComment2() );
|
||||||
|
m_TextComment3->SetValue( tb.GetComment3() );
|
||||||
|
m_TextComment4->SetValue( tb.GetComment4() );
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef EESCHEMA
|
#ifndef EESCHEMA
|
||||||
m_RevisionExport->Show( false );
|
m_RevisionExport->Show( false );
|
||||||
|
@ -175,14 +186,15 @@ void DIALOG_PAGES_SETTINGS::SavePageSettings( wxCommandEvent& event )
|
||||||
wxString msg;
|
wxString msg;
|
||||||
double userSizeX;
|
double userSizeX;
|
||||||
double userSizeY;
|
double userSizeY;
|
||||||
|
TITLE_BLOCK tb;
|
||||||
|
|
||||||
m_Screen->m_Revision = m_TextRevision->GetValue();
|
tb.SetRevision( m_TextRevision->GetValue() );
|
||||||
m_Screen->m_Company = m_TextCompany->GetValue();
|
tb.SetCompany( m_TextCompany->GetValue() );
|
||||||
m_Screen->m_Title = m_TextTitle->GetValue();
|
tb.SetTitle( m_TextTitle->GetValue() );
|
||||||
m_Screen->m_Commentaire1 = m_TextComment1->GetValue();
|
tb.SetComment1( m_TextComment1->GetValue() );
|
||||||
m_Screen->m_Commentaire2 = m_TextComment2->GetValue();
|
tb.SetComment2( m_TextComment2->GetValue() );
|
||||||
m_Screen->m_Commentaire3 = m_TextComment3->GetValue();
|
tb.SetComment3( m_TextComment3->GetValue() );
|
||||||
m_Screen->m_Commentaire4 = m_TextComment4->GetValue();
|
tb.SetComment4( m_TextComment4->GetValue() );
|
||||||
|
|
||||||
msg = m_TextUserSizeX->GetValue();
|
msg = m_TextUserSizeX->GetValue();
|
||||||
msg.ToDouble( &userSizeX );
|
msg.ToDouble( &userSizeX );
|
||||||
|
@ -195,11 +207,11 @@ void DIALOG_PAGES_SETTINGS::SavePageSettings( wxCommandEvent& event )
|
||||||
radioSelection = 0;
|
radioSelection = 0;
|
||||||
|
|
||||||
// wxFormBuilder must use "A4", "A3", etc for choices, in all languages/translations
|
// wxFormBuilder must use "A4", "A3", etc for choices, in all languages/translations
|
||||||
wxString paperType = m_PageSizeBox->GetString( radioSelection );
|
wxString paperType = m_PageSizeBox->GetString( radioSelection );
|
||||||
|
PAGE_INFO pageInfo( paperType );
|
||||||
|
|
||||||
m_page.SetType( paperType );
|
m_Parent->SetPageSettings( pageInfo );
|
||||||
|
m_Parent->SetTitleBlock( tb );
|
||||||
m_Parent->SetPageSettings( m_page );
|
|
||||||
|
|
||||||
switch( g_UserUnit )
|
switch( g_UserUnit )
|
||||||
{
|
{
|
||||||
|
@ -229,32 +241,36 @@ void DIALOG_PAGES_SETTINGS::SavePageSettings( wxCommandEvent& event )
|
||||||
// Build the screen list
|
// Build the screen list
|
||||||
SCH_SCREENS ScreenList;
|
SCH_SCREENS ScreenList;
|
||||||
|
|
||||||
// Update the datas
|
// Update title blocks for all screens
|
||||||
for( screen = ScreenList.GetFirst(); screen != NULL; screen = ScreenList.GetNext() )
|
for( screen = ScreenList.GetFirst(); screen != NULL; screen = ScreenList.GetNext() )
|
||||||
{
|
{
|
||||||
if( screen == m_Screen )
|
if( screen == m_Screen )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
TITLE_BLOCK tb2 = screen->GetTitleBlock();
|
||||||
|
|
||||||
if( m_RevisionExport->IsChecked() )
|
if( m_RevisionExport->IsChecked() )
|
||||||
screen->m_Revision = m_Screen->m_Revision;
|
tb2.SetRevision( tb.GetRevision() );
|
||||||
|
|
||||||
if( m_TitleExport->IsChecked() )
|
if( m_TitleExport->IsChecked() )
|
||||||
screen->m_Title = m_Screen->m_Title;
|
tb2.SetTitle( tb.GetTitle() );
|
||||||
|
|
||||||
if( m_CompanyExport->IsChecked() )
|
if( m_CompanyExport->IsChecked() )
|
||||||
screen->m_Company = m_Screen->m_Company;
|
tb2.SetCompany( tb.GetCompany() );
|
||||||
|
|
||||||
if( m_Comment1Export->IsChecked() )
|
if( m_Comment1Export->IsChecked() )
|
||||||
screen->m_Commentaire1 = m_Screen->m_Commentaire1;
|
tb2.SetComment1( tb.GetComment1() );
|
||||||
|
|
||||||
if( m_Comment2Export->IsChecked() )
|
if( m_Comment2Export->IsChecked() )
|
||||||
screen->m_Commentaire2 = m_Screen->m_Commentaire2;
|
tb2.SetComment2( tb.GetComment2() );
|
||||||
|
|
||||||
if( m_Comment3Export->IsChecked() )
|
if( m_Comment3Export->IsChecked() )
|
||||||
screen->m_Commentaire3 = m_Screen->m_Commentaire3;
|
tb2.SetComment3( tb.GetComment3() );
|
||||||
|
|
||||||
if( m_Comment4Export->IsChecked() )
|
if( m_Comment4Export->IsChecked() )
|
||||||
screen->m_Commentaire4 = m_Screen->m_Commentaire4;
|
tb2.SetComment4( tb.GetComment4() );
|
||||||
|
|
||||||
|
screen->SetTitleBlock( tb2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -264,10 +280,8 @@ void DIALOG_PAGES_SETTINGS::SavePageSettings( wxCommandEvent& event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_PAGES_SETTINGS::setCurrentPageSizeSelection()
|
void DIALOG_PAGES_SETTINGS::setCurrentPageSizeSelection( const wxString& aPaperSize )
|
||||||
{
|
{
|
||||||
wxString curPaperType = m_page.GetType();
|
|
||||||
|
|
||||||
// use wxFormBuilder to store the sheet type in the wxRadioButton's label
|
// use wxFormBuilder to store the sheet type in the wxRadioButton's label
|
||||||
// i.e. "A4", "A3", etc, anywhere within the text of the label.
|
// i.e. "A4", "A3", etc, anywhere within the text of the label.
|
||||||
|
|
||||||
|
@ -276,12 +290,12 @@ void DIALOG_PAGES_SETTINGS::setCurrentPageSizeSelection()
|
||||||
// search all the child wxRadioButtons for a label containing our paper type
|
// search all the child wxRadioButtons for a label containing our paper type
|
||||||
for( unsigned i = 0; i < m_PageSizeBox->GetCount(); ++i )
|
for( unsigned i = 0; i < m_PageSizeBox->GetCount(); ++i )
|
||||||
{
|
{
|
||||||
// parse each label looking for curPaperType within it
|
// parse each label looking for aPaperSize within it
|
||||||
wxStringTokenizer st( m_PageSizeBox->GetString( i ) );
|
wxStringTokenizer st( m_PageSizeBox->GetString( i ) );
|
||||||
|
|
||||||
while( st.HasMoreTokens() )
|
while( st.HasMoreTokens() )
|
||||||
{
|
{
|
||||||
if( st.GetNextToken() == curPaperType )
|
if( st.GetNextToken() == aPaperSize )
|
||||||
{
|
{
|
||||||
m_PageSizeBox->SetSelection( i );
|
m_PageSizeBox->SetSelection( i );
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -17,7 +17,6 @@ private:
|
||||||
EDA_DRAW_FRAME* m_Parent;
|
EDA_DRAW_FRAME* m_Parent;
|
||||||
BASE_SCREEN* m_Screen;
|
BASE_SCREEN* m_Screen;
|
||||||
bool m_modified;
|
bool m_modified;
|
||||||
PAGE_INFO m_page; ///< the one being edited
|
|
||||||
PAGE_INFO m_user_size; ///< instantiated just to get the size
|
PAGE_INFO m_user_size; ///< instantiated just to get the size
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -37,7 +36,7 @@ private:
|
||||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
|
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
|
||||||
void OnCancelClick( wxCommandEvent& event );
|
void OnCancelClick( wxCommandEvent& event );
|
||||||
|
|
||||||
void setCurrentPageSizeSelection();
|
void setCurrentPageSizeSelection( const wxString& aPaperSize );
|
||||||
void SavePageSettings(wxCommandEvent& event);
|
void SavePageSettings(wxCommandEvent& event);
|
||||||
void ReturnSizeSelected(wxCommandEvent& event);
|
void ReturnSizeSelected(wxCommandEvent& event);
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include "wxstruct.h"
|
#include "wxstruct.h"
|
||||||
#include "appl_wxstruct.h"
|
#include "appl_wxstruct.h"
|
||||||
#include "worksheet.h"
|
#include "worksheet.h"
|
||||||
|
#include "class_title_block.h"
|
||||||
|
|
||||||
#include "build_version.h"
|
#include "build_version.h"
|
||||||
|
|
||||||
|
@ -1423,7 +1424,7 @@ void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_wid
|
||||||
case WS_DATE:
|
case WS_DATE:
|
||||||
if( WsItem->m_Legende )
|
if( WsItem->m_Legende )
|
||||||
msg = WsItem->m_Legende;
|
msg = WsItem->m_Legende;
|
||||||
msg += screen->m_Date;
|
msg += GetTitleBlock().GetDate();
|
||||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||||
msg, TEXT_ORIENT_HORIZ, size,
|
msg, TEXT_ORIENT_HORIZ, size,
|
||||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||||
|
@ -1433,7 +1434,7 @@ void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_wid
|
||||||
case WS_REV:
|
case WS_REV:
|
||||||
if( WsItem->m_Legende )
|
if( WsItem->m_Legende )
|
||||||
msg = WsItem->m_Legende;
|
msg = WsItem->m_Legende;
|
||||||
msg += screen->m_Revision;
|
msg += GetTitleBlock().GetRevision();
|
||||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||||
msg, TEXT_ORIENT_HORIZ, size,
|
msg, TEXT_ORIENT_HORIZ, size,
|
||||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||||
|
@ -1503,7 +1504,7 @@ void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_wid
|
||||||
case WS_COMPANY_NAME:
|
case WS_COMPANY_NAME:
|
||||||
if( WsItem->m_Legende )
|
if( WsItem->m_Legende )
|
||||||
msg = WsItem->m_Legende;
|
msg = WsItem->m_Legende;
|
||||||
msg += screen->m_Company;
|
msg += GetTitleBlock().GetCompany();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
{
|
{
|
||||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||||
|
@ -1518,7 +1519,7 @@ void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_wid
|
||||||
case WS_TITLE:
|
case WS_TITLE:
|
||||||
if( WsItem->m_Legende )
|
if( WsItem->m_Legende )
|
||||||
msg = WsItem->m_Legende;
|
msg = WsItem->m_Legende;
|
||||||
msg += screen->m_Title;
|
msg += GetTitleBlock().GetTitle();
|
||||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||||
msg, TEXT_ORIENT_HORIZ, size,
|
msg, TEXT_ORIENT_HORIZ, size,
|
||||||
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
|
||||||
|
@ -1529,7 +1530,7 @@ void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_wid
|
||||||
case WS_COMMENT1:
|
case WS_COMMENT1:
|
||||||
if( WsItem->m_Legende )
|
if( WsItem->m_Legende )
|
||||||
msg = WsItem->m_Legende;
|
msg = WsItem->m_Legende;
|
||||||
msg += screen->m_Commentaire1;
|
msg += GetTitleBlock().GetComment1();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
{
|
{
|
||||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||||
|
@ -1543,7 +1544,7 @@ void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_wid
|
||||||
case WS_COMMENT2:
|
case WS_COMMENT2:
|
||||||
if( WsItem->m_Legende )
|
if( WsItem->m_Legende )
|
||||||
msg = WsItem->m_Legende;
|
msg = WsItem->m_Legende;
|
||||||
msg += screen->m_Commentaire2;
|
msg += GetTitleBlock().GetComment2();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
{
|
{
|
||||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||||
|
@ -1557,7 +1558,7 @@ void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_wid
|
||||||
case WS_COMMENT3:
|
case WS_COMMENT3:
|
||||||
if( WsItem->m_Legende )
|
if( WsItem->m_Legende )
|
||||||
msg = WsItem->m_Legende;
|
msg = WsItem->m_Legende;
|
||||||
msg += screen->m_Commentaire3;
|
msg += GetTitleBlock().GetComment3();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
{
|
{
|
||||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||||
|
@ -1571,7 +1572,7 @@ void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_wid
|
||||||
case WS_COMMENT4:
|
case WS_COMMENT4:
|
||||||
if( WsItem->m_Legende )
|
if( WsItem->m_Legende )
|
||||||
msg = WsItem->m_Legende;
|
msg = WsItem->m_Legende;
|
||||||
msg += screen->m_Commentaire4;
|
msg += GetTitleBlock().GetComment4();
|
||||||
if( !msg.IsEmpty() )
|
if( !msg.IsEmpty() )
|
||||||
{
|
{
|
||||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||||
|
|
|
@ -250,14 +250,17 @@ bool SCH_EDIT_FRAME::LoadOneEEProject( const wxString& aFileName, bool aIsNew )
|
||||||
|
|
||||||
screen->SetZoom( 32 );
|
screen->SetZoom( 32 );
|
||||||
screen->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId );
|
screen->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId );
|
||||||
screen->m_Title = NAMELESS_PROJECT;
|
|
||||||
screen->m_Title += wxT( ".sch" );
|
TITLE_BLOCK tb;
|
||||||
GetScreen()->SetFileName( screen->m_Title );
|
wxString title;
|
||||||
screen->m_Company.Empty();
|
|
||||||
screen->m_Commentaire1.Empty();
|
title += NAMELESS_PROJECT;
|
||||||
screen->m_Commentaire2.Empty();
|
title += wxT( ".sch" );
|
||||||
screen->m_Commentaire3.Empty();
|
tb.SetTitle( title );
|
||||||
screen->m_Commentaire4.Empty();
|
screen->SetTitleBlock( tb );
|
||||||
|
|
||||||
|
GetScreen()->SetFileName( title );
|
||||||
|
|
||||||
LoadProjectFile( wxEmptyString, true );
|
LoadProjectFile( wxEmptyString, true );
|
||||||
Zoom_Automatique( false );
|
Zoom_Automatique( false );
|
||||||
SetSheetNumberAndCount();
|
SetSheetNumberAndCount();
|
||||||
|
|
|
@ -312,6 +312,7 @@ bool ReadSchemaDescr( LINE_READER* aLine, wxString& aMsgDiag, SCH_SCREEN* aScree
|
||||||
wxString pagename = FROM_UTF8( text );
|
wxString pagename = FROM_UTF8( text );
|
||||||
|
|
||||||
PAGE_INFO pageInfo;
|
PAGE_INFO pageInfo;
|
||||||
|
TITLE_BLOCK tb;
|
||||||
|
|
||||||
if( !pageInfo.SetType( pagename ) )
|
if( !pageInfo.SetType( pagename ) )
|
||||||
{
|
{
|
||||||
|
@ -337,7 +338,10 @@ line %d, \aAbort reading file.\n" ),
|
||||||
line = aLine->Line();
|
line = aLine->Line();
|
||||||
|
|
||||||
if( strnicmp( line, "$End", 4 ) == 0 )
|
if( strnicmp( line, "$End", 4 ) == 0 )
|
||||||
|
{
|
||||||
|
aScreen->SetTitleBlock( tb );
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Sheet", 2 ) == 0 )
|
if( strnicmp( line, "Sheet", 2 ) == 0 )
|
||||||
sscanf( line + 5, " %d %d",
|
sscanf( line + 5, " %d %d",
|
||||||
|
@ -346,56 +350,56 @@ line %d, \aAbort reading file.\n" ),
|
||||||
if( strnicmp( line, "Title", 2 ) == 0 )
|
if( strnicmp( line, "Title", 2 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
aScreen->m_Title = FROM_UTF8( buf );
|
tb.SetTitle( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Date", 2 ) == 0 )
|
if( strnicmp( line, "Date", 2 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
aScreen->m_Date = FROM_UTF8( buf );
|
tb.SetDate( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Rev", 2 ) == 0 )
|
if( strnicmp( line, "Rev", 2 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
aScreen->m_Revision = FROM_UTF8( buf );
|
tb.SetRevision( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comp", 4 ) == 0 )
|
if( strnicmp( line, "Comp", 4 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
aScreen->m_Company = FROM_UTF8( buf );
|
tb.SetCompany( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comment1", 8 ) == 0 )
|
if( strnicmp( line, "Comment1", 8 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
aScreen->m_Commentaire1 = FROM_UTF8( buf );
|
tb.SetComment1( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comment2", 8 ) == 0 )
|
if( strnicmp( line, "Comment2", 8 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
aScreen->m_Commentaire2 = FROM_UTF8( buf );
|
tb.SetComment2( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comment3", 8 ) == 0 )
|
if( strnicmp( line, "Comment3", 8 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
aScreen->m_Commentaire3 = FROM_UTF8( buf );
|
tb.SetComment3( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comment4", 8 ) == 0 )
|
if( strnicmp( line, "Comment4", 8 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
aScreen->m_Commentaire4 = FROM_UTF8( buf );
|
tb.SetComment4( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,14 +150,9 @@ void SCH_SCREEN::Clear()
|
||||||
|
|
||||||
/* Clear the project settings. */
|
/* Clear the project settings. */
|
||||||
m_ScreenNumber = m_NumberOfScreen = 1;
|
m_ScreenNumber = m_NumberOfScreen = 1;
|
||||||
m_Title.Empty();
|
|
||||||
m_Revision.Empty();
|
m_titles.Clear();
|
||||||
m_Company.Empty();
|
m_titles.SetDate();
|
||||||
m_Commentaire1.Empty();
|
|
||||||
m_Commentaire2.Empty();
|
|
||||||
m_Commentaire3.Empty();
|
|
||||||
m_Commentaire4.Empty();
|
|
||||||
m_Date = GenDate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -574,19 +569,20 @@ bool SCH_SCREEN::Save( FILE* aFile ) const
|
||||||
* simple hierarchy and flat hierarchy. Used also to search the root
|
* simple hierarchy and flat hierarchy. Used also to search the root
|
||||||
* sheet ( ScreenNumber = 1 ) within the files
|
* sheet ( ScreenNumber = 1 ) within the files
|
||||||
*/
|
*/
|
||||||
|
const TITLE_BLOCK& tb = GetTitleBlock();
|
||||||
|
|
||||||
if( fprintf( aFile, "$Descr %s %d %d\n", TO_UTF8( m_paper.GetType() ),
|
if( fprintf( aFile, "$Descr %s %d %d\n", TO_UTF8( m_paper.GetType() ),
|
||||||
m_paper.GetWidthMils(), m_paper.GetHeightMils() ) < 0
|
m_paper.GetWidthMils(), m_paper.GetHeightMils() ) < 0
|
||||||
|| fprintf( aFile, "encoding utf-8\n") < 0
|
|| fprintf( aFile, "encoding utf-8\n") < 0
|
||||||
|| fprintf( aFile, "Sheet %d %d\n", m_ScreenNumber, m_NumberOfScreen ) < 0
|
|| fprintf( aFile, "Sheet %d %d\n", m_ScreenNumber, m_NumberOfScreen ) < 0
|
||||||
|| fprintf( aFile, "Title %s\n", EscapedUTF8( m_Title ).c_str() ) < 0
|
|| fprintf( aFile, "Title %s\n", EscapedUTF8( tb.GetTitle() ).c_str() ) < 0
|
||||||
|| fprintf( aFile, "Date %s\n", EscapedUTF8( m_Date ).c_str() ) < 0
|
|| fprintf( aFile, "Date %s\n", EscapedUTF8( tb.GetDate() ).c_str() ) < 0
|
||||||
|| fprintf( aFile, "Rev %s\n", EscapedUTF8( m_Revision ).c_str() ) < 0
|
|| fprintf( aFile, "Rev %s\n", EscapedUTF8( tb.GetRevision() ).c_str() ) < 0
|
||||||
|| fprintf( aFile, "Comp %s\n", EscapedUTF8( m_Company ).c_str() ) < 0
|
|| fprintf( aFile, "Comp %s\n", EscapedUTF8( tb.GetCompany() ).c_str() ) < 0
|
||||||
|| fprintf( aFile, "Comment1 %s\n", EscapedUTF8( m_Commentaire1 ).c_str() ) < 0
|
|| fprintf( aFile, "Comment1 %s\n", EscapedUTF8( tb.GetComment1() ).c_str() ) < 0
|
||||||
|| fprintf( aFile, "Comment2 %s\n", EscapedUTF8( m_Commentaire2 ).c_str() ) < 0
|
|| fprintf( aFile, "Comment2 %s\n", EscapedUTF8( tb.GetComment2() ).c_str() ) < 0
|
||||||
|| fprintf( aFile, "Comment3 %s\n", EscapedUTF8( m_Commentaire3 ).c_str() ) < 0
|
|| fprintf( aFile, "Comment3 %s\n", EscapedUTF8( tb.GetComment3() ).c_str() ) < 0
|
||||||
|| fprintf( aFile, "Comment4 %s\n", EscapedUTF8( m_Commentaire4 ).c_str() ) < 0
|
|| fprintf( aFile, "Comment4 %s\n", EscapedUTF8( tb.GetComment4() ).c_str() ) < 0
|
||||||
|| fprintf( aFile, "$EndDescr\n" ) < 0 )
|
|| fprintf( aFile, "$EndDescr\n" ) < 0 )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -1492,7 +1488,11 @@ int SCH_SCREENS::ReplaceDuplicateTimeStamps()
|
||||||
void SCH_SCREENS::SetDate( const wxString& aDate )
|
void SCH_SCREENS::SetDate( const wxString& aDate )
|
||||||
{
|
{
|
||||||
for( size_t i = 0; i < m_screens.size(); i++ )
|
for( size_t i = 0; i < m_screens.size(); i++ )
|
||||||
m_screens[i]->m_Date = aDate;
|
{
|
||||||
|
TITLE_BLOCK tb = m_screens[i]->GetTitleBlock();
|
||||||
|
tb.SetDate( aDate );
|
||||||
|
m_screens[i]->SetTitleBlock( tb );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -383,7 +383,11 @@ void SCH_EDIT_FRAME::CreateScreens()
|
||||||
}
|
}
|
||||||
|
|
||||||
g_RootSheet->GetScreen()->SetFileName( m_DefaultSchematicFileName );
|
g_RootSheet->GetScreen()->SetFileName( m_DefaultSchematicFileName );
|
||||||
g_RootSheet->GetScreen()->m_Date = GenDate();
|
|
||||||
|
TITLE_BLOCK tb = g_RootSheet->GetScreen()->GetTitleBlock();
|
||||||
|
tb.SetDate();
|
||||||
|
g_RootSheet->GetScreen()->SetTitleBlock( tb );
|
||||||
|
|
||||||
m_CurrentSheet->Clear();
|
m_CurrentSheet->Clear();
|
||||||
m_CurrentSheet->Push( g_RootSheet );
|
m_CurrentSheet->Push( g_RootSheet );
|
||||||
|
|
||||||
|
@ -581,7 +585,6 @@ void SCH_EDIT_FRAME::OnModify()
|
||||||
if( m_dlgFindReplace == NULL )
|
if( m_dlgFindReplace == NULL )
|
||||||
m_foundItems.SetForceSearch();
|
m_foundItems.SetForceSearch();
|
||||||
|
|
||||||
wxString date = GenDate();
|
|
||||||
SCH_SCREENS s_list;
|
SCH_SCREENS s_list;
|
||||||
|
|
||||||
// Set the date for each sheet
|
// Set the date for each sheet
|
||||||
|
@ -589,10 +592,7 @@ void SCH_EDIT_FRAME::OnModify()
|
||||||
// >> change only the current sheet
|
// >> change only the current sheet
|
||||||
// >> change all sheets.
|
// >> change all sheets.
|
||||||
// I believe all sheets in a project must have the same date
|
// I believe all sheets in a project must have the same date
|
||||||
SCH_SCREEN* screen = s_list.GetFirst();
|
s_list.SetDate();
|
||||||
|
|
||||||
for( ; screen != NULL; screen = s_list.GetNext() )
|
|
||||||
screen->m_Date = date;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -74,15 +74,16 @@ typedef std::vector< GRID_TYPE > GRIDS;
|
||||||
*/
|
*/
|
||||||
class BASE_SCREEN : public EDA_ITEM
|
class BASE_SCREEN : public EDA_ITEM
|
||||||
{
|
{
|
||||||
GRIDS m_grids; ///< List of valid grid sizes.
|
GRIDS m_grids; ///< List of valid grid sizes.
|
||||||
wxString m_fileName; ///< File used to load the screen.
|
wxString m_fileName; ///< File used to load the screen.
|
||||||
char m_FlagRefreshReq; ///< Indicates that the screen should be redrawn.
|
char m_FlagRefreshReq; ///< Indicates that the screen should be redrawn.
|
||||||
bool m_FlagModified; ///< Indicates current drawing has been modified.
|
bool m_FlagModified; ///< Indicates current drawing has been modified.
|
||||||
bool m_FlagSave; ///< Indicates automatic file save.
|
bool m_FlagSave; ///< Indicates automatic file save.
|
||||||
EDA_ITEM* m_CurrentItem; ///< Currently selected object
|
EDA_ITEM* m_CurrentItem; ///< Currently selected object
|
||||||
GRID_TYPE m_Grid; ///< Current grid selection.
|
GRID_TYPE m_Grid; ///< Current grid selection.
|
||||||
wxPoint m_scrollCenter; ///< Current scroll center point in logical units.
|
wxPoint m_scrollCenter; ///< Current scroll center point in logical units.
|
||||||
wxPoint m_MousePosition; ///< Mouse cursor coordinate in logical units.
|
wxPoint m_MousePosition; ///< Mouse cursor coordinate in logical units.
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The cross hair position in logical (drawing) units. The cross hair is not the cursor
|
* The cross hair position in logical (drawing) units. The cross hair is not the cursor
|
||||||
|
@ -132,15 +133,6 @@ public:
|
||||||
int m_ScreenNumber;
|
int m_ScreenNumber;
|
||||||
int m_NumberOfScreen;
|
int m_NumberOfScreen;
|
||||||
|
|
||||||
wxString m_Title;
|
|
||||||
wxString m_Date;
|
|
||||||
wxString m_Revision;
|
|
||||||
wxString m_Company;
|
|
||||||
wxString m_Commentaire1;
|
|
||||||
wxString m_Commentaire2;
|
|
||||||
wxString m_Commentaire3;
|
|
||||||
wxString m_Commentaire4;
|
|
||||||
|
|
||||||
wxPoint m_GridOrigin;
|
wxPoint m_GridOrigin;
|
||||||
|
|
||||||
wxArrayDouble m_ZoomList; ///< Array of standard zoom (i.e. scale) coefficients.
|
wxArrayDouble m_ZoomList; ///< Array of standard zoom (i.e. scale) coefficients.
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "sch_item_struct.h"
|
#include "sch_item_struct.h"
|
||||||
#include "class_base_screen.h"
|
#include "class_base_screen.h"
|
||||||
|
#include "class_title_block.h"
|
||||||
|
|
||||||
#include "../eeschema/general.h"
|
#include "../eeschema/general.h"
|
||||||
|
|
||||||
|
@ -67,6 +68,8 @@ class SCH_SCREEN : public BASE_SCREEN
|
||||||
/// The size of the paper to print or plot on
|
/// The size of the paper to print or plot on
|
||||||
PAGE_INFO m_paper; // keep with the MVC 'model' if this class gets split
|
PAGE_INFO m_paper; // keep with the MVC 'model' if this class gets split
|
||||||
|
|
||||||
|
TITLE_BLOCK m_titles;
|
||||||
|
|
||||||
/// Position of the origin axis, which is used in exports mostly, but not yet in EESCHEMA
|
/// Position of the origin axis, which is used in exports mostly, but not yet in EESCHEMA
|
||||||
wxPoint m_originAxisPosition;
|
wxPoint m_originAxisPosition;
|
||||||
|
|
||||||
|
@ -105,6 +108,10 @@ public:
|
||||||
const wxPoint& GetOriginAxisPosition() const { return m_originAxisPosition; }
|
const wxPoint& GetOriginAxisPosition() const { return m_originAxisPosition; }
|
||||||
void SetOriginAxisPosition( const wxPoint& aPosition ) { m_originAxisPosition = aPosition; }
|
void SetOriginAxisPosition( const wxPoint& aPosition ) { m_originAxisPosition = aPosition; }
|
||||||
|
|
||||||
|
const TITLE_BLOCK& GetTitleBlock() const { return m_titles; }
|
||||||
|
//TITLE_BLOCK& GetTitleBlock() const { return (TITLE_BLOCK&) m_titles; }
|
||||||
|
void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) { m_titles = aTitleBlock; }
|
||||||
|
|
||||||
void DecRefCount();
|
void DecRefCount();
|
||||||
|
|
||||||
void IncRefCount();
|
void IncRefCount();
|
||||||
|
@ -521,7 +528,7 @@ public:
|
||||||
* @see GetDate()
|
* @see GetDate()
|
||||||
* @param aDate The date string to set for each screen.
|
* @param aDate The date string to set for each screen.
|
||||||
*/
|
*/
|
||||||
void SetDate( const wxString& aDate );
|
void SetDate( const wxString& aDate = GenDate() );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function DeleteAllMarkers
|
* Function DeleteAllMarkers
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
#ifndef TITLE_BLOCK_H_
|
||||||
|
#define TITLE_BLOCK_H_
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 1992-2012 KiCad Developers, see change_log.txt for contributors.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, you may find one here:
|
||||||
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||||
|
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||||
|
* or you may write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <wx/string.h>
|
||||||
|
|
||||||
|
|
||||||
|
extern wxString GenDate();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class TITLE_BLOCK
|
||||||
|
* holds the information shown in the lower right corner of a plot, printout, or
|
||||||
|
* editing view.
|
||||||
|
*
|
||||||
|
* @author Dick Hollenbeck
|
||||||
|
*/
|
||||||
|
class TITLE_BLOCK
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// TITLE_BLOCK();
|
||||||
|
|
||||||
|
void SetTitle( const wxString& aTitle ) { m_title = aTitle; }
|
||||||
|
const wxString& GetTitle() const { return m_title; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function SetDate
|
||||||
|
* sets the date field, and defaults to the current time and date.
|
||||||
|
*/
|
||||||
|
void SetDate( const wxString& aDate = GenDate() ) { m_date = aDate; }
|
||||||
|
const wxString& GetDate() const { return m_date; }
|
||||||
|
|
||||||
|
void SetRevision( const wxString& aRevision ) { m_revision = aRevision; }
|
||||||
|
const wxString& GetRevision() const { return m_revision; }
|
||||||
|
|
||||||
|
void SetCompany( const wxString& aCompany ) { m_company = aCompany; }
|
||||||
|
const wxString& GetCompany() const { return m_company; }
|
||||||
|
|
||||||
|
void SetComment1( const wxString& aComment ) { m_comment1 = aComment; }
|
||||||
|
const wxString& GetComment1() const { return m_comment1; }
|
||||||
|
|
||||||
|
void SetComment2( const wxString& aComment ) { m_comment2 = aComment; }
|
||||||
|
const wxString& GetComment2() const { return m_comment2; }
|
||||||
|
|
||||||
|
void SetComment3( const wxString& aComment ) { m_comment3 = aComment; }
|
||||||
|
const wxString& GetComment3() const { return m_comment3; }
|
||||||
|
|
||||||
|
void SetComment4( const wxString& aComment ) { m_comment4 = aComment; }
|
||||||
|
const wxString& GetComment4() const { return m_comment4; }
|
||||||
|
|
||||||
|
void Clear()
|
||||||
|
{
|
||||||
|
m_title.clear();
|
||||||
|
m_date.clear();
|
||||||
|
m_revision.clear();
|
||||||
|
m_company.clear();
|
||||||
|
m_comment1.clear();
|
||||||
|
m_comment2.clear();
|
||||||
|
m_comment3.clear();
|
||||||
|
m_comment4.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxString m_title;
|
||||||
|
wxString m_date;
|
||||||
|
wxString m_revision;
|
||||||
|
wxString m_company;
|
||||||
|
wxString m_comment1;
|
||||||
|
wxString m_comment2;
|
||||||
|
wxString m_comment3;
|
||||||
|
wxString m_comment4;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TITLE_BLOCK_H_
|
|
@ -0,0 +1,35 @@
|
||||||
|
#ifndef HASHTABLES_H_
|
||||||
|
#define HASHTABLES_H_
|
||||||
|
|
||||||
|
// Declare some hashtables using a MACRO techique from here:
|
||||||
|
// http://docs.wxwidgets.org/trunk/classwx_hash_map.html
|
||||||
|
// This simplifies finding the correct hashtable header file.
|
||||||
|
// Ideally, std::unordered_map is what we are trying to use here,
|
||||||
|
// but its header file has been a moving target for some time.
|
||||||
|
// Let wx figure it out.
|
||||||
|
#include <wx/hashmap.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class PROPERTIES
|
||||||
|
* is an associative array consisting of a key and value tuple.
|
||||||
|
*/
|
||||||
|
#if 1
|
||||||
|
// key: const char*
|
||||||
|
// value: wxString
|
||||||
|
WX_DECLARE_HASH_MAP( char*, wxString, wxStringHash, wxStringEqual, PROPERTIES );
|
||||||
|
#else
|
||||||
|
// key: wxString
|
||||||
|
// value: wxString
|
||||||
|
WX_DECLARE_STRING_HASH_MAP( wxString, PROPERTIES );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class KEYWORD_MAP
|
||||||
|
* is a hashtable consisting of a key and a value tuple.
|
||||||
|
* Key is a C string and value is an integer.
|
||||||
|
*/
|
||||||
|
//WX_DECLARE_HASH_MAP( char*, int, wxStringHash, wxStringEqual, KEYWORD_MAP );
|
||||||
|
|
||||||
|
|
||||||
|
#endif // HASHTABLES_H_
|
|
@ -1,4 +1,5 @@
|
||||||
|
#ifndef RICHIO_H_
|
||||||
|
#define RICHIO_H_
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
|
@ -23,9 +24,6 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef RICHIO_H_
|
|
||||||
#define RICHIO_H_
|
|
||||||
|
|
||||||
|
|
||||||
// This file defines 3 classes useful for working with DSN text files and is named
|
// This file defines 3 classes useful for working with DSN text files and is named
|
||||||
// "richio" after its author, Richard Hollenbeck, aka Dick Hollenbeck.
|
// "richio" after its author, Richard Hollenbeck, aka Dick Hollenbeck.
|
||||||
|
|
|
@ -119,6 +119,9 @@ public:
|
||||||
const wxPoint& GetOriginAxisPosition() const; // overload
|
const wxPoint& GetOriginAxisPosition() const; // overload
|
||||||
void SetOriginAxisPosition( const wxPoint& aPosition ); // overload
|
void SetOriginAxisPosition( const wxPoint& aPosition ); // overload
|
||||||
|
|
||||||
|
const TITLE_BLOCK& GetTitleBlock() const; // overload
|
||||||
|
void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ); // overload
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetBoard
|
* Function SetBoard
|
||||||
* sets the m_Pcb member in such as way as to ensure deleting any previous
|
* sets the m_Pcb member in such as way as to ensure deleting any previous
|
||||||
|
|
|
@ -74,6 +74,7 @@ class BASE_SCREEN;
|
||||||
class PARAM_CFG_BASE;
|
class PARAM_CFG_BASE;
|
||||||
class PAGE_INFO;
|
class PAGE_INFO;
|
||||||
class PLOTTER;
|
class PLOTTER;
|
||||||
|
class TITLE_BLOCK;
|
||||||
|
|
||||||
enum id_librarytype {
|
enum id_librarytype {
|
||||||
LIBRARY_TYPE_EESCHEMA,
|
LIBRARY_TYPE_EESCHEMA,
|
||||||
|
@ -462,6 +463,9 @@ public:
|
||||||
virtual const wxPoint& GetOriginAxisPosition() const = 0;
|
virtual const wxPoint& GetOriginAxisPosition() const = 0;
|
||||||
virtual void SetOriginAxisPosition( const wxPoint& aPosition ) = 0;
|
virtual void SetOriginAxisPosition( const wxPoint& aPosition ) = 0;
|
||||||
|
|
||||||
|
virtual const TITLE_BLOCK& GetTitleBlock() const = 0;
|
||||||
|
virtual void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) = 0;
|
||||||
|
|
||||||
int GetCursorShape() const { return m_cursorShape; }
|
int GetCursorShape() const { return m_cursorShape; }
|
||||||
|
|
||||||
void SetCursorShape( int aCursorShape ) { m_cursorShape = aCursorShape; }
|
void SetCursorShape( int aCursorShape ) { m_cursorShape = aCursorShape; }
|
||||||
|
|
|
@ -168,6 +168,20 @@ void PCB_BASE_FRAME::SetOriginAxisPosition( const wxPoint& aPosition )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const TITLE_BLOCK& PCB_BASE_FRAME::GetTitleBlock() const
|
||||||
|
{
|
||||||
|
wxASSERT( m_Pcb );
|
||||||
|
return m_Pcb->GetTitleBlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PCB_BASE_FRAME::SetTitleBlock( const TITLE_BLOCK& aTitleBlock )
|
||||||
|
{
|
||||||
|
wxASSERT( m_Pcb );
|
||||||
|
m_Pcb->SetTitleBlock( aTitleBlock );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EDA_RECT PCB_BASE_FRAME::GetBoardBoundingBox( bool aBoardEdgesOnly ) const
|
EDA_RECT PCB_BASE_FRAME::GetBoardBoundingBox( bool aBoardEdgesOnly ) const
|
||||||
{
|
{
|
||||||
wxASSERT( m_Pcb );
|
wxASSERT( m_Pcb );
|
||||||
|
@ -618,11 +632,13 @@ void PCB_BASE_FRAME::SaveSettings()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PCB_BASE_FRAME::OnModify( )
|
void PCB_BASE_FRAME::OnModify()
|
||||||
{
|
{
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
GetScreen()->SetSave();
|
GetScreen()->SetSave();
|
||||||
GetScreen()->m_Date = GenDate();
|
|
||||||
|
wxASSERT( m_Pcb );
|
||||||
|
m_Pcb->GetTitleBlock().SetDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "class_colors_design_settings.h"
|
#include "class_colors_design_settings.h"
|
||||||
#include "class_board_design_settings.h"
|
#include "class_board_design_settings.h"
|
||||||
#include "common.h" // PAGE_INFO
|
#include "common.h" // PAGE_INFO
|
||||||
|
#include "class_title_block.h"
|
||||||
|
|
||||||
class PCB_BASE_FRAME;
|
class PCB_BASE_FRAME;
|
||||||
class PCB_EDIT_FRAME;
|
class PCB_EDIT_FRAME;
|
||||||
|
@ -173,8 +174,9 @@ private:
|
||||||
NETINFO_LIST m_NetInfo; ///< net info list (name, design constraints ..
|
NETINFO_LIST m_NetInfo; ///< net info list (name, design constraints ..
|
||||||
|
|
||||||
BOARD_DESIGN_SETTINGS m_designSettings;
|
BOARD_DESIGN_SETTINGS m_designSettings;
|
||||||
COLORS_DESIGN_SETTINGS* m_colorsSettings; // Link to current colors settings
|
COLORS_DESIGN_SETTINGS* m_colorsSettings;
|
||||||
PAGE_INFO m_paper;
|
PAGE_INFO m_paper;
|
||||||
|
TITLE_BLOCK m_titles; ///< text in lower right of screen and plots
|
||||||
|
|
||||||
/// Position of the origin axis, which is used in exports mostly
|
/// Position of the origin axis, which is used in exports mostly
|
||||||
wxPoint m_originAxisPosition;
|
wxPoint m_originAxisPosition;
|
||||||
|
@ -544,6 +546,9 @@ public:
|
||||||
const wxPoint& GetOriginAxisPosition() const { return m_originAxisPosition; }
|
const wxPoint& GetOriginAxisPosition() const { return m_originAxisPosition; }
|
||||||
void SetOriginAxisPosition( const wxPoint& aPosition ) { m_originAxisPosition = aPosition; }
|
void SetOriginAxisPosition( const wxPoint& aPosition ) { m_originAxisPosition = aPosition; }
|
||||||
|
|
||||||
|
TITLE_BLOCK& GetTitleBlock() { return m_titles; }
|
||||||
|
void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) { m_titles = aTitleBlock; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetBoardSettings
|
* Function SetBoardSettings
|
||||||
* @return the current COLORS_DESIGN_SETTINGS in use
|
* @return the current COLORS_DESIGN_SETTINGS in use
|
||||||
|
|
|
@ -683,12 +683,11 @@ static void CreateSignalsSection( FILE* aFile, BOARD* aPcb )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Creates the header section; some of the data come from the frame
|
// Creates the header section
|
||||||
* (actually the screen), not from the pcb */
|
|
||||||
static bool CreateHeaderInfoData( FILE* aFile, PCB_EDIT_FRAME* aFrame )
|
static bool CreateHeaderInfoData( FILE* aFile, PCB_EDIT_FRAME* aFrame )
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
PCB_SCREEN* screen = (PCB_SCREEN*) ( aFrame->GetScreen() );
|
PCB_SCREEN* screen = (PCB_SCREEN*) aFrame->GetScreen();
|
||||||
|
|
||||||
fputs( "$HEADER\n", aFile );
|
fputs( "$HEADER\n", aFile );
|
||||||
fputs( "GENCAD 1.4\n", aFile );
|
fputs( "GENCAD 1.4\n", aFile );
|
||||||
|
@ -698,16 +697,22 @@ static bool CreateHeaderInfoData( FILE* aFile, PCB_EDIT_FRAME* aFrame )
|
||||||
GetChars( wxGetApp().GetAppName() ),
|
GetChars( wxGetApp().GetAppName() ),
|
||||||
GetChars( GetBuildVersion() ) );
|
GetChars( GetBuildVersion() ) );
|
||||||
fputs( TO_UTF8( msg ), aFile );
|
fputs( TO_UTF8( msg ), aFile );
|
||||||
|
|
||||||
msg = wxT( "DRAWING \"" ) + screen->GetFileName() + wxT( "\"\n" );
|
msg = wxT( "DRAWING \"" ) + screen->GetFileName() + wxT( "\"\n" );
|
||||||
fputs( TO_UTF8( msg ), aFile );
|
fputs( TO_UTF8( msg ), aFile );
|
||||||
msg = wxT( "REVISION \"" ) + screen->m_Revision + wxT( " " ) +
|
|
||||||
screen->m_Date + wxT( "\"\n" );
|
const TITLE_BLOCK& tb = aFrame->GetTitleBlock();
|
||||||
|
|
||||||
|
msg = wxT( "REVISION \"" ) + tb.GetRevision() + wxT( " " ) + tb.GetDate() + wxT( "\"\n" );
|
||||||
|
|
||||||
fputs( TO_UTF8( msg ), aFile );
|
fputs( TO_UTF8( msg ), aFile );
|
||||||
fputs( "UNITS INCH\n", aFile );
|
fputs( "UNITS INCH\n", aFile );
|
||||||
|
|
||||||
msg.Printf( wxT( "ORIGIN %g %g\n" ),
|
msg.Printf( wxT( "ORIGIN %g %g\n" ),
|
||||||
MapXTo( aFrame->GetOriginAxisPosition().x ),
|
MapXTo( aFrame->GetOriginAxisPosition().x ),
|
||||||
MapYTo( aFrame->GetOriginAxisPosition().y ) );
|
MapYTo( aFrame->GetOriginAxisPosition().y ) );
|
||||||
fputs( TO_UTF8( msg ), aFile );
|
fputs( TO_UTF8( msg ), aFile );
|
||||||
|
|
||||||
fputs( "INTERTRACK 0\n", aFile );
|
fputs( "INTERTRACK 0\n", aFile );
|
||||||
fputs( "$ENDHEADER\n\n", aFile );
|
fputs( "$ENDHEADER\n\n", aFile );
|
||||||
|
|
||||||
|
|
|
@ -420,10 +420,13 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
|
||||||
GetScreen()->SetFileName( aFileName );
|
GetScreen()->SetFileName( aFileName );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If changes are made, update the board date */
|
// If changes are made, update the board date
|
||||||
if( GetScreen()->IsModify() )
|
if( GetScreen()->IsModify() )
|
||||||
{
|
{
|
||||||
GetScreen()->m_Date = GenDate();
|
TITLE_BLOCK tb = GetTitleBlock();
|
||||||
|
|
||||||
|
tb.SetDate();
|
||||||
|
SetTitleBlock( tb );
|
||||||
}
|
}
|
||||||
|
|
||||||
pcbFileName = GetScreen()->GetFileName();
|
pcbFileName = GetScreen()->GetFileName();
|
||||||
|
@ -480,9 +483,7 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
|
||||||
|
|
||||||
PROPERTIES props;
|
PROPERTIES props;
|
||||||
|
|
||||||
// wanting wxWidgets 2.9.x which can actually create a wxString() from
|
props["header"] = header;
|
||||||
// a const char*, so don't have to use wxT()
|
|
||||||
props[ wxT("header") ] = header;
|
|
||||||
|
|
||||||
IO_MGR::Save( IO_MGR::KICAD, pcbFileName.GetFullPath(), GetBoard(), &props );
|
IO_MGR::Save( IO_MGR::KICAD, pcbFileName.GetFullPath(), GetBoard(), &props );
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,13 +25,8 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <wx/string.h>
|
|
||||||
#include <wx/hashmap.h>
|
|
||||||
#include <richio.h>
|
#include <richio.h>
|
||||||
|
#include <hashtables.h>
|
||||||
|
|
||||||
// http://docs.wxwidgets.org/trunk/classwx_hash_map.html
|
|
||||||
WX_DECLARE_STRING_HASH_MAP( wxString, PROPERTIES );
|
|
||||||
|
|
||||||
class BOARD;
|
class BOARD;
|
||||||
class PLUGIN;
|
class PLUGIN;
|
||||||
|
|
|
@ -838,7 +838,7 @@ bool PCB_EDIT_FRAME::WriteGeneralDescrPcb( FILE* File )
|
||||||
* @param screen BASE_SCREEN to save
|
* @param screen BASE_SCREEN to save
|
||||||
* @param File = an open FILE to write info
|
* @param File = an open FILE to write info
|
||||||
*/
|
*/
|
||||||
static bool WriteSheetDescr( const PAGE_INFO& aPageSettings, BASE_SCREEN* screen, FILE* File )
|
static bool WriteSheetDescr( const PAGE_INFO& aPageSettings, const TITLE_BLOCK& aTitleBlock, FILE* File )
|
||||||
{
|
{
|
||||||
fprintf( File, "$SHEETDESCR\n" );
|
fprintf( File, "$SHEETDESCR\n" );
|
||||||
fprintf( File, "Sheet %s %d %d\n",
|
fprintf( File, "Sheet %s %d %d\n",
|
||||||
|
@ -846,14 +846,14 @@ static bool WriteSheetDescr( const PAGE_INFO& aPageSettings, BASE_SCREEN* screen
|
||||||
aPageSettings.GetSizeMils().x,
|
aPageSettings.GetSizeMils().x,
|
||||||
aPageSettings.GetSizeMils().y );
|
aPageSettings.GetSizeMils().y );
|
||||||
|
|
||||||
fprintf( File, "Title %s\n", EscapedUTF8( screen->m_Title ).c_str() );
|
fprintf( File, "Title %s\n", EscapedUTF8( aTitleBlock.GetTitle() ).c_str() );
|
||||||
fprintf( File, "Date %s\n", EscapedUTF8( screen->m_Date ).c_str() );
|
fprintf( File, "Date %s\n", EscapedUTF8( aTitleBlock.GetDate() ).c_str() );
|
||||||
fprintf( File, "Rev %s\n", EscapedUTF8( screen->m_Revision ).c_str() );
|
fprintf( File, "Rev %s\n", EscapedUTF8( aTitleBlock.GetRevision() ).c_str() );
|
||||||
fprintf( File, "Comp %s\n", EscapedUTF8( screen->m_Company ).c_str() );
|
fprintf( File, "Comp %s\n", EscapedUTF8( aTitleBlock.GetCompany() ).c_str() );
|
||||||
fprintf( File, "Comment1 %s\n", EscapedUTF8( screen->m_Commentaire1 ).c_str() );
|
fprintf( File, "Comment1 %s\n", EscapedUTF8( aTitleBlock.GetComment1() ).c_str() );
|
||||||
fprintf( File, "Comment2 %s\n", EscapedUTF8( screen->m_Commentaire2 ).c_str() );
|
fprintf( File, "Comment2 %s\n", EscapedUTF8( aTitleBlock.GetComment2() ).c_str() );
|
||||||
fprintf( File, "Comment3 %s\n", EscapedUTF8( screen->m_Commentaire3 ).c_str() );
|
fprintf( File, "Comment3 %s\n", EscapedUTF8( aTitleBlock.GetComment3() ).c_str() );
|
||||||
fprintf( File, "Comment4 %s\n", EscapedUTF8( screen->m_Commentaire4 ).c_str() );
|
fprintf( File, "Comment4 %s\n", EscapedUTF8( aTitleBlock.GetComment4() ).c_str() );
|
||||||
|
|
||||||
fprintf( File, "$EndSHEETDESCR\n\n" );
|
fprintf( File, "$EndSHEETDESCR\n\n" );
|
||||||
return true;
|
return true;
|
||||||
|
@ -862,16 +862,20 @@ static bool WriteSheetDescr( const PAGE_INFO& aPageSettings, BASE_SCREEN* screen
|
||||||
|
|
||||||
#if !defined( USE_NEW_PCBNEW_LOAD )
|
#if !defined( USE_NEW_PCBNEW_LOAD )
|
||||||
|
|
||||||
static bool ReadSheetDescr( BOARD* aBoard, BASE_SCREEN* screen, LINE_READER* aReader )
|
static bool ReadSheetDescr( BOARD* aBoard, LINE_READER* aReader )
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
TITLE_BLOCK tb;
|
||||||
|
|
||||||
while( aReader->ReadLine() )
|
while( aReader->ReadLine() )
|
||||||
{
|
{
|
||||||
char* line = aReader->Line();
|
char* line = aReader->Line();
|
||||||
|
|
||||||
if( strnicmp( line, "$End", 4 ) == 0 )
|
if( strnicmp( line, "$End", 4 ) == 0 )
|
||||||
|
{
|
||||||
|
aBoard->SetTitleBlock( tb );
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Sheet", 4 ) == 0 )
|
if( strnicmp( line, "Sheet", 4 ) == 0 )
|
||||||
{
|
{
|
||||||
|
@ -920,56 +924,56 @@ static bool ReadSheetDescr( BOARD* aBoard, BASE_SCREEN* screen, LINE_READER* aRe
|
||||||
if( strnicmp( line, "Title", 2 ) == 0 )
|
if( strnicmp( line, "Title", 2 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
screen->m_Title = FROM_UTF8( buf );
|
tb.SetTitle( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Date", 2 ) == 0 )
|
if( strnicmp( line, "Date", 2 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
screen->m_Date = FROM_UTF8( buf );
|
tb.SetDate( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Rev", 2 ) == 0 )
|
if( strnicmp( line, "Rev", 2 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
screen->m_Revision = FROM_UTF8( buf );
|
tb.SetRevision( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comp", 4 ) == 0 )
|
if( strnicmp( line, "Comp", 4 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
screen->m_Company = FROM_UTF8( buf );
|
tb.SetCompany( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comment1", 8 ) == 0 )
|
if( strnicmp( line, "Comment1", 8 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
screen->m_Commentaire1 = FROM_UTF8( buf );
|
tb.SetComment1( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comment2", 8 ) == 0 )
|
if( strnicmp( line, "Comment2", 8 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
screen->m_Commentaire2 = FROM_UTF8( buf );
|
tb.SetComment2( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comment3", 8 ) == 0 )
|
if( strnicmp( line, "Comment3", 8 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
screen->m_Commentaire3 = FROM_UTF8( buf );
|
tb.SetComment3( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strnicmp( line, "Comment4", 8 ) == 0 )
|
if( strnicmp( line, "Comment4", 8 ) == 0 )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, 256 );
|
ReadDelimitedText( buf, line, 256 );
|
||||||
screen->m_Commentaire4 = FROM_UTF8( buf );
|
tb.SetComment4( FROM_UTF8( buf ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1111,7 +1115,7 @@ int PCB_EDIT_FRAME::ReadPcbFile( LINE_READER* aReader, bool Append )
|
||||||
|
|
||||||
if( TESTLINE( "SHEETDESCR" ) )
|
if( TESTLINE( "SHEETDESCR" ) )
|
||||||
{
|
{
|
||||||
ReadSheetDescr( board, GetScreen(), aReader );
|
ReadSheetDescr( board, aReader );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1187,7 +1191,7 @@ int PCB_EDIT_FRAME::SavePcbFormatAscii( FILE* aFile )
|
||||||
GetBoard()->SetCurrentNetClass( GetBoard()->m_NetClasses.GetDefault()->GetName() );
|
GetBoard()->SetCurrentNetClass( GetBoard()->m_NetClasses.GetDefault()->GetName() );
|
||||||
|
|
||||||
WriteGeneralDescrPcb( aFile );
|
WriteGeneralDescrPcb( aFile );
|
||||||
WriteSheetDescr( GetBoard()->GetPageSettings(), GetScreen(), aFile );
|
WriteSheetDescr( GetBoard()->GetPageSettings(), GetBoard()->GetTitleBlock(), aFile );
|
||||||
WriteSetup( aFile, this, GetBoard() );
|
WriteSetup( aFile, this, GetBoard() );
|
||||||
|
|
||||||
rc = GetBoard()->Save( aFile );
|
rc = GetBoard()->Save( aFile );
|
||||||
|
|
|
@ -439,7 +439,8 @@ void KICAD_PLUGIN::loadGENERAL()
|
||||||
|
|
||||||
void KICAD_PLUGIN::loadSHEET()
|
void KICAD_PLUGIN::loadSHEET()
|
||||||
{
|
{
|
||||||
char buf[260];
|
char buf[260];
|
||||||
|
TITLE_BLOCK tb;
|
||||||
|
|
||||||
while( READLINE() )
|
while( READLINE() )
|
||||||
{
|
{
|
||||||
|
@ -488,56 +489,56 @@ void KICAD_PLUGIN::loadSHEET()
|
||||||
else if( TESTLINE( "Title" ) )
|
else if( TESTLINE( "Title" ) )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||||
|
tb.SetTitle( FROM_UTF8( buf ) );
|
||||||
#if 0 // @todo "screen" not available here
|
|
||||||
screen->m_Title = FROM_UTF8( buf );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( TESTLINE( "Date" ) )
|
else if( TESTLINE( "Date" ) )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||||
screen->m_Date = FROM_UTF8( buf );
|
tb.SetDate( FROM_UTF8( buf ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( TESTLINE( "Rev" ) )
|
else if( TESTLINE( "Rev" ) )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||||
screen->m_Revision = FROM_UTF8( buf );
|
tb.SetRevision( FROM_UTF8( buf ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( TESTLINE( "Comp" ) )
|
else if( TESTLINE( "Comp" ) )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||||
screen->m_Company = FROM_UTF8( buf );
|
tb.SetCompany( FROM_UTF8( buf ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( TESTLINE( "Comment1" ) )
|
else if( TESTLINE( "Comment1" ) )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||||
screen->m_Commentaire1 = FROM_UTF8( buf );
|
tb.SetComment1( FROM_UTF8( buf ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( TESTLINE( "Comment2" ) )
|
else if( TESTLINE( "Comment2" ) )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||||
screen->m_Commentaire2 = FROM_UTF8( buf );
|
tb.SetComment2( FROM_UTF8( buf ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( TESTLINE( "Comment3" ) )
|
else if( TESTLINE( "Comment3" ) )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||||
screen->m_Commentaire3 = FROM_UTF8( buf );
|
tb.SetComment3( FROM_UTF8( buf ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( TESTLINE( "Comment4" ) )
|
else if( TESTLINE( "Comment4" ) )
|
||||||
{
|
{
|
||||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||||
screen->m_Commentaire4 = FROM_UTF8( buf );
|
tb.SetComment4( FROM_UTF8( buf ) );
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( TESTLINE( "$EndSHEETDESCR" ) )
|
else if( TESTLINE( "$EndSHEETDESCR" ) )
|
||||||
|
{
|
||||||
|
m_board->SetTitleBlock( tb );
|
||||||
return; // preferred exit
|
return; // preferred exit
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
THROW_IO_ERROR( "Missing '$EndSHEETDESCR'" );
|
THROW_IO_ERROR( "Missing '$EndSHEETDESCR'" );
|
||||||
|
@ -2654,7 +2655,7 @@ void KICAD_PLUGIN::Save( const wxString& aFileName, BOARD* aBoard, PROPERTIES* a
|
||||||
if( m_props )
|
if( m_props )
|
||||||
{
|
{
|
||||||
// save a file header, if caller provided one (with trailing \n hopefully).
|
// save a file header, if caller provided one (with trailing \n hopefully).
|
||||||
fprintf( m_fp, "%s", TO_UTF8( (*m_props)[ wxT("header") ] ) );
|
fprintf( m_fp, "%s", TO_UTF8( (*m_props)["header"] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
saveAllSections();
|
saveAllSections();
|
||||||
|
@ -2733,7 +2734,8 @@ void KICAD_PLUGIN::saveGENERAL() const
|
||||||
|
|
||||||
void KICAD_PLUGIN::saveSHEET() const
|
void KICAD_PLUGIN::saveSHEET() const
|
||||||
{
|
{
|
||||||
const PAGE_INFO& pageInfo = m_board->GetPageSettings();
|
const PAGE_INFO& pageInfo = m_board->GetPageSettings();
|
||||||
|
const TITLE_BLOCK& tb = m_board->GetTitleBlock();
|
||||||
|
|
||||||
fprintf( m_fp, "$SHEETDESCR\n" );
|
fprintf( m_fp, "$SHEETDESCR\n" );
|
||||||
|
|
||||||
|
@ -2743,18 +2745,14 @@ void KICAD_PLUGIN::saveSHEET() const
|
||||||
pageInfo.GetSizeMils().x,
|
pageInfo.GetSizeMils().x,
|
||||||
pageInfo.GetSizeMils().y );
|
pageInfo.GetSizeMils().y );
|
||||||
|
|
||||||
#if 0 // @todo sheet not available here. The sheet needs to go into the board if it is important enough to be saved with the board
|
fprintf( m_fp, "Title %s\n", EscapedUTF8( tb.GetTitle() ).c_str() );
|
||||||
fprintf( m_fp, "Title %s\n", EscapedUTF8( screen->m_Title ).c_str() );
|
fprintf( m_fp, "Date %s\n", EscapedUTF8( tb.GetDate() ).c_str() );
|
||||||
fprintf( m_fp, "Date %s\n", EscapedUTF8( screen->m_Date ).c_str() );
|
fprintf( m_fp, "Rev %s\n", EscapedUTF8( tb.GetRevision() ).c_str() );
|
||||||
fprintf( m_fp, "Rev %s\n", EscapedUTF8( screen->m_Revision ).c_str() );
|
fprintf( m_fp, "Comp %s\n", EscapedUTF8( tb.GetCompany() ).c_str() );
|
||||||
fprintf( m_fp, "Comp %s\n", EscapedUTF8( screen->m_Company ).c_str() );
|
fprintf( m_fp, "Comment1 %s\n", EscapedUTF8( tb.GetComment1() ).c_str() );
|
||||||
fprintf( m_fp, "Comment1 %s\n", EscapedUTF8( screen->m_Commentaire1 ).c_str() );
|
fprintf( m_fp, "Comment2 %s\n", EscapedUTF8( tb.GetComment2() ).c_str() );
|
||||||
fprintf( m_fp, "Comment2 %s\n", EscapedUTF8( screen->m_Commentaire2 ).c_str() );
|
fprintf( m_fp, "Comment3 %s\n", EscapedUTF8( tb.GetComment3() ).c_str() );
|
||||||
fprintf( m_fp, "Comment3 %s\n", EscapedUTF8( screen->m_Commentaire3 ).c_str() );
|
fprintf( m_fp, "Comment4 %s\n", EscapedUTF8( tb.GetComment4() ).c_str() );
|
||||||
fprintf( m_fp, "Comment4 %s\n", EscapedUTF8( screen->m_Commentaire4 ).c_str() );
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
fprintf( m_fp, "$EndSHEETDESCR\n\n" );
|
fprintf( m_fp, "$EndSHEETDESCR\n\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "plot_common.h"
|
#include "plot_common.h"
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
|
|
||||||
|
|
||||||
#define PLOT_LINEWIDTH_MIN 0
|
#define PLOT_LINEWIDTH_MIN 0
|
||||||
#define PLOT_LINEWIDTH_MAX 200
|
#define PLOT_LINEWIDTH_MAX 200
|
||||||
#define HPGL_PEN_DIAMETER_MIN 0
|
#define HPGL_PEN_DIAMETER_MIN 0
|
||||||
|
@ -392,27 +393,28 @@ void PCB_PLOT_PARAMS_PARSER::Parse( PCB_PLOT_PARAMS* aPcbPlotParams ) throw( IO_
|
||||||
|
|
||||||
bool PCB_PLOT_PARAMS_PARSER::ParseBool() throw( IO_ERROR )
|
bool PCB_PLOT_PARAMS_PARSER::ParseBool() throw( IO_ERROR )
|
||||||
{
|
{
|
||||||
T token;
|
T token = NeedSYMBOL();
|
||||||
token = NeedSYMBOL();
|
|
||||||
if( token != T_false && token != T_true )
|
if( token != T_false && token != T_true )
|
||||||
Expecting( "true|false" );
|
Expecting( "true|false" );
|
||||||
return (token == T_true);
|
|
||||||
|
return token == T_true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int PCB_PLOT_PARAMS_PARSER::ParseInt( int aMin, int aMax ) throw( IO_ERROR )
|
int PCB_PLOT_PARAMS_PARSER::ParseInt( int aMin, int aMax ) throw( IO_ERROR )
|
||||||
{
|
{
|
||||||
T token;
|
T token = NextTok();
|
||||||
int i;
|
|
||||||
token = NextTok();
|
|
||||||
if( token != T_NUMBER )
|
if( token != T_NUMBER )
|
||||||
Expecting( T_NUMBER );
|
Expecting( T_NUMBER );
|
||||||
i = atoi( CurText() );
|
|
||||||
|
|
||||||
if( i < aMin )
|
int val = atoi( CurText() );
|
||||||
i = aMin;
|
|
||||||
else if( i > aMax )
|
|
||||||
i = aMax;
|
|
||||||
|
|
||||||
return i;
|
if( val < aMin )
|
||||||
|
val = aMin;
|
||||||
|
else if( val > aMax )
|
||||||
|
val = aMax;
|
||||||
|
|
||||||
|
return val;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
|
#ifndef PCB_PLOT_PARAMS_H_
|
||||||
|
#define PCB_PLOT_PARAMS_H_
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
|
@ -22,19 +23,12 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef PCB_PLOT_PARAMS_H_
|
|
||||||
#define PCB_PLOT_PARAMS_H_
|
|
||||||
|
|
||||||
#include <wx/wx.h>
|
#include <wx/wx.h>
|
||||||
#include "base_struct.h"
|
|
||||||
#include "pcb_plot_params_lexer.h"
|
#include "pcb_plot_params_lexer.h"
|
||||||
|
#include "base_struct.h"
|
||||||
|
|
||||||
class PCB_PLOT_PARAMS;
|
|
||||||
class PCB_PLOT_PARAMS_PARSER;
|
class PCB_PLOT_PARAMS_PARSER;
|
||||||
|
|
||||||
extern PCB_PLOT_PARAMS g_PcbPlotOptions;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PCB_PLOT_PARAMS
|
* Class PCB_PLOT_PARAMS
|
||||||
* handles plot parameters and options when plotting/printing a board.
|
* handles plot parameters and options when plotting/printing a board.
|
||||||
|
@ -43,31 +37,32 @@ class PCB_PLOT_PARAMS
|
||||||
{
|
{
|
||||||
friend class PCB_PLOT_PARAMS_PARSER;
|
friend class PCB_PLOT_PARAMS_PARSER;
|
||||||
public:
|
public:
|
||||||
bool m_ExcludeEdgeLayer; // True: do not plot edge layer when plotting other layers
|
bool m_ExcludeEdgeLayer; ///< True: do not plot edge layer when plotting other layers
|
||||||
// False: Edge layer always plotted (merged) when plotting other layers
|
///< False: Edge layer always plotted (merged) when plotting other layers
|
||||||
int m_PlotLineWidth;
|
int m_PlotLineWidth;
|
||||||
bool m_PlotFrameRef; // True to plot/print frame references
|
bool m_PlotFrameRef; ///< True to plot/print frame references
|
||||||
bool m_PlotViaOnMaskLayer; // True if vias are drawn on Mask layer
|
bool m_PlotViaOnMaskLayer; ///< True if vias are drawn on Mask layer
|
||||||
// (ie protected by mask)
|
///< (ie protected by mask)
|
||||||
EDA_DRAW_MODE_T m_PlotMode; // LINE, FILLED or SKETCH: select how to plot filled objects.
|
EDA_DRAW_MODE_T m_PlotMode; ///< LINE, FILLED or SKETCH: select how to plot filled objects.
|
||||||
// depending on plot format or layers, all options are not always allowed
|
///< depending on plot format or layers, all options are not always allowed
|
||||||
int m_HPGLPenNum;
|
int m_HPGLPenNum;
|
||||||
int m_HPGLPenSpeed;
|
int m_HPGLPenSpeed;
|
||||||
int m_HPGLPenDiam;
|
int m_HPGLPenDiam;
|
||||||
int m_HPGLPenOvr;
|
int m_HPGLPenOvr;
|
||||||
int m_PlotPSColorOpt; // True for color Postscript output
|
int m_PlotPSColorOpt; ///< True for color Postscript output
|
||||||
bool m_PlotPSNegative; // True to create a negative board ps plot
|
bool m_PlotPSNegative; ///< True to create a negative board ps plot
|
||||||
|
|
||||||
// Flags to enable or disable ploting of various PCB elements.
|
// Flags to enable or disable ploting of various PCB elements.
|
||||||
bool m_SkipNPTH_Pads; // true to disable plot NPTH pads if hole and size have same value
|
|
||||||
// GERBER only
|
bool m_SkipNPTH_Pads; ///< true to disable plot NPTH pads if hole and size have same value
|
||||||
|
///< GERBER only
|
||||||
bool m_PlotReference;
|
bool m_PlotReference;
|
||||||
bool m_PlotValue;
|
bool m_PlotValue;
|
||||||
bool m_PlotTextOther;
|
bool m_PlotTextOther;
|
||||||
bool m_PlotInvisibleTexts;
|
bool m_PlotInvisibleTexts;
|
||||||
bool m_PlotPadsOnSilkLayer; // allows pads outlines on silkscreen layer (when pads are also o, silk screen
|
bool m_PlotPadsOnSilkLayer; ///< allows pads outlines on silkscreen layer (when pads are also o, silk screen
|
||||||
|
|
||||||
int m_PlotFormat; // id for plot format (see enum PlotFormat in plot_common.h) */
|
int m_PlotFormat; ///< id for plot format (see enum PlotFormat in plot_common.h) */
|
||||||
bool m_PlotMirror;
|
bool m_PlotMirror;
|
||||||
|
|
||||||
enum DrillShapeOptT {
|
enum DrillShapeOptT {
|
||||||
|
@ -75,18 +70,21 @@ public:
|
||||||
SMALL_DRILL_SHAPE = 1,
|
SMALL_DRILL_SHAPE = 1,
|
||||||
FULL_DRILL_SHAPE = 2
|
FULL_DRILL_SHAPE = 2
|
||||||
};
|
};
|
||||||
DrillShapeOptT m_DrillShapeOpt; // For postscript output: holes can be not plotted,
|
DrillShapeOptT m_DrillShapeOpt; ///< For postscript output: holes can be not plotted,
|
||||||
// or have a small size or plotted with their actual size
|
///< or have a small size or plotted with their actual size
|
||||||
bool m_AutoScale; // If true, use the better scale to fit in page
|
bool m_AutoScale; ///< If true, use the better scale to fit in page
|
||||||
double m_PlotScale; // The global scale factor. a 1.0 scale factor plot a board
|
double m_PlotScale; ///< The global scale factor. a 1.0 scale factor plot a board
|
||||||
// with its actual size.
|
///< with its actual size.
|
||||||
|
|
||||||
// These next two scale factors are intended to compensable plotters (and mainly printers) X and Y scale error.
|
// These next two scale factors are intended to compensable plotters (and mainly printers) X and Y scale error.
|
||||||
// Therefore they are expected very near 1.0
|
// Therefore they are expected very near 1.0
|
||||||
// Only X and Y dimensions are adjusted: circles are plotted as circle, even if X and Y fine scale differ.
|
// Only X and Y dimensions are adjusted: circles are plotted as circle, even if X and Y fine scale differ.
|
||||||
double m_FineScaleAdjustX; // fine scale adjust X axis
|
|
||||||
double m_FineScaleAdjustY; // dine scale adjust Y axis
|
double m_FineScaleAdjustX; ///< fine scale adjust X axis
|
||||||
// These width factor is intended to compensate plotters (and mainly printers) line width error.
|
double m_FineScaleAdjustY; ///< dine scale adjust Y axis
|
||||||
|
|
||||||
|
/// This width factor is intended to compensate printers and plotters that do
|
||||||
|
/// not strictly obey line width settings.
|
||||||
double m_FineWidthAdjust;
|
double m_FineWidthAdjust;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -158,4 +156,7 @@ public:
|
||||||
int ParseInt( int aMin, int aMax ) throw( IO_ERROR );
|
int ParseInt( int aMin, int aMax ) throw( IO_ERROR );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern PCB_PLOT_PARAMS g_PcbPlotOptions;
|
||||||
|
|
||||||
#endif // PCB_PLOT_PARAMS_H_
|
#endif // PCB_PLOT_PARAMS_H_
|
||||||
|
|
Loading…
Reference in New Issue