This commit is contained in:
Jerry Jacobs 2010-05-16 20:20:05 +02:00
commit a2765a8564
15 changed files with 2903 additions and 2786 deletions

View File

@ -4,6 +4,17 @@ KiCad ChangeLog 2010
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2010-may-18, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================
++All:
Set minimum cmake version requirement to 2.6.4
(does not works with 2.6.1)
++Pcbnew, Module Editor:
Added footprint name edition in the module properties dialog.
Until now, the footprint name used to retrieve a footprint in lib was
set only when saving the footprint in lib, and could not be edited without saving
the footprint in lib.
2010-may-01, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr> 2010-may-01, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================ ================================================================================
++Pcbnew: ++Pcbnew:

View File

@ -2,9 +2,9 @@ project(kicad)
# test the minimum Cmake version requirement (could be different under unix or Windows # test the minimum Cmake version requirement (could be different under unix or Windows
if(WIN32) if(WIN32)
cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR) cmake_minimum_required(VERSION 2.6.4 FATAL_ERROR)
else(WIN32) else(WIN32)
cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR) cmake_minimum_required(VERSION 2.6.4 FATAL_ERROR)
endif(WIN32) endif(WIN32)
# Path to local CMake modules. # Path to local CMake modules.

View File

@ -284,7 +284,8 @@ void WinEDA_DrawFrame::PlotWorkSheet( PLOTTER* plotter, BASE_SCREEN* screen )
case WS_IDENTSHEET: case WS_IDENTSHEET:
if( WsItem->m_Legende ) if( WsItem->m_Legende )
msg = WsItem->m_Legende; msg = WsItem->m_Legende;
msg << screen->m_ScreenNumber; if( screen->m_NumberOfScreen > 1 )
msg << screen->m_ScreenNumber;
plotter->text( pos, color, plotter->text( pos, color,
msg, TEXT_ORIENT_HORIZ, text_size, msg, TEXT_ORIENT_HORIZ, text_size,
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
@ -294,7 +295,7 @@ void WinEDA_DrawFrame::PlotWorkSheet( PLOTTER* plotter, BASE_SCREEN* screen )
case WS_SHEETS: case WS_SHEETS:
if( WsItem->m_Legende ) if( WsItem->m_Legende )
msg = WsItem->m_Legende; msg = WsItem->m_Legende;
msg << screen->m_NumberOfScreen; msg << screen->m_NumberOfScreen;
plotter->text( pos, color, plotter->text( pos, color,
msg, TEXT_ORIENT_HORIZ, text_size, msg, TEXT_ORIENT_HORIZ, text_size,
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,

View File

@ -121,8 +121,8 @@ bool IsOK( wxWindow* parent, const wxString& text )
* Leading and trailing spaces are removed * Leading and trailing spaces are removed
* Buffer is the initial text displayed, anr the returned text * Buffer is the initial text displayed, anr the returned text
* Return: * Return:
* 1 if OK * 0 if OK
* 0 if ESCAPE * 1 if CANCEL
*/ */
int Get_Message( const wxString& title, // The question int Get_Message( const wxString& title, // The question
const wxString& frame_caption, // The frame caption const wxString& frame_caption, // The frame caption

View File

@ -549,7 +549,7 @@ Ki_WorkSheetData WS_Art =
&WS_Mass, &WS_Mass,
STAMP_X_50 - 30, STAMP_Y_35 + 90, STAMP_X_50 - 30, STAMP_Y_35 + 90,
0, 0, 0, 0,
wxT( "Арт." ),NULL wxT( "Лит." ),NULL
}; };
Ki_WorkSheetData WS_Mass = Ki_WorkSheetData WS_Mass =
@ -1147,7 +1147,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen,
case WS_IDENTSHEET: case WS_IDENTSHEET:
if( WsItem->m_Legende ) if( WsItem->m_Legende )
msg = WsItem->m_Legende; msg = WsItem->m_Legende;
msg << screen->m_ScreenNumber; if( screen->m_NumberOfScreen > 1 )
msg << screen->m_ScreenNumber;
DrawGraphicText( DrawPanel, DC, pos, Color, msg, DrawGraphicText( DrawPanel, DC, pos, Color, msg,
TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT,
GR_TEXT_VJUSTIFY_CENTER, width, false, false, GR_TEXT_VJUSTIFY_CENTER, width, false, false,

View File

@ -1,4 +1,4 @@
update=13/5/2006-07:55:36 update=16/05/2010 14:21:37
version=1 version=1
last_client=pcbnew last_client=pcbnew
[common] [common]
@ -62,64 +62,28 @@ NetType=0
EquName1=devcms EquName1=devcms
[pcbnew] [pcbnew]
version=1 version=1
PadDril=1200 PadDrlX=430
PadDimH=1500 PadDimH=550
PadDimV=1500 PadDimV=550
PadForm=1 BoardThickness=630
PadMask=14745599
ViaDiam=600
ViaDril=250
Isol=110
Countlayer=2
Lpiste=170
RouteTo=15
RouteBo=0
TypeVia=3
Segm45=1
Racc45=1
Unite=0
SegFill=1
SegAffG=0
NewAffG=1
PadFill=1
PadAffG=1
PadSNum=1
ModAffC=1
ModAffT=1
PcbAffT=1
SgPcb45=1 SgPcb45=1
TxtPcbV=800 TxtPcbV=800
TxtPcbH=600 TxtPcbH=600
TxtModV=600 TxtModV=600
TxtModH=600 TxtModH=600
TxtModW=120 TxtModW=120
HPGLnum=1
HPGdiam=15
HPGLSpd=20
HPGLrec=2
HPGLorg=0
GERBmin=15
VEgarde=100 VEgarde=100
DrawLar=150 DrawLar=150
EdgeLar=150 EdgeLar=50
TxtLar=170 TxtLar=170
MSegLar=150 MSegLar=150
ForPlot=1 LastNetListRead=interf_u.net
WpenSer=10
UserGrX=0,1
UserGrY=0,1
UserGrU=0
DivGrPc=1
TimeOut=600
MaxLnkS=3
ShowRat=0
ShowMRa=1
[pcbnew/libraries] [pcbnew/libraries]
LibDir= LibDir=
LibName1=connect LibName1=connect
LibName2=discret LibName2=discret
LibName3=pin_array LibName3=pin_array
LibName4=divers LibName4=sockets
LibName5=libcms LibName5=divers
LibName6=supports LibName6=libcms
LibName7=display LibName7=display

View File

@ -4,27 +4,28 @@
LicenseLangString MUILicense ${LANG_RUSSIAN} "..\licendoc.txt" LicenseLangString MUILicense ${LANG_RUSSIAN} "..\licendoc.txt"
;component option ;component option
LangString TITLE_SEC01 ${LANG_RUSSIAN} "Главная программа" LangString TITLE_SEC01 ${LANG_RUSSIAN} "Основные программы"
LangString TITLE_SEC02 ${LANG_RUSSIAN} "Архивы и компоненты" LangString TITLE_SEC02 ${LANG_RUSSIAN} "Библиотеки и компоненты"
LangString TITLE_SEC03 ${LANG_RUSSIAN} "Проекты демонстрации" LangString TITLE_SEC03 ${LANG_RUSSIAN} "Демонстрационные проекты"
LangString TITLE_SEC04 ${LANG_RUSSIAN} "Архивы помощи" LangString TITLE_SEC04 ${LANG_RUSSIAN} "Файлы помощи"
;component option descriptions ;component option descriptions
LangString DESC_SEC01 ${LANG_RUSSIAN} "Архивы главной программы." LangString DESC_SEC01 ${LANG_RUSSIAN} "Файлы основных программ."
LangString DESC_SEC02 ${LANG_RUSSIAN} "Архивы и компоненты необходимы если они ранее не установить." LangString DESC_SEC02 ${LANG_RUSSIAN} "Библиотеки и компоненты необходимы, если они ранее не установлены."
LangString DESC_SEC03 ${LANG_RUSSIAN} "Некоторые проекты и консультации демонстрации." LangString DESC_SEC03 ${LANG_RUSSIAN} "Некоторые проекты для демонстрации и консультации."
LangString DESC_SEC04 ${LANG_RUSSIAN} "Архивы помощи." LangString DESC_SEC04 ${LANG_RUSSIAN} "Файлы помощи в формате pdf."
;warning messages ;warning messages
LangString WINGS3D_PROMPT ${LANG_RUSSIAN} "Редактировать или создавать модели предмета, котор 3D вы установить Wings3D. \ LangString WINGS3D_PROMPT ${LANG_RUSSIAN} "Для создания или редактирования 3D моделей нобходимо установить Wings3D. \
Wings3D и руководство потребителя могут быть download свободно от проверки web page Wings3D эта коробка для того чтобы \ Wings3D и руководство пользователя могут быть свободно загружены с web-страницы Wings3D. \
раскрыть web page Wings3D." Установите этот флажок для того, чтобы открыть web-страницу Wings3D."
LangString UNINST_PROMPT ${LANG_RUSSIAN} "Вы уверены вы хотите вполне извлечь $(^name) и весь из своих компонентов? $\n \ LangString UNINST_PROMPT ${LANG_RUSSIAN} "Вы уверены, что хотите полностью удалить ${product_name} и все компоненты? $\n \
Это также извлекает все доработанные и новые архивы, архивы и модули в директории программы" Это также удалит с Вашего компьютера все измененные и новые файлы, библиотеки и модули в директории программы"
LangString UNINST_SUCCESS ${LANG_RUSSIAN} "$(^name) успешно извлеклось от вашего компьютера." LangString UNINST_SUCCESS ${LANG_RUSSIAN} "$(^name) успешно удален с Вашего компьютера."
LangString INSTALLER_RUNNING ${LANG_RUSSIAN} "Установитель уже бежит." LangString INSTALLER_RUNNING ${LANG_RUSSIAN} "Программа установки $(^name) уже запущена."
LangString UNINSTALLER_RUNNING ${LANG_RUSSIAN} "Установитель уже бежит." LangString UNINSTALLER_RUNNING ${LANG_RUSSIAN} "Программа удаления $(^name) уже запущена."
LangString ALREADY_INSTALLED ${LANG_RUSSIAN} "${product_name} уже установлено. Установите этот пакет overwrite existing архивы. \ LangString ALREADY_INSTALLED ${LANG_RUSSIAN} "${product_name} уже установлен. $\n \
Вы хотите продолжать?" Установка этого пакета перезапишет существующие фйалы. \
Продолжить?"

View File

@ -259,7 +259,7 @@ install(TARGETS pcbnew
# The specctra test fails to build properly using MS Visual Studio. # The specctra test fails to build properly using MS Visual Studio.
if(NOT MSVC) if(NOT MSVC)
# This one gets made only when testing. # This one gets made only when testing.
add_executable(specctra_test EXCLUDE_FROM_ALL specctra.cpp) add_executable(specctra_test EXCLUDE_FROM_ALL specctra_test.cpp specctra.cpp)
target_link_libraries(specctra_test common ${wxWidgets_LIBRARIES}) target_link_libraries(specctra_test common ${wxWidgets_LIBRARIES})
endif(NOT MSVC) endif(NOT MSVC)

View File

@ -77,7 +77,8 @@ void DIALOG_MODULE_MODULE_EDITOR::InitModeditProperties()
m_ValueCopy->Copy(m_CurrentModule->m_Value); m_ValueCopy->Copy(m_CurrentModule->m_Value);
m_ReferenceCtrl->SetValue( m_ReferenceCopy->m_Text ); m_ReferenceCtrl->SetValue( m_ReferenceCopy->m_Text );
m_ValueCtrl->SetValue( m_ValueCopy->m_Text ); m_ValueCtrl->SetValue( m_ValueCopy->m_Text );
m_ValueCtrl->SetValue( m_ValueCopy->m_Text );
m_FootprintNameCtrl->SetValue( m_CurrentModule->m_LibRef );
#if wxCHECK_VERSION( 2, 8, 0 ) #if wxCHECK_VERSION( 2, 8, 0 )
m_AttributsCtrl->SetItemToolTip( 0, _( "Use this attribute for most non smd components" ) ); m_AttributsCtrl->SetItemToolTip( 0, _( "Use this attribute for most non smd components" ) );
@ -343,6 +344,10 @@ void DIALOG_MODULE_MODULE_EDITOR::OnOkClick( wxCommandEvent& event )
m_CurrentModule->m_Doc = m_DocCtrl->GetValue(); m_CurrentModule->m_Doc = m_DocCtrl->GetValue();
m_CurrentModule->m_KeyWord = m_KeywordCtrl->GetValue(); m_CurrentModule->m_KeyWord = m_KeywordCtrl->GetValue();
// Init footprint name in library
if( ! m_FootprintNameCtrl->GetValue( ).IsEmpty() )
m_CurrentModule->m_LibRef = m_FootprintNameCtrl->GetValue( );
// Init Fields: // Init Fields:
m_CurrentModule->m_Reference->Copy(m_ReferenceCopy ); m_CurrentModule->m_Reference->Copy(m_ReferenceCopy );
m_CurrentModule->m_Value->Copy(m_ValueCopy ); m_CurrentModule->m_Value->Copy(m_ValueCopy );
@ -429,3 +434,4 @@ void DIALOG_MODULE_MODULE_EDITOR::OnEditValue(wxCommandEvent& event)
m_Parent->GetScreen()->m_Curseur = tmp; m_Parent->GetScreen()->m_Curseur = tmp;
m_ValueCtrl->SetValue(m_ValueCopy->m_Text); m_ValueCtrl->SetValue(m_ValueCopy->m_Text);
} }

View File

@ -65,6 +65,20 @@ DIALOG_MODULE_MODULE_EDITOR_BASE::DIALOG_MODULE_MODULE_EDITOR_BASE( wxWindow* pa
PropLeftSizer->Add( sbSizerValue, 0, wxEXPAND, 5 ); PropLeftSizer->Add( sbSizerValue, 0, wxEXPAND, 5 );
PropLeftSizer->Add( 0, 20, 0, 0, 5 );
wxStaticBoxSizer* sbSizerFootprintName;
sbSizerFootprintName = new wxStaticBoxSizer( new wxStaticBox( m_PanelProperties, wxID_ANY, _("Footprint Name in Lib") ), wxHORIZONTAL );
m_FootprintNameCtrl = new wxTextCtrl( m_PanelProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
sbSizerFootprintName->Add( m_FootprintNameCtrl, 1, 0, 5 );
sbSizerFootprintName->Add( 0, 0, 0, 0, 5 );
PropLeftSizer->Add( sbSizerFootprintName, 0, wxEXPAND, 5 );
m_PanelPropertiesBoxSizer->Add( PropLeftSizer, 1, wxEXPAND, 5 ); m_PanelPropertiesBoxSizer->Add( PropLeftSizer, 1, wxEXPAND, 5 );
m_PropRightSizer = new wxBoxSizer( wxVERTICAL ); m_PropRightSizer = new wxBoxSizer( wxVERTICAL );

View File

@ -578,6 +578,95 @@
</object> </object>
</object> </object>
</object> </object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag"></property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<property name="height">20</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxStaticBoxSizer" expanded="1">
<property name="id">wxID_ANY</property>
<property name="label">Footprint Name in Lib</property>
<property name="minimum_size"></property>
<property name="name">sbSizerFootprintName</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<event name="OnUpdateUI"></event>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag"></property>
<property name="proportion">1</property>
<object class="wxTextCtrl" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="minimum_size"></property>
<property name="name">m_FootprintNameCtrl</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag"></property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
</object>
</object>
</object> </object>
</object> </object>
<object class="sizeritem" expanded="1"> <object class="sizeritem" expanded="1">

View File

@ -56,6 +56,9 @@ class DIALOG_MODULE_MODULE_EDITOR_BASE : public wxDialog
wxButton* m_button4; wxButton* m_button4;
wxTextCtrl* m_ValueCtrl; wxTextCtrl* m_ValueCtrl;
wxButton* m_button5; wxButton* m_button5;
wxTextCtrl* m_FootprintNameCtrl;
wxRadioBox* m_AttributsCtrl; wxRadioBox* m_AttributsCtrl;
wxRadioBox* m_AutoPlaceCtrl; wxRadioBox* m_AutoPlaceCtrl;
wxStaticText* m_staticText11; wxStaticText* m_staticText11;

View File

@ -391,9 +391,9 @@ void WinEDA_ModuleEditFrame::Delete_Module_In_Library(
} }
/* /** function Archive_Modules
* Save library: * Save in the library:
* All new modules (ie modules not already exist (if NewModulesOnly == true) * All new modules (ie modules not found in this lib) (if NewModulesOnly == true)
* all modules (if NewModulesOnly == FALSE) * all modules (if NewModulesOnly == FALSE)
*/ */
void WinEDA_BasePcbFrame::Archive_Modules( const wxString& LibName, void WinEDA_BasePcbFrame::Archive_Modules( const wxString& LibName,
@ -522,8 +522,8 @@ int WinEDA_BasePcbFrame::Save_Module_In_Library( const wxString& aLibName,
if( aDisplayDialog ) if( aDisplayDialog )
{ {
Get_Message( _( "Name:" ), _( "Save module" ), Name_Cmp, this ); int cancel = Get_Message( _( "Name:" ), _( "Save module" ), Name_Cmp, this );
if( Name_Cmp.IsEmpty() ) if( Name_Cmp.IsEmpty() || cancel )
return 0; return 0;
Name_Cmp.Trim( true ); Name_Cmp.Trim( true );
Name_Cmp.Trim( FALSE ); Name_Cmp.Trim( FALSE );

View File

@ -47,25 +47,13 @@
*/ */
#include <cstdarg> #include <cstdarg>
#include <cstdio> #include <cstdio>
#include "specctra.h" #include "specctra.h"
#include "common.h" // IsOK() & EDA_FileSelector()
#include <wx/ffile.h> #include <wx/ffile.h>
// To build the DSN beautifier and unit tester, simply uncomment this and then
// use CMake's makefile to build target "specctra_test".
//#define SPECCTRA_TEST // define for "stand alone, i.e. unit testing"
#if defined(SPECCTRA_TEST)
#define EDA_BASE // build_version.h behavior
#undef COMMON_GLOBL
#define COMMON_GLOBL // build_version.h behavior
#endif
#include "build_version.h" #include "build_version.h"
@ -510,9 +498,6 @@ wxString SPECCTRA_DB::GetTokenString( int aTok )
return ret; return ret;
} }
#if !defined(SPECCTRA_TEST)
void SPECCTRA_DB::buildLayerMaps( BOARD* aBoard ) void SPECCTRA_DB::buildLayerMaps( BOARD* aBoard )
{ {
// specctra wants top physical layer first, then going down to the // specctra wants top physical layer first, then going down to the
@ -536,7 +521,6 @@ void SPECCTRA_DB::buildLayerMaps( BOARD* aBoard )
layerIds.push_back( CONV_TO_UTF8( aBoard->GetLayerName( kilayer ) ) ); layerIds.push_back( CONV_TO_UTF8( aBoard->GetLayerName( kilayer ) ) );
} }
} }
#endif
int SPECCTRA_DB::findLayerName( const std::string& aLayerName ) const int SPECCTRA_DB::findLayerName( const std::string& aLayerName ) const
@ -4321,71 +4305,4 @@ void PLACE::Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IOError )
} // namespace DSN } // namespace DSN
// unit test this source file. You can use the beautifiers below to output
// exactly what you read in but beautified and without #comments. This can
// then be used along with program 'diff' to test the parsing and formatting
// of every element. You may have to run the first output back through to
// get two files that should match, the 2nd and 3rd outputs.
#if defined(SPECCTRA_TEST)
using namespace DSN;
int main( int argc, char** argv )
{
// wxString filename( wxT("/tmp/fpcroute/Sample_1sided/demo_1sided.dsn") );
// wxString filename( wxT("/tmp/testdesigns/test.dsn") );
// wxString filename( wxT("/tmp/testdesigns/test.ses") );
wxString filename( wxT("/tmp/specctra_big.dsn") );
SPECCTRA_DB db;
bool failed = false;
SetLocaleTo_C_standard( ); // Switch the locale to standard C
if( argc == 2 )
{
filename = CONV_FROM_UTF8( argv[1] );
}
try
{
// db.LoadPCB( filename );
db.LoadSESSION( filename );
}
catch( IOError ioe )
{
fprintf( stderr, "%s\n", CONV_TO_UTF8(ioe.errorText) );
failed = true;
}
if( !failed )
fprintf( stderr, "loaded OK\n" );
// export what we read in, making this test program basically a beautifier
// hose the beautified DSN file to stdout. If an exception occurred,
// we will be outputting only a portion of what we wanted to read in.
db.SetFILE( stdout );
#if 0
// export a PCB
DSN::PCB* pcb = db.GetPCB();
pcb->Format( &db, 0 );
#else
// export a SESSION file.
DSN::SESSION* ses = db.GetSESSION();
ses->Format( &db, 0 );
#endif
SetLocaleTo_Default( ); // revert to the current locale
}
#endif
//EOF //EOF

110
pcbnew/specctra_test.cpp Normal file
View File

@ -0,0 +1,110 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010 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
*/
// unit test the specctra.cpp file. You can use the beautifiers below to output
// exactly what you read in but beautified and without #comments. This can
// then be used along with program 'diff' to test the parsing and formatting
// of every element. You may have to run the first output back through to
// get two files that should match, the 2nd and 3rd outputs.
#include <cstdarg>
#include <cstdio>
#include "specctra.h"
#include "common.h"
using namespace DSN;
int main( int argc, char** argv )
{
// wxString filename( wxT("/tmp/fpcroute/Sample_1sided/demo_1sided.dsn") );
// wxString filename( wxT("/tmp/testdesigns/test.dsn") );
// wxString filename( wxT("/tmp/testdesigns/test.ses") );
wxString filename( wxT("/tmp/specctra_big.dsn") );
SPECCTRA_DB db;
bool failed = false;
SetLocaleTo_C_standard( ); // Switch the locale to standard C
if( argc == 2 )
{
filename = CONV_FROM_UTF8( argv[1] );
}
try
{
// db.LoadPCB( filename );
db.LoadSESSION( filename );
}
catch( IOError ioe )
{
fprintf( stderr, "%s\n", CONV_TO_UTF8(ioe.errorText) );
failed = true;
}
if( !failed )
fprintf( stderr, "loaded OK\n" );
// export what we read in, making this test program basically a beautifier
// hose the beautified DSN file to stdout. If an exception occurred,
// we will be outputting only a portion of what we wanted to read in.
db.SetFILE( stdout );
#if 0
// export a PCB
DSN::PCB* pcb = db.GetPCB();
pcb->Format( &db, 0 );
#else
// export a SESSION file.
DSN::SESSION* ses = db.GetSESSION();
ses->Format( &db, 0 );
#endif
SetLocaleTo_Default( ); // revert to the current locale
}
//-----<dummy code>---------------------------------------------------
// a dummy to satisfy link of specctra_test without pulling in BOARD stuff.
int BOARD::GetCopperLayerCount() const
{
return 0;
}
// a dummy to satisfy link of specctra_test without pulling in BOARD stuff.
wxString BOARD::GetLayerName( int aLayer ) const
{
return wxEmptyString;
}
//-----</dummy code>--------------------------------------------------
//EOF