Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
8ddbf84c
Commit
8ddbf84c
authored
Apr 26, 2013
by
Felix Morgner
Browse files
Options
Browse Files
Download
Plain Diff
merge with upstream
parents
24f95c66
81271ad4
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
352 additions
and
480 deletions
+352
-480
CMakeLists.txt
common/CMakeLists.txt
+3
-3
CMakeLists.txt
cvpcb/CMakeLists.txt
+0
-4
class_DisplayFootprintsFrame.cpp
cvpcb/class_DisplayFootprintsFrame.cpp
+143
-29
class_DisplayFootprintsFrame.h
cvpcb/class_DisplayFootprintsFrame.h
+33
-0
cvframe.cpp
cvpcb/cvframe.cpp
+119
-5
cvpcb_mainframe.h
cvpcb/cvpcb_mainframe.h
+5
-0
loadcmp.cpp
cvpcb/loadcmp.cpp
+0
-77
read_write_cmpfile.cpp
cvpcb/read_write_cmpfile.cpp
+0
-88
readschematicnetlist.cpp
cvpcb/readschematicnetlist.cpp
+0
-90
setvisu.cpp
cvpcb/setvisu.cpp
+0
-144
sch_collectors.h
eeschema/sch_collectors.h
+0
-6
class_board.cpp
pcbnew/class_board.cpp
+32
-20
class_zone.h
pcbnew/class_zone.h
+0
-2
dialog_netlist.cpp
pcbnew/dialogs/dialog_netlist.cpp
+3
-1
kicad_netlist_reader.cpp
pcbnew/kicad_netlist_reader.cpp
+0
-0
legacy_netlist_reader.cpp
pcbnew/legacy_netlist_reader.cpp
+0
-0
netlist.cpp
pcbnew/netlist.cpp
+12
-8
netlist_reader.cpp
pcbnew/netlist_reader.cpp
+2
-3
No files found.
common/CMakeLists.txt
View file @
8ddbf84c
...
...
@@ -117,9 +117,9 @@ set(PCB_COMMON_SRCS
../pcbnew/class_zone_settings.cpp
../pcbnew/classpcb.cpp
../pcbnew/collectors.cpp
../pcbnew/netlist_reader
_common
.cpp
../pcbnew/
netlist_reader_firstformat
.cpp
../pcbnew/
netlist_reader_kicad
.cpp
../pcbnew/netlist_reader.cpp
../pcbnew/
legacy_netlist_reader
.cpp
../pcbnew/
kicad_netlist_reader
.cpp
../pcbnew/sel_layer.cpp
../pcbnew/pcb_plot_params.cpp
../pcbnew/io_mgr.cpp
...
...
cvpcb/CMakeLists.txt
View file @
8ddbf84c
...
...
@@ -36,12 +36,8 @@ set(CVPCB_SRCS
cvframe.cpp
cvpcb.cpp
listboxes.cpp
loadcmp.cpp
menubar.cpp
readschematicnetlist.cpp
read_write_cmpfile.cpp
readwrite_dlgs.cpp
setvisu.cpp
tool_cvpcb.cpp
)
...
...
cvpcb/class_DisplayFootprintsFrame.cpp
View file @
8ddbf84c
...
...
@@ -35,19 +35,17 @@
#include <macros.h>
#include <bitmaps.h>
#include <msgpanel.h>
#include <wildcards_and_files_ext.h>
#include <io_mgr.h>
#include <class_module.h>
#include <class_board.h>
#include <cvpcb.h>
#include <cvpcb_mainframe.h>
#include <class_DisplayFootprintsFrame.h>
#include <cvpcb_id.h>
#include <cvstruct.h>
/*
* NOTE: There is something in 3d_viewer.h that causes a compiler error in
* <boost/foreach.hpp> in Linux so move it after cvpcb.h where it is
* included to prevent the error from occurring.
*/
#include <3d_viewer.h>
...
...
@@ -70,9 +68,6 @@ END_EVENT_TABLE()
#define DISPLAY_FOOTPRINTS_FRAME_NAME wxT( "CmpFrame" )
/***************************************************************************/
/* DISPLAY_FOOTPRINTS_FRAME: the frame to display the current focused footprint */
/***************************************************************************/
DISPLAY_FOOTPRINTS_FRAME
::
DISPLAY_FOOTPRINTS_FRAME
(
CVPCB_MAINFRAME
*
parent
,
const
wxString
&
title
,
...
...
@@ -98,6 +93,7 @@ DISPLAY_FOOTPRINTS_FRAME::DISPLAY_FOOTPRINTS_FRAME( CVPCB_MAINFRAME* parent,
if
(
(
m_LastGridSizeId
<=
0
)
||
(
m_LastGridSizeId
>
(
ID_POPUP_GRID_USER
-
ID_POPUP_GRID_LEVEL_1000
))
)
m_LastGridSizeId
=
ID_POPUP_GRID_LEVEL_500
-
ID_POPUP_GRID_LEVEL_1000
;
GetScreen
()
->
SetGrid
(
ID_POPUP_GRID_LEVEL_1000
+
m_LastGridSizeId
);
// Initialize some display options
...
...
@@ -155,9 +151,6 @@ DISPLAY_FOOTPRINTS_FRAME::~DISPLAY_FOOTPRINTS_FRAME()
}
/* Called when the frame is closed
* Save current settings (frame position and size
*/
void
DISPLAY_FOOTPRINTS_FRAME
::
OnCloseWindow
(
wxCloseEvent
&
event
)
{
if
(
m_Draw3DFrame
)
...
...
@@ -426,9 +419,6 @@ void DISPLAY_FOOTPRINTS_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPositi
}
/**
* Display 3D frame of current footprint selection.
*/
void
DISPLAY_FOOTPRINTS_FRAME
::
Show3D_Frame
(
wxCommandEvent
&
event
)
{
if
(
m_Draw3DFrame
)
...
...
@@ -463,33 +453,157 @@ void PCB_SCREEN::ClearUndoORRedoList( UNDO_REDO_CONTAINER&, int )
}
/**
* Function IsGridVisible() , virtual
* @return true if the grid must be shown
*/
bool
DISPLAY_FOOTPRINTS_FRAME
::
IsGridVisible
()
const
{
return
m_DrawGrid
;
}
/**
* Function SetGridVisibility() , virtual
* It may be overloaded by derived classes
* if you want to store/retrieve the grid visibility in configuration.
* @param aVisible = true if the grid must be shown
*/
void
DISPLAY_FOOTPRINTS_FRAME
::
SetGridVisibility
(
bool
aVisible
)
{
m_DrawGrid
=
aVisible
;
}
/**
* Function GetGridColor() , virtual
* @return the color of the grid
*/
EDA_COLOR_T
DISPLAY_FOOTPRINTS_FRAME
::
GetGridColor
()
const
{
return
DARKGRAY
;
}
MODULE
*
DISPLAY_FOOTPRINTS_FRAME
::
Get_Module
(
const
wxString
&
aFootprintName
)
{
CVPCB_MAINFRAME
*
parent
=
(
CVPCB_MAINFRAME
*
)
GetParent
();
try
{
PLUGIN
::
RELEASER
pi
(
IO_MGR
::
PluginFind
(
IO_MGR
::
LEGACY
)
);
for
(
unsigned
i
=
0
;
i
<
parent
->
m_ModuleLibNames
.
GetCount
();
++
i
)
{
wxFileName
fn
=
parent
->
m_ModuleLibNames
[
i
];
fn
.
SetExt
(
LegacyFootprintLibPathExtension
);
wxString
libPath
=
wxGetApp
().
FindLibraryPath
(
fn
);
if
(
!
libPath
)
{
wxString
msg
=
wxString
::
Format
(
_
(
"PCB footprint library file <%s> could not "
"be found in the default search paths."
),
fn
.
GetFullName
().
GetData
()
);
// @todo we should not be using wxMessageBox directly.
wxMessageBox
(
msg
,
titleLibLoadError
,
wxOK
|
wxICON_ERROR
,
this
);
continue
;
}
MODULE
*
footprint
=
pi
->
FootprintLoad
(
libPath
,
aFootprintName
);
if
(
footprint
)
{
footprint
->
SetParent
(
(
EDA_ITEM
*
)
GetBoard
()
);
footprint
->
SetPosition
(
wxPoint
(
0
,
0
)
);
return
footprint
;
}
}
}
catch
(
IO_ERROR
ioe
)
{
DisplayError
(
this
,
ioe
.
errorText
);
return
NULL
;
}
wxString
msg
=
wxString
::
Format
(
_
(
"Footprint '%s' not found"
),
aFootprintName
.
GetData
()
);
DisplayError
(
this
,
msg
);
return
NULL
;
}
void
DISPLAY_FOOTPRINTS_FRAME
::
InitDisplay
()
{
wxString
msg
;
CVPCB_MAINFRAME
*
parentframe
=
(
CVPCB_MAINFRAME
*
)
GetParent
();
wxString
footprintName
=
parentframe
->
m_FootprintList
->
GetSelectedFootprint
();
if
(
!
footprintName
.
IsEmpty
()
)
{
msg
.
Printf
(
_
(
"Footprint: %s"
),
GetChars
(
footprintName
)
);
SetTitle
(
msg
);
FOOTPRINT_INFO
*
module_info
=
parentframe
->
m_footprints
.
GetModuleInfo
(
footprintName
);
const
wxChar
*
libname
;
if
(
module_info
)
libname
=
GetChars
(
module_info
->
m_LibName
);
else
libname
=
GetChars
(
wxT
(
"???"
)
);
msg
.
Printf
(
_
(
"Lib: %s"
),
libname
);
SetStatusText
(
msg
,
0
);
if
(
GetBoard
()
->
m_Modules
.
GetCount
()
)
{
// there is only one module in the list
GetBoard
()
->
m_Modules
.
DeleteAll
();
}
MODULE
*
module
=
Get_Module
(
footprintName
);
if
(
module
)
GetBoard
()
->
m_Modules
.
PushBack
(
module
);
Zoom_Automatique
(
false
);
}
else
// No footprint to display. Erase old footprint, if any
{
if
(
GetBoard
()
->
m_Modules
.
GetCount
()
)
{
GetBoard
()
->
m_Modules
.
DeleteAll
();
Zoom_Automatique
(
false
);
SetStatusText
(
wxEmptyString
,
0
);
}
}
// Display new cursor coordinates and zoom value:
UpdateStatusBar
();
GetCanvas
()
->
Refresh
();
if
(
m_Draw3DFrame
)
m_Draw3DFrame
->
NewDisplay
();
}
void
DISPLAY_FOOTPRINTS_FRAME
::
RedrawActiveWindow
(
wxDC
*
DC
,
bool
EraseBg
)
{
if
(
!
GetBoard
()
)
return
;
m_canvas
->
DrawBackGround
(
DC
);
GetBoard
()
->
Draw
(
m_canvas
,
DC
,
GR_COPY
);
MODULE
*
Module
=
GetBoard
()
->
m_Modules
;
if
(
Module
)
{
MSG_PANEL_ITEMS
items
;
Module
->
GetMsgPanelInfo
(
items
);
SetMsgPanel
(
items
);
}
m_canvas
->
DrawCrossHair
(
DC
);
}
/*
* Redraw the BOARD items but not cursors, axis or grid.
*/
void
BOARD
::
Draw
(
EDA_DRAW_PANEL
*
aPanel
,
wxDC
*
aDC
,
GR_DRAWMODE
aDrawMode
,
const
wxPoint
&
aOffset
)
{
if
(
m_Modules
)
{
m_Modules
->
Draw
(
aPanel
,
aDC
,
GR_COPY
);
}
}
cvpcb/class_DisplayFootprintsFrame.h
View file @
8ddbf84c
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2007 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 2007-2011 KiCad Developers, see AUTHORS.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
*/
/**
* @file class_DisplayFootprintsFrame.h
*/
...
...
@@ -23,7 +47,12 @@ public:
~
DISPLAY_FOOTPRINTS_FRAME
();
void
OnCloseWindow
(
wxCloseEvent
&
Event
);
/*
* Draws the current highlighted footprint.
*/
void
RedrawActiveWindow
(
wxDC
*
DC
,
bool
EraseBg
);
void
ReCreateHToolbar
();
void
ReCreateVToolbar
();
void
ReCreateOptToolbar
();
...
...
@@ -69,6 +98,10 @@ public:
MODULE
*
Get_Module
(
const
wxString
&
CmpName
);
void
Process_Settings
(
wxCommandEvent
&
event
);
/**
* Display 3D frame of current footprint selection.
*/
void
Show3D_Frame
(
wxCommandEvent
&
event
);
/* SaveCopyInUndoList() virtual
...
...
cvpcb/cvframe.cpp
View file @
8ddbf84c
...
...
@@ -725,11 +725,7 @@ void CVPCB_MAINFRAME::UpdateTitle()
SetTitle
(
title
);
}
/**
* Send a remote command to Eeschema via a socket,
* Commands are
* $PART: "reference" put cursor on component anchor
*/
void
CVPCB_MAINFRAME
::
SendMessageToEESCHEMA
()
{
char
cmd
[
1024
];
...
...
@@ -754,3 +750,121 @@ void CVPCB_MAINFRAME::SendMessageToEESCHEMA()
SendCommand
(
MSG_TO_SCH
,
cmd
);
}
int
CVPCB_MAINFRAME
::
ReadSchematicNetlist
()
{
wxBusyCursor
dummy
;
// Shows an hourglass while loading.
NETLIST_READER
*
netlistReader
;
wxString
msg
;
wxString
compFootprintLinkFileName
;
wxFileName
fn
=
m_NetlistFileName
;
// Load the footprint association file if it has already been created.
fn
.
SetExt
(
ComponentFileExtension
);
if
(
fn
.
FileExists
()
&&
fn
.
IsFileReadable
()
)
compFootprintLinkFileName
=
fn
.
GetFullPath
();
m_netlist
.
Clear
();
try
{
netlistReader
=
NETLIST_READER
::
GetNetlistReader
(
&
m_netlist
,
m_NetlistFileName
.
GetFullPath
(),
compFootprintLinkFileName
);
std
::
auto_ptr
<
NETLIST_READER
>
nlr
(
netlistReader
);
netlistReader
->
LoadNetlist
();
}
catch
(
IO_ERROR
&
ioe
)
{
msg
=
wxString
::
Format
(
_
(
"Error loading netlist.
\n
%s"
),
ioe
.
errorText
.
GetData
()
);
wxMessageBox
(
msg
,
_
(
"Netlist Load Error"
),
wxOK
|
wxICON_ERROR
);
return
1
;
}
// We also remove footprint name if it is "$noname" because this is a dummy name,
// not the actual name of the footprint.
for
(
unsigned
ii
=
0
;
ii
<
m_netlist
.
GetCount
();
ii
++
)
{
if
(
m_netlist
.
GetComponent
(
ii
)
->
GetFootprintLibName
()
==
wxT
(
"$noname"
)
)
m_netlist
.
GetComponent
(
ii
)
->
SetFootprintLibName
(
wxEmptyString
);
}
// Sort components by reference:
m_netlist
.
SortByReference
();
return
0
;
}
/* File header. */
static
char
HeaderLinkFile
[]
=
{
"Cmp-Mod V01"
};
bool
CVPCB_MAINFRAME
::
WriteComponentLinkFile
(
const
wxString
&
aFullFileName
)
{
COMPONENT
*
component
;
FILE
*
outputFile
;
wxFileName
fn
(
aFullFileName
);
wxString
Title
=
wxGetApp
().
GetTitle
()
+
wxT
(
" "
)
+
GetBuildVersion
();
outputFile
=
wxFopen
(
fn
.
GetFullPath
(),
wxT
(
"wt"
)
);
if
(
outputFile
==
NULL
)
return
false
;
int
retval
=
0
;
/*
* The header is:
* Cmp-Mod V01 Created by CvPcb (2012-02-08 BZR 3403)-testing date = 10/02/2012 20:45:59
* and write block per component like:
* BeginCmp
* TimeStamp = /322D3011;
* Reference = BUS1;
* ValeurCmp = BUSPC;
* IdModule = BUS_PC;
* EndCmp
*/
retval
|=
fprintf
(
outputFile
,
"%s"
,
HeaderLinkFile
);
retval
|=
fprintf
(
outputFile
,
" Created by %s"
,
TO_UTF8
(
Title
)
);
retval
|=
fprintf
(
outputFile
,
" date = %s
\n
"
,
TO_UTF8
(
DateAndTime
()
)
);
for
(
unsigned
i
=
0
;
i
<
m_netlist
.
GetCount
();
i
++
)
{
component
=
m_netlist
.
GetComponent
(
i
);
retval
|=
fprintf
(
outputFile
,
"
\n
BeginCmp
\n
"
);
retval
|=
fprintf
(
outputFile
,
"TimeStamp = %s;
\n
"
,
TO_UTF8
(
component
->
GetTimeStamp
()
)
);
retval
|=
fprintf
(
outputFile
,
"Reference = %s;
\n
"
,
TO_UTF8
(
component
->
GetReference
()
)
);
retval
|=
fprintf
(
outputFile
,
"ValeurCmp = %s;
\n
"
,
TO_UTF8
(
component
->
GetValue
()
)
);
retval
|=
fprintf
(
outputFile
,
"IdModule = %s;
\n
"
,
TO_UTF8
(
component
->
GetFootprintLibName
()
)
);
retval
|=
fprintf
(
outputFile
,
"EndCmp
\n
"
);
}
retval
|=
fprintf
(
outputFile
,
"
\n
EndListe
\n
"
);
fclose
(
outputFile
);
return
retval
>=
0
;
}
void
CVPCB_MAINFRAME
::
CreateScreenCmp
()
{
if
(
m_DisplayFootprintFrame
==
NULL
)
{
m_DisplayFootprintFrame
=
new
DISPLAY_FOOTPRINTS_FRAME
(
this
,
_
(
"Module"
),
wxPoint
(
0
,
0
),
wxSize
(
600
,
400
),
KICAD_DEFAULT_DRAWFRAME_STYLE
);
m_DisplayFootprintFrame
->
Show
(
true
);
}
else
{
if
(
m_DisplayFootprintFrame
->
IsIconized
()
)
m_DisplayFootprintFrame
->
Iconize
(
false
);
}
m_DisplayFootprintFrame
->
InitDisplay
();
}
cvpcb/cvpcb_mainframe.h
View file @
8ddbf84c
...
...
@@ -156,6 +156,11 @@ public:
void
SetNewPkg
(
const
wxString
&
aFootprintName
);
void
BuildCmpListBox
();
void
BuildFOOTPRINTS_LISTBOX
();
/**
* Create or Update the frame showing the current highlighted footprint
* and (if showed) the 3D display frame
*/
void
CreateScreenCmp
();
/**
...
...
cvpcb/loadcmp.cpp
deleted
100644 → 0
View file @
24f95c66
/**
* @file cvpcb/loadcmp.cpp
*/
#include <fctsys.h>
#include <wxstruct.h>
#include <gr_basic.h>
#include <confirm.h>
#include <kicad_string.h>
#include <gestfich.h>
#include <macros.h>
#include <appl_wxstruct.h>
#include <pcbstruct.h>
#include <class_module.h>
#include <class_board.h>
#include <cvpcb.h>
#include <cvpcb_mainframe.h>
#include <class_DisplayFootprintsFrame.h>
#include <io_mgr.h>
#include <wildcards_and_files_ext.h>
/* Read libraries to find a module.
* If this module is found, copy it into memory
*
* aFootprintName is the module name
* return - a pointer to the loaded module or NULL.
*/
MODULE
*
DISPLAY_FOOTPRINTS_FRAME
::
Get_Module
(
const
wxString
&
aFootprintName
)
{
CVPCB_MAINFRAME
*
parent
=
(
CVPCB_MAINFRAME
*
)
GetParent
();
try
{
PLUGIN
::
RELEASER
pi
(
IO_MGR
::
PluginFind
(
IO_MGR
::
LEGACY
)
);
for
(
unsigned
i
=
0
;
i
<
parent
->
m_ModuleLibNames
.
GetCount
();
++
i
)
{
wxFileName
fn
=
parent
->
m_ModuleLibNames
[
i
];
fn
.
SetExt
(
LegacyFootprintLibPathExtension
);
wxString
libPath
=
wxGetApp
().
FindLibraryPath
(
fn
);
if
(
!
libPath
)
{
wxString
msg
=
wxString
::
Format
(
_
(
"PCB footprint library file <%s> could not "
"be found in the default search paths."
),
fn
.
GetFullName
().
GetData
()
);
// @todo we should not be using wxMessageBox directly.
wxMessageBox
(
msg
,
titleLibLoadError
,
wxOK
|
wxICON_ERROR
,
this
);
continue
;
}
MODULE
*
footprint
=
pi
->
FootprintLoad
(
libPath
,
aFootprintName
);
if
(
footprint
)
{
footprint
->
SetParent
(
(
EDA_ITEM
*
)
GetBoard
()
);
footprint
->
SetPosition
(
wxPoint
(
0
,
0
)
);
return
footprint
;
}
}
}
catch
(
IO_ERROR
ioe
)
{
DisplayError
(
this
,
ioe
.
errorText
);
return
NULL
;
}
wxString
msg
=
wxString
::
Format
(
_
(
"Footprint '%s' not found"
),
aFootprintName
.
GetData
()
);
DisplayError
(
this
,
msg
);
return
NULL
;
}
cvpcb/read_write_cmpfile.cpp
deleted
100644 → 0
View file @
24f95c66
/**
* @file cvpcb/read_write_cmpfile.cpp
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.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 <fctsys.h>
#include <kicad_string.h>
#include <appl_wxstruct.h>
#include <cvpcb.h>
#include <cvpcb_mainframe.h>
#include <build_version.h>
/* File header. */
static
char
HeaderLinkFile
[]
=
{
"Cmp-Mod V01"
};
/* Write the link file:
* the header is:
* Cmp-Mod V01 Created by CvPcb (2012-02-08 BZR 3403)-testing date = 10/02/2012 20:45:59
* and write block per component like:
* BeginCmp
* TimeStamp = /322D3011;
* Reference = BUS1;
* ValeurCmp = BUSPC;
* IdModule = BUS_PC;
* EndCmp
*/
bool
CVPCB_MAINFRAME
::
WriteComponentLinkFile
(
const
wxString
&
aFullFileName
)
{
COMPONENT
*
component
;
FILE
*
outputFile
;
wxFileName
fn
(
aFullFileName
);
wxString
Title
=
wxGetApp
().
GetTitle
()
+
wxT
(
" "
)
+
GetBuildVersion
();
outputFile
=
wxFopen
(
fn
.
GetFullPath
(),
wxT
(
"wt"
)
);
if
(
outputFile
==
NULL
)
return
false
;
int
retval
=
0
;
retval
|=
fprintf
(
outputFile
,
"%s"
,
HeaderLinkFile
);
retval
|=
fprintf
(
outputFile
,
" Created by %s"
,
TO_UTF8
(
Title
)
);
retval
|=
fprintf
(
outputFile
,
" date = %s
\n
"
,
TO_UTF8
(
DateAndTime
()
)
);
for
(
unsigned
i
=
0
;
i
<
m_netlist
.
GetCount
();
i
++
)
{
component
=
m_netlist
.
GetComponent
(
i
);
retval
|=
fprintf
(
outputFile
,
"
\n
BeginCmp
\n
"
);
retval
|=
fprintf
(
outputFile
,
"TimeStamp = %s;
\n
"
,
TO_UTF8
(
component
->
GetTimeStamp
()
)
);
retval
|=
fprintf
(
outputFile
,
"Reference = %s;
\n
"
,
TO_UTF8
(
component
->
GetReference
()
)
);
retval
|=
fprintf
(
outputFile
,
"ValeurCmp = %s;
\n
"
,
TO_UTF8
(
component
->
GetValue
()
)
);
retval
|=
fprintf
(
outputFile
,
"IdModule = %s;
\n
"
,
TO_UTF8
(
component
->
GetFootprintLibName
()
)
);
retval
|=
fprintf
(
outputFile
,
"EndCmp
\n
"
);
}
retval
|=
fprintf
(
outputFile
,
"
\n
EndListe
\n
"
);
fclose
(
outputFile
);
return
retval
>=
0
;
}
cvpcb/readschematicnetlist.cpp
deleted
100644 → 0
View file @
24f95c66
/**
* @file cvpcb/readschematicnetlist.cpp
*/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2012 Jean-Pierre Charras.
* Copyright (C) 2012 KiCad Developers, see CHANGELOG.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
*/
/* Read a netlist type Eeschema (New and Old format)
* or OrcadPCB2 and build the component list
*/
#include <fctsys.h>
#include <wxstruct.h>
#include <confirm.h>
#include <kicad_string.h>
#include <macros.h>
#include <wildcards_and_files_ext.h>
#include <cvpcb_mainframe.h>
#include <richio.h>
#include <netlist_reader.h>
int
CVPCB_MAINFRAME
::
ReadSchematicNetlist
()
{
wxBusyCursor
dummy
;
// Shows an hourglass while loading.
NETLIST_READER
*
netlistReader
;
wxString
msg
;
wxString
compFootprintLinkFileName
;
wxFileName
fn
=
m_NetlistFileName
;
// Load the footprint association file if it has already been created.
fn
.
SetExt
(
ComponentFileExtension
);
if
(
fn
.
FileExists
()
&&
fn
.
IsFileReadable
()
)
compFootprintLinkFileName
=
fn
.
GetFullPath
();
m_netlist
.
Clear
();
try
{
netlistReader
=
NETLIST_READER
::
GetNetlistReader
(
&
m_netlist
,
m_NetlistFileName
.
GetFullPath
(),
compFootprintLinkFileName
);
std
::
auto_ptr
<
NETLIST_READER
>
nlr
(
netlistReader
);
netlistReader
->
LoadNetlist
();
}
catch
(
IO_ERROR
&
ioe
)
{
msg
=
wxString
::
Format
(
_
(
"Error loading netlist.
\n
%s"
),
ioe
.
errorText
.
GetData
()
);
wxMessageBox
(
msg
,
_
(
"Netlist Load Error"
),
wxOK
|
wxICON_ERROR
);
return
1
;
}
// We also remove footprint name if it is "$noname" because this is a dummy name,
// not the actual name of the footprint.
for
(
unsigned
ii
=
0
;
ii
<
m_netlist
.
GetCount
();
ii
++
)
{
if
(
m_netlist
.
GetComponent
(
ii
)
->
GetFootprintLibName
()
==
wxT
(
"$noname"
)
)
m_netlist
.
GetComponent
(
ii
)
->
SetFootprintLibName
(
wxEmptyString
);
}
// Sort components by reference:
m_netlist
.
SortByReference
();
return
0
;
}
cvpcb/setvisu.cpp
deleted
100644 → 0
View file @
24f95c66
/**
* @file setvisu.cpp
*/
#include <fctsys.h>
#include <common.h>
#include <gr_basic.h>
#include <class_drawpanel.h>
#include <bitmaps.h>
#include <msgpanel.h>
#include <class_board.h>
#include <class_module.h>
#include <cvpcb.h>
#include <cvpcb_mainframe.h>
#include <cvstruct.h>
#include <class_DisplayFootprintsFrame.h>
/*
* NOTE: There is something in 3d_viewer.h that causes a compiler error in
* <boost/foreach.hpp> in Linux so move it after cvpcb.h where it is
* included to prevent the error from occurring.
*/
#include <3d_viewer.h>
/*
* Create or Update the frame showing the current highlighted footprint
* and (if showed) the 3D display frame
*/
void
CVPCB_MAINFRAME
::
CreateScreenCmp
()
{
if
(
m_DisplayFootprintFrame
==
NULL
)
{
m_DisplayFootprintFrame
=
new
DISPLAY_FOOTPRINTS_FRAME
(
this
,
_
(
"Module"
),
wxPoint
(
0
,
0
),
wxSize
(
600
,
400
),
KICAD_DEFAULT_DRAWFRAME_STYLE
);
m_DisplayFootprintFrame
->
Show
(
true
);
}
else
{
if
(
m_DisplayFootprintFrame
->
IsIconized
()
)
m_DisplayFootprintFrame
->
Iconize
(
false
);
}
m_DisplayFootprintFrame
->
InitDisplay
();
}
/* Refresh the full display for this frame:
* Set the title, the status line and redraw the canvas
* Must be called after the footprint to display is modifed
*/
void
DISPLAY_FOOTPRINTS_FRAME
::
InitDisplay
()
{
wxString
msg
;
CVPCB_MAINFRAME
*
parentframe
=
(
CVPCB_MAINFRAME
*
)
GetParent
();
wxString
footprintName
=
parentframe
->
m_FootprintList
->
GetSelectedFootprint
();
if
(
!
footprintName
.
IsEmpty
()
)
{
msg
.
Printf
(
_
(
"Footprint: %s"
),
GetChars
(
footprintName
)
);
SetTitle
(
msg
);
FOOTPRINT_INFO
*
module_info
=
parentframe
->
m_footprints
.
GetModuleInfo
(
footprintName
);
const
wxChar
*
libname
;
if
(
module_info
)
libname
=
GetChars
(
module_info
->
m_LibName
);
else
libname
=
GetChars
(
wxT
(
"???"
)
);
msg
.
Printf
(
_
(
"Lib: %s"
),
libname
);
SetStatusText
(
msg
,
0
);
if
(
GetBoard
()
->
m_Modules
.
GetCount
()
)
{
// there is only one module in the list
GetBoard
()
->
m_Modules
.
DeleteAll
();
}
MODULE
*
module
=
Get_Module
(
footprintName
);
if
(
module
)
GetBoard
()
->
m_Modules
.
PushBack
(
module
);
Zoom_Automatique
(
false
);
}
else
// No footprint to display. Erase old footprint, if any
{
if
(
GetBoard
()
->
m_Modules
.
GetCount
()
)
{
GetBoard
()
->
m_Modules
.
DeleteAll
();
Zoom_Automatique
(
false
);
SetStatusText
(
wxEmptyString
,
0
);
}
}
// Display new cursor coordinates and zoom value:
UpdateStatusBar
();
GetCanvas
()
->
Refresh
();
if
(
m_Draw3DFrame
)
m_Draw3DFrame
->
NewDisplay
();
}
/*
* Draws the current highlighted footprint.
*/
void
DISPLAY_FOOTPRINTS_FRAME
::
RedrawActiveWindow
(
wxDC
*
DC
,
bool
EraseBg
)
{
if
(
!
GetBoard
()
)
return
;
m_canvas
->
DrawBackGround
(
DC
);
GetBoard
()
->
Draw
(
m_canvas
,
DC
,
GR_COPY
);
MODULE
*
Module
=
GetBoard
()
->
m_Modules
;
if
(
Module
)
{
MSG_PANEL_ITEMS
items
;
Module
->
GetMsgPanelInfo
(
items
);
SetMsgPanel
(
items
);
}
m_canvas
->
DrawCrossHair
(
DC
);
}
/*
* Redraw the BOARD items but not cursors, axis or grid.
*/
void
BOARD
::
Draw
(
EDA_DRAW_PANEL
*
aPanel
,
wxDC
*
aDC
,
GR_DRAWMODE
aDrawMode
,
const
wxPoint
&
aOffset
)
{
if
(
m_Modules
)
{
m_Modules
->
Draw
(
aPanel
,
aDC
,
GR_COPY
);
}
}
eeschema/sch_collectors.h
View file @
8ddbf84c
...
...
@@ -135,9 +135,6 @@ public:
return
NULL
;
}
/**
* @copydoc INSPECTOR::Inspect()
*/
SEARCH_RESULT
Inspect
(
EDA_ITEM
*
aItem
,
const
void
*
aTestData
=
NULL
);
/**
...
...
@@ -330,9 +327,6 @@ public:
*/
bool
ReplaceItem
();
/**
* @copydoc INSPECTOR::Inspect()
*/
SEARCH_RESULT
Inspect
(
EDA_ITEM
*
aItem
,
const
void
*
aTestData
=
NULL
);
/**
...
...
pcbnew/class_board.cpp
View file @
8ddbf84c
...
...
@@ -2386,23 +2386,25 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, REPORTER* aReporter )
{
if
(
aReporter
)
{
if
(
component
->
GetModule
()
!=
NULL
)
msg
.
Printf
(
_
(
"Adding new component
\"
%s:%s
\"
footprint
\"
%s
\"
.
\n
"
),
GetChars
(
component
->
GetReference
()
),
GetChars
(
component
->
GetTimeStamp
()
),
GetChars
(
component
->
GetFootprintLibName
()
)
);
else
msg
.
Printf
(
_
(
"Cannot add new component
\"
%s:%s
\"
due to missing "
"footprint
\"
%s
\"
.
\n
"
),
GetChars
(
component
->
GetReference
()
),
GetChars
(
component
->
GetTimeStamp
()
),
GetChars
(
component
->
GetFootprintLibName
()
)
);
aReporter
->
Report
(
msg
);
}
// Owned by NETLIST, can only copy and read it.
footprint
=
component
->
GetModule
();
wxCHECK2_MSG
(
footprint
!=
NULL
,
continue
,
wxString
::
Format
(
wxT
(
"No footprint loaded for component
\"
%s
\"
."
),
GetChars
(
component
->
GetReference
()
)
)
);
if
(
!
aNetlist
.
IsDryRun
()
)
if
(
!
aNetlist
.
IsDryRun
()
&&
(
component
->
GetModule
()
!=
NULL
)
)
{
footprint
=
new
MODULE
(
*
footprint
);
// Owned by NETLIST, can only copy it.
footprint
=
new
MODULE
(
*
component
->
GetModule
()
);
footprint
->
SetParent
(
this
);
footprint
->
SetPosition
(
bestPosition
);
footprint
->
SetTimeStamp
(
GetNewTimeStamp
()
);
...
...
@@ -2419,15 +2421,24 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, REPORTER* aReporter )
{
if
(
aReporter
)
{
msg
.
Printf
(
_
(
"Replacing component
\"
%s:%s
\"
footprint
\"
%s
\"
with
\"
%s
\"
.
\n
"
),
if
(
component
->
GetModule
()
!=
NULL
)
msg
.
Printf
(
_
(
"Replacing component
\"
%s:%s
\"
footprint
\"
%s
\"
with "
"
\"
%s
\"
.
\n
"
),
GetChars
(
footprint
->
GetReference
()
),
GetChars
(
footprint
->
GetPath
()
),
GetChars
(
footprint
->
GetLibRef
()
),
GetChars
(
component
->
GetFootprintLibName
()
)
);
else
msg
.
Printf
(
_
(
"Cannot replace component
\"
%s:%s
\"
due to missing "
"footprint
\"
%s
\"
.
\n
"
),
GetChars
(
footprint
->
GetReference
()
),
GetChars
(
footprint
->
GetPath
()
),
GetChars
(
component
->
GetFootprintLibName
()
)
);
aReporter
->
Report
(
msg
);
}
if
(
!
aNetlist
.
IsDryRun
()
)
if
(
!
aNetlist
.
IsDryRun
()
&&
(
component
->
GetModule
()
!=
NULL
)
)
{
wxASSERT
(
footprint
!=
NULL
);
MODULE
*
newFootprint
=
new
MODULE
(
*
component
->
GetModule
()
);
...
...
@@ -2495,7 +2506,8 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, REPORTER* aReporter )
}
}
wxASSERT
(
component
!=
NULL
);
if
(
footprint
==
NULL
)
continue
;
// At this point, the component footprint is updated. Now update the nets.
for
(
pad
=
footprint
->
Pads
();
pad
;
pad
=
pad
->
Next
()
)
...
...
pcbnew/class_zone.h
View file @
8ddbf84c
...
...
@@ -253,7 +253,6 @@ public:
void
SetOutline
(
CPolyLine
*
aOutline
)
{
m_Poly
=
aOutline
;
}
/** @copydoc EDA_ITEM::HitTest(const wxPoint&) */
virtual
bool
HitTest
(
const
wxPoint
&
aPosition
);
/**
...
...
@@ -324,7 +323,6 @@ public:
*/
bool
HitTestForEdge
(
const
wxPoint
&
refPos
);
/** @copydoc EDA_ITEM::HitTest(const EDA_RECT&)const */
virtual
bool
HitTest
(
const
EDA_RECT
&
aRect
)
const
;
/**
...
...
pcbnew/dialogs/dialog_netlist.cpp
View file @
8ddbf84c
/**
* @file pcbnew/dialogs/dialog_netlist.cpp
*/
...
...
@@ -140,7 +141,8 @@ void DIALOG_NETLIST::OnReadNetlistFileClick( wxCommandEvent& event )
}
// Give the user a chance to bail out when making changes from a netlist.
if
(
!
m_parent
->
GetBoard
()
->
IsEmpty
()
if
(
!
m_checkDryRun
->
GetValue
()
&&
!
m_parent
->
GetBoard
()
->
IsEmpty
()
&&
!
IsOK
(
NULL
,
_
(
"The changes made by reading the netlist cannot be undone. Are you "
"sure you want to read the netlist?"
)
)
)
return
;
...
...
pcbnew/
netlist_reader_kicad
.cpp
→
pcbnew/
kicad_netlist_reader
.cpp
View file @
8ddbf84c
File moved
pcbnew/
netlist_reader_firstformat
.cpp
→
pcbnew/
legacy_netlist_reader
.cpp
View file @
8ddbf84c
File moved
pcbnew/netlist.cpp
View file @
8ddbf84c
...
...
@@ -29,7 +29,6 @@
#include <appl_wxstruct.h>
#include <class_drawpanel.h>
#include <confirm.h>
#include <richio.h>
#include <dialog_helpers.h>
#include <wxPcbStruct.h>
#include <netlist_reader.h>
...
...
@@ -41,8 +40,6 @@
#include <pcbnew.h>
#include <io_mgr.h>
#include <algorithm>
void
PCB_EDIT_FRAME
::
ReadPcbNetlist
(
const
wxString
&
aNetlistFileName
,
const
wxString
&
aCmpFileName
,
...
...
@@ -182,6 +179,7 @@ void PCB_EDIT_FRAME::loadFootprints( NETLIST& aNetlist, REPORTER* aReporter )
{
component
=
aNetlist
.
GetComponent
(
ii
);
// @todo Check if component is already on BOARD and only load footprint if it's needed.
if
(
ii
==
0
||
component
->
GetFootprintLibName
()
!=
lastFootprintLibName
)
{
module
=
NULL
;
...
...
@@ -206,12 +204,18 @@ void PCB_EDIT_FRAME::loadFootprints( NETLIST& aNetlist, REPORTER* aReporter )
}
if
(
module
==
NULL
)
{
if
(
aReporter
)
{
wxString
msg
;
msg
.
Printf
(
_
(
"Component `%s` footprint <%s> was not found in any libraries."
),
msg
.
Printf
(
_
(
"*** Warning: component `%s` footprint <%s> was not found in "
"any libraries. ***
\n
"
),
GetChars
(
component
->
GetReference
()
),
GetChars
(
component
->
GetFootprintLibName
()
)
);
THROW_IO_ERROR
(
msg
);
aReporter
->
Report
(
msg
);
}
continue
;
}
}
else
...
...
pcbnew/netlist_reader
_common
.cpp
→
pcbnew/netlist_reader.cpp
View file @
8ddbf84c
...
...
@@ -28,7 +28,6 @@
#include <richio.h>
#include <kicad_string.h>
#include <reporter.h>
...
...
@@ -207,7 +206,7 @@ static bool SortByLibName( const COMPONENT& ref, const COMPONENT& cmp )
void
NETLIST
::
SortByFootprintLibName
()
{
sort
(
m_components
.
begin
(),
m_components
.
end
(),
SortByLibName
);
m_components
.
sort
(
SortByLibName
);
}
...
...
@@ -223,7 +222,7 @@ bool operator < ( const COMPONENT& item1, const COMPONENT& item2 )
void
NETLIST
::
SortByReference
()
{
sort
(
m_components
.
begin
(),
m_components
.
end
()
);
m_components
.
sort
(
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment