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 "class_base_screen.h"
|
||||
#include "drawtxt.h"
|
||||
|
||||
#include "class_title_block.h"
|
||||
|
||||
/* Plot sheet references
|
||||
* 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 )
|
||||
{
|
||||
case WS_DATE:
|
||||
msg += screen->m_Date;
|
||||
msg += GetTitleBlock().GetDate();
|
||||
bold = true;
|
||||
break;
|
||||
|
||||
case WS_REV:
|
||||
msg += screen->m_Revision;
|
||||
msg += GetTitleBlock().GetRevision();
|
||||
bold = true;
|
||||
break;
|
||||
|
||||
|
@ -517,37 +517,37 @@ void EDA_DRAW_FRAME::PlotWorkSheet( PLOTTER* plotter, BASE_SCREEN* screen )
|
|||
break;
|
||||
|
||||
case WS_COMPANY_NAME:
|
||||
msg += screen->m_Company;
|
||||
msg += GetTitleBlock().GetCompany();
|
||||
if( !msg.IsEmpty() )
|
||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
bold = true;
|
||||
break;
|
||||
|
||||
case WS_TITLE:
|
||||
msg += screen->m_Title;
|
||||
msg += GetTitleBlock().GetTitle();
|
||||
bold = true;
|
||||
break;
|
||||
|
||||
case WS_COMMENT1:
|
||||
msg += screen->m_Commentaire1;
|
||||
msg += GetTitleBlock().GetComment1();
|
||||
if( !msg.IsEmpty() )
|
||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
break;
|
||||
|
||||
case WS_COMMENT2:
|
||||
msg += screen->m_Commentaire2;
|
||||
msg += GetTitleBlock().GetComment2();
|
||||
if( !msg.IsEmpty() )
|
||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
break;
|
||||
|
||||
case WS_COMMENT3:
|
||||
msg += screen->m_Commentaire3;
|
||||
msg += GetTitleBlock().GetComment3();
|
||||
if( !msg.IsEmpty() )
|
||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
break;
|
||||
|
||||
case WS_COMMENT4:
|
||||
msg += screen->m_Commentaire4;
|
||||
msg += GetTitleBlock().GetComment4();
|
||||
if( !msg.IsEmpty() )
|
||||
UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT );
|
||||
break;
|
||||
|
|
|
@ -72,9 +72,9 @@ void DIALOG_PAGES_SETTINGS::initDialog()
|
|||
msg.Printf( format, m_Screen->m_ScreenNumber );
|
||||
m_TextSheetNumber->SetLabel( msg );
|
||||
|
||||
m_page = m_Parent->GetPageSettings();
|
||||
PAGE_INFO pageInfo = m_Parent->GetPageSettings();
|
||||
|
||||
setCurrentPageSizeSelection();
|
||||
setCurrentPageSizeSelection( pageInfo.GetType() );
|
||||
|
||||
switch( g_UserUnit )
|
||||
{
|
||||
|
@ -113,8 +113,7 @@ void DIALOG_PAGES_SETTINGS::initDialog()
|
|||
*/
|
||||
}
|
||||
|
||||
// Set validators
|
||||
// m_PageSizeBox->SetValidator( wxGenericValidator( &m_CurrentSelection ) );
|
||||
#if 0
|
||||
m_TextRevision->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Revision ) );
|
||||
m_TextTitle->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Title ) );
|
||||
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_TextComment3->SetValidator( wxTextValidator( wxFILTER_NONE, &m_Screen->m_Commentaire3 ) );
|
||||
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
|
||||
m_RevisionExport->Show( false );
|
||||
|
@ -175,14 +186,15 @@ void DIALOG_PAGES_SETTINGS::SavePageSettings( wxCommandEvent& event )
|
|||
wxString msg;
|
||||
double userSizeX;
|
||||
double userSizeY;
|
||||
TITLE_BLOCK tb;
|
||||
|
||||
m_Screen->m_Revision = m_TextRevision->GetValue();
|
||||
m_Screen->m_Company = m_TextCompany->GetValue();
|
||||
m_Screen->m_Title = m_TextTitle->GetValue();
|
||||
m_Screen->m_Commentaire1 = m_TextComment1->GetValue();
|
||||
m_Screen->m_Commentaire2 = m_TextComment2->GetValue();
|
||||
m_Screen->m_Commentaire3 = m_TextComment3->GetValue();
|
||||
m_Screen->m_Commentaire4 = m_TextComment4->GetValue();
|
||||
tb.SetRevision( m_TextRevision->GetValue() );
|
||||
tb.SetCompany( m_TextCompany->GetValue() );
|
||||
tb.SetTitle( m_TextTitle->GetValue() );
|
||||
tb.SetComment1( m_TextComment1->GetValue() );
|
||||
tb.SetComment2( m_TextComment2->GetValue() );
|
||||
tb.SetComment3( m_TextComment3->GetValue() );
|
||||
tb.SetComment4( m_TextComment4->GetValue() );
|
||||
|
||||
msg = m_TextUserSizeX->GetValue();
|
||||
msg.ToDouble( &userSizeX );
|
||||
|
@ -196,10 +208,10 @@ void DIALOG_PAGES_SETTINGS::SavePageSettings( wxCommandEvent& event )
|
|||
|
||||
// wxFormBuilder must use "A4", "A3", etc for choices, in all languages/translations
|
||||
wxString paperType = m_PageSizeBox->GetString( radioSelection );
|
||||
PAGE_INFO pageInfo( paperType );
|
||||
|
||||
m_page.SetType( paperType );
|
||||
|
||||
m_Parent->SetPageSettings( m_page );
|
||||
m_Parent->SetPageSettings( pageInfo );
|
||||
m_Parent->SetTitleBlock( tb );
|
||||
|
||||
switch( g_UserUnit )
|
||||
{
|
||||
|
@ -229,32 +241,36 @@ void DIALOG_PAGES_SETTINGS::SavePageSettings( wxCommandEvent& event )
|
|||
// Build the screen list
|
||||
SCH_SCREENS ScreenList;
|
||||
|
||||
// Update the datas
|
||||
// Update title blocks for all screens
|
||||
for( screen = ScreenList.GetFirst(); screen != NULL; screen = ScreenList.GetNext() )
|
||||
{
|
||||
if( screen == m_Screen )
|
||||
continue;
|
||||
|
||||
TITLE_BLOCK tb2 = screen->GetTitleBlock();
|
||||
|
||||
if( m_RevisionExport->IsChecked() )
|
||||
screen->m_Revision = m_Screen->m_Revision;
|
||||
tb2.SetRevision( tb.GetRevision() );
|
||||
|
||||
if( m_TitleExport->IsChecked() )
|
||||
screen->m_Title = m_Screen->m_Title;
|
||||
tb2.SetTitle( tb.GetTitle() );
|
||||
|
||||
if( m_CompanyExport->IsChecked() )
|
||||
screen->m_Company = m_Screen->m_Company;
|
||||
tb2.SetCompany( tb.GetCompany() );
|
||||
|
||||
if( m_Comment1Export->IsChecked() )
|
||||
screen->m_Commentaire1 = m_Screen->m_Commentaire1;
|
||||
tb2.SetComment1( tb.GetComment1() );
|
||||
|
||||
if( m_Comment2Export->IsChecked() )
|
||||
screen->m_Commentaire2 = m_Screen->m_Commentaire2;
|
||||
tb2.SetComment2( tb.GetComment2() );
|
||||
|
||||
if( m_Comment3Export->IsChecked() )
|
||||
screen->m_Commentaire3 = m_Screen->m_Commentaire3;
|
||||
tb2.SetComment3( tb.GetComment3() );
|
||||
|
||||
if( m_Comment4Export->IsChecked() )
|
||||
screen->m_Commentaire4 = m_Screen->m_Commentaire4;
|
||||
tb2.SetComment4( tb.GetComment4() );
|
||||
|
||||
screen->SetTitleBlock( tb2 );
|
||||
}
|
||||
|
||||
#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
|
||||
// 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
|
||||
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 ) );
|
||||
|
||||
while( st.HasMoreTokens() )
|
||||
{
|
||||
if( st.GetNextToken() == curPaperType )
|
||||
if( st.GetNextToken() == aPaperSize )
|
||||
{
|
||||
m_PageSizeBox->SetSelection( i );
|
||||
return;
|
||||
|
|
|
@ -17,7 +17,6 @@ private:
|
|||
EDA_DRAW_FRAME* m_Parent;
|
||||
BASE_SCREEN* m_Screen;
|
||||
bool m_modified;
|
||||
PAGE_INFO m_page; ///< the one being edited
|
||||
PAGE_INFO m_user_size; ///< instantiated just to get the size
|
||||
|
||||
public:
|
||||
|
@ -37,7 +36,7 @@ private:
|
|||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
|
||||
void OnCancelClick( wxCommandEvent& event );
|
||||
|
||||
void setCurrentPageSizeSelection();
|
||||
void setCurrentPageSizeSelection( const wxString& aPaperSize );
|
||||
void SavePageSettings(wxCommandEvent& event);
|
||||
void ReturnSizeSelected(wxCommandEvent& event);
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "wxstruct.h"
|
||||
#include "appl_wxstruct.h"
|
||||
#include "worksheet.h"
|
||||
#include "class_title_block.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:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += screen->m_Date;
|
||||
msg += GetTitleBlock().GetDate();
|
||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
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:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += screen->m_Revision;
|
||||
msg += GetTitleBlock().GetRevision();
|
||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
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:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += screen->m_Company;
|
||||
msg += GetTitleBlock().GetCompany();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
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:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += screen->m_Title;
|
||||
msg += GetTitleBlock().GetTitle();
|
||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||
msg, TEXT_ORIENT_HORIZ, size,
|
||||
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:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += screen->m_Commentaire1;
|
||||
msg += GetTitleBlock().GetComment1();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
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:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += screen->m_Commentaire2;
|
||||
msg += GetTitleBlock().GetComment2();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
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:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += screen->m_Commentaire3;
|
||||
msg += GetTitleBlock().GetComment3();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
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:
|
||||
if( WsItem->m_Legende )
|
||||
msg = WsItem->m_Legende;
|
||||
msg += screen->m_Commentaire4;
|
||||
msg += GetTitleBlock().GetComment4();
|
||||
if( !msg.IsEmpty() )
|
||||
{
|
||||
DrawGraphicText( m_canvas, DC, pos, Color,
|
||||
|
|
|
@ -250,14 +250,17 @@ bool SCH_EDIT_FRAME::LoadOneEEProject( const wxString& aFileName, bool aIsNew )
|
|||
|
||||
screen->SetZoom( 32 );
|
||||
screen->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId );
|
||||
screen->m_Title = NAMELESS_PROJECT;
|
||||
screen->m_Title += wxT( ".sch" );
|
||||
GetScreen()->SetFileName( screen->m_Title );
|
||||
screen->m_Company.Empty();
|
||||
screen->m_Commentaire1.Empty();
|
||||
screen->m_Commentaire2.Empty();
|
||||
screen->m_Commentaire3.Empty();
|
||||
screen->m_Commentaire4.Empty();
|
||||
|
||||
TITLE_BLOCK tb;
|
||||
wxString title;
|
||||
|
||||
title += NAMELESS_PROJECT;
|
||||
title += wxT( ".sch" );
|
||||
tb.SetTitle( title );
|
||||
screen->SetTitleBlock( tb );
|
||||
|
||||
GetScreen()->SetFileName( title );
|
||||
|
||||
LoadProjectFile( wxEmptyString, true );
|
||||
Zoom_Automatique( false );
|
||||
SetSheetNumberAndCount();
|
||||
|
|
|
@ -312,6 +312,7 @@ bool ReadSchemaDescr( LINE_READER* aLine, wxString& aMsgDiag, SCH_SCREEN* aScree
|
|||
wxString pagename = FROM_UTF8( text );
|
||||
|
||||
PAGE_INFO pageInfo;
|
||||
TITLE_BLOCK tb;
|
||||
|
||||
if( !pageInfo.SetType( pagename ) )
|
||||
{
|
||||
|
@ -337,7 +338,10 @@ line %d, \aAbort reading file.\n" ),
|
|||
line = aLine->Line();
|
||||
|
||||
if( strnicmp( line, "$End", 4 ) == 0 )
|
||||
{
|
||||
aScreen->SetTitleBlock( tb );
|
||||
break;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Sheet", 2 ) == 0 )
|
||||
sscanf( line + 5, " %d %d",
|
||||
|
@ -346,56 +350,56 @@ line %d, \aAbort reading file.\n" ),
|
|||
if( strnicmp( line, "Title", 2 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
aScreen->m_Title = FROM_UTF8( buf );
|
||||
tb.SetTitle( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Date", 2 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
aScreen->m_Date = FROM_UTF8( buf );
|
||||
tb.SetDate( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Rev", 2 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
aScreen->m_Revision = FROM_UTF8( buf );
|
||||
tb.SetRevision( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comp", 4 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
aScreen->m_Company = FROM_UTF8( buf );
|
||||
tb.SetCompany( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comment1", 8 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
aScreen->m_Commentaire1 = FROM_UTF8( buf );
|
||||
tb.SetComment1( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comment2", 8 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
aScreen->m_Commentaire2 = FROM_UTF8( buf );
|
||||
tb.SetComment2( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comment3", 8 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
aScreen->m_Commentaire3 = FROM_UTF8( buf );
|
||||
tb.SetComment3( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comment4", 8 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
aScreen->m_Commentaire4 = FROM_UTF8( buf );
|
||||
tb.SetComment4( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -150,14 +150,9 @@ void SCH_SCREEN::Clear()
|
|||
|
||||
/* Clear the project settings. */
|
||||
m_ScreenNumber = m_NumberOfScreen = 1;
|
||||
m_Title.Empty();
|
||||
m_Revision.Empty();
|
||||
m_Company.Empty();
|
||||
m_Commentaire1.Empty();
|
||||
m_Commentaire2.Empty();
|
||||
m_Commentaire3.Empty();
|
||||
m_Commentaire4.Empty();
|
||||
m_Date = GenDate();
|
||||
|
||||
m_titles.Clear();
|
||||
m_titles.SetDate();
|
||||
}
|
||||
|
||||
|
||||
|
@ -574,19 +569,20 @@ bool SCH_SCREEN::Save( FILE* aFile ) const
|
|||
* simple hierarchy and flat hierarchy. Used also to search the root
|
||||
* sheet ( ScreenNumber = 1 ) within the files
|
||||
*/
|
||||
const TITLE_BLOCK& tb = GetTitleBlock();
|
||||
|
||||
if( fprintf( aFile, "$Descr %s %d %d\n", TO_UTF8( m_paper.GetType() ),
|
||||
m_paper.GetWidthMils(), m_paper.GetHeightMils() ) < 0
|
||||
|| fprintf( aFile, "encoding utf-8\n") < 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, "Date %s\n", EscapedUTF8( m_Date ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Rev %s\n", EscapedUTF8( m_Revision ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comp %s\n", EscapedUTF8( m_Company ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comment1 %s\n", EscapedUTF8( m_Commentaire1 ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comment2 %s\n", EscapedUTF8( m_Commentaire2 ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comment3 %s\n", EscapedUTF8( m_Commentaire3 ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comment4 %s\n", EscapedUTF8( m_Commentaire4 ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Title %s\n", EscapedUTF8( tb.GetTitle() ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Date %s\n", EscapedUTF8( tb.GetDate() ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Rev %s\n", EscapedUTF8( tb.GetRevision() ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comp %s\n", EscapedUTF8( tb.GetCompany() ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comment1 %s\n", EscapedUTF8( tb.GetComment1() ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comment2 %s\n", EscapedUTF8( tb.GetComment2() ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comment3 %s\n", EscapedUTF8( tb.GetComment3() ).c_str() ) < 0
|
||||
|| fprintf( aFile, "Comment4 %s\n", EscapedUTF8( tb.GetComment4() ).c_str() ) < 0
|
||||
|| fprintf( aFile, "$EndDescr\n" ) < 0 )
|
||||
return false;
|
||||
|
||||
|
@ -1492,7 +1488,11 @@ int SCH_SCREENS::ReplaceDuplicateTimeStamps()
|
|||
void SCH_SCREENS::SetDate( const wxString& aDate )
|
||||
{
|
||||
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()->m_Date = GenDate();
|
||||
|
||||
TITLE_BLOCK tb = g_RootSheet->GetScreen()->GetTitleBlock();
|
||||
tb.SetDate();
|
||||
g_RootSheet->GetScreen()->SetTitleBlock( tb );
|
||||
|
||||
m_CurrentSheet->Clear();
|
||||
m_CurrentSheet->Push( g_RootSheet );
|
||||
|
||||
|
@ -581,7 +585,6 @@ void SCH_EDIT_FRAME::OnModify()
|
|||
if( m_dlgFindReplace == NULL )
|
||||
m_foundItems.SetForceSearch();
|
||||
|
||||
wxString date = GenDate();
|
||||
SCH_SCREENS s_list;
|
||||
|
||||
// Set the date for each sheet
|
||||
|
@ -589,10 +592,7 @@ void SCH_EDIT_FRAME::OnModify()
|
|||
// >> change only the current sheet
|
||||
// >> change all sheets.
|
||||
// I believe all sheets in a project must have the same date
|
||||
SCH_SCREEN* screen = s_list.GetFirst();
|
||||
|
||||
for( ; screen != NULL; screen = s_list.GetNext() )
|
||||
screen->m_Date = date;
|
||||
s_list.SetDate();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -84,6 +84,7 @@ class BASE_SCREEN : public EDA_ITEM
|
|||
wxPoint m_scrollCenter; ///< Current scroll center point 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
|
||||
* position. It is an addition indicator typically drawn on grid to indicate to the
|
||||
|
@ -132,15 +133,6 @@ public:
|
|||
int m_ScreenNumber;
|
||||
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;
|
||||
|
||||
wxArrayDouble m_ZoomList; ///< Array of standard zoom (i.e. scale) coefficients.
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "macros.h"
|
||||
#include "sch_item_struct.h"
|
||||
#include "class_base_screen.h"
|
||||
#include "class_title_block.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
|
||||
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
|
||||
wxPoint m_originAxisPosition;
|
||||
|
||||
|
@ -105,6 +108,10 @@ public:
|
|||
const wxPoint& GetOriginAxisPosition() const { return m_originAxisPosition; }
|
||||
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 IncRefCount();
|
||||
|
@ -521,7 +528,7 @@ public:
|
|||
* @see GetDate()
|
||||
* @param aDate The date string to set for each screen.
|
||||
*/
|
||||
void SetDate( const wxString& aDate );
|
||||
void SetDate( const wxString& aDate = GenDate() );
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
|
@ -23,9 +24,6 @@
|
|||
* 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
|
||||
// "richio" after its author, Richard Hollenbeck, aka Dick Hollenbeck.
|
||||
|
|
|
@ -119,6 +119,9 @@ public:
|
|||
const wxPoint& GetOriginAxisPosition() const; // overload
|
||||
void SetOriginAxisPosition( const wxPoint& aPosition ); // overload
|
||||
|
||||
const TITLE_BLOCK& GetTitleBlock() const; // overload
|
||||
void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ); // overload
|
||||
|
||||
/**
|
||||
* Function SetBoard
|
||||
* 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 PAGE_INFO;
|
||||
class PLOTTER;
|
||||
class TITLE_BLOCK;
|
||||
|
||||
enum id_librarytype {
|
||||
LIBRARY_TYPE_EESCHEMA,
|
||||
|
@ -462,6 +463,9 @@ public:
|
|||
virtual const wxPoint& GetOriginAxisPosition() const = 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; }
|
||||
|
||||
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
|
||||
{
|
||||
wxASSERT( m_Pcb );
|
||||
|
@ -622,7 +636,9 @@ void PCB_BASE_FRAME::OnModify( )
|
|||
{
|
||||
GetScreen()->SetModify();
|
||||
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_board_design_settings.h"
|
||||
#include "common.h" // PAGE_INFO
|
||||
#include "class_title_block.h"
|
||||
|
||||
class PCB_BASE_FRAME;
|
||||
class PCB_EDIT_FRAME;
|
||||
|
@ -173,8 +174,9 @@ private:
|
|||
NETINFO_LIST m_NetInfo; ///< net info list (name, design constraints ..
|
||||
|
||||
BOARD_DESIGN_SETTINGS m_designSettings;
|
||||
COLORS_DESIGN_SETTINGS* m_colorsSettings; // Link to current colors settings
|
||||
COLORS_DESIGN_SETTINGS* m_colorsSettings;
|
||||
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
|
||||
wxPoint m_originAxisPosition;
|
||||
|
@ -544,6 +546,9 @@ public:
|
|||
const wxPoint& GetOriginAxisPosition() const { return m_originAxisPosition; }
|
||||
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
|
||||
* @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
|
||||
* (actually the screen), not from the pcb */
|
||||
// Creates the header section
|
||||
static bool CreateHeaderInfoData( FILE* aFile, PCB_EDIT_FRAME* aFrame )
|
||||
{
|
||||
wxString msg;
|
||||
PCB_SCREEN* screen = (PCB_SCREEN*) ( aFrame->GetScreen() );
|
||||
PCB_SCREEN* screen = (PCB_SCREEN*) aFrame->GetScreen();
|
||||
|
||||
fputs( "$HEADER\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( GetBuildVersion() ) );
|
||||
fputs( TO_UTF8( msg ), aFile );
|
||||
|
||||
msg = wxT( "DRAWING \"" ) + screen->GetFileName() + wxT( "\"\n" );
|
||||
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( "UNITS INCH\n", aFile );
|
||||
|
||||
msg.Printf( wxT( "ORIGIN %g %g\n" ),
|
||||
MapXTo( aFrame->GetOriginAxisPosition().x ),
|
||||
MapYTo( aFrame->GetOriginAxisPosition().y ) );
|
||||
fputs( TO_UTF8( msg ), aFile );
|
||||
|
||||
fputs( "INTERTRACK 0\n", aFile );
|
||||
fputs( "$ENDHEADER\n\n", aFile );
|
||||
|
||||
|
|
|
@ -420,10 +420,13 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
|
|||
GetScreen()->SetFileName( aFileName );
|
||||
}
|
||||
|
||||
/* If changes are made, update the board date */
|
||||
// If changes are made, update the board date
|
||||
if( GetScreen()->IsModify() )
|
||||
{
|
||||
GetScreen()->m_Date = GenDate();
|
||||
TITLE_BLOCK tb = GetTitleBlock();
|
||||
|
||||
tb.SetDate();
|
||||
SetTitleBlock( tb );
|
||||
}
|
||||
|
||||
pcbFileName = GetScreen()->GetFileName();
|
||||
|
@ -480,9 +483,7 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
|
|||
|
||||
PROPERTIES props;
|
||||
|
||||
// wanting wxWidgets 2.9.x which can actually create a wxString() from
|
||||
// a const char*, so don't have to use wxT()
|
||||
props[ wxT("header") ] = header;
|
||||
props["header"] = header;
|
||||
|
||||
IO_MGR::Save( IO_MGR::KICAD, pcbFileName.GetFullPath(), GetBoard(), &props );
|
||||
}
|
||||
|
|
|
@ -25,13 +25,8 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <wx/string.h>
|
||||
#include <wx/hashmap.h>
|
||||
#include <richio.h>
|
||||
|
||||
|
||||
// http://docs.wxwidgets.org/trunk/classwx_hash_map.html
|
||||
WX_DECLARE_STRING_HASH_MAP( wxString, PROPERTIES );
|
||||
#include <hashtables.h>
|
||||
|
||||
class BOARD;
|
||||
class PLUGIN;
|
||||
|
|
|
@ -838,7 +838,7 @@ bool PCB_EDIT_FRAME::WriteGeneralDescrPcb( FILE* File )
|
|||
* @param screen BASE_SCREEN to save
|
||||
* @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, "Sheet %s %d %d\n",
|
||||
|
@ -846,14 +846,14 @@ static bool WriteSheetDescr( const PAGE_INFO& aPageSettings, BASE_SCREEN* screen
|
|||
aPageSettings.GetSizeMils().x,
|
||||
aPageSettings.GetSizeMils().y );
|
||||
|
||||
fprintf( File, "Title %s\n", EscapedUTF8( screen->m_Title ).c_str() );
|
||||
fprintf( File, "Date %s\n", EscapedUTF8( screen->m_Date ).c_str() );
|
||||
fprintf( File, "Rev %s\n", EscapedUTF8( screen->m_Revision ).c_str() );
|
||||
fprintf( File, "Comp %s\n", EscapedUTF8( screen->m_Company ).c_str() );
|
||||
fprintf( File, "Comment1 %s\n", EscapedUTF8( screen->m_Commentaire1 ).c_str() );
|
||||
fprintf( File, "Comment2 %s\n", EscapedUTF8( screen->m_Commentaire2 ).c_str() );
|
||||
fprintf( File, "Comment3 %s\n", EscapedUTF8( screen->m_Commentaire3 ).c_str() );
|
||||
fprintf( File, "Comment4 %s\n", EscapedUTF8( screen->m_Commentaire4 ).c_str() );
|
||||
fprintf( File, "Title %s\n", EscapedUTF8( aTitleBlock.GetTitle() ).c_str() );
|
||||
fprintf( File, "Date %s\n", EscapedUTF8( aTitleBlock.GetDate() ).c_str() );
|
||||
fprintf( File, "Rev %s\n", EscapedUTF8( aTitleBlock.GetRevision() ).c_str() );
|
||||
fprintf( File, "Comp %s\n", EscapedUTF8( aTitleBlock.GetCompany() ).c_str() );
|
||||
fprintf( File, "Comment1 %s\n", EscapedUTF8( aTitleBlock.GetComment1() ).c_str() );
|
||||
fprintf( File, "Comment2 %s\n", EscapedUTF8( aTitleBlock.GetComment2() ).c_str() );
|
||||
fprintf( File, "Comment3 %s\n", EscapedUTF8( aTitleBlock.GetComment3() ).c_str() );
|
||||
fprintf( File, "Comment4 %s\n", EscapedUTF8( aTitleBlock.GetComment4() ).c_str() );
|
||||
|
||||
fprintf( File, "$EndSHEETDESCR\n\n" );
|
||||
return true;
|
||||
|
@ -862,16 +862,20 @@ static bool WriteSheetDescr( const PAGE_INFO& aPageSettings, BASE_SCREEN* screen
|
|||
|
||||
#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];
|
||||
TITLE_BLOCK tb;
|
||||
|
||||
while( aReader->ReadLine() )
|
||||
{
|
||||
char* line = aReader->Line();
|
||||
|
||||
if( strnicmp( line, "$End", 4 ) == 0 )
|
||||
{
|
||||
aBoard->SetTitleBlock( tb );
|
||||
return true;
|
||||
}
|
||||
|
||||
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 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
screen->m_Title = FROM_UTF8( buf );
|
||||
tb.SetTitle( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Date", 2 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
screen->m_Date = FROM_UTF8( buf );
|
||||
tb.SetDate( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Rev", 2 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
screen->m_Revision = FROM_UTF8( buf );
|
||||
tb.SetRevision( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comp", 4 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
screen->m_Company = FROM_UTF8( buf );
|
||||
tb.SetCompany( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comment1", 8 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
screen->m_Commentaire1 = FROM_UTF8( buf );
|
||||
tb.SetComment1( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comment2", 8 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
screen->m_Commentaire2 = FROM_UTF8( buf );
|
||||
tb.SetComment2( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comment3", 8 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
screen->m_Commentaire3 = FROM_UTF8( buf );
|
||||
tb.SetComment3( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( strnicmp( line, "Comment4", 8 ) == 0 )
|
||||
{
|
||||
ReadDelimitedText( buf, line, 256 );
|
||||
screen->m_Commentaire4 = FROM_UTF8( buf );
|
||||
tb.SetComment4( FROM_UTF8( buf ) );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -1111,7 +1115,7 @@ int PCB_EDIT_FRAME::ReadPcbFile( LINE_READER* aReader, bool Append )
|
|||
|
||||
if( TESTLINE( "SHEETDESCR" ) )
|
||||
{
|
||||
ReadSheetDescr( board, GetScreen(), aReader );
|
||||
ReadSheetDescr( board, aReader );
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1187,7 +1191,7 @@ int PCB_EDIT_FRAME::SavePcbFormatAscii( FILE* aFile )
|
|||
GetBoard()->SetCurrentNetClass( GetBoard()->m_NetClasses.GetDefault()->GetName() );
|
||||
|
||||
WriteGeneralDescrPcb( aFile );
|
||||
WriteSheetDescr( GetBoard()->GetPageSettings(), GetScreen(), aFile );
|
||||
WriteSheetDescr( GetBoard()->GetPageSettings(), GetBoard()->GetTitleBlock(), aFile );
|
||||
WriteSetup( aFile, this, GetBoard() );
|
||||
|
||||
rc = GetBoard()->Save( aFile );
|
||||
|
|
|
@ -440,6 +440,7 @@ void KICAD_PLUGIN::loadGENERAL()
|
|||
void KICAD_PLUGIN::loadSHEET()
|
||||
{
|
||||
char buf[260];
|
||||
TITLE_BLOCK tb;
|
||||
|
||||
while( READLINE() )
|
||||
{
|
||||
|
@ -488,57 +489,57 @@ void KICAD_PLUGIN::loadSHEET()
|
|||
else if( TESTLINE( "Title" ) )
|
||||
{
|
||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||
|
||||
#if 0 // @todo "screen" not available here
|
||||
screen->m_Title = FROM_UTF8( buf );
|
||||
tb.SetTitle( FROM_UTF8( buf ) );
|
||||
}
|
||||
|
||||
else if( TESTLINE( "Date" ) )
|
||||
{
|
||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||
screen->m_Date = FROM_UTF8( buf );
|
||||
tb.SetDate( FROM_UTF8( buf ) );
|
||||
}
|
||||
|
||||
else if( TESTLINE( "Rev" ) )
|
||||
{
|
||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||
screen->m_Revision = FROM_UTF8( buf );
|
||||
tb.SetRevision( FROM_UTF8( buf ) );
|
||||
}
|
||||
|
||||
else if( TESTLINE( "Comp" ) )
|
||||
{
|
||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||
screen->m_Company = FROM_UTF8( buf );
|
||||
tb.SetCompany( FROM_UTF8( buf ) );
|
||||
}
|
||||
|
||||
else if( TESTLINE( "Comment1" ) )
|
||||
{
|
||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||
screen->m_Commentaire1 = FROM_UTF8( buf );
|
||||
tb.SetComment1( FROM_UTF8( buf ) );
|
||||
}
|
||||
|
||||
else if( TESTLINE( "Comment2" ) )
|
||||
{
|
||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||
screen->m_Commentaire2 = FROM_UTF8( buf );
|
||||
tb.SetComment2( FROM_UTF8( buf ) );
|
||||
}
|
||||
|
||||
else if( TESTLINE( "Comment3" ) )
|
||||
{
|
||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||
screen->m_Commentaire3 = FROM_UTF8( buf );
|
||||
tb.SetComment3( FROM_UTF8( buf ) );
|
||||
}
|
||||
|
||||
else if( TESTLINE( "Comment4" ) )
|
||||
{
|
||||
ReadDelimitedText( buf, line, sizeof(buf) );
|
||||
screen->m_Commentaire4 = FROM_UTF8( buf );
|
||||
#endif
|
||||
tb.SetComment4( FROM_UTF8( buf ) );
|
||||
}
|
||||
|
||||
else if( TESTLINE( "$EndSHEETDESCR" ) )
|
||||
{
|
||||
m_board->SetTitleBlock( tb );
|
||||
return; // preferred exit
|
||||
}
|
||||
}
|
||||
|
||||
THROW_IO_ERROR( "Missing '$EndSHEETDESCR'" );
|
||||
}
|
||||
|
@ -2654,7 +2655,7 @@ void KICAD_PLUGIN::Save( const wxString& aFileName, BOARD* aBoard, PROPERTIES* a
|
|||
if( m_props )
|
||||
{
|
||||
// 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();
|
||||
|
@ -2734,6 +2735,7 @@ void KICAD_PLUGIN::saveGENERAL() const
|
|||
void KICAD_PLUGIN::saveSHEET() const
|
||||
{
|
||||
const PAGE_INFO& pageInfo = m_board->GetPageSettings();
|
||||
const TITLE_BLOCK& tb = m_board->GetTitleBlock();
|
||||
|
||||
fprintf( m_fp, "$SHEETDESCR\n" );
|
||||
|
||||
|
@ -2743,18 +2745,14 @@ void KICAD_PLUGIN::saveSHEET() const
|
|||
pageInfo.GetSizeMils().x,
|
||||
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( screen->m_Title ).c_str() );
|
||||
fprintf( m_fp, "Date %s\n", EscapedUTF8( screen->m_Date ).c_str() );
|
||||
fprintf( m_fp, "Rev %s\n", EscapedUTF8( screen->m_Revision ).c_str() );
|
||||
fprintf( m_fp, "Comp %s\n", EscapedUTF8( screen->m_Company ).c_str() );
|
||||
fprintf( m_fp, "Comment1 %s\n", EscapedUTF8( screen->m_Commentaire1 ).c_str() );
|
||||
fprintf( m_fp, "Comment2 %s\n", EscapedUTF8( screen->m_Commentaire2 ).c_str() );
|
||||
fprintf( m_fp, "Comment3 %s\n", EscapedUTF8( screen->m_Commentaire3 ).c_str() );
|
||||
fprintf( m_fp, "Comment4 %s\n", EscapedUTF8( screen->m_Commentaire4 ).c_str() );
|
||||
|
||||
#endif
|
||||
|
||||
fprintf( m_fp, "Title %s\n", EscapedUTF8( tb.GetTitle() ).c_str() );
|
||||
fprintf( m_fp, "Date %s\n", EscapedUTF8( tb.GetDate() ).c_str() );
|
||||
fprintf( m_fp, "Rev %s\n", EscapedUTF8( tb.GetRevision() ).c_str() );
|
||||
fprintf( m_fp, "Comp %s\n", EscapedUTF8( tb.GetCompany() ).c_str() );
|
||||
fprintf( m_fp, "Comment1 %s\n", EscapedUTF8( tb.GetComment1() ).c_str() );
|
||||
fprintf( m_fp, "Comment2 %s\n", EscapedUTF8( tb.GetComment2() ).c_str() );
|
||||
fprintf( m_fp, "Comment3 %s\n", EscapedUTF8( tb.GetComment3() ).c_str() );
|
||||
fprintf( m_fp, "Comment4 %s\n", EscapedUTF8( tb.GetComment4() ).c_str() );
|
||||
fprintf( m_fp, "$EndSHEETDESCR\n\n" );
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "plot_common.h"
|
||||
#include "macros.h"
|
||||
|
||||
|
||||
#define PLOT_LINEWIDTH_MIN 0
|
||||
#define PLOT_LINEWIDTH_MAX 200
|
||||
#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 )
|
||||
{
|
||||
T token;
|
||||
token = NeedSYMBOL();
|
||||
T token = NeedSYMBOL();
|
||||
|
||||
if( token != T_false && token != T_true )
|
||||
Expecting( "true|false" );
|
||||
return (token == T_true);
|
||||
|
||||
return token == T_true;
|
||||
}
|
||||
|
||||
|
||||
int PCB_PLOT_PARAMS_PARSER::ParseInt( int aMin, int aMax ) throw( IO_ERROR )
|
||||
{
|
||||
T token;
|
||||
int i;
|
||||
token = NextTok();
|
||||
T token = NextTok();
|
||||
|
||||
if( token != T_NUMBER )
|
||||
Expecting( T_NUMBER );
|
||||
i = atoi( CurText() );
|
||||
|
||||
if( i < aMin )
|
||||
i = aMin;
|
||||
else if( i > aMax )
|
||||
i = aMax;
|
||||
int val = atoi( CurText() );
|
||||
|
||||
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.
|
||||
*
|
||||
|
@ -22,19 +23,12 @@
|
|||
* 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 "base_struct.h"
|
||||
#include "pcb_plot_params_lexer.h"
|
||||
#include "base_struct.h"
|
||||
|
||||
class PCB_PLOT_PARAMS;
|
||||
class PCB_PLOT_PARAMS_PARSER;
|
||||
|
||||
extern PCB_PLOT_PARAMS g_PcbPlotOptions;
|
||||
|
||||
|
||||
/**
|
||||
* Class PCB_PLOT_PARAMS
|
||||
* handles plot parameters and options when plotting/printing a board.
|
||||
|
@ -43,31 +37,32 @@ class PCB_PLOT_PARAMS
|
|||
{
|
||||
friend class PCB_PLOT_PARAMS_PARSER;
|
||||
public:
|
||||
bool m_ExcludeEdgeLayer; // True: do not plot edge layer when plotting other layers
|
||||
// False: Edge layer always plotted (merged) 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
|
||||
int m_PlotLineWidth;
|
||||
bool m_PlotFrameRef; // True to plot/print frame references
|
||||
bool m_PlotViaOnMaskLayer; // True if vias are drawn on Mask layer
|
||||
// (ie protected by mask)
|
||||
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
|
||||
bool m_PlotFrameRef; ///< True to plot/print frame references
|
||||
bool m_PlotViaOnMaskLayer; ///< True if vias are drawn on Mask layer
|
||||
///< (ie protected by mask)
|
||||
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
|
||||
int m_HPGLPenNum;
|
||||
int m_HPGLPenSpeed;
|
||||
int m_HPGLPenDiam;
|
||||
int m_HPGLPenOvr;
|
||||
int m_PlotPSColorOpt; // True for color Postscript output
|
||||
bool m_PlotPSNegative; // True to create a negative board ps plot
|
||||
int m_PlotPSColorOpt; ///< True for color Postscript output
|
||||
bool m_PlotPSNegative; ///< True to create a negative board ps plot
|
||||
|
||||
// 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_PlotValue;
|
||||
bool m_PlotTextOther;
|
||||
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;
|
||||
|
||||
enum DrillShapeOptT {
|
||||
|
@ -75,18 +70,21 @@ public:
|
|||
SMALL_DRILL_SHAPE = 1,
|
||||
FULL_DRILL_SHAPE = 2
|
||||
};
|
||||
DrillShapeOptT m_DrillShapeOpt; // For postscript output: holes can be not plotted,
|
||||
// or have a small size or plotted with their actual size
|
||||
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
|
||||
// with its actual size.
|
||||
DrillShapeOptT m_DrillShapeOpt; ///< For postscript output: holes can be not plotted,
|
||||
///< or have a small size or plotted with their actual size
|
||||
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
|
||||
///< with its actual size.
|
||||
|
||||
// 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
|
||||
// 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
|
||||
// These width factor is intended to compensate plotters (and mainly printers) line width error.
|
||||
|
||||
double m_FineScaleAdjustX; ///< fine scale adjust X axis
|
||||
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;
|
||||
|
||||
private:
|
||||
|
@ -158,4 +156,7 @@ public:
|
|||
int ParseInt( int aMin, int aMax ) throw( IO_ERROR );
|
||||
};
|
||||
|
||||
|
||||
extern PCB_PLOT_PARAMS g_PcbPlotOptions;
|
||||
|
||||
#endif // PCB_PLOT_PARAMS_H_
|
||||
|
|
Loading…
Reference in New Issue