eeschema: removed a bug that crashes eeschema when attempting to edit a component not found in lib

This commit is contained in:
charras 2008-12-04 20:53:11 +00:00
parent 23db371300
commit 07299b3e84
12 changed files with 2910 additions and 2235 deletions

View File

@ -1,9 +1,8 @@
# makefile pour cvpcb (mingw) # makefile pour cvpcb (mingw)
OBJSUFF = o OBJSUFF = o
EXTRACPPFLAGS += -DCVPCB -fno-strict-aliasing\ EXTRACPPFLAGS += -DCVPCB -I../include -Ibitmaps\
-I./ -I../cvpcb -I../include -Ibitmaps\ -I../pcbnew -I../cvpcb -I../share -I../3d-viewer -I ../polygon
-I../pcbnew -I../3d-viewer -I ../polygon
EXTRALIBS = ../common/common.a ../bitmaps/libbitmaps.a\ EXTRALIBS = ../common/common.a ../bitmaps/libbitmaps.a\
../polygon/lib_polygon.a\ ../polygon/lib_polygon.a\
@ -17,6 +16,7 @@ OBJECTS = $(TARGET).o \
class_zone.o\ class_zone.o\
class_zone_setting.o\ class_zone_setting.o\
class_board_connected_item.o\ class_board_connected_item.o\
class_board_item.o\
memoire.o \ memoire.o \
cvframe.o\ cvframe.o\
listboxes.o\ listboxes.o\
@ -81,6 +81,9 @@ class_mire.o: ../pcbnew/class_mire.cpp ../pcbnew/class_mire.h $(COMMON)
class_board_connected_item.o: ../pcbnew/class_board_connected_item.cpp class_board_connected_item.o: ../pcbnew/class_board_connected_item.cpp
$(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp
class_board_item.o: ../pcbnew/class_board_item.cpp
$(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp
class_zone.o: ../pcbnew/class_zone.cpp ../pcbnew/class_zone.h $(COMMON) class_zone.o: ../pcbnew/class_zone.cpp ../pcbnew/class_zone.h $(COMMON)
$(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp

View File

@ -30,7 +30,7 @@ void InstallCmpeditFrame( WinEDA_SchematicFrame* parent, wxPoint& pos,
if( aComponent->Type() != TYPE_SCH_COMPONENT ) if( aComponent->Type() != TYPE_SCH_COMPONENT )
{ {
DisplayError( parent, DisplayError( parent,
wxT( "InstallCmpeditFrame() error: This struct is not a component" ) ); wxT( "InstallCmpeditFrame() error: This item is not a component" ) );
} }
else else
{ {
@ -52,7 +52,7 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( wxWindow
{ {
m_Parent = (WinEDA_SchematicFrame*) parent; m_Parent = (WinEDA_SchematicFrame*) parent;
m_LibEntry = 0; m_LibEntry = NULL;
m_skipCopyFromPanel = false; m_skipCopyFromPanel = false;
wxListItem columnLabel; wxListItem columnLabel;
@ -524,10 +524,10 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyOptionsToPanel()
int choiceCount = unitChoice->GetCount(); int choiceCount = unitChoice->GetCount();
// Remove non existing choices (choiceCount must be <= number for parts) // Remove non existing choices (choiceCount must be <= number for parts)
int unitcount = m_LibEntry->m_UnitCount; int unitcount = m_LibEntry ? m_LibEntry->m_UnitCount : 1;
if ( unitcount < 1 ) if ( unitcount < 1 )
unitcount = 1; unitcount = 1;
if( m_LibEntry && ( unitcount < choiceCount) ) if( unitcount < choiceCount )
{ {
while ( unitcount < choiceCount ) while ( unitcount < choiceCount )
{ {

View File

@ -76,6 +76,9 @@ files.o: files.cpp
class_board_connected_item.o: ../pcbnew/class_board_connected_item.cpp class_board_connected_item.o: ../pcbnew/class_board_connected_item.cpp
$(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp
class_board_item.o: ../pcbnew/class_board_item.cpp
$(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp
class_marker.o: ../pcbnew/class_marker.cpp ../pcbnew/class_marker.h class_marker.o: ../pcbnew/class_marker.cpp ../pcbnew/class_marker.h
$(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp

View File

@ -564,12 +564,10 @@ public:
/** Function Fill_All_Zones() /** Function Fill_All_Zones()
* Fill all zones on the board * Fill all zones on the board
* The old fillings are removed * The old fillings are removed
* @param frame = reference to the main frame
* @param DC = current Device Context
* @param verbose = true to show error messages * @param verbose = true to show error messages
* @return error level (0 = no error) * @return error level (0 = no error)
*/ */
int Fill_All_Zones( wxDC* DC, bool verbose = TRUE ); int Fill_All_Zones( bool verbose = TRUE );
/** /**

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -45,6 +45,8 @@ ALL_LDFLAGS = -s #-v
FINAL = 1 FINAL = 1
endif endif
CPPFLAGS += -I $(BOOST_PATH)
ALL_CPPFLAGS = `$(WXWIN)/wx-config --cppflags` $(CPPFLAGS) ALL_CPPFLAGS = `$(WXWIN)/wx-config --cppflags` $(CPPFLAGS)
EDACPPFLAGS = $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) $(EXTRACPPFLAGS) EDACPPFLAGS = $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) $(EXTRACPPFLAGS)
EDALIBS = $(EXTRALIBS) EDALIBS = $(EXTRALIBS)
@ -54,7 +56,7 @@ PYTHON_PATH=/c/Python25
PYLIBS= -L$(PYTHON_PATH)/libs PYLIBS= -L$(PYTHON_PATH)/libs
PYLIBS+= -L $(PYTHON_PATH)/Lib PYLIBS+= -L $(PYTHON_PATH)/Lib
PYLIBS+= -lpython2.5 PYLIBS+= -lpython2.5
EXTRACPPFLAGS+=-I $(PYTHON_PATH)/include -DKICAD_PYTHON -I $(BOOST_PATH) -fno-strict-aliasing -ggdb EXTRACPPFLAGS+=-I $(PYTHON_PATH)/include -DKICAD_PYTHON -ggdb
endif endif
SYSWXLIB = `$(WXWIN)/wx-config --libs gl`\ SYSWXLIB = `$(WXWIN)/wx-config --libs gl`\

View File

@ -30,7 +30,6 @@
/****************************/ /****************************/
#include "fctsys.h" #include "fctsys.h"
#include "gr_basic.h"
#include "common.h" #include "common.h"
#include "pcbnew.h" #include "pcbnew.h"
@ -196,6 +195,10 @@ void DRC::RunTests()
// test track and via clearances to other tracks, pads, and vias // test track and via clearances to other tracks, pads, and vias
testTracks(); testTracks();
// Before testing segments and unconnected, refill all zones:
// this is a good caution, and mandatory if using filling zones by solid polygons
m_mainWindow->Fill_All_Zones( false );
// test zone clearances to other zones, pads, tracks, and vias // test zone clearances to other zones, pads, tracks, and vias
testZones( m_doZonesTest ); testZones( m_doZonesTest );

View File

@ -542,7 +542,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
case ID_POPUP_PCB_FILL_ALL_ZONES: case ID_POPUP_PCB_FILL_ALL_ZONES:
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
Fill_All_Zones( &dc ); Fill_All_Zones( );
break; break;
case ID_POPUP_PCB_REMOVE_FILLED_AREAS_IN_CURRENT_ZONE: case ID_POPUP_PCB_REMOVE_FILLED_AREAS_IN_CURRENT_ZONE:

View File

@ -6,7 +6,6 @@ TARGET=pcbnew
include ../libs.win include ../libs.win
EXTRACPPFLAGS += -I /f/kicad-sourceforge/trunk/kicad -I $(BOOST_PATH)
all: $(TARGET).exe all: $(TARGET).exe
include makefile.include include makefile.include
@ -15,7 +14,7 @@ $(TARGET).exe: $(OBJECTS) $(TARGET)_resources.o\
$(EDALIBS) $(LIBVIEWER3D) makefile.g95 $(EDALIBS) $(LIBVIEWER3D) makefile.g95
$(CXX) $(ALL_LDFLAGS) -o $(TARGET).exe\ $(CXX) $(ALL_LDFLAGS) -o $(TARGET).exe\
$(OBJECTS) $(LIBVIEWER3D) $(TARGET)_resources.o $(EDALIBS) $(SYSWXLIB) $(OBJECTS) $(LIBVIEWER3D) $(TARGET)_resources.o $(EDALIBS) $(SYSWXLIB)
install: $(TARGET).exe install: $(TARGET).exe
cp $(TARGET).exe $(KICAD_BIN) cp $(TARGET).exe $(KICAD_BIN)

View File

@ -3,11 +3,9 @@ EXTRALIBS = ../common/common.a ../bitmaps/libbitmaps.a\
../polygon/lib_polygon.a\ ../polygon/lib_polygon.a\
../polygon/kbool/src/libkbool.a ../polygon/kbool/src/libkbool.a
EXTRACPPFLAGS += -DPCBNEW -fno-strict-aliasing -I./ -Ibitmaps -I../include -I../share\ EXTRACPPFLAGS += -DPCBNEW -I../pcbnew -Ibitmaps -I../include\
-I../pcbnew -I../3d-viewer -I../polygon -I/opt/local/include -I../3d-viewer -I../polygon -I/opt/local/include
#COMMON = pcbnew.h struct.h class_pad.h class_module.h class_text_mod.h \
# class_edge_mod.h class_equipot.h
LIBVIEWER3D = ../3d-viewer/3d-viewer.a LIBVIEWER3D = ../3d-viewer/3d-viewer.a
@ -136,7 +134,7 @@ OBJECTS= $(TARGET).o classpcb.o\
gpcb_exchange.o gpcb_exchange.o
PolyLine.o: ../polygon/PolyLine.cpp ../polygon/PolyLine.h $(COMMON) PolyLine.o: ../polygon/PolyLine.cpp ../polygon/PolyLine.h
$(CXX) -c $(EDACPPFLAGS) -o $@ ../polygon/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../polygon/$*.cpp
setpage.o: ../share/setpage.cpp setpage.o: ../share/setpage.cpp
@ -148,177 +146,177 @@ drawpanel.o: ../share/drawpanel.cpp
drawframe.o: ../share/drawframe.cpp drawframe.o: ../share/drawframe.cpp
$(CXX) -c $(EDACPPFLAGS) -o $@ ../share/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../share/$*.cpp
menubarpcb.o: menubarpcb.cpp $(COMMON) menubarpcb.o: menubarpcb.cpp
dialog_general_options.o: dialog_general_options.cpp dialog_track_options.cpp dialog_display_options.cpp\ dialog_general_options.o: dialog_general_options.cpp dialog_track_options.cpp dialog_display_options.cpp\
dialog_graphic_items_options.cpp $(COMMON) dialog_graphic_items_options.cpp
menubarmodedit.o: menubarmodedit.cpp $(COMMON) menubarmodedit.o: menubarmodedit.cpp
controle.o: controle.cpp $(COMMON) controle.o: controle.cpp
cursors.o: cursors.cpp $(COMMON) cursors.o: cursors.cpp
tool_onrightclick.o: tool_onrightclick.cpp $(COMMON) tool_onrightclick.o: tool_onrightclick.cpp
files.o: files.cpp $(COMMON) files.o: files.cpp
export_gencad.o: export_gencad.cpp $(COMMON) export_gencad.o: export_gencad.cpp
wxprint.o: ../share/wxprint.cpp ../share/dialog_print.cpp ../share/dialog_print.h $(COMMON) wxprint.o: ../share/wxprint.cpp ../share/dialog_print.cpp ../share/dialog_print.h
$(CXX) -c $(EDACPPFLAGS) -o $@ ../share/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../share/$*.cpp
lay2plot.o: lay2plot.cpp $(COMMON) lay2plot.o: lay2plot.cpp
classpcb.o: classpcb.cpp $(COMMON) classpcb.o: classpcb.cpp
class_track.o: class_track.cpp class_track.h $(COMMON) class_track.o: class_track.cpp class_track.h
class_mire.o: class_mire.cpp class_mire.h $(COMMON) class_mire.o: class_mire.cpp class_mire.h
class_cotation.o: class_cotation.cpp class_cotation.h $(COMMON) class_cotation.o: class_cotation.cpp class_cotation.h
class_pad.o: class_pad.cpp $(COMMON) class_pad.o: class_pad.cpp
class_equipot.o: class_equipot.cpp $(COMMON) class_equipot.o: class_equipot.cpp
class_module.o: class_module.cpp $(COMMON) class_module.o: class_module.cpp
class_edge_mod.o: class_edge_mod.cpp $(COMMON) class_edge_mod.o: class_edge_mod.cpp
class_text_mod.o: class_text_mod.cpp $(COMMON) class_text_mod.o: class_text_mod.cpp
class_pcb_text.o: class_pcb_text.cpp class_pcb_text.h $(COMMON) class_pcb_text.o: class_pcb_text.cpp class_pcb_text.h
pcbnew.o: pcbnew.cpp pcbnew.h pcbplot.h drag.h $(COMMON) \ pcbnew.o: pcbnew.cpp pcbnew.h pcbplot.h drag.h \
autorout.h ../include/eda_dde.h autorout.h ../include/eda_dde.h
pcbcfg.o: pcbcfg.cpp $(COMMON) pcbcfg.h pcbplot.h pcbcfg.o: pcbcfg.cpp pcbcfg.h pcbplot.h
netlist.o: netlist.cpp dialog_netlist.cpp dialog_netlist.h $(COMMON) netlist.o: netlist.cpp dialog_netlist.cpp dialog_netlist.h
gen_modules_placefile.o: gen_modules_placefile.cpp $(COMMON) gen_modules_placefile.o: gen_modules_placefile.cpp
xchgmod.o: xchgmod.cpp $(COMMON) xchgmod.o: xchgmod.cpp
swap_layers.o: swap_layers.cpp $(COMMON) swap_layers.o: swap_layers.cpp
tracepcb.o: tracepcb.cpp $(COMMON) tracepcb.o: tracepcb.cpp
tracemod.o: tracemod.cpp ../include/grfonte.h $(COMMON) tracemod.o: tracemod.cpp ../include/grfonte.h
trpiste.o: trpiste.cpp $(COMMON) trpiste.o: trpiste.cpp
surbrill.o: surbrill.cpp $(COMMON) surbrill.o: surbrill.cpp
pcbtexte.o: pcbtexte.cpp $(COMMON) pcbtexte.o: pcbtexte.cpp
locate.o: locate.cpp $(COMMON) locate.o: locate.cpp
modules.o: modules.cpp drag.h $(COMMON) modules.o: modules.cpp drag.h
autoplac.o: autoplac.cpp autorout.h $(COMMON) autoplac.o: autoplac.cpp autorout.h
automove.o: automove.cpp autorout.h $(COMMON) automove.o: automove.cpp autorout.h
loadcmp.o: loadcmp.cpp $(COMMON) loadcmp.o: loadcmp.cpp
zoom.o: ../share/zoom.cpp $(COMMON) zoom.o: ../share/zoom.cpp
$(CXX) -c $(EDACPPFLAGS) -o $@ ../share/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../share/$*.cpp
affiche.o: affiche.cpp $(COMMON) affiche.o: affiche.cpp
tr_modif.o: tr_modif.cpp $(COMMON) tr_modif.o: tr_modif.cpp
dialog_setup_libs.o: dialog_setup_libs.cpp $(COMMON) dialog_setup_libs.o: dialog_setup_libs.cpp
initpcb.o: initpcb.cpp dialog_initpcb.cpp dialog_initpcb.h $(COMMON) initpcb.o: initpcb.cpp dialog_initpcb.cpp dialog_initpcb.h
editrack.o: editrack.cpp $(COMMON) editrack.o: editrack.cpp
attribut.o: attribut.cpp $(COMMON) attribut.o: attribut.cpp
deltrack.o: deltrack.cpp $(COMMON) deltrack.o: deltrack.cpp
track.o: track.cpp $(COMMON) track.o: track.cpp
edit_track_width.o: edit_track_width.cpp $(COMMON) edit_track_width.o: edit_track_width.cpp
editmod.o: editmod.cpp dialog_edit_module.cpp dialog_edit_module.h $(COMMON) editmod.o: editmod.cpp dialog_edit_module.cpp dialog_edit_module.h
move-drag_pads.o: move-drag_pads.cpp drag.h $(COMMON) move-drag_pads.o: move-drag_pads.cpp drag.h
editedge.o: editedge.cpp $(COMMON) editedge.o: editedge.cpp
cotation.o: cotation.cpp $(COMMON) cotation.o: cotation.cpp
edtxtmod.o: edtxtmod.cpp $(COMMON) edtxtmod.o: edtxtmod.cpp
dialog_edit_mod_text.o: dialog_edit_mod_text.cpp dialog_edit_mod_text.h $(COMMON) dialog_edit_mod_text.o: dialog_edit_mod_text.cpp dialog_edit_mod_text.h
ratsnest.o: ratsnest.cpp $(COMMON) ratsnest.o: ratsnest.cpp
connect.o: connect.cpp $(COMMON) connect.o: connect.cpp
drc.o: drc.cpp dialog_drc.cpp dialog_drc.h autorout.h $(COMMON) drc.o: drc.cpp dialog_drc.cpp dialog_drc.h autorout.h
block.o: block.cpp $(COMMON) block.o: block.cpp
clean.o: clean.cpp cleaningoptions_dialog.cpp cleaningoptions_dialog.h $(COMMON) clean.o: clean.cpp cleaningoptions_dialog.cpp cleaningoptions_dialog.h
pcbplot.o: pcbplot.cpp pcbplot.h $(COMMON) pcbplot.o: pcbplot.cpp pcbplot.h
plothpgl.o: plothpgl.cpp $(COMMON) plothpgl.o: plothpgl.cpp
plotgerb.o: plotgerb.cpp pcbplot.h plotgerb.h $(COMMON) plotgerb.o: plotgerb.cpp pcbplot.h plotgerb.h
plotps.o: plotps.cpp pcbplot.h $(COMMON) plotps.o: plotps.cpp pcbplot.h
readgerb.o: readgerb.cpp pcbplot.h $(COMMON) readgerb.o: readgerb.cpp pcbplot.h
plot_rtn.o: plot_rtn.cpp pcbplot.h $(COMMON) plot_rtn.o: plot_rtn.cpp pcbplot.h
gendrill.o: gendrill.cpp dialog_gendrill.cpp dialog_gendrill.h pcbplot.h $(COMMON) gendrill.o: gendrill.cpp dialog_gendrill.cpp dialog_gendrill.h pcbplot.h
librairi.o: librairi.cpp $(COMMON) librairi.o: librairi.cpp
edgemod.o: edgemod.cpp $(COMMON) edgemod.o: edgemod.cpp
muonde.o: muonde.cpp drag.h gen_self.h $(COMMON) muonde.o: muonde.cpp drag.h gen_self.h
autorout.o: autorout.cpp cell.h autorout.h $(COMMON) autorout.o: autorout.cpp cell.h autorout.h
solve.o: solve.cpp cell.h autorout.h $(COMMON) solve.o: solve.cpp cell.h autorout.h
work.o: work.cpp cell.h autorout.h $(COMMON) work.o: work.cpp cell.h autorout.h
queue.o: queue.cpp cell.h autorout.h $(COMMON) queue.o: queue.cpp cell.h autorout.h
board.o: board.cpp cell.h autorout.h $(COMMON) board.o: board.cpp cell.h autorout.h
dist.o: dist.cpp cell.h autorout.h $(COMMON) dist.o: dist.cpp cell.h autorout.h
graphpcb.o: graphpcb.cpp cell.h autorout.h $(COMMON) graphpcb.o: graphpcb.cpp cell.h autorout.h
zones.o: zones.cpp cell.h $(COMMON) zones.o: zones.cpp cell.h
zones_by_polygon.o: zones_by_polygon.cpp $(COMMON) zones_by_polygon.o: zones_by_polygon.cpp
undelete.o: undelete.cpp $(COMMON) undelete.o: undelete.cpp
move_or_drag_track.o: move_or_drag_track.cpp $(COMMON) move_or_drag_track.o: move_or_drag_track.cpp
ioascii.o: ioascii.cpp $(COMMON) ioascii.o: ioascii.cpp
coordbox.o: coordbox.cpp $(COMMON) coordbox.o: coordbox.cpp
mirepcb.o: mirepcb.cpp $(COMMON) mirepcb.o: mirepcb.cpp
dragsegm.o: dragsegm.cpp drag.h $(COMMON) dragsegm.o: dragsegm.cpp drag.h
router.o: router.cpp $(COMMON) router.o: router.cpp
collectors.o: collectors.cpp collectors.h $(COMMON) collectors.o: collectors.cpp collectors.h

View File

@ -919,14 +919,12 @@ int WinEDA_PcbFrame::Fill_Zone( wxDC* DC, ZONE_CONTAINER* zone_container, bool v
/************************************************************/ /************************************************************/
int WinEDA_PcbFrame::Fill_All_Zones( wxDC* DC, bool verbose ) int WinEDA_PcbFrame::Fill_All_Zones( bool verbose )
/************************************************************/ /************************************************************/
/** Function Fill_All_Zones() /** Function Fill_All_Zones()
* Fill all zones on the board * Fill all zones on the board
* The old fillings are removed * The old fillings are removed
* @param frame = reference to the main frame
* @param DC = current Device Context
* @param verbose = true to show error messages * @param verbose = true to show error messages
* @return error level (0 = no error) * @return error level (0 = no error)
*/ */