From aa6beaaba03c2ad2422f3270be7fd2dcccfd63a2 Mon Sep 17 00:00:00 2001
From: unknown
Date: Sun, 14 Feb 2016 10:47:07 +0100
Subject: [PATCH 01/41] Python footprint generators: fix a typo and fix text
size (accordance KLC 6.9)
---
pcbnew/scripting/plugins/HelpfulFootprintWizardPlugin.py | 4 ++--
pcbnew/scripting/plugins/sdip_wizard.py | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/pcbnew/scripting/plugins/HelpfulFootprintWizardPlugin.py b/pcbnew/scripting/plugins/HelpfulFootprintWizardPlugin.py
index 90d2498f39..6c4c54e125 100644
--- a/pcbnew/scripting/plugins/HelpfulFootprintWizardPlugin.py
+++ b/pcbnew/scripting/plugins/HelpfulFootprintWizardPlugin.py
@@ -248,7 +248,7 @@ class HelpfulFootprintWizardPlugin(pcbnew.FootprintWizardPlugin,
def GetValue(self):
raise NotImplementedError
- # this value come from our KiCad Library Convention 0.11
+ # this value come from our KiCad Library Convention 1.0
def GetReferencePrefix(self):
return "REF"
@@ -259,7 +259,7 @@ class HelpfulFootprintWizardPlugin(pcbnew.FootprintWizardPlugin,
"""
IPC nominal
"""
- return pcbnew.FromMM(1.2)
+ return pcbnew.FromMM(1.0)
def GetTextThickness(self):
"""
diff --git a/pcbnew/scripting/plugins/sdip_wizard.py b/pcbnew/scripting/plugins/sdip_wizard.py
index 078d3158a0..12e308252e 100644
--- a/pcbnew/scripting/plugins/sdip_wizard.py
+++ b/pcbnew/scripting/plugins/sdip_wizard.py
@@ -37,7 +37,7 @@ class RowedGridArray(PA.PadGridArray):
class RowedFootprint(HFPW.HelpfulFootprintWizardPlugin):
- pad_count_key = 'pas count'
+ pad_count_key = 'pad count'
row_count_key = 'row count'
row_spacing_key = 'row spacing'
pad_length_key = 'pad length'
@@ -114,7 +114,7 @@ class RowedFootprint(HFPW.HelpfulFootprintWizardPlugin):
self.draw.Box(0, 0, sizex, sizey)
# restore line thickness to previous value
self.draw.SetLineThickness(pcbnew.FromMM(cmargin))
-
+
#reference and value
text_size = self.GetTextSize() # IPC nominal
From 8931df339efd672c7f9699247377ae845653ec6c Mon Sep 17 00:00:00 2001
From: jean-pierre charras
Date: Mon, 15 Feb 2016 09:55:10 +0100
Subject: [PATCH 02/41] Fix incorrect assertion failure in specctra export,
when a footprint contains segments on edge.cut layer (Bug #1545546)
---
pcbnew/specctra_export.cpp | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/pcbnew/specctra_export.cpp b/pcbnew/specctra_export.cpp
index 7b760b4ae2..911a23c831 100644
--- a/pcbnew/specctra_export.cpp
+++ b/pcbnew/specctra_export.cpp
@@ -289,7 +289,7 @@ static DRAWSEGMENT* findPoint( const wxPoint& aPoint, ::PCB_TYPE_COLLECTOR* item
DRAWSEGMENT* graphic = (DRAWSEGMENT*) (*items)[i];
unsigned d;
- wxASSERT( graphic->Type() == PCB_LINE_T );
+ wxASSERT( graphic->Type() == PCB_LINE_T || graphic->Type() == PCB_MODULE_EDGE_T );
switch( graphic->GetShape() )
{
@@ -348,7 +348,7 @@ static DRAWSEGMENT* findPoint( const wxPoint& aPoint, ::PCB_TYPE_COLLECTOR* item
#if defined(DEBUG)
if( items->GetCount() )
{
- printf( "Unable to find segment matching point (%.6g,%.6g) (seg count %d)\n",
+ printf( "Unable to find segment matching point (%.6g;%.6g) (seg count %d)\n",
IU2um( aPoint.x )/1000, IU2um( aPoint.y )/1000,
items->GetCount());
@@ -356,13 +356,22 @@ static DRAWSEGMENT* findPoint( const wxPoint& aPoint, ::PCB_TYPE_COLLECTOR* item
{
DRAWSEGMENT* graphic = (DRAWSEGMENT*) (*items)[i];
- printf( "item %d, type=%s, start=%.6g %.6g end=%.6g,%.6g\n",
- i + 1,
- TO_UTF8( BOARD_ITEM::ShowShape( graphic->GetShape() ) ),
- IU2um( graphic->GetStart().x )/1000,
- IU2um( graphic->GetStart().y )/1000,
- IU2um( graphic->GetEnd().x )/1000,
- IU2um( graphic->GetEnd().y )/1000 );
+ if( graphic->GetShape() == S_ARC )
+ printf( "item %d, type=%s, start=%.6g;%.6g end=%.6g;%.6g\n",
+ i + 1,
+ TO_UTF8( BOARD_ITEM::ShowShape( graphic->GetShape() ) ),
+ IU2um( graphic->GetArcStart().x )/1000,
+ IU2um( graphic->GetArcStart().y )/1000,
+ IU2um( graphic->GetArcEnd().x )/1000,
+ IU2um( graphic->GetArcEnd().y )/1000 );
+ else
+ printf( "item %d, type=%s, start=%.6g;%.6g end=%.6g;%.6g\n",
+ i + 1,
+ TO_UTF8( BOARD_ITEM::ShowShape( graphic->GetShape() ) ),
+ IU2um( graphic->GetStart().x )/1000,
+ IU2um( graphic->GetStart().y )/1000,
+ IU2um( graphic->GetEnd().x )/1000,
+ IU2um( graphic->GetEnd().y )/1000 );
}
}
#endif
From 90d6e7568eca684c2c20342ef15cb0cb3da68230 Mon Sep 17 00:00:00 2001
From: jean-pierre charras
Date: Mon, 15 Feb 2016 14:16:49 +0100
Subject: [PATCH 03/41] Gerbview: fix Bug #1511654 (incorrect rendering of some
filled polygons in some Gerber files)
---
gerbview/rs274d.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gerbview/rs274d.cpp b/gerbview/rs274d.cpp
index 3d8ec5473b..1d35338833 100644
--- a/gerbview/rs274d.cpp
+++ b/gerbview/rs274d.cpp
@@ -548,6 +548,7 @@ bool GERBER_IMAGE::Execute_G_Command( char*& text, int G_command )
case GC_TURN_ON_POLY_FILL:
m_PolygonFillMode = true;
+ m_Exposure = false;
break;
case GC_TURN_OFF_POLY_FILL:
@@ -617,7 +618,7 @@ bool GERBER_IMAGE::Execute_DCODE_Command( char*& text, int D_commande )
switch( D_commande )
{
case 1: // code D01 Draw line, exposure ON
- if( !m_Exposure )
+ if( !m_Exposure ) // Start a new polygon outline:
{
m_Exposure = true;
gbritem = new GERBER_DRAW_ITEM( layout, this );
From 5b1a5cbdce911308b3d59ca8375cd2cafac2b6fd Mon Sep 17 00:00:00 2001
From: jean-pierre charras
Date: Mon, 15 Feb 2016 16:58:35 +0100
Subject: [PATCH 04/41] Eeschema: Files menu: better name and better comment
for the Import sheet content from a project in the current sheep command.
---
eeschema/menubar.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eeschema/menubar.cpp b/eeschema/menubar.cpp
index 944220ea23..1900519954 100644
--- a/eeschema/menubar.cpp
+++ b/eeschema/menubar.cpp
@@ -100,8 +100,8 @@ void SCH_EDIT_FRAME::ReCreateMenuBar()
}
AddMenuItem( fileMenu,
- ID_APPEND_PROJECT, _( "App&end Schematic Sheet" ),
- _( "Append schematic sheet to current project" ),
+ ID_APPEND_PROJECT, _( "Imp&ort Schematic Sheet Content" ),
+ _( "Import a schematic sheet content from an other project in the current sheet" ),
KiBitmap( open_document_xpm ) );
fileMenu->AppendSeparator();
From 86d072b5d13e10b6274aecc9200d82c7934d96e6 Mon Sep 17 00:00:00 2001
From: Simon Richter
Date: Mon, 15 Feb 2016 18:48:40 +0100
Subject: [PATCH 05/41] FindwxWidgets.cmake: Remove arguments from else() and
end*()
To reduce differences with upstream FindwxWidgets.cmake, use their style of
ending blocks.
---
CMakeModules/FindwxWidgets.cmake | 204 +++++++++++++++----------------
1 file changed, 101 insertions(+), 103 deletions(-)
diff --git a/CMakeModules/FindwxWidgets.cmake b/CMakeModules/FindwxWidgets.cmake
index 5a21f75f41..55e057dfd9 100644
--- a/CMakeModules/FindwxWidgets.cmake
+++ b/CMakeModules/FindwxWidgets.cmake
@@ -151,10 +151,10 @@
# two versions for controlling how verbose your output should be.
macro(dbg_msg _MSG)
# message(STATUS "${_MSG}")
-endmacro(dbg_msg)
+endmacro()
macro(dbg_msg_v _MSG)
# message(STATUS "${_MSG}")
-endmacro(dbg_msg_v)
+endmacro()
# Clear return values in case the module is loaded more than once.
set(wxWidgets_FOUND FALSE)
@@ -171,7 +171,7 @@ set(wxWidgets_CXX_FLAGS "")
# - else set wxWidgets_FIND_COMPONENTS to wxWidgets_USE_LIBS
if(wxWidgets_USE_LIBS AND NOT wxWidgets_FIND_COMPONENTS)
set(wxWidgets_FIND_COMPONENTS ${wxWidgets_USE_LIBS})
-endif(wxWidgets_USE_LIBS AND NOT wxWidgets_FIND_COMPONENTS)
+endif()
dbg_msg("wxWidgets_FIND_COMPONENTS : ${wxWidgets_FIND_COMPONENTS}")
# Add the convenience use file if available.
@@ -187,9 +187,9 @@ get_filename_component(
if(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
set(wxWidgets_USE_FILE
"${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
-else(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
+else()
set(wxWidgets_USE_FILE UsewxWidgets)
-endif(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
+endif()
#=====================================================================
#=====================================================================
@@ -218,17 +218,17 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
if(NOT wxWidgets_FIND_COMPONENTS)
if(wxWidgets_USE_MONOLITHIC)
set(wxWidgets_FIND_COMPONENTS mono)
- else(wxWidgets_USE_MONOLITHIC)
+ else()
set(wxWidgets_FIND_COMPONENTS core base) # this is default
- endif(wxWidgets_USE_MONOLITHIC)
- endif(NOT wxWidgets_FIND_COMPONENTS)
+ endif()
+ endif()
# Add the common (usually required libs) unless
# wxWidgets_EXCLUDE_COMMON_LIBRARIES has been set.
if(NOT wxWidgets_EXCLUDE_COMMON_LIBRARIES)
list(APPEND wxWidgets_FIND_COMPONENTS
${wxWidgets_COMMON_LIBRARIES})
- endif(NOT wxWidgets_EXCLUDE_COMMON_LIBRARIES)
+ endif()
#-------------------------------------------------------------------
# WIN32: Helper MACROS
@@ -243,9 +243,9 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
string(REGEX REPLACE "msw.*(u)[d]*$" "u" ${_UCD} "${_CONFIGURATION}")
if(${_UCD} STREQUAL ${_CONFIGURATION})
set(${_UCD} "")
- endif(${_UCD} STREQUAL ${_CONFIGURATION})
+ endif()
string(REGEX MATCH "d$" ${_DBG} "${_CONFIGURATION}")
- endmacro(wx_get_name_components)
+ endmacro()
#
# Find libraries associated to a configuration.
@@ -267,7 +267,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
NO_DEFAULT_PATH
)
mark_as_advanced(WX_${LIB}${_DBG})
- endforeach(LIB)
+ endforeach()
dbg_msg( "WX_LIB_DIR:${WX_LIB_DIR}" )
@@ -299,7 +299,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
NO_DEFAULT_PATH
)
mark_as_advanced(WX_${LIB}${_DBG})
- endforeach(LIB)
+ endforeach()
# Find wxWidgets monolithic library.
find_library(WX_mono${_DBG}
@@ -332,8 +332,8 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
NO_DEFAULT_PATH
)
mark_as_advanced(WX_${LIB}${_DBG})
- endforeach(LIB)
- endmacro(wx_find_libs)
+ endforeach()
+ endmacro()
#
# Clear all library paths, so that FIND_LIBRARY refinds them.
@@ -343,19 +343,19 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
set(${_LIB} "${_LIB}-NOTFOUND" CACHE FILEPATH "Cleared." FORCE)
set(${_LIB}_FOUND FALSE)
mark_as_advanced(${_LIB})
- endmacro(wx_clear_lib)
+ endmacro()
# Clear all debug or release library paths (arguments are "d" or "").
macro(wx_clear_all_libs _DBG)
# Clear wxWidgets common libraries.
foreach(LIB ${wxWidgets_COMMON_LIBRARIES} scintilla)
wx_clear_lib(WX_${LIB}${_DBG})
- endforeach(LIB)
+ endforeach()
# Clear wxWidgets multilib base libraries.
wx_clear_lib(WX_base${_DBG})
foreach(LIB net odbc xml)
wx_clear_lib(WX_${LIB}${_DBG})
- endforeach(LIB)
+ endforeach()
# Clear wxWidgets monolithic library.
wx_clear_lib(WX_mono${_DBG})
@@ -364,16 +364,16 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
foreach(LIB core adv aui html media xrc dbgrid gl qa richtext
webview stc ribbon propgrid)
wx_clear_lib(WX_${LIB}${_DBG})
- endforeach(LIB)
- endmacro(wx_clear_all_libs)
+ endforeach()
+ endmacro()
# Clear all wxWidgets debug libraries.
macro(wx_clear_all_dbg_libs)
wx_clear_all_libs("d")
- endmacro(wx_clear_all_dbg_libs)
+ endmacro()
# Clear all wxWidgets release libraries.
macro(wx_clear_all_rel_libs)
wx_clear_all_libs("")
- endmacro(wx_clear_all_rel_libs)
+ endmacro()
#
# Set the wxWidgets_LIBRARIES variable.
@@ -391,35 +391,35 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
list(APPEND wxWidgets_LIBRARIES
debug ${WX_${LIB}d} optimized ${WX_${LIB}}
)
- else(WX_${LIB} AND WX_${LIB}d)
+ else()
dbg_msg_v("- not found due to missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}")
set(wxWidgets_FOUND FALSE)
- endif(WX_${LIB} AND WX_${LIB}d)
- endforeach(LIB)
- else(WX_USE_REL_AND_DBG)
+ endif()
+ endforeach()
+ else()
foreach(LIB ${${_LIBS}})
dbg_msg_v("Searching for ${LIB}${_DBG}")
dbg_msg_v("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
if(WX_${LIB}${_DBG})
dbg_msg_v("Found ${LIB}${_DBG}")
list(APPEND wxWidgets_LIBRARIES ${WX_${LIB}${_DBG}})
- else(WX_${LIB}${_DBG})
+ else()
dbg_msg_v(
"- not found due to missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}")
set(wxWidgets_FOUND FALSE)
- endif(WX_${LIB}${_DBG})
- endforeach(LIB)
- endif(WX_USE_REL_AND_DBG)
+ endif()
+ endforeach()
+ endif()
dbg_msg_v("OpenGL")
list(FIND ${_LIBS} gl WX_USE_GL)
if(NOT WX_USE_GL EQUAL -1)
dbg_msg_v("- is required.")
list(APPEND wxWidgets_LIBRARIES opengl32 glu32)
- endif(NOT WX_USE_GL EQUAL -1)
+ endif()
list(APPEND wxWidgets_LIBRARIES winmm comctl32 rpcrt4 wsock32)
- endmacro(wx_set_libraries)
+ endmacro()
#-------------------------------------------------------------------
# WIN32: Start actual work.
@@ -481,7 +481,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
CACHE INTERNAL "wxWidgets_ROOT_DIR")
set(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND"
CACHE PATH "Cleared." FORCE)
- endif(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR)
+ endif()
if(WX_ROOT_DIR)
dbg_msg( "WX_ROOT_DIR == wxWidgets_ROOT_DIR" )
@@ -492,9 +492,9 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
if(MINGW)
dbg_msg( "MINGW" )
set(WX_LIB_DIR_PREFIX gcc)
- else(MINGW)
+ else()
set(WX_LIB_DIR_PREFIX vc)
- endif(MINGW)
+ endif()
if(BUILD_SHARED_LIBS)
dbg_msg( "BUILD_SHARED_LIBS" )
find_path(wxWidgets_LIB_DIR
@@ -513,7 +513,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
DOC "Path to wxWidgets libraries?"
NO_DEFAULT_PATH
)
- else(BUILD_SHARED_LIBS)
+ else()
dbg_msg( "!BUILD_SHARED_LIBS WX_LIB_DIR:${WX_LIB_DIR}" )
find_path(wxWidgets_LIB_DIR
NAMES
@@ -531,21 +531,21 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
DOC "Path to wxWidgets libraries?"
NO_DEFAULT_PATH
)
- endif(BUILD_SHARED_LIBS)
+ endif()
# If wxWidgets_LIB_DIR changed, clear all libraries.
if(NOT WX_LIB_DIR STREQUAL wxWidgets_LIB_DIR)
set(WX_LIB_DIR ${wxWidgets_LIB_DIR} CACHE INTERNAL "wxWidgets_LIB_DIR")
wx_clear_all_dbg_libs()
wx_clear_all_rel_libs()
- endif(NOT WX_LIB_DIR STREQUAL wxWidgets_LIB_DIR)
+ endif()
if(WX_LIB_DIR)
# If building shared libs, define WXUSINGDLL to use dllimport.
if(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*")
set(wxWidgets_DEFINITIONS WXUSINGDLL)
dbg_msg_v("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}")
- endif(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*")
+ endif()
# Search for available configuration types.
foreach(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw)
@@ -554,8 +554,8 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
list(APPEND WX_CONFIGURATION_LIST ${CFG})
set(WX_${CFG}_FOUND TRUE)
set(WX_CONFIGURATION ${CFG})
- endif(EXISTS ${WX_LIB_DIR}/${CFG})
- endforeach(CFG)
+ endif()
+ endforeach()
dbg_msg_v("WX_CONFIGURATION_LIST=${WX_CONFIGURATION_LIST}")
if(WX_CONFIGURATION)
@@ -568,24 +568,24 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
if(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
set(wxWidgets_CONFIGURATION ${WX_CONFIGURATION} CACHE STRING
"Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
- else(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
+ else()
set(wxWidgets_CONFIGURATION ${wxWidgets_CONFIGURATION} CACHE STRING
"Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
- endif(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
+ endif()
# If release config selected, and both release/debug exist.
if(WX_${wxWidgets_CONFIGURATION}d_FOUND)
OPTION(wxWidgets_USE_REL_AND_DBG
"Use release and debug configurations?" TRUE)
set(WX_USE_REL_AND_DBG ${wxWidgets_USE_REL_AND_DBG})
- else(WX_${wxWidgets_CONFIGURATION}d_FOUND)
+ else()
# If the option exists (already in cache), force it false.
if(wxWidgets_USE_REL_AND_DBG)
set(wxWidgets_USE_REL_AND_DBG FALSE CACHE BOOL
"No ${wxWidgets_CONFIGURATION}d found." FORCE)
- endif(wxWidgets_USE_REL_AND_DBG)
+ endif()
set(WX_USE_REL_AND_DBG FALSE)
- endif(WX_${wxWidgets_CONFIGURATION}d_FOUND)
+ endif()
# Get configuration parameters from the name.
wx_get_name_components(${wxWidgets_CONFIGURATION} UNV UCD DBG)
@@ -594,24 +594,24 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
if(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
set(wxWidgets_INCLUDE_DIRS
${WX_LIB_DIR}/${wxWidgets_CONFIGURATION})
- else(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
+ else()
dbg_msg("wxWidgets_FOUND FALSE because ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.")
set(wxWidgets_FOUND FALSE)
- endif(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
+ endif()
# Set wxWidgets main include directory.
if(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
list(APPEND wxWidgets_INCLUDE_DIRS ${WX_ROOT_DIR}/include)
- else(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
+ else()
dbg_msg("wxWidgets_FOUND FALSE because WX_ROOT_DIR=${WX_ROOT_DIR} has no ${WX_ROOT_DIR}/include/wx/wx.h")
set(wxWidgets_FOUND FALSE)
- endif(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
+ endif()
# Find wxWidgets libraries.
wx_find_libs("${UNV}" "${UCD}" "${DBG}")
if(WX_USE_REL_AND_DBG)
wx_find_libs("${UNV}" "${UCD}" "d")
- endif(WX_USE_REL_AND_DBG)
+ endif()
# Settings for requested libs (i.e., include dir, libraries, etc.).
wx_set_libraries(wxWidgets_FIND_COMPONENTS "${DBG}")
@@ -619,19 +619,19 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
# Add necessary definitions for unicode builds
if("${UCD}" STREQUAL "u")
list(APPEND wxWidgets_DEFINITIONS UNICODE _UNICODE)
- endif("${UCD}" STREQUAL "u")
+ endif()
# Add necessary definitions for debug builds
set(wxWidgets_DEFINITIONS_DEBUG _DEBUG __WXDEBUG__)
- endif(WX_CONFIGURATION)
- endif(WX_LIB_DIR)
- endif(WX_ROOT_DIR)
+ endif()
+ endif()
+ endif()
#=====================================================================
# UNIX_FIND_STYLE
#=====================================================================
-else(wxWidgets_FIND_STYLE STREQUAL "win32")
+else()
dbg_msg("NOT win32 path")
if(wxWidgets_FIND_STYLE STREQUAL "unix")
@@ -656,16 +656,16 @@ else(wxWidgets_FIND_STYLE STREQUAL "win32")
string(TOUPPER ${_opt_name} _upper_opt_name)
if(_wx_selected_config MATCHES ".*${_opt_name}.*")
set(wxWidgets_DEFAULT_${_upper_opt_name} ON)
- else(_wx_selected_config MATCHES ".*${_opt_name}.*")
+ else()
set(wxWidgets_DEFAULT_${_upper_opt_name} OFF)
- endif(_wx_selected_config MATCHES ".*${_opt_name}.*")
- endforeach(_opt_name)
- else(_wx_result EQUAL 0)
+ endif()
+ endforeach()
+ else()
foreach(_upper_opt_name DEBUG STATIC UNICODE UNIVERSAL)
set(wxWidgets_DEFAULT_${_upper_opt_name} OFF)
- endforeach(_upper_opt_name)
- endif(_wx_result EQUAL 0)
- endmacro(wx_config_select_get_default)
+ endforeach()
+ endif()
+ endmacro()
#
# Query a boolean configuration option to determine if the system
@@ -691,17 +691,17 @@ else(wxWidgets_FIND_STYLE STREQUAL "win32")
if(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0)
OPTION(wxWidgets_USE_${_UPPER_OPT_NAME}
${_OPT_HELP} ${wxWidgets_DEFAULT_${_UPPER_OPT_NAME}})
- else(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0)
+ else()
# If option exists (already in cache), force to available one.
if(DEFINED wxWidgets_USE_${_UPPER_OPT_NAME})
if(_wx_result_yes EQUAL 0)
set(wxWidgets_USE_${_UPPER_OPT_NAME} ON CACHE BOOL ${_OPT_HELP} FORCE)
- else(_wx_result_yes EQUAL 0)
+ else()
set(wxWidgets_USE_${_UPPER_OPT_NAME} OFF CACHE BOOL ${_OPT_HELP} FORCE)
- endif(_wx_result_yes EQUAL 0)
- endif(DEFINED wxWidgets_USE_${_UPPER_OPT_NAME})
- endif(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0)
- endmacro(wx_config_select_query_bool)
+ endif()
+ endif()
+ endif()
+ endmacro()
#
# Set wxWidgets_SELECT_OPTIONS to wx-config options for selecting
@@ -714,12 +714,12 @@ else(wxWidgets_FIND_STYLE STREQUAL "win32")
if(DEFINED wxWidgets_USE_${_upper_opt_name})
if(wxWidgets_USE_${_upper_opt_name})
list(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=yes)
- else(wxWidgets_USE_${_upper_opt_name})
+ else()
list(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=no)
- endif(wxWidgets_USE_${_upper_opt_name})
- endif(DEFINED wxWidgets_USE_${_upper_opt_name})
- endforeach(_opt_name)
- endmacro(wx_config_select_set_options)
+ endif()
+ endif()
+ endforeach()
+ endmacro()
#-----------------------------------------------------------------
# UNIX: Start actual work.
@@ -786,10 +786,10 @@ else(wxWidgets_FIND_STYLE STREQUAL "win32")
dbg_msg_v("wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}")
dbg_msg_v("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
- else(RET EQUAL 0)
+ else()
set(wxWidgets_FOUND FALSE)
dbg_msg_v("${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
- endif(RET EQUAL 0)
+ endif()
# run the wx-config program to get the libs
# - NOTE: wx-config doesn't verify that the libs requested exist
@@ -823,11 +823,10 @@ else(wxWidgets_FIND_STYLE STREQUAL "win32")
dbg_msg_v("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}")
dbg_msg_v("wxWidgets_LIBRARY_DIRS=${wxWidgets_LIBRARY_DIRS}")
- else(RET EQUAL 0)
+ else()
set(wxWidgets_FOUND FALSE)
- dbg_msg("${wxWidgets_CONFIG_EXECUTABLE} --libs ${wxWidgets_FIND_COMPONENTS} FAILED with RET=${RET}")
- endif(RET EQUAL 0)
- endif(wxWidgets_CONFIG_EXECUTABLE)
+ endif()
+ endif()
# When using wx-config in MSYS, the include paths are UNIX style paths which may or may
# not work correctly depending on you MSYS/MinGW configuration. CMake expects native
@@ -860,17 +859,16 @@ else(wxWidgets_FIND_STYLE STREQUAL "win32")
#=====================================================================
# Neither UNIX_FIND_STYLE, nor WIN32_FIND_STYLE
#=====================================================================
- else(wxWidgets_FIND_STYLE STREQUAL "unix")
+ else()
if(NOT wxWidgets_FIND_QUIETLY)
message(STATUS
"${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): \n"
" Platform unknown/unsupported. It's neither WIN32 nor UNIX "
"find style."
)
- endif(NOT wxWidgets_FIND_QUIETLY)
- endif(wxWidgets_FIND_STYLE STREQUAL "unix")
-endif(wxWidgets_FIND_STYLE STREQUAL "win32")
-
+ endif()
+ endif()
+endif()
# Check if a specfic version was requested by find_package().
if(wxWidgets_FOUND AND wxWidgets_FIND_VERSION)
@@ -944,7 +942,7 @@ find_program(wxWidgets_wxrc_EXECUTABLE wxrc
# function(wxwidgets_add_resources outfiles)
# wx_split_arguments_on(OPTIONS wxrc_files wxrc_options ${ARGN})
# ...
-# endfunction(wxwidgets_add_resources)
+# endfunction()
#
# wxwidgets_add_resources(sources ${xrc_files} OPTIONS -e -o file.C)
#
@@ -966,18 +964,18 @@ function(wx_split_arguments_on _keyword _leftvar _rightvar)
foreach(element ${ARGN})
if("${element}" STREQUAL "${_keyword}")
set(_doing_right TRUE)
- else("${element}" STREQUAL "${_keyword}")
+ else()
if(_doing_right)
list(APPEND ${_rightvar} "${element}")
- else(_doing_right)
+ else()
list(APPEND ${_leftvar} "${element}")
- endif(_doing_right)
- endif("${element}" STREQUAL "${_keyword}")
- endforeach(element)
+ endif()
+ endif()
+ endforeach()
set(${_leftvar} ${${_leftvar}} PARENT_SCOPE)
set(${_rightvar} ${${_rightvar}} PARENT_SCOPE)
-endfunction(wx_split_arguments_on)
+endfunction()
#
# wx_get_dependencies_from_xml(
@@ -1009,14 +1007,14 @@ function(wx_get_dependencies_from_xml
# make the file have an absolute path
if(NOT IS_ABSOLUTE "${dep_file}")
set(dep_file "${${_depends_path}}/${dep_file}")
- endif(NOT IS_ABSOLUTE "${dep_file}")
+ endif()
# append file to dependency list
list(APPEND ${_depends} "${dep_file}")
- endforeach(dep_file)
+ endforeach()
set(${_depends} ${${_depends}} PARENT_SCOPE)
-endfunction(wx_get_dependencies_from_xml)
+endfunction()
#
# wxwidgets_add_resources(
@@ -1071,7 +1069,7 @@ function(wxwidgets_add_resources _outfiles)
rc_file_contents
depends_path
)
- endforeach(rc_file)
+ endforeach()
#
# Parse options.
@@ -1083,11 +1081,11 @@ function(wxwidgets_add_resources _outfiles)
list(APPEND rc_options --cpp-code)
# wxrc's default output filename for cpp code.
set(outfile resource.cpp)
- else(index EQUAL -1)
+ else()
list(REMOVE_AT rc_options ${index})
# wxrc's default output filename for xrs file.
set(outfile resource.xrs)
- endif(index EQUAL -1)
+ endif()
# Get output name for use in add_custom_command.
# - short option scanning
@@ -1096,18 +1094,18 @@ function(wxwidgets_add_resources _outfiles)
MATH(EXPR filename_index "${index} + 1")
list(GET rc_options ${filename_index} outfile)
#list(REMOVE_AT rc_options ${index} ${filename_index})
- endif(NOT index EQUAL -1)
+ endif()
# - long option scanning
string(REGEX MATCH "--output=[^;]*" outfile_opt "${rc_options}")
if(outfile_opt)
string(REPLACE "--output=" "" outfile "${outfile_opt}")
- endif(outfile_opt)
+ endif()
#string(REGEX REPLACE "--output=[^;]*;?" "" rc_options "${rc_options}")
#string(REGEX REPLACE ";$" "" rc_options "${rc_options}")
if(NOT IS_ABSOLUTE "${outfile}")
set(outfile "${CMAKE_CURRENT_BINARY_DIR}/${outfile}")
- endif(NOT IS_ABSOLUTE "${outfile}")
+ endif()
add_custom_command(
OUTPUT "${outfile}"
COMMAND ${wxWidgets_wxrc_EXECUTABLE} ${rc_options} ${rc_file_list_abs}
@@ -1124,10 +1122,10 @@ function(wxwidgets_add_resources _outfiles)
set_source_files_properties(
"${outfile_header}" PROPERTIES GENERATED TRUE
)
- endif(NOT short_index EQUAL -1 OR NOT long_index EQUAL -1)
+ endif()
# Add generated file to output file list.
list(APPEND ${_outfiles} "${outfile}")
set(${_outfiles} ${${_outfiles}} PARENT_SCOPE)
-endfunction(wxwidgets_add_resources)
+endfunction()
From b7adcb3728ddfcdb9aa0758b42ac14aee8d470ac Mon Sep 17 00:00:00 2001
From: Simon Richter
Date: Mon, 15 Feb 2016 18:48:40 +0100
Subject: [PATCH 06/41] FindwxWidgets.cmake: drop a few dbg_msg invocations
---
CMakeModules/FindwxWidgets.cmake | 18 ------------------
1 file changed, 18 deletions(-)
diff --git a/CMakeModules/FindwxWidgets.cmake b/CMakeModules/FindwxWidgets.cmake
index 55e057dfd9..0d10c51c25 100644
--- a/CMakeModules/FindwxWidgets.cmake
+++ b/CMakeModules/FindwxWidgets.cmake
@@ -196,11 +196,9 @@ endif()
if(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT CMAKE_HOST_UNIX )
- dbg_msg( "setting win32 style" )
set(wxWidgets_FIND_STYLE "win32")
else()
if(CMAKE_HOST_UNIX OR MSYS)
- dbg_msg( "unix style" )
set(wxWidgets_FIND_STYLE "unix")
endif()
endif()
@@ -209,8 +207,6 @@ endif()
# WIN32_FIND_STYLE
#=====================================================================
if(wxWidgets_FIND_STYLE STREQUAL "win32")
- dbg_msg("Using win32 path")
-
# Useful common wx libs needed by almost all components.
set(wxWidgets_COMMON_LIBRARIES png tiff jpeg zlib regex expat)
@@ -269,8 +265,6 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
mark_as_advanced(WX_${LIB}${_DBG})
endforeach()
- dbg_msg( "WX_LIB_DIR:${WX_LIB_DIR}" )
-
# Find wxWidgets multilib base libraries.
find_library(WX_base${_DBG}
NAMES
@@ -475,8 +469,6 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
# If wxWidgets_ROOT_DIR changed, clear lib dir.
if(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR)
- dbg_msg( "WX_ROOT_DIR != wxWidgets_ROOT_DIR" )
-
set(WX_ROOT_DIR ${wxWidgets_ROOT_DIR}
CACHE INTERNAL "wxWidgets_ROOT_DIR")
set(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND"
@@ -484,19 +476,15 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
endif()
if(WX_ROOT_DIR)
- dbg_msg( "WX_ROOT_DIR == wxWidgets_ROOT_DIR" )
-
# Select one default tree inside the already determined wx tree.
# Prefer static/shared order usually consistent with build
# settings.
if(MINGW)
- dbg_msg( "MINGW" )
set(WX_LIB_DIR_PREFIX gcc)
else()
set(WX_LIB_DIR_PREFIX vc)
endif()
if(BUILD_SHARED_LIBS)
- dbg_msg( "BUILD_SHARED_LIBS" )
find_path(wxWidgets_LIB_DIR
NAMES
msw/wx/setup.h
@@ -514,7 +502,6 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
NO_DEFAULT_PATH
)
else()
- dbg_msg( "!BUILD_SHARED_LIBS WX_LIB_DIR:${WX_LIB_DIR}" )
find_path(wxWidgets_LIB_DIR
NAMES
msw/wx/setup.h
@@ -632,11 +619,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
# UNIX_FIND_STYLE
#=====================================================================
else()
- dbg_msg("NOT win32 path")
-
if(wxWidgets_FIND_STYLE STREQUAL "unix")
- dbg_msg("unix find style")
-
#-----------------------------------------------------------------
# UNIX: Helper MACROS
#-----------------------------------------------------------------
@@ -908,7 +891,6 @@ dbg_msg("wxWidgets_VERSION_PATCH : ${wxWidgets_VERSION_PATCH}")
#=====================================================================
#=====================================================================
# Maintain consistency with all other variables.
-dbg_msg("wxWidgets_FOUND : ${wxWidgets_FOUND}")
set(WXWIDGETS_FOUND ${wxWidgetsS_FOUND})
include(FindPackageHandleStandardArgs)
From 78a0316a084948d3b7b6f482d320377b1d64cf6e Mon Sep 17 00:00:00 2001
From: Simon Richter
Date: Mon, 15 Feb 2016 18:50:47 +0100
Subject: [PATCH 07/41] FindwxWidgets.cmake: Use uppercase for DBG_MSG macro
---
CMakeModules/FindwxWidgets.cmake | 92 ++++++++++++++++----------------
1 file changed, 46 insertions(+), 46 deletions(-)
diff --git a/CMakeModules/FindwxWidgets.cmake b/CMakeModules/FindwxWidgets.cmake
index 0d10c51c25..d089fa476a 100644
--- a/CMakeModules/FindwxWidgets.cmake
+++ b/CMakeModules/FindwxWidgets.cmake
@@ -144,15 +144,15 @@
# checking whether a minimal set was found.
-# FIXME: This and all the dbg_msg calls should be removed after the
+# FIXME: This and all the DBG_MSG calls should be removed after the
# module stabilizes.
#
# Helper macro to control the debugging output globally. There are
# two versions for controlling how verbose your output should be.
-macro(dbg_msg _MSG)
+macro(DBG_MSG _MSG)
# message(STATUS "${_MSG}")
endmacro()
-macro(dbg_msg_v _MSG)
+macro(DBG_MSG_V _MSG)
# message(STATUS "${_MSG}")
endmacro()
@@ -172,7 +172,7 @@ set(wxWidgets_CXX_FLAGS "")
if(wxWidgets_USE_LIBS AND NOT wxWidgets_FIND_COMPONENTS)
set(wxWidgets_FIND_COMPONENTS ${wxWidgets_USE_LIBS})
endif()
-dbg_msg("wxWidgets_FIND_COMPONENTS : ${wxWidgets_FIND_COMPONENTS}")
+DBG_MSG("wxWidgets_FIND_COMPONENTS : ${wxWidgets_FIND_COMPONENTS}")
# Add the convenience use file if available.
#
@@ -247,9 +247,9 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
# Find libraries associated to a configuration.
#
macro(wx_find_libs _UNV _UCD _DBG)
- dbg_msg_v("m_unv = ${_UNV}")
- dbg_msg_v("m_ucd = ${_UCD}")
- dbg_msg_v("m_dbg = ${_DBG}")
+ DBG_MSG_V("m_unv = ${_UNV}")
+ DBG_MSG_V("m_ucd = ${_UCD}")
+ DBG_MSG_V("m_dbg = ${_DBG}")
# FIXME: What if both regex libs are available. regex should be
# found outside the loop and only wx${LIB}${_UCD}${_DBG}.
@@ -374,41 +374,41 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
# Also, Sets output variable wxWidgets_FOUND to FALSE if it fails.
#
macro(wx_set_libraries _LIBS _DBG)
- dbg_msg_v("Looking for ${${_LIBS}}")
+ DBG_MSG_V("Looking for ${${_LIBS}}")
if(WX_USE_REL_AND_DBG)
foreach(LIB ${${_LIBS}})
- dbg_msg_v("Searching for ${LIB} and ${LIB}d")
- dbg_msg_v("WX_${LIB} : ${WX_${LIB}}")
- dbg_msg_v("WX_${LIB}d : ${WX_${LIB}d}")
+ DBG_MSG_V("Searching for ${LIB} and ${LIB}d")
+ DBG_MSG_V("WX_${LIB} : ${WX_${LIB}}")
+ DBG_MSG_V("WX_${LIB}d : ${WX_${LIB}d}")
if(WX_${LIB} AND WX_${LIB}d)
- dbg_msg_v("Found ${LIB} and ${LIB}d")
+ DBG_MSG_V("Found ${LIB} and ${LIB}d")
list(APPEND wxWidgets_LIBRARIES
debug ${WX_${LIB}d} optimized ${WX_${LIB}}
)
else()
- dbg_msg_v("- not found due to missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}")
+ DBG_MSG_V("- not found due to missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}")
set(wxWidgets_FOUND FALSE)
endif()
endforeach()
else()
foreach(LIB ${${_LIBS}})
- dbg_msg_v("Searching for ${LIB}${_DBG}")
- dbg_msg_v("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
+ DBG_MSG_V("Searching for ${LIB}${_DBG}")
+ DBG_MSG_V("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
if(WX_${LIB}${_DBG})
- dbg_msg_v("Found ${LIB}${_DBG}")
+ DBG_MSG_V("Found ${LIB}${_DBG}")
list(APPEND wxWidgets_LIBRARIES ${WX_${LIB}${_DBG}})
else()
- dbg_msg_v(
+ DBG_MSG_V(
"- not found due to missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}")
set(wxWidgets_FOUND FALSE)
endif()
endforeach()
endif()
- dbg_msg_v("OpenGL")
+ DBG_MSG_V("OpenGL")
list(FIND ${_LIBS} gl WX_USE_GL)
if(NOT WX_USE_GL EQUAL -1)
- dbg_msg_v("- is required.")
+ DBG_MSG_V("- is required.")
list(APPEND wxWidgets_LIBRARIES opengl32 glu32)
endif()
@@ -531,7 +531,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
# If building shared libs, define WXUSINGDLL to use dllimport.
if(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*")
set(wxWidgets_DEFINITIONS WXUSINGDLL)
- dbg_msg_v("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}")
+ DBG_MSG_V("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}")
endif()
# Search for available configuration types.
@@ -543,7 +543,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
set(WX_CONFIGURATION ${CFG})
endif()
endforeach()
- dbg_msg_v("WX_CONFIGURATION_LIST=${WX_CONFIGURATION_LIST}")
+ DBG_MSG_V("WX_CONFIGURATION_LIST=${WX_CONFIGURATION_LIST}")
if(WX_CONFIGURATION)
set(wxWidgets_FOUND TRUE)
@@ -582,7 +582,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
set(wxWidgets_INCLUDE_DIRS
${WX_LIB_DIR}/${wxWidgets_CONFIGURATION})
else()
- dbg_msg("wxWidgets_FOUND FALSE because ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.")
+ DBG_MSG("wxWidgets_FOUND FALSE because ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.")
set(wxWidgets_FOUND FALSE)
endif()
@@ -590,7 +590,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
if(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
list(APPEND wxWidgets_INCLUDE_DIRS ${WX_ROOT_DIR}/include)
else()
- dbg_msg("wxWidgets_FOUND FALSE because WX_ROOT_DIR=${WX_ROOT_DIR} has no ${WX_ROOT_DIR}/include/wx/wx.h")
+ DBG_MSG("wxWidgets_FOUND FALSE because WX_ROOT_DIR=${WX_ROOT_DIR} has no ${WX_ROOT_DIR}/include/wx/wx.h")
set(wxWidgets_FOUND FALSE)
endif()
@@ -726,7 +726,7 @@ else()
# process selection to set wxWidgets_SELECT_OPTIONS
wx_config_select_set_options()
- dbg_msg("wxWidgets_SELECT_OPTIONS=${wxWidgets_SELECT_OPTIONS}")
+ DBG_MSG("wxWidgets_SELECT_OPTIONS=${wxWidgets_SELECT_OPTIONS}")
# run the wx-config program to get cxxflags
execute_process(
@@ -740,7 +740,7 @@ else()
string(STRIP "${wxWidgets_CXX_FLAGS}" wxWidgets_CXX_FLAGS)
separate_arguments(wxWidgets_CXX_FLAGS)
- dbg_msg_v("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
+ DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
# parse definitions from cxxflags;
# drop -D* from CXXFLAGS and the -D prefix
@@ -765,13 +765,13 @@ else()
string(REPLACE ";" " "
wxWidgets_CXX_FLAGS "${wxWidgets_CXX_FLAGS}")
- dbg_msg_v("wxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}")
- dbg_msg_v("wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}")
- dbg_msg_v("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
+ DBG_MSG_V("wxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}")
+ DBG_MSG_V("wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}")
+ DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
else()
set(wxWidgets_FOUND FALSE)
- dbg_msg_v("${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
+ DBG_MSG_V("${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
endif()
# run the wx-config program to get the libs
@@ -803,8 +803,8 @@ else()
string(REPLACE "-L" ""
wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}")
- dbg_msg_v("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}")
- dbg_msg_v("wxWidgets_LIBRARY_DIRS=${wxWidgets_LIBRARY_DIRS}")
+ DBG_MSG_V("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}")
+ DBG_MSG_V("wxWidgets_LIBRARY_DIRS=${wxWidgets_LIBRARY_DIRS}")
else()
set(wxWidgets_FOUND FALSE)
@@ -816,7 +816,7 @@ else()
# paths internally.
if(wxWidgets_FOUND AND MSYS)
find_program(_cygpath_exe cygpath ONLY_CMAKE_FIND_ROOT_PATH)
- dbg_msg_v("_cygpath_exe: ${_cygpath_exe}")
+ DBG_MSG_V("_cygpath_exe: ${_cygpath_exe}")
if(_cygpath_exe)
set(_tmp_path "")
foreach(_path ${wxWidgets_INCLUDE_DIRS})
@@ -829,11 +829,11 @@ else()
)
if(_retv EQUAL 0)
file(TO_CMAKE_PATH ${_native_path} _native_path)
- dbg_msg_v("Path ${_path} converted to ${_native_path}")
+ DBG_MSG_V("Path ${_path} converted to ${_native_path}")
set(_tmp_path "${_tmp_path} ${_native_path}")
endif()
endforeach()
- dbg_msg("Setting wxWidgets_INCLUDE_DIRS = ${_tmp_path}")
+ DBG_MSG("Setting wxWidgets_INCLUDE_DIRS = ${_tmp_path}")
set(wxWidgets_INCLUDE_DIRS ${_tmp_path})
separate_arguments(wxWidgets_INCLUDE_DIRS)
list(REMOVE_ITEM wxWidgets_INCLUDE_DIRS "")
@@ -856,7 +856,7 @@ endif()
# Check if a specfic version was requested by find_package().
if(wxWidgets_FOUND AND wxWidgets_FIND_VERSION)
find_file(_filename wx/version.h PATHS ${wxWidgets_INCLUDE_DIRS} NO_DEFAULT_PATH)
- dbg_msg("_filename: ${_filename}")
+ DBG_MSG("_filename: ${_filename}")
if(NOT _filename)
message(FATAL_ERROR "wxWidgets wx/version.h file not found in ${wxWidgets_INCLUDE_DIRS}.")
@@ -872,21 +872,21 @@ if(wxWidgets_FOUND AND wxWidgets_FIND_VERSION)
"\\2" wxWidgets_VERSION_PATCH "${_wx_version_h}" )
set(wxWidgets_VERSION_STRING
"${wxWidgets_VERSION_MAJOR}.${wxWidgets_VERSION_MINOR}.${wxWidgets_VERSION_PATCH}" )
- dbg_msg("wxWidgets_VERSION_STRING: ${wxWidgets_VERSION_STRING}")
+ DBG_MSG("wxWidgets_VERSION_STRING: ${wxWidgets_VERSION_STRING}")
endif()
# Debug output:
-dbg_msg("wxWidgets_FOUND : ${wxWidgets_FOUND}")
-dbg_msg("wxWidgets_INCLUDE_DIRS : ${wxWidgets_INCLUDE_DIRS}")
-dbg_msg("wxWidgets_LIBRARY_DIRS : ${wxWidgets_LIBRARY_DIRS}")
-dbg_msg("wxWidgets_LIBRARIES : ${wxWidgets_LIBRARIES}")
-dbg_msg("wxWidgets_CXX_FLAGS : ${wxWidgets_CXX_FLAGS}")
-dbg_msg("wxWidgets_USE_FILE : ${wxWidgets_USE_FILE}")
-dbg_msg("wxWidgets_FIND_VERSION : ${wxWidgets_FIND_VERSION}")
-dbg_msg("wxWidgets_VERSION_MAJOR : ${wxWidgets_VERSION_MAJOR}")
-dbg_msg("wxWidgets_VERSION_MINOR : ${wxWidgets_VERSION_MINOR}")
-dbg_msg("wxWidgets_VERSION_PATCH : ${wxWidgets_VERSION_PATCH}")
+DBG_MSG("wxWidgets_FOUND : ${wxWidgets_FOUND}")
+DBG_MSG("wxWidgets_INCLUDE_DIRS : ${wxWidgets_INCLUDE_DIRS}")
+DBG_MSG("wxWidgets_LIBRARY_DIRS : ${wxWidgets_LIBRARY_DIRS}")
+DBG_MSG("wxWidgets_LIBRARIES : ${wxWidgets_LIBRARIES}")
+DBG_MSG("wxWidgets_CXX_FLAGS : ${wxWidgets_CXX_FLAGS}")
+DBG_MSG("wxWidgets_USE_FILE : ${wxWidgets_USE_FILE}")
+DBG_MSG("wxWidgets_FIND_VERSION : ${wxWidgets_FIND_VERSION}")
+DBG_MSG("wxWidgets_VERSION_MAJOR : ${wxWidgets_VERSION_MAJOR}")
+DBG_MSG("wxWidgets_VERSION_MINOR : ${wxWidgets_VERSION_MINOR}")
+DBG_MSG("wxWidgets_VERSION_PATCH : ${wxWidgets_VERSION_PATCH}")
#=====================================================================
#=====================================================================
From 6a7fa8950cccfc22c71eb42a544335841f39c3c2 Mon Sep 17 00:00:00 2001
From: Simon Richter
Date: Mon, 15 Feb 2016 18:50:47 +0100
Subject: [PATCH 08/41] FindwxWidgets.cmake: Use uppercase for macro names
---
CMakeModules/FindwxWidgets.cmake | 88 ++++++++++++++++----------------
1 file changed, 44 insertions(+), 44 deletions(-)
diff --git a/CMakeModules/FindwxWidgets.cmake b/CMakeModules/FindwxWidgets.cmake
index d089fa476a..f6b4386adf 100644
--- a/CMakeModules/FindwxWidgets.cmake
+++ b/CMakeModules/FindwxWidgets.cmake
@@ -234,7 +234,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
# if _CONFIGURATION = mswunivud, then _UNV=univ, _UCD=u _DBG=d
# if _CONFIGURATION = mswu, then _UNV="", _UCD=u _DBG=""
#
- macro(wx_get_name_components _CONFIGURATION _UNV _UCD _DBG)
+ macro(WX_GET_NAME_COMPONENTS _CONFIGURATION _UNV _UCD _DBG)
string(REGEX MATCH "univ" ${_UNV} "${_CONFIGURATION}")
string(REGEX REPLACE "msw.*(u)[d]*$" "u" ${_UCD} "${_CONFIGURATION}")
if(${_UCD} STREQUAL ${_CONFIGURATION})
@@ -246,7 +246,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
#
# Find libraries associated to a configuration.
#
- macro(wx_find_libs _UNV _UCD _DBG)
+ macro(WX_FIND_LIBS _UNV _UCD _DBG)
DBG_MSG_V("m_unv = ${_UNV}")
DBG_MSG_V("m_ucd = ${_UCD}")
DBG_MSG_V("m_dbg = ${_DBG}")
@@ -333,47 +333,47 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
# Clear all library paths, so that FIND_LIBRARY refinds them.
#
# Clear a lib, reset its found flag, and mark as advanced.
- macro(wx_clear_lib _LIB)
+ macro(WX_CLEAR_LIB _LIB)
set(${_LIB} "${_LIB}-NOTFOUND" CACHE FILEPATH "Cleared." FORCE)
set(${_LIB}_FOUND FALSE)
mark_as_advanced(${_LIB})
endmacro()
# Clear all debug or release library paths (arguments are "d" or "").
- macro(wx_clear_all_libs _DBG)
+ macro(WX_CLEAR_ALL_LIBS _DBG)
# Clear wxWidgets common libraries.
foreach(LIB ${wxWidgets_COMMON_LIBRARIES} scintilla)
- wx_clear_lib(WX_${LIB}${_DBG})
+ WX_CLEAR_LIB(WX_${LIB}${_DBG})
endforeach()
# Clear wxWidgets multilib base libraries.
- wx_clear_lib(WX_base${_DBG})
+ WX_CLEAR_LIB(WX_base${_DBG})
foreach(LIB net odbc xml)
- wx_clear_lib(WX_${LIB}${_DBG})
+ WX_CLEAR_LIB(WX_${LIB}${_DBG})
endforeach()
# Clear wxWidgets monolithic library.
- wx_clear_lib(WX_mono${_DBG})
+ WX_CLEAR_LIB(WX_mono${_DBG})
# Clear wxWidgets multilib libraries.
foreach(LIB core adv aui html media xrc dbgrid gl qa richtext
webview stc ribbon propgrid)
- wx_clear_lib(WX_${LIB}${_DBG})
+ WX_CLEAR_LIB(WX_${LIB}${_DBG})
endforeach()
endmacro()
# Clear all wxWidgets debug libraries.
- macro(wx_clear_all_dbg_libs)
- wx_clear_all_libs("d")
+ macro(WX_CLEAR_ALL_DBG_LIBS)
+ WX_CLEAR_ALL_LIBS("d")
endmacro()
# Clear all wxWidgets release libraries.
- macro(wx_clear_all_rel_libs)
- wx_clear_all_libs("")
+ macro(WX_CLEAR_ALL_REL_LIBS)
+ WX_CLEAR_ALL_LIBS("")
endmacro()
#
# Set the wxWidgets_LIBRARIES variable.
# Also, Sets output variable wxWidgets_FOUND to FALSE if it fails.
#
- macro(wx_set_libraries _LIBS _DBG)
+ macro(WX_SET_LIBRARIES _LIBS _DBG)
DBG_MSG_V("Looking for ${${_LIBS}}")
if(WX_USE_REL_AND_DBG)
foreach(LIB ${${_LIBS}})
@@ -523,8 +523,8 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
# If wxWidgets_LIB_DIR changed, clear all libraries.
if(NOT WX_LIB_DIR STREQUAL wxWidgets_LIB_DIR)
set(WX_LIB_DIR ${wxWidgets_LIB_DIR} CACHE INTERNAL "wxWidgets_LIB_DIR")
- wx_clear_all_dbg_libs()
- wx_clear_all_rel_libs()
+ WX_CLEAR_ALL_DBG_LIBS()
+ WX_CLEAR_ALL_REL_LIBS()
endif()
if(WX_LIB_DIR)
@@ -575,7 +575,7 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
endif()
# Get configuration parameters from the name.
- wx_get_name_components(${wxWidgets_CONFIGURATION} UNV UCD DBG)
+ WX_GET_NAME_COMPONENTS(${wxWidgets_CONFIGURATION} UNV UCD DBG)
# Set wxWidgets lib setup include directory.
if(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
@@ -595,13 +595,13 @@ if(wxWidgets_FIND_STYLE STREQUAL "win32")
endif()
# Find wxWidgets libraries.
- wx_find_libs("${UNV}" "${UCD}" "${DBG}")
+ WX_FIND_LIBS("${UNV}" "${UCD}" "${DBG}")
if(WX_USE_REL_AND_DBG)
- wx_find_libs("${UNV}" "${UCD}" "d")
+ WX_FIND_LIBS("${UNV}" "${UCD}" "d")
endif()
# Settings for requested libs (i.e., include dir, libraries, etc.).
- wx_set_libraries(wxWidgets_FIND_COMPONENTS "${DBG}")
+ WX_SET_LIBRARIES(wxWidgets_FIND_COMPONENTS "${DBG}")
# Add necessary definitions for unicode builds
if("${UCD}" STREQUAL "u")
@@ -626,7 +626,7 @@ else()
#
# Set the default values based on "wx-config --selected-config".
#
- macro(wx_config_select_get_default)
+ macro(WX_CONFIG_SELECT_GET_DEFAULT)
execute_process(
COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
${wxWidgets_CONFIG_OPTIONS} --selected-config
@@ -655,7 +655,7 @@ else()
# has both builds available. If so, provide the selection option
# to the user.
#
- macro(wx_config_select_query_bool _OPT_NAME _OPT_HELP)
+ macro(WX_CONFIG_SELECT_QUERY_BOOL _OPT_NAME _OPT_HELP)
execute_process(
COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
${wxWidgets_CONFIG_OPTIONS} --${_OPT_NAME}=yes
@@ -690,7 +690,7 @@ else()
# Set wxWidgets_SELECT_OPTIONS to wx-config options for selecting
# among multiple builds.
#
- macro(wx_config_select_set_options)
+ macro(WX_CONFIG_SELECT_SET_OPTIONS)
set(wxWidgets_SELECT_OPTIONS ${wxWidgets_CONFIG_OPTIONS})
foreach(_opt_name debug static unicode universal)
string(TOUPPER ${_opt_name} _upper_opt_name)
@@ -716,16 +716,16 @@ else()
set(wxWidgets_FOUND TRUE)
# get defaults based on "wx-config --selected-config"
- wx_config_select_get_default()
+ WX_CONFIG_SELECT_GET_DEFAULT()
# for each option: if both builds are available, provide option
- wx_config_select_query_bool(debug "Use debug build?")
- wx_config_select_query_bool(unicode "Use unicode build?")
- wx_config_select_query_bool(universal "Use universal build?")
- wx_config_select_query_bool(static "Link libraries statically?")
+ WX_CONFIG_SELECT_QUERY_BOOL(debug "Use debug build?")
+ WX_CONFIG_SELECT_QUERY_BOOL(unicode "Use unicode build?")
+ WX_CONFIG_SELECT_QUERY_BOOL(universal "Use universal build?")
+ WX_CONFIG_SELECT_QUERY_BOOL(static "Link libraries statically?")
# process selection to set wxWidgets_SELECT_OPTIONS
- wx_config_select_set_options()
+ WX_CONFIG_SELECT_SET_OPTIONS()
DBG_MSG("wxWidgets_SELECT_OPTIONS=${wxWidgets_SELECT_OPTIONS}")
# run the wx-config program to get cxxflags
@@ -915,18 +915,18 @@ find_program(wxWidgets_wxrc_EXECUTABLE wxrc
)
#
-# wx_split_arguments_on( ...)
+# WX_SPLIT_ARGUMENTS_ON( ...)
#
# Sets and to contain arguments to the left and right,
# respectively, of .
#
# Example usage:
-# function(wxwidgets_add_resources outfiles)
-# wx_split_arguments_on(OPTIONS wxrc_files wxrc_options ${ARGN})
+# function(WXWIDGETS_ADD_RESOURCES outfiles)
+# WX_SPLIT_ARGUMENTS_ON(OPTIONS wxrc_files wxrc_options ${ARGN})
# ...
# endfunction()
#
-# wxwidgets_add_resources(sources ${xrc_files} OPTIONS -e -o file.C)
+# WXWIDGETS_ADD_RESOURCES(sources ${xrc_files} OPTIONS -e -o file.C)
#
# NOTE: This is a generic piece of code that should be renamed to
# SPLIT_ARGUMENTS_ON and put in a file serving the same purpose as
@@ -935,7 +935,7 @@ find_program(wxWidgets_wxrc_EXECUTABLE wxrc
# here a bit more generalized. So, there are already two find modules
# using this approach.
#
-function(wx_split_arguments_on _keyword _leftvar _rightvar)
+function(WX_SPLIT_ARGUMENTS_ON _keyword _leftvar _rightvar)
# FIXME: Document that the input variables will be cleared.
#list(APPEND ${_leftvar} "")
#list(APPEND ${_rightvar} "")
@@ -960,7 +960,7 @@ function(wx_split_arguments_on _keyword _leftvar _rightvar)
endfunction()
#
-# wx_get_dependencies_from_xml(
+# WX_GET_DEPENDENCIES_FROM_XML(
#
#
#
@@ -970,7 +970,7 @@ endfunction()
#
# FIXME: Add documentation here...
#
-function(wx_get_dependencies_from_xml
+function(WX_GET_DEPENDENCIES_FROM_XML
_depends
_match_patt
_clean_patt
@@ -999,18 +999,18 @@ function(wx_get_dependencies_from_xml
endfunction()
#
-# wxwidgets_add_resources(
+# WXWIDGETS_ADD_RESOURCES(
# OPTIONS [NO_CPP_CODE])
#
# Adds a custom command for resource file compilation of the
# and appends the output files to .
#
# Example usages:
-# wxwidgets_add_resources(sources xrc/main_frame.xrc)
-# wxwidgets_add_resources(sources ${xrc_files} OPTIONS -e -o altname.cxx)
+# WXWIDGETS_ADD_RESOURCES(sources xrc/main_frame.xrc)
+# WXWIDGETS_ADD_RESOURCES(sources ${xrc_files} OPTIONS -e -o altname.cxx)
#
-function(wxwidgets_add_resources _outfiles)
- wx_split_arguments_on(OPTIONS rc_file_list rc_options ${ARGN})
+function(WXWIDGETS_ADD_RESOURCES _outfiles)
+ WX_SPLIT_ARGUMENTS_ON(OPTIONS rc_file_list rc_options ${ARGN})
# Parse files for dependencies.
set(rc_file_list_abs "")
@@ -1026,7 +1026,7 @@ function(wxwidgets_add_resources _outfiles)
file(READ "${rc_file_abs}" rc_file_contents)
# get bitmap/bitmap2 files
- wx_get_dependencies_from_xml(
+ WX_GET_DEPENDENCIES_FROM_XML(
rc_depends
"]*>"
@@ -1035,7 +1035,7 @@ function(wxwidgets_add_resources _outfiles)
)
# get url files
- wx_get_dependencies_from_xml(
+ WX_GET_DEPENDENCIES_FROM_XML(
rc_depends
"]*>"
@@ -1044,7 +1044,7 @@ function(wxwidgets_add_resources _outfiles)
)
# get wxIcon files
- wx_get_dependencies_from_xml(
+ WX_GET_DEPENDENCIES_FROM_XML(
rc_depends
"
*/
- void Annotate( bool aUseSheetNum, int aSheetIntervalId,
- std::map& aLockedUnitMap );
+ void Annotate( bool aUseSheetNum, int aSheetIntervalId, SCH_MULTI_UNIT_REFERENCE_MAP aLockedUnitMap );
/**
* Function CheckAnnotation
@@ -469,12 +466,4 @@ private:
int CreateFirstFreeRefId( std::vector& aIdList, int aFirstValue );
};
-
-/**
- * Type SCH_MULTI_UNIT_REFERENCE_MAP
- * is used to create a map of reference designators for multi-unit parts.
- */
-typedef std::map SCH_MULTI_UNIT_REFERENCE_MAP;
-
-
#endif // _SCH_REFERENCE_LIST_H_
diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp
index 83348b8eaf..b593882b82 100644
--- a/eeschema/sch_sheet.cpp
+++ b/eeschema/sch_sheet.cpp
@@ -42,7 +42,6 @@
#include
#include
#include
-#include
SCH_SHEET::SCH_SHEET( const wxPoint& pos ) :
@@ -183,11 +182,6 @@ bool SCH_SHEET::Load( LINE_READER& aLine, wxString& aErrorMsg )
SCH_SHEET_PIN* sheetPin;
char* ptcar;
- if( IsRootSheet() )
- m_number = 1;
- else
- m_number = GetRootSheet()->CountSheets();
-
SetTimeStamp( GetNewTimeStamp() );
// sheets are added to the GetDrawItems() like other schematic components.
@@ -227,10 +221,8 @@ bool SCH_SHEET::Load( LINE_READER& aLine, wxString& aErrorMsg )
if( ((char*)aLine)[0] == 'U' )
{
sscanf( ((char*)aLine) + 1, "%lX", &m_TimeStamp );
-
if( m_TimeStamp == 0 ) // zero is not unique!
SetTimeStamp( GetNewTimeStamp() );
-
continue;
}
@@ -1358,39 +1350,6 @@ void SCH_SHEET::UpdateAllScreenReferences()
}
-void SCH_SHEET::GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences,
- bool aIncludePowerSymbols, bool aIncludeSubSheets )
-{
- for( SCH_ITEM* item = m_screen->GetDrawItems(); item; item = item->Next() )
- {
- if( item->Type() == SCH_SHEET_T && aIncludeSubSheets )
- {
- ((SCH_SHEET*)item)->GetComponents( aLibs, aReferences, aIncludePowerSymbols,
- aIncludeSubSheets );
- }
-
- if( item->Type() == SCH_COMPONENT_T )
- {
- SCH_COMPONENT* component = (SCH_COMPONENT*) item;
-
- // Skip pseudo components, which have a reference starting with #. This mainly
- // affects power symbols.
- if( !aIncludePowerSymbols && component->GetRef( this )[0] == wxT( '#' ) )
- continue;
-
- LIB_PART* part = aLibs->FindLibPart( component->GetPartName() );
-
- if( part )
- {
- SCH_REFERENCE reference = SCH_REFERENCE( component, part, this );
- reference.SetSheetNumber( m_number );
- aReferences.AddItem( reference );
- }
- }
- }
-}
-
-
SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
{
wxLogDebug( wxT( "Sheet assignment operator." ) );
@@ -1425,19 +1384,10 @@ SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
bool SCH_SHEET::operator<( const SCH_SHEET& aRhs ) const
-{
- if( (*this - aRhs) < 0 )
- return true;
-
- return false;
-}
-
-
-int SCH_SHEET::operator-( const SCH_SHEET& aRhs ) const
{
// Don't waste time against comparing the same objects..
if( this == &aRhs )
- return 0;
+ return false;
SCH_CONST_SHEETS lhsPath, rhsPath;
@@ -1445,21 +1395,20 @@ int SCH_SHEET::operator-( const SCH_SHEET& aRhs ) const
aRhs.GetPath( rhsPath );
// Shorter paths are less than longer paths.
- int retv = lhsPath.size() - rhsPath.size();
+ if( lhsPath.size() < rhsPath.size() )
+ return true;
- if( retv == 0 )
+ if( lhsPath.size() > rhsPath.size() )
+ return false;
+
+ // Compare time stamps when path lengths are the same.
+ for( unsigned i = 0; i < lhsPath.size(); i++ )
{
- // Compare time stamps when path lengths are the same.
- for( unsigned i = 0; i < lhsPath.size(); i++ )
- {
- retv = lhsPath[i]->GetTimeStamp() - rhsPath[i]->GetTimeStamp();
-
- if( retv != 0 )
- break;
- }
+ if( lhsPath[i]->GetTimeStamp() < rhsPath[i]->GetTimeStamp() )
+ return true;
}
- return retv;
+ return false;
}
diff --git a/eeschema/sch_sheet.h b/eeschema/sch_sheet.h
index e2e1e018bf..2787f12f95 100644
--- a/eeschema/sch_sheet.h
+++ b/eeschema/sch_sheet.h
@@ -44,7 +44,6 @@ class SCH_SHEET_PATH;
class DANGLING_END_ITEM;
class SCH_EDIT_FRAME;
class NETLIST_OBJECT_LIST;
-class SCH_REFERENCE_LIST;
#define MIN_SHEET_WIDTH 500
@@ -245,11 +244,6 @@ class SCH_SHEET : public SCH_ITEM
/// The size of the sheet.
wxSize m_size;
- /// The sheet number ordered by file load.
- // @todo: At some point this should really be a sheet number assigned by the user rather
- // than assigned in the order the sheets were parsed and loaded.
- int m_number;
-
public:
SCH_SHEET( const wxPoint& pos = wxPoint( 0, 0 ) );
@@ -575,8 +569,6 @@ public:
*/
bool operator<( const SCH_SHEET& aRhs ) const;
- int operator-( const SCH_SHEET& aRhs ) const;
-
wxPoint GetPosition() const { return m_pos; }
void SetPosition( const wxPoint& aPosition );
@@ -687,19 +679,6 @@ public:
*/
void UpdateAllScreenReferences();
- /**
- * Function GetComponents
- * adds a SCH_REFERENCE() object to \a aReferences for each component in the sheet.
- *
- * @param aLibs the library list to use
- * @param aReferences List of references to populate.
- * @param aIncludePowerSymbols : false to only get normal components.
- * @param aIncludeSubSheets true includes components of all sub-sheets and false includes
- * only the components in this sheet.
- */
- void GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences,
- bool aIncludePowerSymbols = true, bool aIncludeSubSheets = true );
-
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
diff --git a/eeschema/sch_sheet_path.cpp b/eeschema/sch_sheet_path.cpp
index 62bb42aab8..a731ca4b88 100644
--- a/eeschema/sch_sheet_path.cpp
+++ b/eeschema/sch_sheet_path.cpp
@@ -227,9 +227,43 @@ wxString SCH_SHEET_PATH::PathHumanReadable() const
}
-void SCH_SHEET_PATH::GetMultiUnitComponents( PART_LIBS* aLibs,
- SCH_MULTI_UNIT_REFERENCE_MAP& aRefList,
- bool aIncludePowerSymbols )
+void SCH_SHEET_PATH::GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols )
+{
+ // Search to sheet path number:
+ int sheetnumber = 1; // 1 = root
+
+ SCH_SHEET_LIST sheetList;
+
+ for( SCH_SHEET_PATH* path = sheetList.GetFirst(); path; path = sheetList.GetNext(), sheetnumber++ )
+ {
+ if( Cmp( *path ) == 0 )
+ break;
+ }
+
+ for( SCH_ITEM* item = LastDrawList(); item; item = item->Next() )
+ {
+ if( item->Type() == SCH_COMPONENT_T )
+ {
+ SCH_COMPONENT* component = (SCH_COMPONENT*) item;
+
+ // Skip pseudo components, which have a reference starting with #. This mainly
+ // affects power symbols.
+ if( !aIncludePowerSymbols && component->GetRef( Last() )[0] == wxT( '#' ) )
+ continue;
+
+ LIB_PART* part = aLibs->FindLibPart( component->GetPartName() );
+ if( part )
+ {
+ SCH_REFERENCE reference = SCH_REFERENCE( component, part, *this );
+ reference.SetSheetNumber( sheetnumber );
+ aReferences.AddItem( reference );
+ }
+ }
+ }
+}
+
+void SCH_SHEET_PATH::GetMultiUnitComponents( PART_LIBS* aLibs, SCH_MULTI_UNIT_REFERENCE_MAP &aRefList,
+ bool aIncludePowerSymbols )
{
// Find sheet path number
int sheetnumber = 1; // 1 = root
@@ -255,7 +289,7 @@ void SCH_SHEET_PATH::GetMultiUnitComponents( PART_LIBS* aLibs,
LIB_PART* part = aLibs->FindLibPart( component->GetPartName() );
if( part && part->GetUnitCount() > 1 )
{
- SCH_REFERENCE reference = SCH_REFERENCE( component, part, Last() );
+ SCH_REFERENCE reference = SCH_REFERENCE( component, part, *this );
reference.SetSheetNumber( sheetnumber );
wxString reference_str = reference.GetRef();
@@ -595,20 +629,24 @@ void SCH_SHEET_LIST::BuildSheetList( SCH_SHEET* aSheet )
}
+void SCH_SHEET_LIST::GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences,
+ bool aIncludePowerSymbols )
+{
+ for( SCH_SHEET_PATH* path = GetFirst(); path; path = GetNext() )
+ path->GetComponents( aLibs, aReferences, aIncludePowerSymbols );
+}
+
void SCH_SHEET_LIST::GetMultiUnitComponents( PART_LIBS* aLibs,
- SCH_MULTI_UNIT_REFERENCE_MAP& aRefList,
- bool aIncludePowerSymbols )
+ SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, bool aIncludePowerSymbols )
{
for( SCH_SHEET_PATH* path = GetFirst(); path; path = GetNext() )
{
SCH_MULTI_UNIT_REFERENCE_MAP tempMap;
path->GetMultiUnitComponents( aLibs, tempMap );
-
BOOST_FOREACH( SCH_MULTI_UNIT_REFERENCE_MAP::value_type& pair, tempMap )
{
// Merge this list into the main one
unsigned n_refs = pair.second.GetCount();
-
for( unsigned thisRef = 0; thisRef < n_refs; ++thisRef )
{
aRefList[pair.first].AddItem( pair.second[thisRef] );
diff --git a/eeschema/sch_sheet_path.h b/eeschema/sch_sheet_path.h
index e3db2c0374..e535b307aa 100644
--- a/eeschema/sch_sheet_path.h
+++ b/eeschema/sch_sheet_path.h
@@ -1,10 +1,9 @@
-
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2009 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
- * Copyright (C) 2011-2015 Wayne Stambaugh
- * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors.
+ * Copyright (C) 2011 Wayne Stambaugh
+ * 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
@@ -33,7 +32,6 @@
#define CLASS_DRAWSHEET_PATH_H
#include
-#include
/** Info about complex hierarchies handling:
@@ -84,12 +82,18 @@ class SCH_SCREEN;
class SCH_MARKER;
class SCH_SHEET;
class SCH_ITEM;
+class SCH_REFERENCE_LIST;
class PART_LIBS;
-
#define SHEET_NOT_FOUND -1
+/**
+ * Type SCH_MULTI_UNIT_REFERENCE_MAP
+ * is used to create a map of reference designators for multi-unit parts.
+ */
+typedef std::map SCH_MULTI_UNIT_REFERENCE_MAP;
+
/**
* Class SCH_SHEET_PATH
* handles access to a sheet by way of a path.
@@ -211,6 +215,16 @@ public:
*/
bool BuildSheetPathInfoFromSheetPathValue( const wxString& aPath, bool aFound = false );
+ /**
+ * Function GetComponents
+ * adds a SCH_REFERENCE() object to \a aReferences for each component in the sheet.
+ * @param aLibs the library list to use
+ * @param aReferences List of references to populate.
+ * @param aIncludePowerSymbols : false to only get normal components.
+ */
+ void GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences,
+ bool aIncludePowerSymbols = true );
+
/**
* Function GetMultiUnitComponents
* adds a SCH_REFERENCE_LIST object to \a aRefList for each same-reference set of
@@ -220,7 +234,7 @@ public:
* @param aRefList Map of reference designators to reference lists
* @param aIncludePowerSymbols : false to only get normal components.
*/
- void GetMultiUnitComponents( PART_LIBS* aLibs, SCH_MULTI_UNIT_REFERENCE_MAP& aRefList,
+ void GetMultiUnitComponents( PART_LIBS* aLibs, SCH_MULTI_UNIT_REFERENCE_MAP &aRefList,
bool aIncludePowerSymbols = true );
/**
@@ -400,6 +414,17 @@ public:
*/
SCH_SHEET_PATH* GetSheetByPath( const wxString aPath, bool aHumanReadable = true );
+ /**
+ * Function GetComponents
+ * adds a SCH_REFERENCE() object to \a aReferences for each component in the list
+ * of sheets.
+ * @param aLibs the library list to use
+ * @param aReferences List of references to populate.
+ * @param aIncludePowerSymbols Set to false to only get normal components.
+ */
+ void GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences,
+ bool aIncludePowerSymbols = true );
+
/**
* Function GetMultiUnitComponents
* adds a SCH_REFERENCE_LIST object to \a aRefList for each same-reference set of
@@ -409,8 +434,8 @@ public:
* @param aRefList Map of reference designators to reference lists
* @param aIncludePowerSymbols Set to false to only get normal components.
*/
- void GetMultiUnitComponents( PART_LIBS* aLibs, SCH_MULTI_UNIT_REFERENCE_MAP& aRefList,
- bool aIncludePowerSymbols = true );
+ void GetMultiUnitComponents( PART_LIBS* aLibs, SCH_MULTI_UNIT_REFERENCE_MAP &aRefList,
+ bool aIncludePowerSymbols = true );
/**
* Function FindNextItem
From 400731760630f1f873c449802bf1440be25ced0b Mon Sep 17 00:00:00 2001
From: Wayne Stambaugh
Date: Mon, 15 Feb 2016 15:17:51 -0500
Subject: [PATCH 34/41] Undo commit -r 6428.
---
eeschema/annotate.cpp | 4 ++--
eeschema/class_netlist_object.cpp | 2 +-
eeschema/component_references_lister.cpp | 10 ++++-----
eeschema/controle.cpp | 2 +-
.../dialog_edit_component_in_schematic.cpp | 2 +-
eeschema/dialogs/dialog_erc.cpp | 2 +-
.../dialogs/dialog_print_using_printer.cpp | 4 ++--
eeschema/dialogs/dialog_rescue_each.cpp | 4 +---
eeschema/erc.cpp | 10 ++++-----
eeschema/find.cpp | 8 +++----
eeschema/hierarch.cpp | 2 +-
.../netlist_exporters/netlist_exporter.cpp | 17 +++++++-------
.../netlist_exporter_cadstar.cpp | 5 ++---
.../netlist_exporter_generic.cpp | 8 +++----
.../netlist_exporter_orcadpcb2.cpp | 2 +-
.../netlist_exporter_pspice.cpp | 2 +-
eeschema/plot_schematic_DXF.cpp | 9 ++++----
eeschema/plot_schematic_HPGL.cpp | 5 ++---
eeschema/plot_schematic_PDF.cpp | 5 ++---
eeschema/plot_schematic_PS.cpp | 5 ++---
eeschema/plot_schematic_SVG.cpp | 7 +++---
eeschema/sch_component.cpp | 20 +++++++++++------
eeschema/sch_component.h | 4 ++--
eeschema/sch_field.cpp | 4 ++--
eeschema/sch_screen.cpp | 2 +-
eeschema/sch_sheet.cpp | 18 ---------------
eeschema/sch_sheet.h | 11 ----------
eeschema/sch_sheet_path.cpp | 22 +++++++++++++++++--
eeschema/sch_sheet_path.h | 11 ++++++++++
29 files changed, 101 insertions(+), 106 deletions(-)
diff --git a/eeschema/annotate.cpp b/eeschema/annotate.cpp
index 34f59047e5..d0bae72a91 100644
--- a/eeschema/annotate.cpp
+++ b/eeschema/annotate.cpp
@@ -50,7 +50,7 @@ void SCH_EDIT_FRAME::DeleteAnnotation( bool aCurrentSheetOnly )
}
// Update the references for the sheet that is currently being displayed.
- m_CurrentSheet->Last()->UpdateAllScreenReferences();
+ m_CurrentSheet->UpdateAllScreenReferences();
GetCanvas()->Refresh();
OnModify();
}
@@ -176,7 +176,7 @@ void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
OnModify();
// Update on screen references, that can be modified by previous calculations:
- m_CurrentSheet->Last()->UpdateAllScreenReferences();
+ m_CurrentSheet->UpdateAllScreenReferences();
SetSheetNumberAndCount();
m_canvas->Refresh( true );
diff --git a/eeschema/class_netlist_object.cpp b/eeschema/class_netlist_object.cpp
index 1f53224fc9..5d7ca6b41d 100644
--- a/eeschema/class_netlist_object.cpp
+++ b/eeschema/class_netlist_object.cpp
@@ -357,7 +357,7 @@ wxString NETLIST_OBJECT::GetShortNetName() const
if( link ) // Should be always true
{
netName = wxT("Net-(");
- netName << link->GetRef( m_netNameCandidate->m_SheetPath.Last() );
+ netName << link->GetRef( &m_netNameCandidate->m_SheetPath );
netName << wxT("-Pad")
<< LIB_PIN::PinStringNum( m_netNameCandidate->m_PinNum )
<< wxT(")");
diff --git a/eeschema/component_references_lister.cpp b/eeschema/component_references_lister.cpp
index f927d88cdd..93ce5ab35e 100644
--- a/eeschema/component_references_lister.cpp
+++ b/eeschema/component_references_lister.cpp
@@ -7,8 +7,8 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2011 jean-pierre Charras
- * Copyright (C) 1992-2015 Wayne Stambaugh
- * Copyright (C) 1992-2015 KiCad Developers, see change_log.txt for contributors.
+ * Copyright (C) 1992-2011 Wayne Stambaugh
+ * Copyright (C) 1992-2011 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
@@ -701,7 +701,7 @@ SCH_REFERENCE::SCH_REFERENCE( SCH_COMPONENT* aComponent, LIB_PART* aLibComponent
m_RootCmp = aComponent;
m_Entry = aLibComponent;
- m_Unit = aComponent->GetUnitSelection( aSheetPath.Last() );
+ m_Unit = aComponent->GetUnitSelection( &aSheetPath );
m_SheetPath = aSheetPath;
m_IsNew = false;
m_Flag = 0;
@@ -709,10 +709,10 @@ SCH_REFERENCE::SCH_REFERENCE( SCH_COMPONENT* aComponent, LIB_PART* aLibComponent
m_CmpPos = aComponent->GetPosition();
m_SheetNum = 0;
- if( aComponent->GetRef( aSheetPath.Last() ).IsEmpty() )
+ if( aComponent->GetRef( &aSheetPath ).IsEmpty() )
aComponent->SetRef( aSheetPath.Last(), wxT( "DefRef?" ) );
- SetRef( aComponent->GetRef( aSheetPath.Last() ) );
+ SetRef( aComponent->GetRef( &aSheetPath ) );
m_NumRef = -1;
diff --git a/eeschema/controle.cpp b/eeschema/controle.cpp
index aa5d57ae03..792f213999 100644
--- a/eeschema/controle.cpp
+++ b/eeschema/controle.cpp
@@ -108,7 +108,7 @@ SCH_ITEM* SCH_EDIT_FRAME::LocateAndShowItem( const wxPoint& aPosition, const KIC
Pin->GetMsgPanelInfo( items );
if( LibItem )
- items.push_back( MSG_PANEL_ITEM( LibItem->GetRef( m_CurrentSheet->Last() ),
+ items.push_back( MSG_PANEL_ITEM( LibItem->GetRef( m_CurrentSheet ),
LibItem->GetField( VALUE )->GetShownText(), DARKCYAN ) );
SetMsgPanel( items );
diff --git a/eeschema/dialogs/dialog_edit_component_in_schematic.cpp b/eeschema/dialogs/dialog_edit_component_in_schematic.cpp
index 25bd214d43..6aaf17a358 100644
--- a/eeschema/dialogs/dialog_edit_component_in_schematic.cpp
+++ b/eeschema/dialogs/dialog_edit_component_in_schematic.cpp
@@ -727,7 +727,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::InitBuffers( SCH_COMPONENT* aComponent
}
#endif
- m_FieldsBuf[REFERENCE].SetText( m_cmp->GetRef( m_parent->GetCurrentSheet().Last() ) );
+ m_FieldsBuf[REFERENCE].SetText( m_cmp->GetRef( &m_parent->GetCurrentSheet() ) );
for( unsigned i = 0; iLastScreen()->SetZoom( m_parent->GetScreen()->GetZoom() );
m_parent->SetCurrentSheet( *sheet );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
}
m_lastMarkerFound = marker;
diff --git a/eeschema/dialogs/dialog_print_using_printer.cpp b/eeschema/dialogs/dialog_print_using_printer.cpp
index c21b5bb152..09257bda8c 100644
--- a/eeschema/dialogs/dialog_print_using_printer.cpp
+++ b/eeschema/dialogs/dialog_print_using_printer.cpp
@@ -327,7 +327,7 @@ bool SCH_PRINTOUT::OnPrintPage( int page )
if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) )
{
m_parent->SetCurrentSheet( list );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
screen = m_parent->GetCurrentSheet().LastScreen();
}
@@ -341,7 +341,7 @@ bool SCH_PRINTOUT::OnPrintPage( int page )
DrawPage( screen );
m_parent->SetCurrentSheet( oldsheetpath );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
return true;
diff --git a/eeschema/dialogs/dialog_rescue_each.cpp b/eeschema/dialogs/dialog_rescue_each.cpp
index fcc7f489fa..ac804ba2ea 100644
--- a/eeschema/dialogs/dialog_rescue_each.cpp
+++ b/eeschema/dialogs/dialog_rescue_each.cpp
@@ -34,8 +34,6 @@
#include
#include
#include
-#include
-
class DIALOG_RESCUE_EACH: public DIALOG_RESCUE_EACH_BASE
{
@@ -158,7 +156,7 @@ void DIALOG_RESCUE_EACH::PopulateInstanceList()
SCH_FIELD* valueField = each_component->GetField( 1 );
data.clear();
- data.push_back( each_component->GetRef( m_Parent->GetCurrentSheet().Last() ) );
+ data.push_back( each_component->GetRef( & m_Parent->GetCurrentSheet() ) );
data.push_back( valueField ? valueField->GetText() : wxT( "" ) );
m_ListOfInstances->AppendItem( data );
diff --git a/eeschema/erc.cpp b/eeschema/erc.cpp
index d1e3207eed..f3ed69e78a 100644
--- a/eeschema/erc.cpp
+++ b/eeschema/erc.cpp
@@ -289,7 +289,7 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
cmp_ref = wxT( "?" );
if( aNetItemRef->m_Type == NET_PIN && aNetItemRef->m_Link )
- cmp_ref = aNetItemRef->GetComponentParent()->GetRef( aNetItemRef->m_SheetPath.Last() );
+ cmp_ref = aNetItemRef->GetComponentParent()->GetRef( &aNetItemRef->m_SheetPath );
if( aNetItemTst == NULL )
{
@@ -310,7 +310,7 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
{
if( aNetItemRef->m_Type == NET_PIN && aNetItemRef->m_Link )
cmp_ref = aNetItemRef->GetComponentParent()->GetRef(
- aNetItemRef->m_SheetPath.Last() );
+ &aNetItemRef->m_SheetPath );
msg.Printf( _( "Pin %s (%s) of component %s is not driven (Net %d)." ),
GetChars( string_pinnum ),
@@ -352,7 +352,7 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
alt_cmp = wxT( "?" );
if( aNetItemTst->m_Type == NET_PIN && aNetItemTst->m_Link )
- alt_cmp = aNetItemTst->GetComponentParent()->GetRef( aNetItemTst->m_SheetPath.Last() );
+ alt_cmp = aNetItemTst->GetComponentParent()->GetRef( &aNetItemTst->m_SheetPath );
msg.Printf( _( "Pin %s (%s) of component %s is connected to " ),
GetChars( string_pinnum ),
@@ -425,9 +425,9 @@ void TestOthersItems( NETLIST_OBJECT_LIST* aList,
continue;
if( ( (SCH_COMPONENT*) aList->GetItem( aNetItemRef )->
- m_Link )->GetRef( aList->GetItem( aNetItemRef )->m_SheetPath.Last() ) !=
+ m_Link )->GetRef( &aList->GetItem( aNetItemRef )-> m_SheetPath ) !=
( (SCH_COMPONENT*) aList->GetItem( duplicate )->m_Link )
- ->GetRef( aList->GetItem( duplicate )->m_SheetPath.Last() ) )
+ ->GetRef( &aList->GetItem( duplicate )->m_SheetPath ) )
continue;
// Same component and same pin. Do dot create error for this pin
diff --git a/eeschema/find.cpp b/eeschema/find.cpp
index f239ad5727..d3a29e7c81 100644
--- a/eeschema/find.cpp
+++ b/eeschema/find.cpp
@@ -85,7 +85,7 @@ void SCH_EDIT_FRAME::OnFindDrcMarker( wxFindDialogEvent& event )
{
sheetFoundIn->LastScreen()->SetZoom( GetScreen()->GetZoom() );
*m_CurrentSheet = *sheetFoundIn;
- m_CurrentSheet->Last()->UpdateAllScreenReferences();
+ m_CurrentSheet->UpdateAllScreenReferences();
}
SetCrossHairPosition( lastMarker->GetPosition() );
@@ -139,7 +139,7 @@ SCH_ITEM* SCH_EDIT_FRAME::FindComponentAndItem( const wxString& aReference,
SCH_COMPONENT* pSch = (SCH_COMPONENT*) item;
- if( aReference.CmpNoCase( pSch->GetRef( sheet->Last() ) ) == 0 )
+ if( aReference.CmpNoCase( pSch->GetRef( sheet ) ) == 0 )
{
Component = pSch;
sheetWithComponentFound = sheet;
@@ -193,7 +193,7 @@ SCH_ITEM* SCH_EDIT_FRAME::FindComponentAndItem( const wxString& aReference,
{
sheet->LastScreen()->SetZoom( GetScreen()->GetZoom() );
*m_CurrentSheet = *sheet;
- m_CurrentSheet->Last()->UpdateAllScreenReferences();
+ m_CurrentSheet->UpdateAllScreenReferences();
centerAndRedraw = true;
}
@@ -489,7 +489,7 @@ void SCH_EDIT_FRAME::updateFindReplaceView( wxFindDialogEvent& aEvent )
{
sheet->LastScreen()->SetZoom( GetScreen()->GetZoom() );
*m_CurrentSheet = *sheet;
- m_CurrentSheet->Last()->UpdateAllScreenReferences();
+ m_CurrentSheet->UpdateAllScreenReferences();
SetScreen( sheet->LastScreen() );
}
diff --git a/eeschema/hierarch.cpp b/eeschema/hierarch.cpp
index adbf2332c7..578274b173 100644
--- a/eeschema/hierarch.cpp
+++ b/eeschema/hierarch.cpp
@@ -285,7 +285,7 @@ void SCH_EDIT_FRAME::DisplayCurrentSheet()
GetScreen()->SetGrid( m_LastGridSizeId + ID_POPUP_GRID_LEVEL_1000 );
// update the References
- m_CurrentSheet->Last()->UpdateAllScreenReferences();
+ m_CurrentSheet->UpdateAllScreenReferences();
SetSheetNumberAndCount();
m_canvas->SetCanStartBlock( -1 );
diff --git a/eeschema/netlist_exporters/netlist_exporter.cpp b/eeschema/netlist_exporters/netlist_exporter.cpp
index 4a7ebf4a32..62e39ccca8 100644
--- a/eeschema/netlist_exporters/netlist_exporter.cpp
+++ b/eeschema/netlist_exporters/netlist_exporter.cpp
@@ -115,8 +115,7 @@ SCH_COMPONENT* NETLIST_EXPORTER::findNextComponent( EDA_ITEM* aItem, SCH_SHEET_P
// Power symbols and other components which have the reference starting
// with "#" are not included in netlist (pseudo or virtual components)
- ref = comp->GetRef( aSheetPath->Last() );
-
+ ref = comp->GetRef( aSheetPath );
if( ref[0] == wxChar( '#' ) )
continue;
@@ -174,7 +173,7 @@ SCH_COMPONENT* NETLIST_EXPORTER::findNextComponentAndCreatePinList( EDA_ITEM*
// Power symbols and other components which have the reference starting
// with "#" are not included in netlist (pseudo or virtual components)
- ref = comp->GetRef( aSheetPath->Last() );
+ ref = comp->GetRef( aSheetPath );
if( ref[0] == wxChar( '#' ) )
continue;
@@ -207,7 +206,7 @@ SCH_COMPONENT* NETLIST_EXPORTER::findNextComponentAndCreatePinList( EDA_ITEM*
{
LIB_PINS pins; // constructed once here
- part->GetPins( pins, comp->GetUnitSelection( aSheetPath->Last() ), comp->GetConvert() );
+ part->GetPins( pins, comp->GetUnitSelection( aSheetPath ), comp->GetConvert() );
for( size_t i = 0; i < pins.size(); i++ )
{
@@ -323,10 +322,10 @@ void NETLIST_EXPORTER::eraseDuplicatePins()
void NETLIST_EXPORTER::findAllInstancesOfComponent( SCH_COMPONENT* aComponent,
- LIB_PART* aEntry,
- SCH_SHEET_PATH* aSheetPath )
+ LIB_PART* aEntry,
+ SCH_SHEET_PATH* aSheetPath )
{
- wxString ref = aComponent->GetRef( aSheetPath->Last() );
+ wxString ref = aComponent->GetRef( aSheetPath );
wxString ref2;
SCH_SHEET_LIST sheetList;
@@ -340,11 +339,11 @@ void NETLIST_EXPORTER::findAllInstancesOfComponent( SCH_COMPONENT* aComponent,
SCH_COMPONENT* comp2 = (SCH_COMPONENT*) item;
- ref2 = comp2->GetRef( sheet->Last() );
+ ref2 = comp2->GetRef( sheet );
if( ref2.CmpNoCase( ref ) != 0 )
continue;
- int unit2 = comp2->GetUnitSelection( sheet->Last() ); // slow
+ int unit2 = comp2->GetUnitSelection( sheet ); // slow
for( LIB_PIN* pin = aEntry->GetNextPin(); pin; pin = aEntry->GetNextPin( pin ) )
{
diff --git a/eeschema/netlist_exporters/netlist_exporter_cadstar.cpp b/eeschema/netlist_exporters/netlist_exporter_cadstar.cpp
index 9c94c7d394..2b5b7fbf45 100644
--- a/eeschema/netlist_exporters/netlist_exporter_cadstar.cpp
+++ b/eeschema/netlist_exporters/netlist_exporter_cadstar.cpp
@@ -93,7 +93,7 @@ bool NETLIST_EXPORTER_CADSTAR::WriteNetlist( const wxString& aOutFileName, unsig
footprint = wxT( "$noname" );
*/
- msg = component->GetRef( sheet->Last() );
+ msg = component->GetRef( sheet );
ret |= fprintf( f, "%s ", TO_UTF8( StartCmpDesc ) );
ret |= fprintf( f, "%s", TO_UTF8( msg ) );
@@ -159,8 +159,7 @@ bool NETLIST_EXPORTER_CADSTAR::writeListOfNets( FILE* f )
continue;
Cmp = nitem->GetComponentParent();
- wxString refstr = Cmp->GetRef( nitem->m_SheetPath.Last() );
-
+ wxString refstr = Cmp->GetRef( &nitem->m_SheetPath );
if( refstr[0] == '#' )
continue; // Power supply symbols.
diff --git a/eeschema/netlist_exporters/netlist_exporter_generic.cpp b/eeschema/netlist_exporters/netlist_exporter_generic.cpp
index df55edcef6..921e0fc1e4 100644
--- a/eeschema/netlist_exporters/netlist_exporter_generic.cpp
+++ b/eeschema/netlist_exporters/netlist_exporter_generic.cpp
@@ -131,7 +131,7 @@ XNODE* NETLIST_EXPORTER_GENERIC::makeComponents()
// an element.
xcomps->AddChild( xcomp = node( sComponent ) );
- xcomp->AddAttribute( sRef, comp->GetRef( path->Last() ) );
+ xcomp->AddAttribute( sRef, comp->GetRef( path ) );
xcomp->AddChild( node( sValue, comp->GetField( VALUE )->GetText() ) );
@@ -467,8 +467,7 @@ XNODE* NETLIST_EXPORTER_GENERIC::makeListOfNets()
comp = nitem->GetComponentParent();
// Get the reference for the net name and the main parent component
- ref = comp->GetRef( nitem->m_SheetPath.Last() );
-
+ ref = comp->GetRef( &nitem->m_SheetPath );
if( ref[0] == wxChar( '#' ) )
continue;
@@ -530,8 +529,7 @@ bool NETLIST_EXPORTER_GENERIC::writeListOfNets( FILE* f, NETLIST_OBJECT_LIST& aO
comp = nitem->GetComponentParent();
// Get the reference for the net name and the main parent component
- ref = comp->GetRef( nitem->m_SheetPath.Last() );
-
+ ref = comp->GetRef( &nitem->m_SheetPath );
if( ref[0] == wxChar( '#' ) )
continue; // Pseudo component (Like Power symbol)
diff --git a/eeschema/netlist_exporters/netlist_exporter_orcadpcb2.cpp b/eeschema/netlist_exporters/netlist_exporter_orcadpcb2.cpp
index b5f481b3ba..b0c8f6a286 100644
--- a/eeschema/netlist_exporters/netlist_exporter_orcadpcb2.cpp
+++ b/eeschema/netlist_exporters/netlist_exporter_orcadpcb2.cpp
@@ -99,7 +99,7 @@ bool NETLIST_EXPORTER_ORCADPCB2::WriteNetlist( const wxString& aOutFileName, uns
else
footprint = wxT( "$noname" );
- field = comp->GetRef( path->Last() );
+ field = comp->GetRef( path );
ret |= fprintf( f, " ( %s %s",
TO_UTF8( comp->GetPath( path->Last() ) ),
diff --git a/eeschema/netlist_exporters/netlist_exporter_pspice.cpp b/eeschema/netlist_exporters/netlist_exporter_pspice.cpp
index 90746556b0..7158bd4d5e 100644
--- a/eeschema/netlist_exporters/netlist_exporter_pspice.cpp
+++ b/eeschema/netlist_exporters/netlist_exporter_pspice.cpp
@@ -235,7 +235,7 @@ bool NETLIST_EXPORTER_PSPICE::WriteNetlist( const wxString& aOutFileName, unsign
}
//Get Standard Reference Designator:
- wxString RefName = comp->GetRef( sheet->Last() );
+ wxString RefName = comp->GetRef( sheet );
//Conditionally add Prefix only for devices that begin with U or IC:
if( aUsePrefix )
diff --git a/eeschema/plot_schematic_DXF.cpp b/eeschema/plot_schematic_DXF.cpp
index 887aa36886..a571c73baa 100644
--- a/eeschema/plot_schematic_DXF.cpp
+++ b/eeschema/plot_schematic_DXF.cpp
@@ -30,7 +30,6 @@
#include
#include
#include
-#include
#include
#include
@@ -68,7 +67,7 @@ void DIALOG_PLOT_SCHEMATIC::CreateDXFFile( bool aPlotAll, bool aPlotFrameRef )
if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) )
{
schframe->SetCurrentSheet( list );
- schframe->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ schframe->GetCurrentSheet().UpdateAllScreenReferences();
schframe->SetSheetNumberAndCount();
screen = schframe->GetCurrentSheet().LastScreen();
}
@@ -106,7 +105,7 @@ void DIALOG_PLOT_SCHEMATIC::CreateDXFFile( bool aPlotAll, bool aPlotFrameRef )
msg.Printf( wxT( "DXF Plotter exception: %s"), GetChars( e.errorText ) );
reporter.Report( msg, REPORTER::RPT_ERROR );
schframe->SetCurrentSheet( oldsheetpath );
- schframe->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ schframe->GetCurrentSheet().UpdateAllScreenReferences();
schframe->SetSheetNumberAndCount();
return;
}
@@ -117,7 +116,7 @@ void DIALOG_PLOT_SCHEMATIC::CreateDXFFile( bool aPlotAll, bool aPlotFrameRef )
}
schframe->SetCurrentSheet( oldsheetpath );
- schframe->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ schframe->GetCurrentSheet().UpdateAllScreenReferences();
schframe->SetSheetNumberAndCount();
}
@@ -126,7 +125,7 @@ bool DIALOG_PLOT_SCHEMATIC::PlotOneSheetDXF( const wxString& aFileName,
SCH_SCREEN* aScreen,
wxPoint aPlotOffset,
double aScale,
- bool aPlotFrameRef )
+ bool aPlotFrameRef )
{
DXF_PLOTTER* plotter = new DXF_PLOTTER();
diff --git a/eeschema/plot_schematic_HPGL.cpp b/eeschema/plot_schematic_HPGL.cpp
index a19cd16341..c4479404f9 100644
--- a/eeschema/plot_schematic_HPGL.cpp
+++ b/eeschema/plot_schematic_HPGL.cpp
@@ -30,7 +30,6 @@
#include
#include
#include
-#include
#include
#include
@@ -141,7 +140,7 @@ void DIALOG_PLOT_SCHEMATIC::createHPGLFile( bool aPlotAll, bool aPlotFrameRef )
if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) )
{
m_parent->SetCurrentSheet( list );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
screen = m_parent->GetCurrentSheet().LastScreen();
@@ -209,7 +208,7 @@ void DIALOG_PLOT_SCHEMATIC::createHPGLFile( bool aPlotAll, bool aPlotFrameRef )
}
m_parent->SetCurrentSheet( oldsheetpath );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
}
diff --git a/eeschema/plot_schematic_PDF.cpp b/eeschema/plot_schematic_PDF.cpp
index a72c7d3355..900e1fb625 100644
--- a/eeschema/plot_schematic_PDF.cpp
+++ b/eeschema/plot_schematic_PDF.cpp
@@ -28,7 +28,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -78,7 +77,7 @@ void DIALOG_PLOT_SCHEMATIC::createPDFFile( bool aPlotAll, bool aPlotFrameRef )
if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) )
{
m_parent->SetCurrentSheet( list );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
screen = m_parent->GetCurrentSheet().LastScreen();
}
@@ -155,7 +154,7 @@ void DIALOG_PLOT_SCHEMATIC::restoreEnvironment( PDF_PLOTTER* aPlotter,
// Restore the previous sheet
m_parent->SetCurrentSheet( aOldsheetpath );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
}
diff --git a/eeschema/plot_schematic_PS.cpp b/eeschema/plot_schematic_PS.cpp
index fc1dac9d5e..0c42e53b91 100644
--- a/eeschema/plot_schematic_PS.cpp
+++ b/eeschema/plot_schematic_PS.cpp
@@ -29,7 +29,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -68,7 +67,7 @@ void DIALOG_PLOT_SCHEMATIC::createPSFile( bool aPlotAll, bool aPlotFrameRef )
if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) )
{
m_parent->SetCurrentSheet( list );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
screen = m_parent->GetCurrentSheet().LastScreen();
}
@@ -142,7 +141,7 @@ void DIALOG_PLOT_SCHEMATIC::createPSFile( bool aPlotAll, bool aPlotFrameRef )
}
m_parent->SetCurrentSheet( oldsheetpath );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
}
diff --git a/eeschema/plot_schematic_SVG.cpp b/eeschema/plot_schematic_SVG.cpp
index 6213d34e09..0cc81ed854 100644
--- a/eeschema/plot_schematic_SVG.cpp
+++ b/eeschema/plot_schematic_SVG.cpp
@@ -34,7 +34,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -68,7 +67,7 @@ void DIALOG_PLOT_SCHEMATIC::createSVGFile( bool aPrintAll, bool aPrintFrameRef )
if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) )
{
m_parent->SetCurrentSheet( list );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
screen = m_parent->GetCurrentSheet().LastScreen();
}
@@ -110,14 +109,14 @@ void DIALOG_PLOT_SCHEMATIC::createSVGFile( bool aPrintAll, bool aPrintFrameRef )
reporter.Report( msg, REPORTER::RPT_ERROR );
m_parent->SetCurrentSheet( oldsheetpath );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
return;
}
}
m_parent->SetCurrentSheet( oldsheetpath );
- m_parent->GetCurrentSheet().Last()->UpdateAllScreenReferences();
+ m_parent->GetCurrentSheet().UpdateAllScreenReferences();
m_parent->SetSheetNumberAndCount();
}
else // Print current sheet
diff --git a/eeschema/sch_component.cpp b/eeschema/sch_component.cpp
index b49daa9922..9077d89249 100644
--- a/eeschema/sch_component.cpp
+++ b/eeschema/sch_component.cpp
@@ -444,9 +444,9 @@ wxString SCH_COMPONENT::GetPath( const SCH_SHEET* aSheet ) const
}
-const wxString SCH_COMPONENT::GetRef( const SCH_SHEET* aSheet )
+const wxString SCH_COMPONENT::GetRef( const SCH_SHEET_PATH* sheet )
{
- wxString path = GetPath( aSheet );
+ wxString path = GetPath( sheet->Last() );
wxString h_path, h_ref;
wxStringTokenizer tokenizer;
wxString separators( wxT( " " ) );
@@ -473,7 +473,7 @@ const wxString SCH_COMPONENT::GetRef( const SCH_SHEET* aSheet )
// all have the same component references, but perhaps this is best.
if( !GetField( REFERENCE )->GetText().IsEmpty() )
{
- SetRef( aSheet, GetField( REFERENCE )->GetText() );
+ SetRef( sheet->Last(), GetField( REFERENCE )->GetText() );
return GetField( REFERENCE )->GetText();
}
@@ -481,6 +481,12 @@ const wxString SCH_COMPONENT::GetRef( const SCH_SHEET* aSheet )
}
+/* Function IsReferenceStringValid (static function)
+ * Tests for an acceptable reference string
+ * An acceptable reference string must support unannotation
+ * i.e starts by letter
+ * returns true if OK
+ */
bool SCH_COMPONENT::IsReferenceStringValid( const wxString& aReferenceString )
{
wxString text = aReferenceString;
@@ -578,9 +584,9 @@ void SCH_COMPONENT::SetTimeStamp( time_t aNewTimeStamp )
}
-int SCH_COMPONENT::GetUnitSelection( SCH_SHEET* aSheet )
+int SCH_COMPONENT::GetUnitSelection( SCH_SHEET_PATH* aSheet )
{
- wxString path = GetPath( aSheet );
+ wxString path = GetPath( aSheet->Last() );
wxString h_path, h_multi;
wxStringTokenizer tokenizer;
wxString separators( wxT( " " ) );
@@ -1530,7 +1536,7 @@ void SCH_COMPONENT::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList )
if( m_currentSheetPath )
aList.push_back( MSG_PANEL_ITEM( _( "Reference" ),
- GetRef( m_currentSheetPath->Last() ),
+ GetRef( m_currentSheetPath ),
DARKCYAN ) );
wxString msg = part->IsPower() ? _( "Power symbol" ) : _( "Value" );
@@ -1880,7 +1886,7 @@ void SCH_COMPONENT::GetNetListItem( NETLIST_OBJECT_LIST& aNetListItems,
{
wxASSERT( pin->Type() == LIB_PIN_T );
- if( pin->GetUnit() && ( pin->GetUnit() != GetUnitSelection( aSheetPath->Last() ) ) )
+ if( pin->GetUnit() && ( pin->GetUnit() != GetUnitSelection( aSheetPath ) ) )
continue;
if( pin->GetConvert() && ( pin->GetConvert() != GetConvert() ) )
diff --git a/eeschema/sch_component.h b/eeschema/sch_component.h
index 4c780402ba..faa9f46535 100644
--- a/eeschema/sch_component.h
+++ b/eeschema/sch_component.h
@@ -413,7 +413,7 @@ public:
* Function GetRef
* returns the reference, for the given sheet path.
*/
- const wxString GetRef( const SCH_SHEET* sheet );
+ const wxString GetRef( const SCH_SHEET_PATH* sheet );
/**
* Set the reference, for the given sheet path.
@@ -433,7 +433,7 @@ public:
int aMulti );
// returns the unit selection, for the given sheet path.
- int GetUnitSelection( SCH_SHEET* aSheet );
+ int GetUnitSelection( SCH_SHEET_PATH* aSheet );
// Set the unit selection, for the given sheet path.
void SetUnitSelection( SCH_SHEET_PATH* aSheet, int aUnitSelection );
diff --git a/eeschema/sch_field.cpp b/eeschema/sch_field.cpp
index 63f5bbd6e6..550d91de9c 100644
--- a/eeschema/sch_field.cpp
+++ b/eeschema/sch_field.cpp
@@ -402,7 +402,7 @@ bool SCH_FIELD::Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint
wxCHECK_MSG( component != NULL, false,
wxT( "No component associated with field" ) + text );
- text = component->GetRef( ((SCH_SHEET_PATH*) aAuxData)->Last() );
+ text = component->GetRef( (SCH_SHEET_PATH*) aAuxData );
if( component->GetUnitCount() > 1 )
text << LIB_PART::SubReference( component->GetUnit() );
@@ -440,7 +440,7 @@ bool SCH_FIELD::Replace( wxFindReplaceData& aSearchData, void* aAuxData )
wxCHECK_MSG( component != NULL, false,
wxT( "No component associated with field" ) + text );
- text = component->GetRef( ((SCH_SHEET_PATH*) aAuxData)->Last() );
+ text = component->GetRef( (SCH_SHEET_PATH*) aAuxData );
// if( component->GetUnitCount() > 1 )
// text << LIB_PART::SubReference( component->GetUnit() );
diff --git a/eeschema/sch_screen.cpp b/eeschema/sch_screen.cpp
index 1a24d4a24e..95f9d94010 100644
--- a/eeschema/sch_screen.cpp
+++ b/eeschema/sch_screen.cpp
@@ -1116,7 +1116,7 @@ bool SCH_SCREEN::SetComponentFootprint( SCH_SHEET_PATH* aSheetPath, const wxStri
component = (SCH_COMPONENT*) item;
- if( aReference.CmpNoCase( component->GetRef( aSheetPath->Last() ) ) == 0 )
+ if( aReference.CmpNoCase( component->GetRef( aSheetPath ) ) == 0 )
{
// Found: Init Footprint Field
diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp
index b593882b82..e60adf26fe 100644
--- a/eeschema/sch_sheet.cpp
+++ b/eeschema/sch_sheet.cpp
@@ -1332,24 +1332,6 @@ void SCH_SHEET::AnnotatePowerSymbols( PART_LIBS* aLibs, int* aReference )
}
-void SCH_SHEET::UpdateAllScreenReferences()
-{
- EDA_ITEM* t = m_screen->GetDrawItems();
-
- while( t )
- {
- if( t->Type() == SCH_COMPONENT_T )
- {
- SCH_COMPONENT* component = (SCH_COMPONENT*) t;
- component->GetField( REFERENCE )->SetText( component->GetRef( this ) );
- component->UpdateUnit( component->GetUnitSelection( this ) );
- }
-
- t = t->Next();
- }
-}
-
-
SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
{
wxLogDebug( wxT( "Sheet assignment operator." ) );
diff --git a/eeschema/sch_sheet.h b/eeschema/sch_sheet.h
index 2787f12f95..30114adb31 100644
--- a/eeschema/sch_sheet.h
+++ b/eeschema/sch_sheet.h
@@ -668,17 +668,6 @@ public:
*/
void AnnotatePowerSymbols( PART_LIBS* aLibs, int* aReference );
- /**
- * Function UpdateAllScreenReferences
- * updates the reference and the m_Multi parameter (part selection) for all
- * components on a screen depending on the actual sheet.
- * Mandatory in complex hierarchies because sheets use the same screen
- * (basic schematic)
- * but with different references and part selections according to the
- * displayed sheet
- */
- void UpdateAllScreenReferences();
-
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
diff --git a/eeschema/sch_sheet_path.cpp b/eeschema/sch_sheet_path.cpp
index a731ca4b88..e829924152 100644
--- a/eeschema/sch_sheet_path.cpp
+++ b/eeschema/sch_sheet_path.cpp
@@ -227,6 +227,24 @@ wxString SCH_SHEET_PATH::PathHumanReadable() const
}
+void SCH_SHEET_PATH::UpdateAllScreenReferences()
+{
+ EDA_ITEM* t = LastDrawList();
+
+ while( t )
+ {
+ if( t->Type() == SCH_COMPONENT_T )
+ {
+ SCH_COMPONENT* component = (SCH_COMPONENT*) t;
+ component->GetField( REFERENCE )->SetText( component->GetRef( this ) );
+ component->UpdateUnit( component->GetUnitSelection( this ) );
+ }
+
+ t = t->Next();
+ }
+}
+
+
void SCH_SHEET_PATH::GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols )
{
// Search to sheet path number:
@@ -248,7 +266,7 @@ void SCH_SHEET_PATH::GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aRefer
// Skip pseudo components, which have a reference starting with #. This mainly
// affects power symbols.
- if( !aIncludePowerSymbols && component->GetRef( Last() )[0] == wxT( '#' ) )
+ if( !aIncludePowerSymbols && component->GetRef( this )[0] == wxT( '#' ) )
continue;
LIB_PART* part = aLibs->FindLibPart( component->GetPartName() );
@@ -283,7 +301,7 @@ void SCH_SHEET_PATH::GetMultiUnitComponents( PART_LIBS* aLibs, SCH_MULTI_UNIT_RE
// Skip pseudo components, which have a reference starting with #. This mainly
// affects power symbols.
- if( !aIncludePowerSymbols && component->GetRef( Last() )[0] == wxT( '#' ) )
+ if( !aIncludePowerSymbols && component->GetRef( this )[0] == wxT( '#' ) )
continue;
LIB_PART* part = aLibs->FindLibPart( component->GetPartName() );
diff --git a/eeschema/sch_sheet_path.h b/eeschema/sch_sheet_path.h
index e535b307aa..0c542086b3 100644
--- a/eeschema/sch_sheet_path.h
+++ b/eeschema/sch_sheet_path.h
@@ -215,6 +215,17 @@ public:
*/
bool BuildSheetPathInfoFromSheetPathValue( const wxString& aPath, bool aFound = false );
+ /**
+ * Function UpdateAllScreenReferences
+ * updates the reference and the m_Multi parameter (part selection) for all
+ * components on a screen depending on the actual sheet path.
+ * Mandatory in complex hierarchies because sheets use the same screen
+ * (basic schematic)
+ * but with different references and part selections according to the
+ * displayed sheet
+ */
+ void UpdateAllScreenReferences();
+
/**
* Function GetComponents
* adds a SCH_REFERENCE() object to \a aReferences for each component in the sheet.
From 73dc53dc35155b8c8aabe18aceb75149db654e9a Mon Sep 17 00:00:00 2001
From: Wayne Stambaugh
Date: Mon, 15 Feb 2016 15:18:32 -0500
Subject: [PATCH 35/41] Undo commit -r 6413.
---
eeschema/component_references_lister.cpp | 6 +--
.../dialog_edit_component_in_schematic.cpp | 3 +-
eeschema/dialogs/dialog_erc.cpp | 4 +-
eeschema/edit_component_in_schematic.cpp | 7 ++-
eeschema/netlist.cpp | 4 +-
eeschema/sch_component.cpp | 8 ++--
eeschema/sch_component.h | 2 +-
eeschema/sch_field.cpp | 3 +-
eeschema/sch_sheet.cpp | 38 ---------------
eeschema/sch_sheet.h | 12 -----
eeschema/sch_sheet_path.cpp | 46 +++++++++++++++++++
eeschema/sch_sheet_path.h | 21 ++++++++-
12 files changed, 82 insertions(+), 72 deletions(-)
diff --git a/eeschema/component_references_lister.cpp b/eeschema/component_references_lister.cpp
index 93ce5ab35e..6796ef398a 100644
--- a/eeschema/component_references_lister.cpp
+++ b/eeschema/component_references_lister.cpp
@@ -694,7 +694,7 @@ int SCH_REFERENCE_LIST::CheckAnnotation( wxArrayString* aMessageList )
}
-SCH_REFERENCE::SCH_REFERENCE( SCH_COMPONENT* aComponent, LIB_PART* aLibComponent,
+SCH_REFERENCE::SCH_REFERENCE( SCH_COMPONENT* aComponent, LIB_PART* aLibComponent,
SCH_SHEET_PATH& aSheetPath )
{
wxASSERT( aComponent != NULL && aLibComponent != NULL );
@@ -710,7 +710,7 @@ SCH_REFERENCE::SCH_REFERENCE( SCH_COMPONENT* aComponent, LIB_PART* aLibComponent
m_SheetNum = 0;
if( aComponent->GetRef( &aSheetPath ).IsEmpty() )
- aComponent->SetRef( aSheetPath.Last(), wxT( "DefRef?" ) );
+ aComponent->SetRef( &aSheetPath, wxT( "DefRef?" ) );
SetRef( aComponent->GetRef( &aSheetPath ) );
@@ -730,7 +730,7 @@ void SCH_REFERENCE::Annotate()
else
m_Ref = TO_UTF8( GetRef() << m_NumRef );
- m_RootCmp->SetRef( m_SheetPath.Last(), FROM_UTF8( m_Ref.c_str() ) );
+ m_RootCmp->SetRef( &m_SheetPath, FROM_UTF8( m_Ref.c_str() ) );
m_RootCmp->SetUnit( m_Unit );
m_RootCmp->SetUnitSelection( &m_SheetPath, m_Unit );
}
diff --git a/eeschema/dialogs/dialog_edit_component_in_schematic.cpp b/eeschema/dialogs/dialog_edit_component_in_schematic.cpp
index 6aaf17a358..2e974e18d2 100644
--- a/eeschema/dialogs/dialog_edit_component_in_schematic.cpp
+++ b/eeschema/dialogs/dialog_edit_component_in_schematic.cpp
@@ -42,7 +42,6 @@
#include
#include
#include
-#include
#include
#include
@@ -459,7 +458,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick( wxCommandEvent& event
// Reference has a specific initialization, depending on the current active sheet
// because for a given component, in a complex hierarchy, there are more than one
// reference.
- m_cmp->SetRef( m_parent->GetCurrentSheet().Last(), m_FieldsBuf[REFERENCE].GetText() );
+ m_cmp->SetRef( &m_parent->GetCurrentSheet(), m_FieldsBuf[REFERENCE].GetText() );
m_parent->OnModify();
m_parent->GetScreen()->TestDanglingEnds();
diff --git a/eeschema/dialogs/dialog_erc.cpp b/eeschema/dialogs/dialog_erc.cpp
index d7208aa2ba..87acb30d5f 100644
--- a/eeschema/dialogs/dialog_erc.cpp
+++ b/eeschema/dialogs/dialog_erc.cpp
@@ -455,8 +455,8 @@ void DIALOG_ERC::TestErc( wxArrayString* aMessagesList )
m_tstUniqueGlobalLabels = m_cbTestUniqueGlbLabels->GetValue();
// Build the whole sheet list in hierarchy (sheet, not screen)
- int refDes = 1;
- g_RootSheet->AnnotatePowerSymbols( Prj().SchLibs(), &refDes );
+ SCH_SHEET_LIST sheets;
+ sheets.AnnotatePowerSymbols( Prj().SchLibs() );
if( m_parent->CheckAnnotate( aMessagesList, false ) )
{
diff --git a/eeschema/edit_component_in_schematic.cpp b/eeschema/edit_component_in_schematic.cpp
index 0d899b24dc..c9294a59cd 100644
--- a/eeschema/edit_component_in_schematic.cpp
+++ b/eeschema/edit_component_in_schematic.cpp
@@ -2,8 +2,8 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
- * Copyright (C) 2008-2015 Wayne Stambaugh
- * Copyright (C) 2004-2015 KiCad Developers, see change_log.txt for contributors.
+ * Copyright (C) 2008-2013 Wayne Stambaugh
+ * Copyright (C) 2004-2013 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
@@ -38,7 +38,6 @@
#include
#include
#include
-#include
#include
@@ -102,7 +101,7 @@ void SCH_EDIT_FRAME::EditComponentFieldText( SCH_FIELD* aField )
// Test if the reference string is valid:
if( SCH_COMPONENT::IsReferenceStringValid( newtext ) )
{
- component->SetRef( m_CurrentSheet->Last(), newtext );
+ component->SetRef( m_CurrentSheet, newtext );
}
else
{
diff --git a/eeschema/netlist.cpp b/eeschema/netlist.cpp
index edcce6b089..ebc324570a 100644
--- a/eeschema/netlist.cpp
+++ b/eeschema/netlist.cpp
@@ -67,9 +67,9 @@ int TestDuplicateSheetNames( bool aCreateMarker );
bool SCH_EDIT_FRAME::prepareForNetlist()
{
- int refDes = 1;
+ SCH_SHEET_LIST sheets;
- g_RootSheet->AnnotatePowerSymbols( Prj().SchLibs(), &refDes );
+ sheets.AnnotatePowerSymbols( Prj().SchLibs() );
// Performs some controls:
if( CheckAnnotate( NULL, 0 ) )
diff --git a/eeschema/sch_component.cpp b/eeschema/sch_component.cpp
index 9077d89249..1bec57f4f5 100644
--- a/eeschema/sch_component.cpp
+++ b/eeschema/sch_component.cpp
@@ -186,7 +186,7 @@ SCH_COMPONENT::SCH_COMPONENT( LIB_PART& aPart, SCH_SHEET_PATH* sheet, int unit,
// update the reference -- just the prefix for now.
msg += wxT( "?" );
- SetRef( sheet->Last(), msg );
+ SetRef( sheet, msg );
// Use the schematic component name instead of the library value field
// name.
@@ -473,7 +473,7 @@ const wxString SCH_COMPONENT::GetRef( const SCH_SHEET_PATH* sheet )
// all have the same component references, but perhaps this is best.
if( !GetField( REFERENCE )->GetText().IsEmpty() )
{
- SetRef( sheet->Last(), GetField( REFERENCE )->GetText() );
+ SetRef( sheet, GetField( REFERENCE )->GetText() );
return GetField( REFERENCE )->GetText();
}
@@ -506,9 +506,9 @@ bool SCH_COMPONENT::IsReferenceStringValid( const wxString& aReferenceString )
}
-void SCH_COMPONENT::SetRef( const SCH_SHEET* aSheet, const wxString& ref )
+void SCH_COMPONENT::SetRef( const SCH_SHEET_PATH* sheet, const wxString& ref )
{
- wxString path = GetPath( aSheet );
+ wxString path = GetPath( sheet->Last() );
bool notInArray = true;
diff --git a/eeschema/sch_component.h b/eeschema/sch_component.h
index faa9f46535..5b1535a0b5 100644
--- a/eeschema/sch_component.h
+++ b/eeschema/sch_component.h
@@ -418,7 +418,7 @@ public:
/**
* Set the reference, for the given sheet path.
*/
- void SetRef( const SCH_SHEET* aSheet, const wxString& ref );
+ void SetRef( const SCH_SHEET_PATH* sheet, const wxString& ref );
/**
* Function AddHierarchicalReference
diff --git a/eeschema/sch_field.cpp b/eeschema/sch_field.cpp
index 550d91de9c..38cbe18277 100644
--- a/eeschema/sch_field.cpp
+++ b/eeschema/sch_field.cpp
@@ -48,7 +48,6 @@
#include
#include
#include
-#include
#include
@@ -448,7 +447,7 @@ bool SCH_FIELD::Replace( wxFindReplaceData& aSearchData, void* aAuxData )
isReplaced = EDA_ITEM::Replace( aSearchData, text );
if( isReplaced )
- component->SetRef( ((SCH_SHEET_PATH*) aAuxData)->Last(), text );
+ component->SetRef( (SCH_SHEET_PATH*) aAuxData, text );
}
else
{
diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp
index e60adf26fe..8773625797 100644
--- a/eeschema/sch_sheet.cpp
+++ b/eeschema/sch_sheet.cpp
@@ -37,7 +37,6 @@
#include
#include
-#include
#include
#include
#include
@@ -1295,43 +1294,6 @@ void SCH_SHEET::ClearModifyStatus()
}
-void SCH_SHEET::AnnotatePowerSymbols( PART_LIBS* aLibs, int* aReference )
-{
- int ref = 1;
-
- if( aReference )
- ref = *aReference;
-
- for( EDA_ITEM* item = m_screen->GetDrawItems(); item; item = item->Next() )
- {
- if( item->Type() != SCH_COMPONENT_T )
- continue;
-
- SCH_COMPONENT* component = (SCH_COMPONENT*) item;
- LIB_PART* part = aLibs->FindLibPart( component->GetPartName() );
-
- if( !part || !part->IsPower() )
- continue;
-
- wxString refstr = component->GetPrefix();
-
- //str will be "C?" or so after the ClearAnnotation call.
- while( refstr.Last() == '?' )
- refstr.RemoveLast();
-
- if( !refstr.StartsWith( wxT( "#" ) ) )
- refstr = wxT( "#" ) + refstr;
-
- refstr << wxT( "0" ) << ref;
- component->SetRef( this, refstr );
- ref++;
- }
-
- if( aReference )
- *aReference = ref;
-}
-
-
SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
{
wxLogDebug( wxT( "Sheet assignment operator." ) );
diff --git a/eeschema/sch_sheet.h b/eeschema/sch_sheet.h
index 30114adb31..2d284cf118 100644
--- a/eeschema/sch_sheet.h
+++ b/eeschema/sch_sheet.h
@@ -35,7 +35,6 @@
#include
-class PART_LIBS;
class LINE_READER;
class SCH_SCREEN;
class SCH_SHEET;
@@ -657,17 +656,6 @@ public:
*/
bool IsAutoSaveRequired();
- /**
- * Function AnnotatePowerSymbols
- * annotates the power symbols only starting at \a aReference in the sheet path.
- * @param aLibs the library list to use
- * @param aReference A pointer to the number for the reference designator of the
- * first power symbol to be annotated. If the pointer is NULL
- * the annotation starts at 1. The number is incremented for
- * each power symbol in the sheet that is annotated.
- */
- void AnnotatePowerSymbols( PART_LIBS* aLibs, int* aReference );
-
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
diff --git a/eeschema/sch_sheet_path.cpp b/eeschema/sch_sheet_path.cpp
index e829924152..e43f2243bb 100644
--- a/eeschema/sch_sheet_path.cpp
+++ b/eeschema/sch_sheet_path.cpp
@@ -245,6 +245,43 @@ void SCH_SHEET_PATH::UpdateAllScreenReferences()
}
+void SCH_SHEET_PATH::AnnotatePowerSymbols( PART_LIBS* aLibs, int* aReference )
+{
+ int ref = 1;
+
+ if( aReference )
+ ref = *aReference;
+
+ for( EDA_ITEM* item = LastDrawList(); item; item = item->Next() )
+ {
+ if( item->Type() != SCH_COMPONENT_T )
+ continue;
+
+ SCH_COMPONENT* component = (SCH_COMPONENT*) item;
+ LIB_PART* part = aLibs->FindLibPart( component->GetPartName() );
+
+ if( !part || !part->IsPower() )
+ continue;
+
+ wxString refstr = component->GetPrefix();
+
+ //str will be "C?" or so after the ClearAnnotation call.
+ while( refstr.Last() == '?' )
+ refstr.RemoveLast();
+
+ if( !refstr.StartsWith( wxT( "#" ) ) )
+ refstr = wxT( "#" ) + refstr;
+
+ refstr << wxT( "0" ) << ref;
+ component->SetRef( this, refstr );
+ ref++;
+ }
+
+ if( aReference )
+ *aReference = ref;
+}
+
+
void SCH_SHEET_PATH::GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols )
{
// Search to sheet path number:
@@ -647,6 +684,15 @@ void SCH_SHEET_LIST::BuildSheetList( SCH_SHEET* aSheet )
}
+void SCH_SHEET_LIST::AnnotatePowerSymbols( PART_LIBS* aLibs )
+{
+ int ref = 1;
+
+ for( SCH_SHEET_PATH* path = GetFirst(); path; path = GetNext() )
+ path->AnnotatePowerSymbols( aLibs, &ref );
+}
+
+
void SCH_SHEET_LIST::GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences,
bool aIncludePowerSymbols )
{
diff --git a/eeschema/sch_sheet_path.h b/eeschema/sch_sheet_path.h
index 0c542086b3..30c6ee330a 100644
--- a/eeschema/sch_sheet_path.h
+++ b/eeschema/sch_sheet_path.h
@@ -226,6 +226,17 @@ public:
*/
void UpdateAllScreenReferences();
+ /**
+ * Function AnnotatePowerSymbols
+ * annotates the power symbols only starting at \a aReference in the sheet path.
+ * @param aLibs the library list to use
+ * @param aReference A pointer to the number for the reference designator of the
+ * first power symbol to be annotated. If the pointer is NULL
+ * the annotation starts at 1. The number is incremented for
+ * each power symbol annotated.
+ */
+ void AnnotatePowerSymbols( PART_LIBS* aLibs, int* aReference );
+
/**
* Function GetComponents
* adds a SCH_REFERENCE() object to \a aReferences for each component in the sheet.
@@ -425,6 +436,13 @@ public:
*/
SCH_SHEET_PATH* GetSheetByPath( const wxString aPath, bool aHumanReadable = true );
+ /**
+ * Function AnnotatePowerSymbols
+ * clear and annotates the entire hierarchy of the sheet path list.
+ * @param aLib the library list to use
+ */
+ void AnnotatePowerSymbols( PART_LIBS* aLib );
+
/**
* Function GetComponents
* adds a SCH_REFERENCE() object to \a aReferences for each component in the list
@@ -433,8 +451,7 @@ public:
* @param aReferences List of references to populate.
* @param aIncludePowerSymbols Set to false to only get normal components.
*/
- void GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences,
- bool aIncludePowerSymbols = true );
+ void GetComponents( PART_LIBS* aLibs, SCH_REFERENCE_LIST& aReferences, bool aIncludePowerSymbols = true );
/**
* Function GetMultiUnitComponents
From 3d963166c7a29e1ba364f515d394540d5e31a4aa Mon Sep 17 00:00:00 2001
From: Wayne Stambaugh
Date: Mon, 15 Feb 2016 15:19:22 -0500
Subject: [PATCH 36/41] Undo commit -r 6389.
---
eeschema/sch_sheet.cpp | 25 -------------------------
eeschema/sch_sheet.h | 7 -------
eeschema/sch_sheet_path.cpp | 12 ++++++++++++
eeschema/sch_sheet_path.h | 7 +++++++
eeschema/schframe.cpp | 5 ++++-
5 files changed, 23 insertions(+), 33 deletions(-)
diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp
index 8773625797..0399ac628c 100644
--- a/eeschema/sch_sheet.cpp
+++ b/eeschema/sch_sheet.cpp
@@ -1253,31 +1253,6 @@ bool SCH_SHEET::IsModified() const
}
-bool SCH_SHEET::IsAutoSaveRequired()
-{
- if( m_screen->IsModify() )
- return true;
-
- bool retv = false;
- SCH_ITEM* item = m_screen->GetDrawItems();
-
- while( item && !retv )
- {
- if( item->Type() == SCH_SHEET_T )
- {
- SCH_SHEET* sheet = static_cast( item );
-
- if( sheet->m_screen )
- retv = sheet->m_screen->IsSave();
- }
-
- item = item->Next();
- }
-
- return retv;
-}
-
-
void SCH_SHEET::ClearModifyStatus()
{
m_screen->ClrModify();
diff --git a/eeschema/sch_sheet.h b/eeschema/sch_sheet.h
index 2d284cf118..7ae3bb0a73 100644
--- a/eeschema/sch_sheet.h
+++ b/eeschema/sch_sheet.h
@@ -649,13 +649,6 @@ public:
*/
void ClearModifyStatus();
- /**
- * Function IsAutoSaveRequired
- * checks the entire hierarchy for any modifications that require auto save.
- * @return True if the hierarchy is modified otherwise false.
- */
- bool IsAutoSaveRequired();
-
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
diff --git a/eeschema/sch_sheet_path.cpp b/eeschema/sch_sheet_path.cpp
index e43f2243bb..9625331d9f 100644
--- a/eeschema/sch_sheet_path.cpp
+++ b/eeschema/sch_sheet_path.cpp
@@ -684,6 +684,18 @@ void SCH_SHEET_LIST::BuildSheetList( SCH_SHEET* aSheet )
}
+bool SCH_SHEET_LIST::IsAutoSaveRequired()
+{
+ for( SCH_SHEET_PATH* sheet = GetFirst(); sheet; sheet = GetNext() )
+ {
+ if( sheet->LastScreen() && sheet->LastScreen()->IsSave() )
+ return true;
+ }
+
+ return false;
+}
+
+
void SCH_SHEET_LIST::AnnotatePowerSymbols( PART_LIBS* aLibs )
{
int ref = 1;
diff --git a/eeschema/sch_sheet_path.h b/eeschema/sch_sheet_path.h
index 30c6ee330a..88376c47f6 100644
--- a/eeschema/sch_sheet_path.h
+++ b/eeschema/sch_sheet_path.h
@@ -436,6 +436,13 @@ public:
*/
SCH_SHEET_PATH* GetSheetByPath( const wxString aPath, bool aHumanReadable = true );
+ /**
+ * Function IsAutoSaveRequired
+ * checks the entire hierarchy for any modifications that require auto save.
+ * @return True if the hierarchy is modified otherwise false.
+ */
+ bool IsAutoSaveRequired();
+
/**
* Function AnnotatePowerSymbols
* clear and annotates the entire hierarchy of the sheet path list.
diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp
index 535435f222..a0d2fd4c8a 100644
--- a/eeschema/schframe.cpp
+++ b/eeschema/schframe.cpp
@@ -1226,9 +1226,12 @@ bool SCH_EDIT_FRAME::isAutoSaveRequired() const
{
// In case this event happens before g_RootSheet is initialized which does happen
// on mingw64 builds.
+
if( g_RootSheet != NULL )
{
- return g_RootSheet->IsAutoSaveRequired();
+ SCH_SHEET_LIST sheetList;
+
+ return sheetList.IsAutoSaveRequired();
}
return false;
From af2e19d7d9ee7e946d3c1a542c35a0a4f0846431 Mon Sep 17 00:00:00 2001
From: Wayne Stambaugh
Date: Mon, 15 Feb 2016 15:21:18 -0500
Subject: [PATCH 37/41] Undo commit -r 6380.
---
eeschema/sch_sheet.cpp | 36 ------------------------------------
eeschema/sch_sheet.h | 14 --------------
eeschema/sch_sheet_path.cpp | 22 ++++++++++++++++++++++
eeschema/sch_sheet_path.h | 9 +++++++++
eeschema/schframe.cpp | 11 ++++++++---
5 files changed, 39 insertions(+), 53 deletions(-)
diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp
index 0399ac628c..a8d657609a 100644
--- a/eeschema/sch_sheet.cpp
+++ b/eeschema/sch_sheet.cpp
@@ -1233,42 +1233,6 @@ void SCH_SHEET::ClearAnnotation( bool aIncludeSubSheets )
}
-bool SCH_SHEET::IsModified() const
-{
- if( m_screen->IsModify() )
- return true;
-
- bool retv = false;
- SCH_ITEM* item = m_screen->GetDrawItems();
-
- while( item && !retv )
- {
- if( item->Type() == SCH_SHEET_T )
- retv = static_cast( item )->IsModified();
-
- item = item->Next();
- }
-
- return retv;
-}
-
-
-void SCH_SHEET::ClearModifyStatus()
-{
- m_screen->ClrModify();
-
- SCH_ITEM* item = m_screen->GetDrawItems();
-
- while( item )
- {
- if( item->Type() == SCH_SHEET_T )
- static_cast( item )->m_screen->ClrModify();
-
- item = item->Next();
- }
-}
-
-
SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
{
wxLogDebug( wxT( "Sheet assignment operator." ) );
diff --git a/eeschema/sch_sheet.h b/eeschema/sch_sheet.h
index 7ae3bb0a73..ce9f36422a 100644
--- a/eeschema/sch_sheet.h
+++ b/eeschema/sch_sheet.h
@@ -635,20 +635,6 @@ public:
void ClearAnnotation( bool aIncludeSubSheets = false );
- /**
- * Function IsModified
- * checks the sheet and any of it's sub-sheets (hierarchy) for any modifications.
- * @return true if the hierarchy is modified otherwise false.
- */
- bool IsModified() const;
-
- /**
- * Function ClearModifyStatus
- *
- * clears the modification flag for everything in the sheet and all sub-sheets.
- */
- void ClearModifyStatus();
-
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
diff --git a/eeschema/sch_sheet_path.cpp b/eeschema/sch_sheet_path.cpp
index 9625331d9f..790a22cbd8 100644
--- a/eeschema/sch_sheet_path.cpp
+++ b/eeschema/sch_sheet_path.cpp
@@ -684,6 +684,18 @@ void SCH_SHEET_LIST::BuildSheetList( SCH_SHEET* aSheet )
}
+bool SCH_SHEET_LIST::IsModified()
+{
+ for( SCH_SHEET_PATH* sheet = GetFirst(); sheet; sheet = GetNext() )
+ {
+ if( sheet->LastScreen() && sheet->LastScreen()->IsModify() )
+ return true;
+ }
+
+ return false;
+}
+
+
bool SCH_SHEET_LIST::IsAutoSaveRequired()
{
for( SCH_SHEET_PATH* sheet = GetFirst(); sheet; sheet = GetNext() )
@@ -696,6 +708,16 @@ bool SCH_SHEET_LIST::IsAutoSaveRequired()
}
+void SCH_SHEET_LIST::ClearModifyStatus()
+{
+ for( SCH_SHEET_PATH* sheet = GetFirst(); sheet; sheet = GetNext() )
+ {
+ if( sheet->LastScreen() )
+ sheet->LastScreen()->ClrModify();
+ }
+}
+
+
void SCH_SHEET_LIST::AnnotatePowerSymbols( PART_LIBS* aLibs )
{
int ref = 1;
diff --git a/eeschema/sch_sheet_path.h b/eeschema/sch_sheet_path.h
index 88376c47f6..c301e030bd 100644
--- a/eeschema/sch_sheet_path.h
+++ b/eeschema/sch_sheet_path.h
@@ -436,6 +436,13 @@ public:
*/
SCH_SHEET_PATH* GetSheetByPath( const wxString aPath, bool aHumanReadable = true );
+ /**
+ * Function IsModified
+ * checks the entire hierarchy for any modifications.
+ * @returns True if the hierarchy is modified otherwise false.
+ */
+ bool IsModified();
+
/**
* Function IsAutoSaveRequired
* checks the entire hierarchy for any modifications that require auto save.
@@ -443,6 +450,8 @@ public:
*/
bool IsAutoSaveRequired();
+ void ClearModifyStatus();
+
/**
* Function AnnotatePowerSymbols
* clear and annotates the entire hierarchy of the sheet path list.
diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp
index a0d2fd4c8a..b7a23f8d09 100644
--- a/eeschema/schframe.cpp
+++ b/eeschema/schframe.cpp
@@ -616,7 +616,9 @@ void SCH_EDIT_FRAME::OnCloseWindow( wxCloseEvent& aEvent )
return;
}
- if( g_RootSheet->IsModified() )
+ SCH_SHEET_LIST sheetList;
+
+ if( sheetList.IsModified() )
{
wxString fileName = Prj().AbsolutePath( g_RootSheet->GetScreen()->GetFileName() );
wxString msg = wxString::Format( _(
@@ -667,7 +669,7 @@ void SCH_EDIT_FRAME::OnCloseWindow( wxCloseEvent& aEvent )
wxRemoveFile( fn.GetFullPath() );
}
- g_RootSheet->ClearModifyStatus();
+ sheetList.ClearModifyStatus();
wxString fileName = Prj().AbsolutePath( g_RootSheet->GetScreen()->GetFileName() );
@@ -787,13 +789,16 @@ void SCH_EDIT_FRAME::OnUpdateHiddenPins( wxUpdateUIEvent& aEvent )
void SCH_EDIT_FRAME::OnUpdateSave( wxUpdateUIEvent& aEvent )
{
- aEvent.Enable( g_RootSheet->IsModified() );
+ SCH_SHEET_LIST sheetList;
+
+ aEvent.Enable( sheetList.IsModified() );
}
void SCH_EDIT_FRAME::OnUpdateSaveSheet( wxUpdateUIEvent& aEvent )
{
aEvent.Enable( GetScreen()->IsModify() );
+
}
From 03bf55946562248827418da3afd9e13684660456 Mon Sep 17 00:00:00 2001
From: Wayne Stambaugh
Date: Mon, 15 Feb 2016 15:22:45 -0500
Subject: [PATCH 38/41] Undo commit -r 6368.
---
eeschema/annotate.cpp | 11 ++++----
eeschema/class_sch_screen.h | 14 +++++++---
.../netlist_exporter_orcadpcb2.cpp | 2 +-
eeschema/sch_component.cpp | 28 +++++++++----------
eeschema/sch_component.h | 10 +++----
eeschema/sch_screen.cpp | 11 ++++++--
eeschema/sch_sheet.cpp | 19 -------------
eeschema/sch_sheet.h | 2 --
8 files changed, 45 insertions(+), 52 deletions(-)
diff --git a/eeschema/annotate.cpp b/eeschema/annotate.cpp
index d0bae72a91..1b2a27d232 100644
--- a/eeschema/annotate.cpp
+++ b/eeschema/annotate.cpp
@@ -6,7 +6,7 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
- * Copyright (C) 2004-2015 KiCad Developers, see change_log.txt for contributors.
+ * Copyright (C) 2004-2013 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
@@ -35,18 +35,19 @@
#include
#include
-#include
-
void SCH_EDIT_FRAME::DeleteAnnotation( bool aCurrentSheetOnly )
{
if( aCurrentSheetOnly )
{
- m_CurrentSheet->Last()->ClearAnnotation();
+ SCH_SCREEN* screen = GetScreen();
+ wxCHECK_RET( screen != NULL, wxT( "Attempt to clear annotation of a NULL screen." ) );
+ screen->ClearAnnotation( m_CurrentSheet );
}
else
{
- m_CurrentSheet->Last()->GetRootSheet()->ClearAnnotation( true );
+ SCH_SCREENS ScreenList;
+ ScreenList.ClearAnnotation();
}
// Update the references for the sheet that is currently being displayed.
diff --git a/eeschema/class_sch_screen.h b/eeschema/class_sch_screen.h
index a13249098e..67c6451b1c 100644
--- a/eeschema/class_sch_screen.h
+++ b/eeschema/class_sch_screen.h
@@ -425,11 +425,11 @@ public:
/**
* Function ClearAnnotation
- * clears the annotation for the components in \a aSheet on the screen.
- * @param aSheet The sheet of the component annotation to clear. If NULL then
- * the entire hierarchy is cleared for this screen.
+ * clears the annotation for the components in \a aSheetPath on the screen.
+ * @param aSheetPath The sheet path of the component annotation to clear. If NULL then
+ * the entire hierarchy is cleared.
*/
- void ClearAnnotation( SCH_SHEET* aSheet );
+ void ClearAnnotation( SCH_SHEET_PATH* aSheetPath );
/**
* Function GetHierarchicalItems
@@ -549,6 +549,12 @@ public:
SCH_SCREEN* GetNext();
SCH_SCREEN* GetScreen( unsigned int aIndex ) const;
+ /**
+ * Function ClearAnnotation
+ * clears the annotation for all components in the hierarchy.
+ */
+ void ClearAnnotation();
+
/**
* Function SchematicCleanUp
* merges and breaks wire segments in the entire schematic hierarchy.
diff --git a/eeschema/netlist_exporters/netlist_exporter_orcadpcb2.cpp b/eeschema/netlist_exporters/netlist_exporter_orcadpcb2.cpp
index b0c8f6a286..0aeaccc3d0 100644
--- a/eeschema/netlist_exporters/netlist_exporter_orcadpcb2.cpp
+++ b/eeschema/netlist_exporters/netlist_exporter_orcadpcb2.cpp
@@ -102,7 +102,7 @@ bool NETLIST_EXPORTER_ORCADPCB2::WriteNetlist( const wxString& aOutFileName, uns
field = comp->GetRef( path );
ret |= fprintf( f, " ( %s %s",
- TO_UTF8( comp->GetPath( path->Last() ) ),
+ TO_UTF8( comp->GetPath( path ) ),
TO_UTF8( footprint ) );
ret |= fprintf( f, " %s", TO_UTF8( field ) );
diff --git a/eeschema/sch_component.cpp b/eeschema/sch_component.cpp
index 1bec57f4f5..aaed3f31a3 100644
--- a/eeschema/sch_component.cpp
+++ b/eeschema/sch_component.cpp
@@ -432,21 +432,21 @@ void SCH_COMPONENT::AddHierarchicalReference( const wxString& aPath,
}
-wxString SCH_COMPONENT::GetPath( const SCH_SHEET* aSheet ) const
+wxString SCH_COMPONENT::GetPath( const SCH_SHEET_PATH* sheet ) const
{
- wxCHECK_MSG( aSheet != NULL, wxEmptyString,
+ wxCHECK_MSG( sheet != NULL, wxEmptyString,
wxT( "Cannot get component path with invalid sheet object." ) );
wxString str;
str.Printf( wxT( "%8.8lX" ), (long unsigned) m_TimeStamp );
- return aSheet->GetPath() + str;
+ return sheet->Path() + str;
}
const wxString SCH_COMPONENT::GetRef( const SCH_SHEET_PATH* sheet )
{
- wxString path = GetPath( sheet->Last() );
+ wxString path = GetPath( sheet );
wxString h_path, h_ref;
wxStringTokenizer tokenizer;
wxString separators( wxT( " " ) );
@@ -508,7 +508,7 @@ bool SCH_COMPONENT::IsReferenceStringValid( const wxString& aReferenceString )
void SCH_COMPONENT::SetRef( const SCH_SHEET_PATH* sheet, const wxString& ref )
{
- wxString path = GetPath( sheet->Last() );
+ wxString path = GetPath( sheet );
bool notInArray = true;
@@ -586,7 +586,7 @@ void SCH_COMPONENT::SetTimeStamp( time_t aNewTimeStamp )
int SCH_COMPONENT::GetUnitSelection( SCH_SHEET_PATH* aSheet )
{
- wxString path = GetPath( aSheet->Last() );
+ wxString path = GetPath( aSheet );
wxString h_path, h_multi;
wxStringTokenizer tokenizer;
wxString separators( wxT( " " ) );
@@ -614,7 +614,7 @@ int SCH_COMPONENT::GetUnitSelection( SCH_SHEET_PATH* aSheet )
void SCH_COMPONENT::SetUnitSelection( SCH_SHEET_PATH* aSheet, int aUnitSelection )
{
- wxString path = GetPath( aSheet->Last() );
+ wxString path = GetPath( aSheet );
bool notInArray = true;
@@ -751,7 +751,7 @@ void SCH_COMPONENT::SwapData( SCH_ITEM* aItem )
}
-void SCH_COMPONENT::ClearAnnotation( SCH_SHEET* aSheet )
+void SCH_COMPONENT::ClearAnnotation( SCH_SHEET_PATH* aSheetPath )
{
bool keepMulti = false;
wxArrayString reference_fields;
@@ -774,7 +774,7 @@ void SCH_COMPONENT::ClearAnnotation( SCH_SHEET* aSheet )
}
else
{ // This is a malformed reference: reinit this reference
- m_prefix = defRef = wxT( "U" ); // Set to default ref prefix
+ m_prefix = defRef = wxT("U"); // Set to default ref prefix
}
defRef.Append( wxT( "?" ) );
@@ -783,22 +783,22 @@ void SCH_COMPONENT::ClearAnnotation( SCH_SHEET* aSheet )
// For components with units locked,
// we cannot remove all annotations: part selection must be kept
- // For all components: if aSheet is not NULL,
+ // For all components: if aSheetPath is not NULL,
// remove annotation only for the given path
- if( keepMulti || aSheet )
+ if( keepMulti || aSheetPath )
{
wxString NewHref;
wxString path;
- if( aSheet )
- path = GetPath( aSheet );
+ if( aSheetPath )
+ path = GetPath( aSheetPath );
for( unsigned int ii = 0; ii < m_PathsAndReferences.GetCount(); ii++ )
{
// Break hierarchical reference in path, ref and multi selection:
reference_fields = wxStringTokenize( m_PathsAndReferences[ii], separators );
- if( aSheet == NULL || reference_fields[0].Cmp( path ) == 0 )
+ if( aSheetPath == NULL || reference_fields[0].Cmp( path ) == 0 )
{
if( keepMulti ) // Get and keep part selection
multi = reference_fields[2];
diff --git a/eeschema/sch_component.h b/eeschema/sch_component.h
index 5b1535a0b5..7d64546615 100644
--- a/eeschema/sch_component.h
+++ b/eeschema/sch_component.h
@@ -244,10 +244,10 @@ public:
/**
* Function ClearAnnotation
* clears exiting component annotation ( i.i IC23 changed to IC? and part reset to 1)
- * @param aSheet: SCH_SHEET value: if NULL remove all annotations,
- * else remove annotation relative to \a aSheet.
+ * @param aSheetPath: SCH_SHEET_PATH value: if NULL remove all annotations,
+ * else remove annotation relative to this sheetpath
*/
- void ClearAnnotation( SCH_SHEET* aSheet );
+ void ClearAnnotation( SCH_SHEET_PATH* aSheetPath );
/**
* Function SetTimeStamp
@@ -391,8 +391,8 @@ public:
void SwapData( SCH_ITEM* aItem );
- // returns a unique ID, in the form of a path determined by \a aSheet.
- wxString GetPath( const SCH_SHEET* sheet ) const;
+ // returns a unique ID, in the form of a path.
+ wxString GetPath( const SCH_SHEET_PATH* sheet ) const;
/**
* Function IsReferenceStringValid (static)
diff --git a/eeschema/sch_screen.cpp b/eeschema/sch_screen.cpp
index 95f9d94010..c2f8201979 100644
--- a/eeschema/sch_screen.cpp
+++ b/eeschema/sch_screen.cpp
@@ -755,7 +755,7 @@ int SCH_SCREEN::CountConnectedItems( const wxPoint& aPos, bool aTestJunctions )
}
-void SCH_SCREEN::ClearAnnotation( SCH_SHEET* aSheet )
+void SCH_SCREEN::ClearAnnotation( SCH_SHEET_PATH* aSheetPath )
{
for( SCH_ITEM* item = m_drawList.begin(); item; item = item->Next() )
{
@@ -763,7 +763,7 @@ void SCH_SCREEN::ClearAnnotation( SCH_SHEET* aSheet )
{
SCH_COMPONENT* component = (SCH_COMPONENT*) item;
- component->ClearAnnotation( aSheet );
+ component->ClearAnnotation( aSheetPath );
// Clear the modified component flag set by component->ClearAnnotation
// because we do not use it here and we should not leave this flag set,
@@ -1431,6 +1431,13 @@ void SCH_SCREENS::BuildScreenList( EDA_ITEM* aItem )
}
+void SCH_SCREENS::ClearAnnotation()
+{
+ for( size_t i = 0; i < m_screens.size(); i++ )
+ m_screens[i]->ClearAnnotation( NULL );
+}
+
+
void SCH_SCREENS::SchematicCleanUp()
{
for( size_t i = 0; i < m_screens.size(); i++ )
diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp
index a8d657609a..f142113c4a 100644
--- a/eeschema/sch_sheet.cpp
+++ b/eeschema/sch_sheet.cpp
@@ -1214,25 +1214,6 @@ wxString SCH_SHEET::GetHumanReadablePath() const
}
-void SCH_SHEET::ClearAnnotation( bool aIncludeSubSheets )
-{
- m_screen->ClearAnnotation( this );
-
- if( aIncludeSubSheets )
- {
- SCH_ITEM* item = m_screen->GetDrawItems();
-
- while( item )
- {
- if( item->Type() == SCH_SHEET_T )
- static_cast( item )->ClearAnnotation( aIncludeSubSheets );
-
- item = item->Next();
- }
- }
-}
-
-
SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
{
wxLogDebug( wxT( "Sheet assignment operator." ) );
diff --git a/eeschema/sch_sheet.h b/eeschema/sch_sheet.h
index ce9f36422a..e5fe0bd429 100644
--- a/eeschema/sch_sheet.h
+++ b/eeschema/sch_sheet.h
@@ -633,8 +633,6 @@ public:
*/
wxString GetHumanReadablePath() const;
- void ClearAnnotation( bool aIncludeSubSheets = false );
-
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
From 97949ffde9a40a9c7d50af4c4ff500f30a852294 Mon Sep 17 00:00:00 2001
From: Wayne Stambaugh
Date: Mon, 15 Feb 2016 15:24:59 -0500
Subject: [PATCH 39/41] Undo commit -r 6353.
---
eeschema/files-io.cpp | 2 +-
eeschema/onleftclick.cpp | 5 --
eeschema/sch_sheet.cpp | 146 +++++++++++----------------------------
eeschema/sch_sheet.h | 92 +++++-------------------
eeschema/schframe.cpp | 4 +-
5 files changed, 61 insertions(+), 188 deletions(-)
diff --git a/eeschema/files-io.cpp b/eeschema/files-io.cpp
index e0a6ee6417..81b6d692b0 100644
--- a/eeschema/files-io.cpp
+++ b/eeschema/files-io.cpp
@@ -260,7 +260,7 @@ bool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector& aFileSet, in
GetScreen()->SetFileName( fullFileName );
g_RootSheet->SetFileName( fullFileName );
- g_RootSheet->SetName( "root" );
+
SetStatusText( wxEmptyString );
ClearMsgPanel();
diff --git a/eeschema/onleftclick.cpp b/eeschema/onleftclick.cpp
index c4cf77bb60..35ba87d496 100644
--- a/eeschema/onleftclick.cpp
+++ b/eeschema/onleftclick.cpp
@@ -98,11 +98,6 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition )
else
{
item = LocateAndShowItem( aPosition );
-
- // Show the sheet information when the user clicks anywhere there are no items
- // in the schematic.
- if( item == NULL )
- SetMsgPanel( GetCurrentSheet().Last() );
}
}
diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp
index f142113c4a..e1ec949a54 100644
--- a/eeschema/sch_sheet.cpp
+++ b/eeschema/sch_sheet.cpp
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2009 Jean-Pierre Charras, jp.charras at wanadoo.fr
- * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors.
+ * 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
@@ -204,7 +204,7 @@ bool SCH_SHEET::Load( LINE_READER& aLine, wxString& aErrorMsg )
&m_pos.x, &m_pos.y, &m_size.x, &m_size.y ) != 4 )
|| ( ((char*)aLine)[0] != 'S' ) )
{
- aErrorMsg.Printf( wxT( " ** Eeschema file sheet error at line %d, aborted\n" ),
+ aErrorMsg.Printf( wxT( " ** Eeschema file sheet struct error at line %d, aborted\n" ),
aLine.LineNumber() );
aErrorMsg << FROM_UTF8( ((char*)aLine) );
@@ -301,7 +301,7 @@ bool SCH_SHEET::Load( LINE_READER& aLine, wxString& aErrorMsg )
if( strnicmp( "$End", ((char*)aLine), 4 ) != 0 )
{
- aErrorMsg.Printf( wxT( "**Eeschema file end_sheet error at line %d, aborted\n" ),
+ aErrorMsg.Printf( wxT( "**Eeschema file end_sheet struct error at line %d, aborted\n" ),
aLine.LineNumber() );
aErrorMsg << FROM_UTF8( ((char*)aLine) );
return false;
@@ -474,6 +474,9 @@ int SCH_SHEET::GetMinHeight() const
}
+/**
+ * Delete sheet labels which do not have corresponding hierarchical label.
+ */
void SCH_SHEET::CleanupSheet()
{
SCH_SHEET_PINS::iterator i = m_pins.begin();
@@ -718,15 +721,44 @@ bool SCH_SHEET::SearchHierarchy( const wxString& aFilename, SCH_SCREEN** aScreen
}
+bool SCH_SHEET::LocatePathOfScreen( SCH_SCREEN* aScreen, SCH_SHEET_PATH* aList )
+{
+ if( m_screen )
+ {
+ aList->Push( this );
+
+ if( m_screen == aScreen )
+ return true;
+
+ EDA_ITEM* strct = m_screen->GetDrawItems();
+
+ while( strct )
+ {
+ if( strct->Type() == SCH_SHEET_T )
+ {
+ SCH_SHEET* ss = (SCH_SHEET*) strct;
+
+ if( ss->LocatePathOfScreen( aScreen, aList ) )
+ return true;
+ }
+
+ strct = strct->Next();
+ }
+
+ aList->Pop();
+ }
+ return false;
+}
+
+
bool SCH_SHEET::Load( SCH_EDIT_FRAME* aFrame )
{
bool success = true;
SCH_SCREEN* screen = NULL;
-
if( !m_screen )
{
- GetRootSheet()->SearchHierarchy( m_fileName, &screen );
+ g_RootSheet->SearchHierarchy( m_fileName, &screen );
if( screen )
{
@@ -750,11 +782,6 @@ bool SCH_SHEET::Load( SCH_EDIT_FRAME* aFrame )
{
SCH_SHEET* sheetstruct = (SCH_SHEET*) bs;
- // Set the parent to this sheet. This effectively creates the
- // schematic sheet hierarchy eliminating the need to keep a
- // copy of the root sheet in order to generate the hierarchy.
- sheetstruct->SetParent( this );
-
if( !sheetstruct->Load( aFrame ) )
success = false;
}
@@ -786,7 +813,6 @@ int SCH_SHEET::CountSheets()
}
}
}
-
return count;
}
@@ -801,10 +827,11 @@ void SCH_SHEET::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList )
{
aList.push_back( MSG_PANEL_ITEM( _( "Sheet Name" ), m_name, CYAN ) );
aList.push_back( MSG_PANEL_ITEM( _( "File Name" ), m_fileName, BROWN ) );
- aList.push_back( MSG_PANEL_ITEM( _( "Path" ), GetHumanReadablePath(), DARKMAGENTA ) );
-#if 1 // Set to 1 to display the sheet time stamp (mainly for test)
- aList.push_back( MSG_PANEL_ITEM( _( "Time Stamp" ), GetPath(), BLUE ) );
+#if 0 // Set to 1 to display the sheet time stamp (mainly for test)
+ wxString msg;
+ msg.Printf( wxT( "%.8X" ), m_TimeStamp );
+ aList.push_back( MSG_PANEL_ITEM( _( "Time Stamp" ), msg, BLUE ) );
#endif
}
@@ -1121,6 +1148,7 @@ void SCH_SHEET::Plot( PLOTTER* aPlotter )
Text = m_name;
size = wxSize( m_sheetNameSize, m_sheetNameSize );
+ //pos = m_pos; pos.y -= 4;
thickness = GetDefaultLineThickness();
thickness = Clamp_Text_PenSize( thickness, size, false );
@@ -1153,67 +1181,6 @@ void SCH_SHEET::Plot( PLOTTER* aPlotter )
}
-SCH_SHEET* SCH_SHEET::GetRootSheet()
-{
- EDA_ITEM* parent = GetParent();
- SCH_SHEET* rootSheet = this;
-
- while( parent )
- {
- // The parent of a SCH_SHEET object can only be another SCH_SHEET object or NULL.
- wxASSERT_MSG( parent->Type() == SCH_SHEET_T, "SCH_SHEET parent is not a SCH_SHEET" );
- rootSheet = static_cast( parent );
- parent = parent->GetParent();
- }
-
- return rootSheet;
-}
-
-
-void SCH_SHEET::GetPath( SCH_CONST_SHEETS& aSheetPath ) const
-{
- aSheetPath.insert( aSheetPath.begin(), const_cast( this ) );
-
- if( GetParent() )
- static_cast( GetParent() )->GetPath( aSheetPath );
-}
-
-
-wxString SCH_SHEET::GetPath() const
-{
- wxString tmp;
- wxString path = "/";
- const SCH_SHEET* sheet = this;
-
- while( sheet->GetParent() )
- {
- tmp.Printf( "/%8.8lX", (long unsigned) sheet->GetTimeStamp() );
-
- // We are walking up the parent stack so prepend each time stamp.
- path = tmp + path;
- sheet = static_cast( sheet->GetParent() );
- }
-
- return path;
-}
-
-
-wxString SCH_SHEET::GetHumanReadablePath() const
-{
- wxString path = "/";
- const SCH_SHEET* sheet = this;
-
- while( sheet->GetParent() )
- {
- // We are walking up the parent stack so prepend each sheet name.
- path = "/" + sheet->GetName() + path;
- sheet = static_cast( sheet->GetParent() );
- }
-
- return path;
-}
-
-
SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
{
wxLogDebug( wxT( "Sheet assignment operator." ) );
@@ -1247,35 +1214,6 @@ SCH_ITEM& SCH_SHEET::operator=( const SCH_ITEM& aItem )
}
-bool SCH_SHEET::operator<( const SCH_SHEET& aRhs ) const
-{
- // Don't waste time against comparing the same objects..
- if( this == &aRhs )
- return false;
-
- SCH_CONST_SHEETS lhsPath, rhsPath;
-
- GetPath( lhsPath );
- aRhs.GetPath( rhsPath );
-
- // Shorter paths are less than longer paths.
- if( lhsPath.size() < rhsPath.size() )
- return true;
-
- if( lhsPath.size() > rhsPath.size() )
- return false;
-
- // Compare time stamps when path lengths are the same.
- for( unsigned i = 0; i < lhsPath.size(); i++ )
- {
- if( lhsPath[i]->GetTimeStamp() < rhsPath[i]->GetTimeStamp() )
- return true;
- }
-
- return false;
-}
-
-
#if defined(DEBUG)
void SCH_SHEET::Show( int nestLevel, std::ostream& os ) const
diff --git a/eeschema/sch_sheet.h b/eeschema/sch_sheet.h
index e5fe0bd429..3304a0d751 100644
--- a/eeschema/sch_sheet.h
+++ b/eeschema/sch_sheet.h
@@ -265,7 +265,7 @@ public:
* Return true for items which are moved with the anchor point at mouse cursor
* and false for items moved with no reference to anchor
* Usually return true for small items (labels, junctions) and false for
- * items which can be large (hierarchical sheets, components)
+ * items which can be large (hierarchical sheets, compoments)
* @return false for a hierarchical sheet
*/
bool IsMovableFromAnchorPoint() { return false; }
@@ -457,6 +457,19 @@ public:
*/
bool SearchHierarchy( const wxString& aFilename, SCH_SCREEN** aScreen );
+ /**
+ * Function LocatePathOfScreen
+ * search the existing hierarchy for an instance of screen "FileName".
+ * don't bother looking at the root sheet - it must be unique,
+ * no other references to its m_screen otherwise there would be
+ * loops in the hierarchy.
+ *
+ * @param aScreen = the SCH_SCREEN* screen that we search for
+ * @param aList = the SCH_SHEET_PATH* that must be used
+ * @return true if found
+ */
+ bool LocatePathOfScreen( SCH_SCREEN* aScreen, SCH_SHEET_PATH* aList );
+
/**
* Function CountSheets
* calculates the number of sheets found in "this"
@@ -477,7 +490,7 @@ public:
{
m_fileName = aFilename;
// Filenames are stored using unix notation
- m_fileName.Replace( wxT( "\\" ), wxT( "/" ) );
+ m_fileName.Replace( wxT("\\"), wxT("/") );
}
bool ChangeFileName( SCH_EDIT_FRAME* aFrame, const wxString& aFileName );
@@ -542,7 +555,7 @@ public:
void GetConnectionPoints( std::vector< wxPoint >& aPoints ) const;
SEARCH_RESULT Visit( INSPECTOR* inspector, const void* testData,
- const KICAD_T scanTypes[] );
+ const KICAD_T scanTypes[] );
wxString GetSelectMenuText() const;
@@ -553,21 +566,6 @@ public:
SCH_ITEM& operator=( const SCH_ITEM& aSheet );
- /**
- * Operator <
- *
- * test if a \a aRhs is less than this sheet.
- *
- * Sheet comparison order is:
- * The number of parent sheets of this sheet is less than \a aRhs.
- * When the number of parent sheets for this sheet are the same as \a aRhs, the time
- * stamps of each parent sheet are compared from the root sheet to the last sheet.
- *
- * @param aRhs is an SCH_SHEET reference to the right hand side of the comparison.
- * @return true if this #SCH_SHEET is less than \a aRhs.
- */
- bool operator<( const SCH_SHEET& aRhs ) const;
-
wxPoint GetPosition() const { return m_pos; }
void SetPosition( const wxPoint& aPosition );
@@ -580,59 +578,6 @@ public:
EDA_ITEM* Clone() const;
- /**
- * Function GetRootSheet
- *
- * returns the root sheet of this SCH_SHEET object.
- *
- * The root (top level) sheet can be found by walking up the parent links until the only
- * sheet that has no parent is found. The root sheet can be found from any sheet in the
- * hierarchy.
- *
- * @return a SCH_SHEET pointer to the root sheet.
- */
- SCH_SHEET* GetRootSheet();
-
- /**
- * Function IsRootSheet
- *
- * returns true if `this` sheet has no parent which indicates it is the root (top level)
- * sheet.
- *
- * @return true if this is the root sheet, otherwise false.
- */
- bool IsRootSheet() const { return GetParent() == NULL; }
-
- /**
- * Function GetPath
- *
- * recurses up the parent branch up to the root sheet adding a pointer for each
- * parent sheet to \a aSheetPath.
- *
- * @param aSheetPath is a refernce to an #SCH_SHEETS object to populate.
- */
- void GetPath( std::vector& aSheetPath ) const;
-
- /**
- * Function GetPath
- *
- * returns a wxString containing the sheet path of this SCH_SHEET.
- *
- * The SCH_SHEET path is a Posix like path containing the hexadecimal time stamps in
- * the parent order of this SCH_SHEET. It looks something like /4567FEDC/AA2233DD/.
- */
- wxString GetPath() const;
-
- /**
- * Function GetHumanReadablePath
- *
- * returns a wxString containing the human readable path of this sheet.
- *
- * Human readable SCH_SHEET paths are Posix like paths made up of the sheet names
- * in the parent order of this SCH_SHEET. It looks something like /sheet1/sheet2.
- */
- wxString GetHumanReadablePath() const;
-
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
@@ -650,9 +595,6 @@ protected:
};
-typedef std::vector< SCH_SHEET* > SCH_SHEETS;
-typedef std::vector< const SCH_SHEET* > SCH_CONST_SHEETS;
-typedef SCH_SHEETS::iterator SCH_SHEETS_ITER;
-typedef SCH_SHEETS::const_iterator SCH_SHEETS_CITER;
+typedef std::vector< SCH_SHEET* > SCH_SHEETS;
#endif /* SCH_SHEEET_H */
diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp
index b7a23f8d09..d545a37a44 100644
--- a/eeschema/schframe.cpp
+++ b/eeschema/schframe.cpp
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
- * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors.
+ * Copyright (C) 1992-2013 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
@@ -523,8 +523,6 @@ void SCH_EDIT_FRAME::CreateScreens()
if( g_RootSheet == NULL )
{
g_RootSheet = new SCH_SHEET();
- g_RootSheet->SetName( "root" );
- g_RootSheet->SetFileName( "noname.sch" );
}
if( g_RootSheet->GetScreen() == NULL )
From 5d25b4ef906ccdbaa1fe672f4885eb652a39a09c Mon Sep 17 00:00:00 2001
From: Bernhard Stegmaier
Date: Tue, 16 Feb 2016 09:05:41 +0100
Subject: [PATCH 40/41] Disable FPS limiter for OSX (GAL).
---
common/draw_panel_gal.cpp | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/common/draw_panel_gal.cpp b/common/draw_panel_gal.cpp
index cccc5dd357..5e97c37ca8 100644
--- a/common/draw_panel_gal.cpp
+++ b/common/draw_panel_gal.cpp
@@ -182,20 +182,27 @@ void EDA_DRAW_PANEL_GAL::Refresh( bool aEraseBackground, const wxRect* aRect )
if( m_pendingRefresh )
return;
+ m_pendingRefresh = true;
+
+#ifdef __WXMAC__
+ // Timers on OS X may have a high latency (seen up to 500ms and more) which
+ // makes repaints jerky. No negative impact seen without throttling, so just
+ // do an unconditional refresh for OS X.
+ ForceRefresh();
+#else
wxLongLong t = wxGetLocalTimeMillis();
wxLongLong delta = t - m_lastRefresh;
if( delta >= MinRefreshPeriod )
{
ForceRefresh();
- m_pendingRefresh = true;
}
else
{
// One shot timer
m_refreshTimer.Start( ( MinRefreshPeriod - delta ).ToLong(), true );
- m_pendingRefresh = true;
}
+#endif
}
From 78d0cfc1a4c131b0973f49ec1d2620d04635b69e Mon Sep 17 00:00:00 2001
From: unknown
Date: Wed, 17 Feb 2016 16:38:30 +0100
Subject: [PATCH 41/41] Fix Bug #1545668 (Pcbnew can't open P-CAD ASCII files)
---
pcbnew/pcad2kicadpcb_plugin/s_expr_loader.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/pcbnew/pcad2kicadpcb_plugin/s_expr_loader.cpp b/pcbnew/pcad2kicadpcb_plugin/s_expr_loader.cpp
index 49e966384b..19ec21db8a 100644
--- a/pcbnew/pcad2kicadpcb_plugin/s_expr_loader.cpp
+++ b/pcbnew/pcad2kicadpcb_plugin/s_expr_loader.cpp
@@ -51,7 +51,8 @@ void LoadInputFile( wxString aFileName, wxXmlDocument* aXmlDoc )
// check file format
if( !fgets( line, sizeof( line ), fp )
- || strcmp( line, ACCEL_ASCII_KEYWORD ) )
+ // first line starts with "ACCEL_ASCII" with optional stuff on same line after that.
+ || memcmp( line, ACCEL_ASCII_KEYWORD, sizeof(ACCEL_ASCII_KEYWORD)-1 ) )
THROW_IO_ERROR( "Unknown file type" );
// rewind the file