Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
230b60e6
Commit
230b60e6
authored
Sep 28, 2014
by
Brian Sidebotham
Browse files
Options
Browse Files
Download
Plain Diff
* Merge changes from trunk
parents
a71823b4
24ed7f50
Changes
42
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
42 changed files
with
1611 additions
and
878 deletions
+1611
-878
CMakeLists.txt
CMakeLists.txt
+50
-61
CMakeParseArguments.cmake
CMakeModules/CMakeParseArguments.cmake
+160
-0
FindPackageHandleStandardArgs.cmake
CMakeModules/FindPackageHandleStandardArgs.cmake
+272
-181
FindPackageMessage.cmake
CMakeModules/FindPackageMessage.cmake
+57
-0
FindwxWidgets.cmake
CMakeModules/FindwxWidgets.cmake
+476
-436
draw_frame.cpp
common/draw_frame.cpp
+2
-2
class_DisplayFootprintsFrame.cpp
cvpcb/class_DisplayFootprintsFrame.cpp
+2
-2
block_libedit.cpp
eeschema/block_libedit.cpp
+1
-1
dialog_choose_component.cpp
eeschema/dialogs/dialog_choose_component.cpp
+4
-2
dialog_choose_component.h
eeschema/dialogs/dialog_choose_component.h
+9
-7
dialog_color_config.cpp
eeschema/dialogs/dialog_color_config.cpp
+18
-13
eeschema.cpp
eeschema/eeschema.cpp
+12
-9
eeschema_config.cpp
eeschema/eeschema_config.cpp
+27
-13
general.h
eeschema/general.h
+12
-8
sch_base_frame.cpp
eeschema/sch_base_frame.cpp
+12
-1
sch_screen.cpp
eeschema/sch_screen.cpp
+1
-1
viewlib_frame.cpp
eeschema/viewlib_frame.cpp
+5
-6
draw_frame.h
include/draw_frame.h
+16
-8
sch_base_frame.h
include/sch_base_frame.h
+5
-0
sch_item_struct.h
include/sch_item_struct.h
+5
-5
wxPcbStruct.h
include/wxPcbStruct.h
+13
-0
CMakeLists.txt
pcbnew/CMakeLists.txt
+1
-0
append_board_to_current.cpp
pcbnew/append_board_to_current.cpp
+221
-0
block.cpp
pcbnew/block.cpp
+11
-2
block_module_editor.cpp
pcbnew/block_module_editor.cpp
+59
-14
class_edge_mod.cpp
pcbnew/class_edge_mod.cpp
+44
-6
class_edge_mod.h
pcbnew/class_edge_mod.h
+3
-0
class_module.cpp
pcbnew/class_module.cpp
+1
-25
class_text_mod.cpp
pcbnew/class_text_mod.cpp
+23
-11
class_text_mod.h
pcbnew/class_text_mod.h
+9
-5
dialog_copper_zones.cpp
pcbnew/dialogs/dialog_copper_zones.cpp
+3
-3
dialog_non_copper_zones_properties.cpp
pcbnew/dialogs/dialog_non_copper_zones_properties.cpp
+19
-3
editrack.cpp
pcbnew/editrack.cpp
+1
-1
files.cpp
pcbnew/files.cpp
+14
-25
hotkeys_board_editor.cpp
pcbnew/hotkeys_board_editor.cpp
+4
-0
menubar_pcbframe.cpp
pcbnew/menubar_pcbframe.cpp
+7
-2
modedit.cpp
pcbnew/modedit.cpp
+0
-12
onleftclick.cpp
pcbnew/onleftclick.cpp
+1
-3
onrightclick.cpp
pcbnew/onrightclick.cpp
+2
-9
pcbframe.cpp
pcbnew/pcbframe.cpp
+14
-0
router_tool.cpp
pcbnew/router/router_tool.cpp
+6
-0
tracepcb.cpp
pcbnew/tracepcb.cpp
+9
-1
No files found.
CMakeLists.txt
View file @
230b60e6
...
@@ -35,36 +35,39 @@ set( USE_KIWAY_DLLS true ) # this is now mandatory, the code is the same anyway
...
@@ -35,36 +35,39 @@ set( USE_KIWAY_DLLS true ) # this is now mandatory, the code is the same anyway
# have this option turned OFF, the xml export's referential integrity is broken
# have this option turned OFF, the xml export's referential integrity is broken
# on library part name. Hence the default is ON now, as of 29-Jan-2014.
# on library part name. Hence the default is ON now, as of 29-Jan-2014.
option
(
KICAD_KEEPCASE
option
(
KICAD_KEEPCASE
"
ON= case specific string matching on component names, OFF= match names as if they were spelt using uppercase
."
"
Use case sensitive string matching for component names (default ON)
."
ON
ON
)
)
option
(
USE_WX_GRAPHICS_CONTEXT
option
(
USE_WX_GRAPHICS_CONTEXT
"Use wxGraphicsContext for rendering (
default OFF).
Warning, this is experimental"
)
"Use wxGraphicsContext for rendering (
default OFF).
Warning, this is experimental"
)
option
(
USE_WX_OVERLAY
option
(
USE_WX_OVERLAY
"Use wxOverlay: Always ON for MAC (
default OFF).
Warning, this is experimental"
)
"Use wxOverlay: Always ON for MAC (
default OFF).
Warning, this is experimental"
)
option
(
KICAD_SCRIPTING
option
(
KICAD_SCRIPTING
"
set this option ON to build the scripting support inside kicad binaries
"
"
Build the Python scripting support inside KiCad binaries (default OFF).
"
)
)
option
(
KICAD_SCRIPTING_MODULES
option
(
KICAD_SCRIPTING_MODULES
"
set this option ON to build kicad modules that can be used from scripting languages
"
"
Build KiCad Python modules that can be used from scripting languages (default OFF).
"
)
)
option
(
KICAD_SCRIPTING_WXPYTHON
option
(
KICAD_SCRIPTING_WXPYTHON
"
set this option ON to build wxpython implementation for wx interface building in python and py.shell
"
"
Build wxPython implementation for wx interface building in Python and py.shell (default OFF).
"
)
)
option
(
KICAD_BUILD_STATIC
option
(
KICAD_BUILD_STATIC
"Build
s Kicad and all libraries static
"
"Build
dependencies as static libraries. OSX only. (default OFF).
"
)
)
option
(
KICAD_BUILD_DYNAMIC
option
(
KICAD_BUILD_DYNAMIC
"Build
s Kicad and all libraries dynamic (required for wxPython)
"
"Build
dependencies as shared libraries. Required for wxPython support. OXS only. (default OFF).
"
)
)
option
(
USE_OSX_DEPS_BUILDER
"Build dependencies from source instead of dependencies installed on system. OSX only. (default OFF)."
)
# WARNING: KiCad developers strongly advise you to build Boost with supplied patches,
# WARNING: KiCad developers strongly advise you to build Boost with supplied patches,
# as it is known to work with KiCad. Other versions may contain bugs that may result
# as it is known to work with KiCad. Other versions may contain bugs that may result
...
@@ -269,7 +272,6 @@ if( USE_WX_GRAPHICS_CONTEXT )
...
@@ -269,7 +272,6 @@ if( USE_WX_GRAPHICS_CONTEXT )
endif
()
endif
()
# Allow user to override the default settings for adding images to menu items. By default
# Allow user to override the default settings for adding images to menu items. By default
# images in menu items are enabled on all platforms except OSX. This can be over ridden by
# images in menu items are enabled on all platforms except OSX. This can be over ridden by
# defining -DUSE_IMAGES_IN_MENUS=ON/OFF to force the preferred behavior.
# defining -DUSE_IMAGES_IN_MENUS=ON/OFF to force the preferred behavior.
...
@@ -353,9 +355,30 @@ include( ExternalProject )
...
@@ -353,9 +355,30 @@ include( ExternalProject )
#================================================
#================================================
include
(
CheckFindPackageResult
)
include
(
CheckFindPackageResult
)
##########################
# Find wxWidgets library #
##########################
# Here you can define what libraries of wxWidgets you need for your
# application. You can figure out what libraries you need here;
# http://www.wxwidgets.org/manuals/2.8/wx_librarieslist.html
# Turn on wxWidgets compatibility mode for some classes
# Turn on wxWidgets compatibility mode for some classes
add_definitions
(
-DWX_COMPATIBILITY
)
add_definitions
(
-DWX_COMPATIBILITY
)
# See line 41 of CMakeModules/FindwxWidgets.cmake
set
(
wxWidgets_CONFIG_OPTIONS --static=no
)
# On Apple only wxwidgets 2.9 or higher doesn't need to find aui part of base
# Seems no longer needed on wx-3
if
(
APPLE
AND
(
KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES OR KICAD_SCRIPTING_WXPYTHON
)
)
find_package
(
wxWidgets 3.0.0 COMPONENTS gl adv html core net base xml REQUIRED
)
else
()
find_package
(
wxWidgets 3.0.0 COMPONENTS gl aui adv html core net base xml REQUIRED
)
endif
()
# Include wxWidgets macros.
include
(
${
wxWidgets_USE_FILE
}
)
#######################
#######################
# Find OpenGL library #
# Find OpenGL library #
#######################
#######################
...
@@ -372,7 +395,10 @@ check_find_package_result( OPENGL_FOUND "OpenGL" )
...
@@ -372,7 +395,10 @@ check_find_package_result( OPENGL_FOUND "OpenGL" )
# Always defined, empty if no libraries are to be built
# Always defined, empty if no libraries are to be built
add_custom_target
(
lib-dependencies
)
add_custom_target
(
lib-dependencies
)
if
(
KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC
)
# Only download and build all dependencies from source on OSX if the user specifically requests
# it. Otherwise, respect the developers wishes to use the dependencies already installed on
# their systme.
if
(
APPLE AND USE_OSX_DEPS_BUILDER
)
# This should be built in all cases, if swig exec is not avaiable
# This should be built in all cases, if swig exec is not avaiable
# will be impossible also enable SCRIPTING being for PCBNEW required immediately
# will be impossible also enable SCRIPTING being for PCBNEW required immediately
...
@@ -417,31 +443,24 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC )
...
@@ -417,31 +443,24 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC )
set
(
PYTHON_DEST
${
LIBWXPYTHON_ROOT
}
/wxPython/lib/python2.6/site-packages
)
set
(
PYTHON_DEST
${
LIBWXPYTHON_ROOT
}
/wxPython/lib/python2.6/site-packages
)
set
(
wxWidgets_BIN_DIR
${
LIBWXPYTHON_ROOT
}
/bin/wxrc
)
set
(
wxWidgets_CONFIG_EXECUTABLE
${
LIBWXPYTHON_ROOT
}
/bin/wx-config
)
set
(
wxWidgets_INCLUDE_DIRS
${
LIBWXPYTHON_ROOT
}
/include/wx-3.0
)
set
(
wxWidgets_LIBRARY_DIRS
${
LIBWXPYTHON_ROOT
}
/lib
)
add_dependencies
(
lib-dependencies libwxpython
)
add_dependencies
(
lib-dependencies libwxpython
)
add_dependencies
(
lib-dependencies swig
)
add_dependencies
(
lib-dependencies swig
)
else
()
else
()
include
(
download_wxwidgets
)
include
(
download_wxwidgets
)
add_dependencies
(
lib-dependencies libwx
)
add_dependencies
(
lib-dependencies libwx
)
endif
()
endif
()
include
(
download_libpng
)
include
(
download_libpng
)
include
(
download_pkgconfig
)
include
(
download_pkgconfig
)
set
(
PKG_CONFIG_EXECUTABLE
"
${
PKGCONFIG_ROOT
}
/bin/pkg-config"
)
set
(
PKG_CONFIG_EXECUTABLE
"
${
PKGCONFIG_ROOT
}
/bin/pkg-config"
)
include
(
download_glew
)
include
(
download_glew
)
set
(
GLEW_GLEW_LIBRARY
"
${
GLEW_ROOT
}
/lib/libGLEW.a"
)
set
(
GLEW_GLEW_LIBRARY
"
${
GLEW_ROOT
}
/lib/libGLEW.a"
)
set
(
GLEW_INCLUDE_DIR
"
${
GLEW_ROOT
}
/include"
)
set
(
GLEW_INCLUDE_DIR
"
${
GLEW_ROOT
}
/include"
)
include
(
download_pixman
)
include
(
download_pixman
)
set
(
PIXMAN_LIBRARY
"
${
PIXMAN_ROOT
}
/lib/libpixman-1.a"
)
set
(
PIXMAN_LIBRARY
"
${
PIXMAN_ROOT
}
/lib/libpixman-1.a"
)
include
(
download_cairo
)
include
(
download_cairo
)
set
(
CAIRO_INCLUDE_DIR
"
${
CAIRO_ROOT
}
/include/cairo"
)
set
(
CAIRO_INCLUDE_DIR
"
${
CAIRO_ROOT
}
/include/cairo"
)
set
(
CAIRO_LIBRARY
"
${
CAIRO_ROOT
}
/lib/libcairo.a"
)
set
(
CAIRO_LIBRARY
"
${
CAIRO_ROOT
}
/lib/libcairo.a"
)
add_dependencies
(
lib-dependencies boost
)
add_dependencies
(
lib-dependencies boost
)
add_dependencies
(
lib-dependencies cairo
)
add_dependencies
(
lib-dependencies cairo
)
...
@@ -450,11 +469,13 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC )
...
@@ -450,11 +469,13 @@ if( KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC )
add_dependencies
(
lib-dependencies pkgconfig
)
add_dependencies
(
lib-dependencies pkgconfig
)
if
(
KICAD_BUILD_DYNAMIC AND APPLE
)
if
(
KICAD_BUILD_DYNAMIC AND APPLE
)
add_custom_target
(
osx_fix_bundles ALL DEPENDS cvpcb eeschema gerbview kicad pcbnew bitmap2component pcb_calculator pl_editor
)
add_custom_target
(
osx_fix_bundles ALL DEPENDS
add_custom_command
(
TARGET osx_fix_bundles POST_BUILD COMMAND
${
PROJECT_SOURCE_DIR
}
/scripts/osx_fixbundle.sh
${
PROJECT_SOURCE_DIR
}
COMMENT
"Migrating dylibs to bundles"
)
cvpcb eeschema gerbview kicad pcbnew bitmap2component pcb_calculator pl_editor
)
add_custom_command
(
TARGET osx_fix_bundles
POST_BUILD COMMAND
${
PROJECT_SOURCE_DIR
}
/scripts/osx_fixbundle.sh
${
PROJECT_SOURCE_DIR
}
COMMENT
"Migrating dylibs to bundles"
)
endif
()
endif
()
endif
()
endif
(
KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC
)
#####################
#####################
# Find GLEW library #
# Find GLEW library #
...
@@ -492,31 +513,6 @@ else()
...
@@ -492,31 +513,6 @@ else()
include
(
download_boost
)
include
(
download_boost
)
endif
()
endif
()
##########################
# Find wxWidgets library #
##########################
# Here you can define what libraries of wxWidgets you need for your
# application. You can figure out what libraries you need here;
# http://www.wxwidgets.org/manuals/2.8/wx_librarieslist.html
# See line 41 of CMakeModules/FindwxWidgets.cmake
set
(
wxWidgets_CONFIG_OPTIONS --static=no
)
# On Apple only wxwidgets 2.9 or higher doesn't need to find aui part of base
# Seems no more needed on wx-3
if
(
APPLE
AND
(
KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES OR KICAD_SCRIPTING_WXPYTHON
)
)
find_package
(
wxWidgets COMPONENTS gl adv html core net base xml QUIET
)
else
()
find_package
(
wxWidgets COMPONENTS gl aui adv html core net base xml QUIET
)
endif
()
if
(
NOT
(
KICAD_BUILD_STATIC OR KICAD_BUILD_DYNAMIC
)
)
check_find_package_result
(
wxWidgets_FOUND
"wxWidgets"
)
endif
()
# Include wxWidgets macros.
include
(
${
wxWidgets_USE_FILE
}
)
# Include MinGW resource compiler.
# Include MinGW resource compiler.
include
(
MinGWResourceCompiler
)
include
(
MinGWResourceCompiler
)
...
@@ -553,16 +549,8 @@ set( INC_AFTER
...
@@ -553,16 +549,8 @@ set( INC_AFTER
# Find Python and other scripting resources
# Find Python and other scripting resources
if
(
KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES
)
if
(
KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES
)
if
(
APPLE
)
set
(
PYTHON_LIBRARY /System/Library/Frameworks/Python.framework/Versions/2.6/Python
)
set
(
PYTHON_INCLUDE_DIR /System/Library/Frameworks/Python.framework/Versions//2.6/include/python2.6
)
set
(
PythonInterp_FIND_VERSION 2.6
)
set
(
PythonLibs_FIND_VERSION 2.6
)
endif
()
# force a python version < 3.0
# force a python version < 3.0
set
(
PythonInterp_FIND_VERSION 2.6
)
set
(
PythonInterp_FIND_VERSION 2.6
)
set
(
PythonLibs_FIND_VERSION 2.6
)
set
(
PythonLibs_FIND_VERSION 2.6
)
find_package
(
PythonInterp
)
find_package
(
PythonInterp
)
...
@@ -572,6 +560,7 @@ if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES )
...
@@ -572,6 +560,7 @@ if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES )
if
(
NOT PYTHON_VERSION_MAJOR EQUAL 2
)
if
(
NOT PYTHON_VERSION_MAJOR EQUAL 2
)
message
(
FATAL_ERROR
"Python 2.x is required."
)
message
(
FATAL_ERROR
"Python 2.x is required."
)
endif
()
endif
()
# Get the correct Python site package install path from the Python interpreter found by
# Get the correct Python site package install path from the Python interpreter found by
# FindPythonInterp unless the user specifically defined a custom path.
# FindPythonInterp unless the user specifically defined a custom path.
if
(
NOT PYTHON_SITE_PACKAGE_PATH
)
if
(
NOT PYTHON_SITE_PACKAGE_PATH
)
...
...
CMakeModules/CMakeParseArguments.cmake
0 → 100644
View file @
230b60e6
#.rst:
# CMakeParseArguments
# -------------------
#
#
#
# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords>
# <multi_value_keywords> args...)
#
# CMAKE_PARSE_ARGUMENTS() is intended to be used in macros or functions
# for parsing the arguments given to that macro or function. It
# processes the arguments and defines a set of variables which hold the
# values of the respective options.
#
# The <options> argument contains all options for the respective macro,
# i.e. keywords which can be used when calling the macro without any
# value following, like e.g. the OPTIONAL keyword of the install()
# command.
#
# The <one_value_keywords> argument contains all keywords for this macro
# which are followed by one value, like e.g. DESTINATION keyword of the
# install() command.
#
# The <multi_value_keywords> argument contains all keywords for this
# macro which can be followed by more than one value, like e.g. the
# TARGETS or FILES keywords of the install() command.
#
# When done, CMAKE_PARSE_ARGUMENTS() will have defined for each of the
# keywords listed in <options>, <one_value_keywords> and
# <multi_value_keywords> a variable composed of the given <prefix>
# followed by "_" and the name of the respective keyword. These
# variables will then hold the respective value from the argument list.
# For the <options> keywords this will be TRUE or FALSE.
#
# All remaining arguments are collected in a variable
# <prefix>_UNPARSED_ARGUMENTS, this can be checked afterwards to see
# whether your macro was called with unrecognized parameters.
#
# As an example here a my_install() macro, which takes similar arguments
# as the real install() command:
#
# ::
#
# function(MY_INSTALL)
# set(options OPTIONAL FAST)
# set(oneValueArgs DESTINATION RENAME)
# set(multiValueArgs TARGETS CONFIGURATIONS)
# cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
# ...
#
#
#
# Assume my_install() has been called like this:
#
# ::
#
# my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub)
#
#
#
# After the cmake_parse_arguments() call the macro will have set the
# following variables:
#
# ::
#
# MY_INSTALL_OPTIONAL = TRUE
# MY_INSTALL_FAST = FALSE (this option was not used when calling my_install()
# MY_INSTALL_DESTINATION = "bin"
# MY_INSTALL_RENAME = "" (was not used)
# MY_INSTALL_TARGETS = "foo;bar"
# MY_INSTALL_CONFIGURATIONS = "" (was not used)
# MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (no value expected after "OPTIONAL"
#
#
#
# You can then continue and process these variables.
#
# Keywords terminate lists of values, e.g. if directly after a
# one_value_keyword another recognized keyword follows, this is
# interpreted as the beginning of the new option. E.g.
# my_install(TARGETS foo DESTINATION OPTIONAL) would result in
# MY_INSTALL_DESTINATION set to "OPTIONAL", but MY_INSTALL_DESTINATION
# would be empty and MY_INSTALL_OPTIONAL would be set to TRUE therefor.
#=============================================================================
# Copyright 2010 Alexander Neundorf <neundorf@kde.org>
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
if
(
__CMAKE_PARSE_ARGUMENTS_INCLUDED
)
return
()
endif
()
set
(
__CMAKE_PARSE_ARGUMENTS_INCLUDED TRUE
)
function
(
CMAKE_PARSE_ARGUMENTS prefix _optionNames _singleArgNames _multiArgNames
)
# first set all result variables to empty/FALSE
foreach
(
arg_name
${
_singleArgNames
}
${
_multiArgNames
}
)
set
(
${
prefix
}
_
${
arg_name
}
)
endforeach
()
foreach
(
option
${
_optionNames
}
)
set
(
${
prefix
}
_
${
option
}
FALSE
)
endforeach
()
set
(
${
prefix
}
_UNPARSED_ARGUMENTS
)
set
(
insideValues FALSE
)
set
(
currentArgName
)
# now iterate over all arguments and fill the result variables
foreach
(
currentArg
${
ARGN
}
)
list
(
FIND _optionNames
"
${
currentArg
}
"
optionIndex
)
# ... then this marks the end of the arguments belonging to this keyword
list
(
FIND _singleArgNames
"
${
currentArg
}
"
singleArgIndex
)
# ... then this marks the end of the arguments belonging to this keyword
list
(
FIND _multiArgNames
"
${
currentArg
}
"
multiArgIndex
)
# ... then this marks the end of the arguments belonging to this keyword
if
(
${
optionIndex
}
EQUAL -1 AND
${
singleArgIndex
}
EQUAL -1 AND
${
multiArgIndex
}
EQUAL -1
)
if
(
insideValues
)
if
(
"
${
insideValues
}
"
STREQUAL
"SINGLE"
)
set
(
${
prefix
}
_
${
currentArgName
}
${
currentArg
}
)
set
(
insideValues FALSE
)
elseif
(
"
${
insideValues
}
"
STREQUAL
"MULTI"
)
list
(
APPEND
${
prefix
}
_
${
currentArgName
}
${
currentArg
}
)
endif
()
else
()
list
(
APPEND
${
prefix
}
_UNPARSED_ARGUMENTS
${
currentArg
}
)
endif
()
else
()
if
(
NOT
${
optionIndex
}
EQUAL -1
)
set
(
${
prefix
}
_
${
currentArg
}
TRUE
)
set
(
insideValues FALSE
)
elseif
(
NOT
${
singleArgIndex
}
EQUAL -1
)
set
(
currentArgName
${
currentArg
}
)
set
(
${
prefix
}
_
${
currentArgName
}
)
set
(
insideValues
"SINGLE"
)
elseif
(
NOT
${
multiArgIndex
}
EQUAL -1
)
set
(
currentArgName
${
currentArg
}
)
set
(
${
prefix
}
_
${
currentArgName
}
)
set
(
insideValues
"MULTI"
)
endif
()
endif
()
endforeach
()
# propagate the result variables to the caller:
foreach
(
arg_name
${
_singleArgNames
}
${
_multiArgNames
}
${
_optionNames
}
)
set
(
${
prefix
}
_
${
arg_name
}
${${
prefix
}
_
${
arg_name
}}
PARENT_SCOPE
)
endforeach
()
set
(
${
prefix
}
_UNPARSED_ARGUMENTS
${${
prefix
}
_UNPARSED_ARGUMENTS
}
PARENT_SCOPE
)
endfunction
()
CMakeModules/FindPackageHandleStandardArgs.cmake
View file @
230b60e6
This diff is collapsed.
Click to expand it.
CMakeModules/FindPackageMessage.cmake
0 → 100644
View file @
230b60e6
#.rst:
# FindPackageMessage
# ------------------
#
#
#
# FIND_PACKAGE_MESSAGE(<name> "message for user" "find result details")
#
# This macro is intended to be used in FindXXX.cmake modules files. It
# will print a message once for each unique find result. This is useful
# for telling the user where a package was found. The first argument
# specifies the name (XXX) of the package. The second argument
# specifies the message to display. The third argument lists details
# about the find result so that if they change the message will be
# displayed again. The macro also obeys the QUIET argument to the
# find_package command.
#
# Example:
#
# ::
#
# if(X11_FOUND)
# FIND_PACKAGE_MESSAGE(X11 "Found X11: ${X11_X11_LIB}"
# "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]")
# else()
# ...
# endif()
#=============================================================================
# Copyright 2008-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
function
(
FIND_PACKAGE_MESSAGE pkg msg details
)
# Avoid printing a message repeatedly for the same find result.
if
(
NOT
${
pkg
}
_FIND_QUIETLY
)
string
(
REGEX REPLACE
"[
\n
]"
""
details
"
${
details
}
"
)
set
(
DETAILS_VAR FIND_PACKAGE_MESSAGE_DETAILS_
${
pkg
}
)
if
(
NOT
"
${
details
}
"
STREQUAL
"
${${
DETAILS_VAR
}}
"
)
# The message has not yet been printed.
message
(
STATUS
"
${
msg
}
"
)
# Save the find details in the cache to avoid printing the same
# message again.
set
(
"
${
DETAILS_VAR
}
"
"
${
details
}
"
CACHE INTERNAL
"Details about finding
${
pkg
}
"
)
endif
()
endif
()
endfunction
()
CMakeModules/FindwxWidgets.cmake
View file @
230b60e6
This diff is collapsed.
Click to expand it.
common/draw_frame.cpp
View file @
230b60e6
...
@@ -119,8 +119,8 @@ EDA_DRAW_FRAME::EDA_DRAW_FRAME( KIWAY* aKiway, wxWindow* aParent,
...
@@ -119,8 +119,8 @@ EDA_DRAW_FRAME::EDA_DRAW_FRAME( KIWAY* aKiway, wxWindow* aParent,
m_showOriginAxis
=
false
;
// true to draw the grid origin
m_showOriginAxis
=
false
;
// true to draw the grid origin
m_cursorShape
=
0
;
m_cursorShape
=
0
;
m_LastGridSizeId
=
0
;
m_LastGridSizeId
=
0
;
m_
D
rawGrid
=
true
;
// hide/Show grid. default = show
m_
d
rawGrid
=
true
;
// hide/Show grid. default = show
m_
GridColor
=
DARKGRAY
;
// G
rid color
m_
gridColor
=
DARKGRAY
;
// Default g
rid color
m_showPageLimits
=
false
;
m_showPageLimits
=
false
;
m_drawBgColor
=
BLACK
;
// the background color of the draw canvas:
m_drawBgColor
=
BLACK
;
// the background color of the draw canvas:
// BLACK for Pcbnew, BLACK or WHITE for eeschema
// BLACK for Pcbnew, BLACK or WHITE for eeschema
...
...
cvpcb/class_DisplayFootprintsFrame.cpp
View file @
230b60e6
...
@@ -425,13 +425,13 @@ void PCB_SCREEN::ClearUndoORRedoList( UNDO_REDO_CONTAINER&, int )
...
@@ -425,13 +425,13 @@ void PCB_SCREEN::ClearUndoORRedoList( UNDO_REDO_CONTAINER&, int )
bool
DISPLAY_FOOTPRINTS_FRAME
::
IsGridVisible
()
const
bool
DISPLAY_FOOTPRINTS_FRAME
::
IsGridVisible
()
const
{
{
return
m_
D
rawGrid
;
return
m_
d
rawGrid
;
}
}
void
DISPLAY_FOOTPRINTS_FRAME
::
SetGridVisibility
(
bool
aVisible
)
void
DISPLAY_FOOTPRINTS_FRAME
::
SetGridVisibility
(
bool
aVisible
)
{
{
m_
D
rawGrid
=
aVisible
;
m_
d
rawGrid
=
aVisible
;
}
}
...
...
eeschema/block_libedit.cpp
View file @
230b60e6
...
@@ -48,7 +48,7 @@ int LIB_EDIT_FRAME::BlockCommand( int key )
...
@@ -48,7 +48,7 @@ int LIB_EDIT_FRAME::BlockCommand( int key )
switch
(
key
)
switch
(
key
)
{
{
default
:
default
:
cmd
=
key
&
0x
255
;
cmd
=
key
&
0x
FF
;
break
;
break
;
case
-
1
:
case
-
1
:
...
...
eeschema/dialogs/dialog_choose_component.cpp
View file @
230b60e6
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
static
wxTreeItemId
GetPrevItem
(
const
wxTreeCtrl
&
tree
,
const
wxTreeItemId
&
item
);
static
wxTreeItemId
GetPrevItem
(
const
wxTreeCtrl
&
tree
,
const
wxTreeItemId
&
item
);
static
wxTreeItemId
GetNextItem
(
const
wxTreeCtrl
&
tree
,
const
wxTreeItemId
&
item
);
static
wxTreeItemId
GetNextItem
(
const
wxTreeCtrl
&
tree
,
const
wxTreeItemId
&
item
);
DIALOG_CHOOSE_COMPONENT
::
DIALOG_CHOOSE_COMPONENT
(
wxWindow
*
aParent
,
const
wxString
&
aTitle
,
DIALOG_CHOOSE_COMPONENT
::
DIALOG_CHOOSE_COMPONENT
(
SCH_BASE_FRAME
*
aParent
,
const
wxString
&
aTitle
,
COMPONENT_TREE_SEARCH_CONTAINER
*
aContainer
,
COMPONENT_TREE_SEARCH_CONTAINER
*
aContainer
,
int
aDeMorganConvert
)
int
aDeMorganConvert
)
:
DIALOG_CHOOSE_COMPONENT_BASE
(
aParent
,
wxID_ANY
,
aTitle
),
:
DIALOG_CHOOSE_COMPONENT_BASE
(
aParent
,
wxID_ANY
,
aTitle
),
...
@@ -44,6 +44,7 @@ DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT( wxWindow* aParent, const wxStr
...
@@ -44,6 +44,7 @@ DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT( wxWindow* aParent, const wxStr
m_external_browser_requested
(
false
),
m_external_browser_requested
(
false
),
m_received_doubleclick_in_tree
(
false
)
m_received_doubleclick_in_tree
(
false
)
{
{
m_parent
=
aParent
;
m_search_container
->
SetTree
(
m_libraryComponentTree
);
m_search_container
->
SetTree
(
m_libraryComponentTree
);
m_searchBox
->
SetFocus
();
m_searchBox
->
SetFocus
();
m_componentDetails
->
SetEditable
(
false
);
m_componentDetails
->
SetEditable
(
false
);
...
@@ -260,7 +261,8 @@ void DIALOG_CHOOSE_COMPONENT::OnHandlePreviewRepaint( wxPaintEvent& aRepaintEven
...
@@ -260,7 +261,8 @@ void DIALOG_CHOOSE_COMPONENT::OnHandlePreviewRepaint( wxPaintEvent& aRepaintEven
void
DIALOG_CHOOSE_COMPONENT
::
renderPreview
(
LIB_PART
*
aComponent
,
int
aUnit
)
void
DIALOG_CHOOSE_COMPONENT
::
renderPreview
(
LIB_PART
*
aComponent
,
int
aUnit
)
{
{
wxPaintDC
dc
(
m_componentView
);
wxPaintDC
dc
(
m_componentView
);
dc
.
SetBackground
(
*
wxWHITE_BRUSH
);
EDA_COLOR_T
bgcolor
=
m_parent
->
GetDrawBgColor
();
dc
.
SetBackground
(
bgcolor
==
BLACK
?
*
wxBLACK_BRUSH
:
*
wxWHITE_BRUSH
);
dc
.
Clear
();
dc
.
Clear
();
if
(
aComponent
==
NULL
)
if
(
aComponent
==
NULL
)
...
...
eeschema/dialogs/dialog_choose_component.h
View file @
230b60e6
...
@@ -30,20 +30,27 @@ class COMPONENT_TREE_SEARCH_CONTAINER;
...
@@ -30,20 +30,27 @@ class COMPONENT_TREE_SEARCH_CONTAINER;
class
LIB_ALIAS
;
class
LIB_ALIAS
;
class
LIB_PART
;
class
LIB_PART
;
class
wxTreeItemId
;
class
wxTreeItemId
;
class
SCH_BASE_FRAME
;
class
DIALOG_CHOOSE_COMPONENT
:
public
DIALOG_CHOOSE_COMPONENT_BASE
class
DIALOG_CHOOSE_COMPONENT
:
public
DIALOG_CHOOSE_COMPONENT_BASE
{
{
SCH_BASE_FRAME
*
m_parent
;
COMPONENT_TREE_SEARCH_CONTAINER
*
const
m_search_container
;
const
int
m_deMorganConvert
;
bool
m_external_browser_requested
;
bool
m_received_doubleclick_in_tree
;
public
:
public
:
/**
/**
* Create dialog to choose component.
* Create dialog to choose component.
*
*
* @param aParent
P
arent window.
* @param aParent
a SCH_BASE_FRAME p
arent window.
* @param aTitle Dialog title.
* @param aTitle Dialog title.
* @param aSearchContainer The tree selection search container. Needs to be pre-populated
* @param aSearchContainer The tree selection search container. Needs to be pre-populated
* This dialog does not take over ownership of this object.
* This dialog does not take over ownership of this object.
* @param aDeMorganConvert preferred deMorgan conversion (TODO: should happen in dialog)
* @param aDeMorganConvert preferred deMorgan conversion (TODO: should happen in dialog)
*/
*/
DIALOG_CHOOSE_COMPONENT
(
wxWindow
*
aParent
,
const
wxString
&
aTitle
,
DIALOG_CHOOSE_COMPONENT
(
SCH_BASE_FRAME
*
aParent
,
const
wxString
&
aTitle
,
COMPONENT_TREE_SEARCH_CONTAINER
*
aSearchContainer
,
COMPONENT_TREE_SEARCH_CONTAINER
*
aSearchContainer
,
int
aDeMorganConvert
);
int
aDeMorganConvert
);
virtual
~
DIALOG_CHOOSE_COMPONENT
();
virtual
~
DIALOG_CHOOSE_COMPONENT
();
...
@@ -80,11 +87,6 @@ private:
...
@@ -80,11 +87,6 @@ private:
bool
updateSelection
();
bool
updateSelection
();
void
selectIfValid
(
const
wxTreeItemId
&
aTreeId
);
void
selectIfValid
(
const
wxTreeItemId
&
aTreeId
);
void
renderPreview
(
LIB_PART
*
aComponent
,
int
aUnit
);
void
renderPreview
(
LIB_PART
*
aComponent
,
int
aUnit
);
COMPONENT_TREE_SEARCH_CONTAINER
*
const
m_search_container
;
const
int
m_deMorganConvert
;
bool
m_external_browser_requested
;
bool
m_received_doubleclick_in_tree
;
};
};
#endif
/* DIALOG_CHOOSE_COMPONENT_H */
#endif
/* DIALOG_CHOOSE_COMPONENT_H */
eeschema/dialogs/dialog_color_config.cpp
View file @
230b60e6
...
@@ -3,14 +3,12 @@
...
@@ -3,14 +3,12 @@
*/
*/
#include <fctsys.h>
#include <fctsys.h>
#include <gr_basic.h>
#include <draw_frame.h>
#include <draw_frame.h>
#include <class_drawpanel.h>
#include <class_drawpanel.h>
#include <general.h>
#include <general.h>
#include <dialog_color_config.h>
#include <dialog_color_config.h>
#include <layers_id_colors_and_visibility.h>
#define ID_COLOR_SETUP 1800
#define ID_COLOR_SETUP 1800
...
@@ -86,7 +84,7 @@ static BUTTONINDEX buttonGroups[] = {
...
@@ -86,7 +84,7 @@ static BUTTONINDEX buttonGroups[] = {
};
};
static
EDA_COLOR_T
currentColors
[
NB_SCH_LAYERS
];
static
EDA_COLOR_T
currentColors
[
LAYERSCH_ID_COUNT
];
IMPLEMENT_DYNAMIC_CLASS
(
DIALOG_COLOR_CONFIG
,
wxDialog
)
IMPLEMENT_DYNAMIC_CLASS
(
DIALOG_COLOR_CONFIG
,
wxDialog
)
...
@@ -188,7 +186,7 @@ void DIALOG_COLOR_CONFIG::CreateControls()
...
@@ -188,7 +186,7 @@ void DIALOG_COLOR_CONFIG::CreateControls()
iconDC
.
SelectObject
(
bitmap
);
iconDC
.
SelectObject
(
bitmap
);
EDA_COLOR_T
color
=
GetLayerColor
(
L
ayerNumber
(
buttons
->
m_Layer
)
);
EDA_COLOR_T
color
=
GetLayerColor
(
L
AYERSCH_ID
(
buttons
->
m_Layer
)
);
currentColors
[
buttons
->
m_Layer
]
=
color
;
currentColors
[
buttons
->
m_Layer
]
=
color
;
iconDC
.
SetPen
(
*
wxBLACK_PEN
);
iconDC
.
SetPen
(
*
wxBLACK_PEN
);
...
@@ -235,6 +233,9 @@ void DIALOG_COLOR_CONFIG::CreateControls()
...
@@ -235,6 +233,9 @@ void DIALOG_COLOR_CONFIG::CreateControls()
m_SelBgColor
->
SetSelection
(
(
m_parent
->
GetDrawBgColor
()
==
BLACK
)
?
1
:
0
);
m_SelBgColor
->
SetSelection
(
(
m_parent
->
GetDrawBgColor
()
==
BLACK
)
?
1
:
0
);
m_columnBoxSizer
->
Add
(
m_SelBgColor
,
1
,
wxGROW
|
wxRIGHT
|
wxTOP
|
wxBOTTOM
,
5
);
m_columnBoxSizer
->
Add
(
m_SelBgColor
,
1
,
wxGROW
|
wxRIGHT
|
wxTOP
|
wxBOTTOM
,
5
);
currentColors
[
LAYER_BACKGROUND
]
=
m_parent
->
GetDrawBgColor
();
// Provide a line to separate all of the controls added so far from the
// Provide a line to separate all of the controls added so far from the
// "OK", "Cancel", and "Apply" buttons (which will be added after that
// "OK", "Cancel", and "Apply" buttons (which will be added after that
// line).
// line).
...
@@ -317,24 +318,27 @@ void DIALOG_COLOR_CONFIG::SetColor( wxCommandEvent& event )
...
@@ -317,24 +318,27 @@ void DIALOG_COLOR_CONFIG::SetColor( wxCommandEvent& event )
bool
DIALOG_COLOR_CONFIG
::
UpdateColorsSettings
()
bool
DIALOG_COLOR_CONFIG
::
UpdateColorsSettings
()
{
{
// Update color of background
// Update color of background
if
(
m_SelBgColor
->
GetSelection
()
==
0
)
EDA_COLOR_T
bgcolor
=
WHITE
;
m_parent
->
SetDrawBgColor
(
WHITE
);
else
if
(
m_SelBgColor
->
GetSelection
()
>
0
)
m_parent
->
SetDrawBgColor
(
BLACK
);
bgcolor
=
BLACK
;
m_parent
->
SetDrawBgColor
(
bgcolor
);
currentColors
[
LAYER_BACKGROUND
]
=
bgcolor
;
bool
warning
=
false
;
bool
warning
=
false
;
for
(
L
ayerNumber
ii
=
LAYER_WIRE
;
ii
<
NB_SCH_LAYERS
;
++
ii
)
for
(
L
AYERSCH_ID
clyr
=
LAYER_WIRE
;
clyr
<
LAYERSCH_ID_COUNT
;
++
clyr
)
{
{
SetLayerColor
(
currentColors
[
ii
],
ii
);
SetLayerColor
(
currentColors
[
clyr
],
clyr
);
if
(
m_parent
->
GetDrawBgColor
()
==
GetLayerColor
(
ii
)
)
if
(
bgcolor
==
GetLayerColor
(
clyr
)
&&
clyr
!=
LAYER_BACKGROUND
)
warning
=
true
;
warning
=
true
;
}
}
m_parent
->
SetGridColor
(
GetLayerColor
(
LAYER_GRID
)
);
m_parent
->
SetGridColor
(
GetLayerColor
(
LAYER_GRID
)
);
if
(
m_parent
->
GetDrawBgColor
()
==
GetLayerColor
(
LAYER_GRID
)
)
if
(
bgcolor
==
GetLayerColor
(
LAYER_GRID
)
)
warning
=
true
;
warning
=
true
;
return
warning
;
return
warning
;
...
@@ -348,7 +352,8 @@ void DIALOG_COLOR_CONFIG::OnOkClick( wxCommandEvent& event )
...
@@ -348,7 +352,8 @@ void DIALOG_COLOR_CONFIG::OnOkClick( wxCommandEvent& event )
// Prompt the user if an item has the same color as the background
// Prompt the user if an item has the same color as the background
// because this item cannot be seen:
// because this item cannot be seen:
if
(
warning
)
if
(
warning
)
wxMessageBox
(
_
(
"Warning:
\n
Some items have the same color as the background
\n
and they will not be seen on screen"
)
);
wxMessageBox
(
_
(
"Warning:
\n
Some items have the same color as the background
\n
"
"and they will not be seen on screen"
)
);
m_parent
->
GetCanvas
()
->
Refresh
();
m_parent
->
GetCanvas
()
->
Refresh
();
...
...
eeschema/eeschema.cpp
View file @
230b60e6
...
@@ -70,7 +70,7 @@ static struct IFACE : public KIFACE_I
...
@@ -70,7 +70,7 @@ static struct IFACE : public KIFACE_I
bool
OnKifaceStart
(
PGM_BASE
*
aProgram
,
int
aCtlBits
);
bool
OnKifaceStart
(
PGM_BASE
*
aProgram
,
int
aCtlBits
);
void
OnKifaceEnd
(
PGM_BASE
*
aProgram
);
void
OnKifaceEnd
();
wxWindow
*
CreateWindow
(
wxWindow
*
aParent
,
int
aClassId
,
KIWAY
*
aKiway
,
int
aCtlBits
=
0
)
wxWindow
*
CreateWindow
(
wxWindow
*
aParent
,
int
aClassId
,
KIWAY
*
aKiway
,
int
aCtlBits
=
0
)
{
{
...
@@ -154,15 +154,15 @@ PGM_BASE& Pgm()
...
@@ -154,15 +154,15 @@ PGM_BASE& Pgm()
}
}
static
EDA_COLOR_T
s_layerColor
[
NB_SCH_LAYERS
];
static
EDA_COLOR_T
s_layerColor
[
LAYERSCH_ID_COUNT
];
EDA_COLOR_T
GetLayerColor
(
L
ayerNumber
aLayer
)
EDA_COLOR_T
GetLayerColor
(
L
AYERSCH_ID
aLayer
)
{
{
wxASSERT
(
unsigned
(
aLayer
)
<
DIM
(
s_layerColor
)
);
wxASSERT
(
unsigned
(
aLayer
)
<
DIM
(
s_layerColor
)
);
return
s_layerColor
[
aLayer
];
return
s_layerColor
[
aLayer
];
}
}
void
SetLayerColor
(
EDA_COLOR_T
aColor
,
int
aLayer
)
void
SetLayerColor
(
EDA_COLOR_T
aColor
,
LAYERSCH_ID
aLayer
)
{
{
wxASSERT
(
unsigned
(
aLayer
)
<
DIM
(
s_layerColor
)
);
wxASSERT
(
unsigned
(
aLayer
)
<
DIM
(
s_layerColor
)
);
s_layerColor
[
aLayer
]
=
aColor
;
s_layerColor
[
aLayer
]
=
aColor
;
...
@@ -178,7 +178,8 @@ static PARAM_CFG_ARRAY& cfg_params()
...
@@ -178,7 +178,8 @@ static PARAM_CFG_ARRAY& cfg_params()
// These are KIFACE specific, they need to be loaded once when the
// These are KIFACE specific, they need to be loaded once when the
// eeschema KIFACE comes in.
// eeschema KIFACE comes in.
#define CLR(x, y, z) ca.push_back( new PARAM_CFG_SETCOLOR( true, wxT( x ), &s_layerColor[y], z ));
#define CLR(x, y, z)\
ca.push_back( new PARAM_CFG_SETCOLOR( true, wxT( x ), &s_layerColor[y], z ) );
CLR
(
"ColorWireEx"
,
LAYER_WIRE
,
GREEN
)
CLR
(
"ColorWireEx"
,
LAYER_WIRE
,
GREEN
)
CLR
(
"ColorBusEx"
,
LAYER_BUS
,
BLUE
)
CLR
(
"ColorBusEx"
,
LAYER_BUS
,
BLUE
)
...
@@ -204,6 +205,7 @@ static PARAM_CFG_ARRAY& cfg_params()
...
@@ -204,6 +205,7 @@ static PARAM_CFG_ARRAY& cfg_params()
CLR
(
"ColorErcWEx"
,
LAYER_ERC_WARN
,
GREEN
)
CLR
(
"ColorErcWEx"
,
LAYER_ERC_WARN
,
GREEN
)
CLR
(
"ColorErcEEx"
,
LAYER_ERC_ERR
,
RED
)
CLR
(
"ColorErcEEx"
,
LAYER_ERC_ERR
,
RED
)
CLR
(
"ColorGridEx"
,
LAYER_GRID
,
DARKGRAY
)
CLR
(
"ColorGridEx"
,
LAYER_GRID
,
DARKGRAY
)
CLR
(
"ColorBgCanvasEx"
,
LAYER_BACKGROUND
,
WHITE
)
}
}
return
ca
;
return
ca
;
...
@@ -220,23 +222,24 @@ bool IFACE::OnKifaceStart( PGM_BASE* aProgram, int aCtlBits )
...
@@ -220,23 +222,24 @@ bool IFACE::OnKifaceStart( PGM_BASE* aProgram, int aCtlBits )
// Give a default colour for all layers
// Give a default colour for all layers
// (actual color will be initialized by config)
// (actual color will be initialized by config)
for
(
int
ii
=
0
;
ii
<
NB_SCH_LAYERS
;
ii
++
)
for
(
LAYERSCH_ID
ii
=
LAYER_FIRST
;
ii
<
LAYERSCH_ID_COUNT
;
++
ii
)
SetLayerColor
(
DARKGRAY
,
ii
);
SetLayerColor
(
DARKGRAY
,
ii
);
SetLayerColor
(
WHITE
,
LAYER_BACKGROUND
);
// Must be called before creating the main frame in order to
// Must be called before creating the main frame in order to
// display the real hotkeys in menus or tool tips
// display the real hotkeys in menus or tool tips
ReadHotkeyConfig
(
wxT
(
"SchematicFrame"
),
s_Eeschema_Hokeys_Descr
);
ReadHotkeyConfig
(
wxT
(
"SchematicFrame"
),
s_Eeschema_Hokeys_Descr
);
wxConfigLoadSetups
(
KifaceSettings
(),
cfg_params
()
);
wxConfigLoadSetups
(
KifaceSettings
(),
cfg_params
()
);
return
true
;
return
true
;
}
}
void
IFACE
::
OnKifaceEnd
(
PGM_BASE
*
aProgram
)
void
IFACE
::
OnKifaceEnd
()
{
{
wxConfigSaveSetups
(
KifaceSettings
(),
cfg_params
()
);
wxConfigSaveSetups
(
KifaceSettings
(),
cfg_params
()
);
end_common
();
end_common
();
}
}
eeschema/eeschema_config.cpp
View file @
230b60e6
...
@@ -307,6 +307,7 @@ void SCH_EDIT_FRAME::OnPreferencesOptions( wxCommandEvent& event )
...
@@ -307,6 +307,7 @@ void SCH_EDIT_FRAME::OnPreferencesOptions( wxCommandEvent& event )
{
{
wxArrayString
units
;
wxArrayString
units
;
GRIDS
grid_list
=
GetScreen
()
->
GetGrids
();
GRIDS
grid_list
=
GetScreen
()
->
GetGrids
();
bool
saveProjectConfig
=
false
;
DIALOG_EESCHEMA_OPTIONS
dlg
(
this
);
DIALOG_EESCHEMA_OPTIONS
dlg
(
this
);
...
@@ -357,19 +358,33 @@ void SCH_EDIT_FRAME::OnPreferencesOptions( wxCommandEvent& event )
...
@@ -357,19 +358,33 @@ void SCH_EDIT_FRAME::OnPreferencesOptions( wxCommandEvent& event )
int
sep
,
firstId
;
int
sep
,
firstId
;
dlg
.
GetRefIdSeparator
(
sep
,
firstId
);
dlg
.
GetRefIdSeparator
(
sep
,
firstId
);
if
(
sep
!=
(
int
)
LIB_PART
::
GetSubpartIdSeparator
()
||
if
(
sep
!=
(
int
)
LIB_PART
::
GetSubpartIdSeparator
()
||
firstId
!=
(
int
)
LIB_PART
::
GetSubpartFirstId
()
)
firstId
!=
(
int
)
LIB_PART
::
GetSubpartFirstId
()
)
{
{
LIB_PART
::
SetSubpartIdNotation
(
sep
,
firstId
);
LIB_PART
::
SetSubpartIdNotation
(
sep
,
firstId
);
SaveProjectSettings
(
true
)
;
saveProjectConfig
=
true
;
}
}
SetDefaultBusThickness
(
dlg
.
GetBusWidth
()
);
SetDefaultBusThickness
(
dlg
.
GetBusWidth
()
);
SetDefaultLineThickness
(
dlg
.
GetLineWidth
()
);
SetDefaultLineThickness
(
dlg
.
GetLineWidth
()
);
SetDefaultTextSize
(
dlg
.
GetTextSize
()
);
g_RepeatStep
.
x
=
dlg
.
GetRepeatHorizontal
();
if
(
dlg
.
GetTextSize
()
!=
GetDefaultTextSize
()
)
g_RepeatStep
.
y
=
dlg
.
GetRepeatVertical
();
{
g_RepeatDeltaLabel
=
dlg
.
GetRepeatLabel
();
SetDefaultTextSize
(
dlg
.
GetTextSize
()
);
saveProjectConfig
=
true
;
}
if
(
g_RepeatStep
.
x
!=
dlg
.
GetRepeatHorizontal
()
||
g_RepeatStep
.
y
!=
dlg
.
GetRepeatVertical
()
||
g_RepeatDeltaLabel
!=
dlg
.
GetRepeatLabel
()
)
{
g_RepeatStep
.
x
=
dlg
.
GetRepeatHorizontal
();
g_RepeatStep
.
y
=
dlg
.
GetRepeatVertical
();
g_RepeatDeltaLabel
=
dlg
.
GetRepeatLabel
();
saveProjectConfig
=
true
;
}
SetAutoSaveInterval
(
dlg
.
GetAutoSaveInterval
()
*
60
);
SetAutoSaveInterval
(
dlg
.
GetAutoSaveInterval
()
*
60
);
SetGridVisibility
(
dlg
.
GetShowGrid
()
);
SetGridVisibility
(
dlg
.
GetShowGrid
()
);
m_showAllPins
=
dlg
.
GetShowHiddenPins
();
m_showAllPins
=
dlg
.
GetShowHiddenPins
();
...
@@ -414,6 +429,9 @@ void SCH_EDIT_FRAME::OnPreferencesOptions( wxCommandEvent& event )
...
@@ -414,6 +429,9 @@ void SCH_EDIT_FRAME::OnPreferencesOptions( wxCommandEvent& event )
SaveSettings
(
config
()
);
// save values shared by eeschema applications.
SaveSettings
(
config
()
);
// save values shared by eeschema applications.
if
(
saveProjectConfig
)
SaveProjectSettings
(
true
);
m_canvas
->
Refresh
(
true
);
m_canvas
->
Refresh
(
true
);
}
}
...
@@ -546,7 +564,6 @@ static const wxChar SimulatorCommandEntry[] = wxT( "SimCmdLine" );
...
@@ -546,7 +564,6 @@ static const wxChar SimulatorCommandEntry[] = wxT( "SimCmdLine" );
// Library editor wxConfig entry names.
// Library editor wxConfig entry names.
static
const
wxChar
lastLibExportPathEntry
[]
=
wxT
(
"LastLibraryExportPath"
);
static
const
wxChar
lastLibExportPathEntry
[]
=
wxT
(
"LastLibraryExportPath"
);
static
const
wxChar
lastLibImportPathEntry
[]
=
wxT
(
"LastLibraryImportPath"
);
static
const
wxChar
lastLibImportPathEntry
[]
=
wxT
(
"LastLibraryImportPath"
);
static
const
wxChar
libeditdrawBgColorEntry
[]
=
wxT
(
"LibeditBgColor"
);
static
const
wxChar
defaultPinNumSizeEntry
[]
=
wxT
(
"LibeditPinNumSize"
);
static
const
wxChar
defaultPinNumSizeEntry
[]
=
wxT
(
"LibeditPinNumSize"
);
static
const
wxChar
defaultPinNameSizeEntry
[]
=
wxT
(
"LibeditPinNameSize"
);
static
const
wxChar
defaultPinNameSizeEntry
[]
=
wxT
(
"LibeditPinNameSize"
);
static
const
wxChar
DefaultPinLengthEntry
[]
=
wxT
(
"DefaultPinLength"
);
static
const
wxChar
DefaultPinLengthEntry
[]
=
wxT
(
"DefaultPinLength"
);
...
@@ -561,9 +578,6 @@ PARAM_CFG_ARRAY& SCH_EDIT_FRAME::GetConfigurationSettings()
...
@@ -561,9 +578,6 @@ PARAM_CFG_ARRAY& SCH_EDIT_FRAME::GetConfigurationSettings()
&
m_showPageLimits
,
true
)
);
&
m_showPageLimits
,
true
)
);
m_configSettings
.
push_back
(
new
PARAM_CFG_INT
(
true
,
wxT
(
"Units"
),
m_configSettings
.
push_back
(
new
PARAM_CFG_INT
(
true
,
wxT
(
"Units"
),
(
int
*
)
&
g_UserUnit
,
MILLIMETRES
)
);
(
int
*
)
&
g_UserUnit
,
MILLIMETRES
)
);
m_configSettings
.
push_back
(
new
PARAM_CFG_SETCOLOR
(
true
,
wxT
(
"SchEditorBgColor"
),
&
m_drawBgColor
,
WHITE
)
);
m_configSettings
.
push_back
(
new
PARAM_CFG_BOOL
(
true
,
wxT
(
"PrintMonochrome"
),
m_configSettings
.
push_back
(
new
PARAM_CFG_BOOL
(
true
,
wxT
(
"PrintMonochrome"
),
&
m_printMonochrome
,
true
)
);
&
m_printMonochrome
,
true
)
);
...
@@ -582,7 +596,8 @@ void SCH_EDIT_FRAME::LoadSettings( wxConfigBase* aCfg )
...
@@ -582,7 +596,8 @@ void SCH_EDIT_FRAME::LoadSettings( wxConfigBase* aCfg )
wxConfigLoadSetups
(
aCfg
,
GetConfigurationSettings
()
);
wxConfigLoadSetups
(
aCfg
,
GetConfigurationSettings
()
);
m_GridColor
=
GetLayerColor
(
LAYER_GRID
);
SetGridColor
(
GetLayerColor
(
LAYER_GRID
)
);
SetDrawBgColor
(
GetLayerColor
(
LAYER_BACKGROUND
)
);
SetDefaultBusThickness
(
aCfg
->
Read
(
DefaultBusWidthEntry
,
DEFAULTBUSTHICKNESS
)
);
SetDefaultBusThickness
(
aCfg
->
Read
(
DefaultBusWidthEntry
,
DEFAULTBUSTHICKNESS
)
);
SetDefaultLineThickness
(
aCfg
->
Read
(
DefaultDrawLineWidthEntry
,
DEFAULTDRAWLINETHICKNESS
)
);
SetDefaultLineThickness
(
aCfg
->
Read
(
DefaultDrawLineWidthEntry
,
DEFAULTDRAWLINETHICKNESS
)
);
...
@@ -744,8 +759,8 @@ void LIB_EDIT_FRAME::LoadSettings( wxConfigBase* aCfg )
...
@@ -744,8 +759,8 @@ void LIB_EDIT_FRAME::LoadSettings( wxConfigBase* aCfg )
wxConfigPathChanger
cpc
(
aCfg
,
m_configPath
);
wxConfigPathChanger
cpc
(
aCfg
,
m_configPath
);
EDA_COLOR_T
itmp
=
ColorByName
(
aCfg
->
Read
(
libeditdrawBgColorEntry
,
wxT
(
"WHITE"
)
)
);
SetGridColor
(
GetLayerColor
(
LAYER_GRID
)
);
SetDrawBgColor
(
itmp
);
SetDrawBgColor
(
GetLayerColor
(
LAYER_BACKGROUND
)
);
wxString
pro_dir
=
Prj
().
GetProjectFullName
();
wxString
pro_dir
=
Prj
().
GetProjectFullName
();
...
@@ -765,7 +780,6 @@ void LIB_EDIT_FRAME::SaveSettings( wxConfigBase* aCfg )
...
@@ -765,7 +780,6 @@ void LIB_EDIT_FRAME::SaveSettings( wxConfigBase* aCfg )
wxConfigPathChanger
cpc
(
aCfg
,
m_configPath
);
wxConfigPathChanger
cpc
(
aCfg
,
m_configPath
);
aCfg
->
Write
(
libeditdrawBgColorEntry
,
ColorGetName
(
GetDrawBgColor
()
)
);
aCfg
->
Write
(
lastLibExportPathEntry
,
m_lastLibExportPath
);
aCfg
->
Write
(
lastLibExportPathEntry
,
m_lastLibExportPath
);
aCfg
->
Write
(
lastLibImportPathEntry
,
m_lastLibImportPath
);
aCfg
->
Write
(
lastLibImportPathEntry
,
m_lastLibImportPath
);
aCfg
->
Write
(
DefaultPinLengthEntry
,
(
long
)
GetDefaultPinLength
()
);
aCfg
->
Write
(
DefaultPinLengthEntry
,
(
long
)
GetDefaultPinLength
()
);
...
...
eeschema/general.h
View file @
230b60e6
...
@@ -36,8 +36,12 @@ class SCH_SHEET;
...
@@ -36,8 +36,12 @@ class SCH_SHEET;
#define GR_DEFAULT_DRAWMODE GR_COPY
#define GR_DEFAULT_DRAWMODE GR_COPY
// this enum is for color management
// this enum is for color management
// Using here "LAYER" in name is due to historical reasons.
// Eeschema does not actually use layers. It just uses "LAYER_XX" as identifier
// mainly for item color
typedef
enum
{
typedef
enum
{
LAYER_WIRE
,
LAYER_FIRST
,
LAYER_WIRE
=
LAYER_FIRST
,
LAYER_BUS
,
LAYER_BUS
,
LAYER_JUNCTION
,
LAYER_JUNCTION
,
LAYER_LOCLABEL
,
LAYER_LOCLABEL
,
...
@@ -61,12 +65,13 @@ typedef enum {
...
@@ -61,12 +65,13 @@ typedef enum {
LAYER_ERC_ERR
,
LAYER_ERC_ERR
,
LAYER_DEVICE_BACKGROUND
,
LAYER_DEVICE_BACKGROUND
,
LAYER_GRID
,
LAYER_GRID
,
NB_SCH_LAYERS
LAYER_BACKGROUND
,
}
LayerNumber
;
LAYERSCH_ID_COUNT
}
LAYERSCH_ID
;
inline
L
ayerNumber
operator
++
(
LayerNumber
&
a
)
inline
L
AYERSCH_ID
operator
++
(
LAYERSCH_ID
&
a
)
{
{
a
=
L
ayerNumber
(
int
(
a
)
+
1
);
a
=
L
AYERSCH_ID
(
int
(
a
)
+
1
);
return
a
;
return
a
;
}
}
...
@@ -104,7 +109,8 @@ void SetDefaultTextSize( int aSize );
...
@@ -104,7 +109,8 @@ void SetDefaultTextSize( int aSize );
int
GetDefaultBusThickness
();
int
GetDefaultBusThickness
();
void
SetDefaultBusThickness
(
int
aThickness
);
void
SetDefaultBusThickness
(
int
aThickness
);
EDA_COLOR_T
GetLayerColor
(
LayerNumber
aLayer
);
EDA_COLOR_T
GetLayerColor
(
LAYERSCH_ID
aLayer
);
void
SetLayerColor
(
EDA_COLOR_T
aColor
,
LAYERSCH_ID
aLayer
);
// Color to draw selected items
// Color to draw selected items
EDA_COLOR_T
GetItemSelectedColor
();
EDA_COLOR_T
GetItemSelectedColor
();
...
@@ -112,6 +118,4 @@ EDA_COLOR_T GetItemSelectedColor();
...
@@ -112,6 +118,4 @@ EDA_COLOR_T GetItemSelectedColor();
// Color to draw items flagged invisible, in libedit (they are invisible in Eeschema
// Color to draw items flagged invisible, in libedit (they are invisible in Eeschema
EDA_COLOR_T
GetInvisibleItemColor
();
EDA_COLOR_T
GetInvisibleItemColor
();
void
SetLayerColor
(
EDA_COLOR_T
aColor
,
int
aLayer
);
#endif // _GENERAL_H_
#endif // _GENERAL_H_
eeschema/sch_base_frame.cpp
View file @
230b60e6
...
@@ -35,7 +35,6 @@ SCH_BASE_FRAME::SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent,
...
@@ -35,7 +35,6 @@ SCH_BASE_FRAME::SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent,
EDA_DRAW_FRAME
(
aKiway
,
aParent
,
aWindowType
,
aTitle
,
aPosition
,
EDA_DRAW_FRAME
(
aKiway
,
aParent
,
aWindowType
,
aTitle
,
aPosition
,
aSize
,
aStyle
,
aFrameName
)
aSize
,
aStyle
,
aFrameName
)
{
{
SetDrawBgColor
(
WHITE
);
// the background color of the draw canvas, BLACK or WHITE
}
}
...
@@ -47,6 +46,18 @@ void SCH_BASE_FRAME::OnOpenLibraryViewer( wxCommandEvent& event )
...
@@ -47,6 +46,18 @@ void SCH_BASE_FRAME::OnOpenLibraryViewer( wxCommandEvent& event )
viewlibFrame
->
Raise
();
viewlibFrame
->
Raise
();
}
}
// Virtual from EDA_DRAW_FRAME
EDA_COLOR_T
SCH_BASE_FRAME
::
GetDrawBgColor
()
const
{
return
GetLayerColor
(
LAYER_BACKGROUND
);
}
void
SCH_BASE_FRAME
::
SetDrawBgColor
(
EDA_COLOR_T
aColor
)
{
m_drawBgColor
=
aColor
;
SetLayerColor
(
aColor
,
LAYER_BACKGROUND
);
}
SCH_SCREEN
*
SCH_BASE_FRAME
::
GetScreen
()
const
SCH_SCREEN
*
SCH_BASE_FRAME
::
GetScreen
()
const
{
{
...
...
eeschema/sch_screen.cpp
View file @
230b60e6
...
@@ -504,7 +504,7 @@ bool SCH_SCREEN::Save( FILE* aFile ) const
...
@@ -504,7 +504,7 @@ bool SCH_SCREEN::Save( FILE* aFile ) const
}
}
// This section is not used, but written for file compatibility
// This section is not used, but written for file compatibility
if
(
fprintf
(
aFile
,
"EELAYER %d %d
\n
"
,
NB_SCH_LAYERS
,
0
)
<
0
if
(
fprintf
(
aFile
,
"EELAYER %d %d
\n
"
,
LAYERSCH_ID_COUNT
,
0
)
<
0
||
fprintf
(
aFile
,
"EELAYER END
\n
"
)
<
0
)
||
fprintf
(
aFile
,
"EELAYER END
\n
"
)
<
0
)
return
false
;
return
false
;
...
...
eeschema/viewlib_frame.cpp
View file @
230b60e6
...
@@ -507,13 +507,13 @@ void LIB_VIEW_FRAME::LoadSettings( wxConfigBase* aCfg )
...
@@ -507,13 +507,13 @@ void LIB_VIEW_FRAME::LoadSettings( wxConfigBase* aCfg )
{
{
EDA_DRAW_FRAME
::
LoadSettings
(
aCfg
);
EDA_DRAW_FRAME
::
LoadSettings
(
aCfg
);
wxConfigPathChanger
cpc
(
aCfg
,
m_configPath
);
SetGridColor
(
GetLayerColor
(
LAYER_GRID
)
);
SetDrawBgColor
(
GetLayerColor
(
LAYER_BACKGROUND
)
);
EDA_COLOR_T
itmp
=
ColorByName
(
aCfg
->
Read
(
LIBVIEW_BGCOLOR
,
wxT
(
"WHITE"
)
)
);
wxConfigPathChanger
cpc
(
aCfg
,
m_configPath
);
SetDrawBgColor
(
itmp
);
aCfg
->
Read
(
LIBLIST_WIDTH_KEY
,
&
m_libListWidth
,
1
0
0
);
aCfg
->
Read
(
LIBLIST_WIDTH_KEY
,
&
m_libListWidth
,
1
5
0
);
aCfg
->
Read
(
CMPLIST_WIDTH_KEY
,
&
m_cmpListWidth
,
1
0
0
);
aCfg
->
Read
(
CMPLIST_WIDTH_KEY
,
&
m_cmpListWidth
,
1
5
0
);
// Set parameters to a reasonable value.
// Set parameters to a reasonable value.
if
(
m_libListWidth
>
m_FrameSize
.
x
/
2
)
if
(
m_libListWidth
>
m_FrameSize
.
x
/
2
)
...
@@ -538,7 +538,6 @@ void LIB_VIEW_FRAME::SaveSettings( wxConfigBase* aCfg )
...
@@ -538,7 +538,6 @@ void LIB_VIEW_FRAME::SaveSettings( wxConfigBase* aCfg )
m_cmpListWidth
=
m_cmpList
->
GetSize
().
x
;
m_cmpListWidth
=
m_cmpList
->
GetSize
().
x
;
aCfg
->
Write
(
CMPLIST_WIDTH_KEY
,
m_cmpListWidth
);
aCfg
->
Write
(
CMPLIST_WIDTH_KEY
,
m_cmpListWidth
);
aCfg
->
Write
(
LIBVIEW_BGCOLOR
,
ColorGetName
(
GetDrawBgColor
()
)
);
}
}
...
...
include/draw_frame.h
View file @
230b60e6
...
@@ -60,9 +60,9 @@ protected:
...
@@ -60,9 +60,9 @@ protected:
int
m_LastGridSizeId
;
// the command id offset (>= 0) of the last selected grid
int
m_LastGridSizeId
;
// the command id offset (>= 0) of the last selected grid
// 0 is for the grid corresponding to
// 0 is for the grid corresponding to
// a wxCommand ID = ID_POPUP_GRID_LEVEL_1000.
// a wxCommand ID = ID_POPUP_GRID_LEVEL_1000.
bool
m_
D
rawGrid
;
// hide/Show grid
bool
m_
d
rawGrid
;
// hide/Show grid
bool
m_showPageLimits
;
///< true to display the page limits
bool
m_showPageLimits
;
///< true to display the page limits
EDA_COLOR_T
m_
G
ridColor
;
// Grid color
EDA_COLOR_T
m_
g
ridColor
;
// Grid color
EDA_COLOR_T
m_drawBgColor
;
///< the background color of the draw canvas
EDA_COLOR_T
m_drawBgColor
;
///< the background color of the draw canvas
///< BLACK for Pcbnew, BLACK or WHITE for eeschema
///< BLACK for Pcbnew, BLACK or WHITE for eeschema
...
@@ -258,8 +258,16 @@ public:
...
@@ -258,8 +258,16 @@ public:
virtual
void
SetTitleBlock
(
const
TITLE_BLOCK
&
aTitleBlock
)
=
0
;
virtual
void
SetTitleBlock
(
const
TITLE_BLOCK
&
aTitleBlock
)
=
0
;
// the background color of the draw canvas:
// the background color of the draw canvas:
EDA_COLOR_T
GetDrawBgColor
()
const
{
return
m_drawBgColor
;
}
// Virtual because some frames can have a specific way to get/set the bg color
void
SetDrawBgColor
(
EDA_COLOR_T
aColor
)
{
m_drawBgColor
=
aColor
;
}
/**
* @return the EDA_COLOR_T for the canvas background
*/
virtual
EDA_COLOR_T
GetDrawBgColor
()
const
{
return
m_drawBgColor
;
}
/**
* @param aColor: the EDA_COLOR_T for the canvas background
*/
virtual
void
SetDrawBgColor
(
EDA_COLOR_T
aColor
)
{
m_drawBgColor
=
aColor
;
}
int
GetCursorShape
()
const
{
return
m_cursorShape
;
}
int
GetCursorShape
()
const
{
return
m_cursorShape
;
}
...
@@ -355,7 +363,7 @@ public:
...
@@ -355,7 +363,7 @@ public:
*/
*/
virtual
bool
IsGridVisible
()
const
virtual
bool
IsGridVisible
()
const
{
{
return
m_
D
rawGrid
;
return
m_
d
rawGrid
;
}
}
/**
/**
...
@@ -365,7 +373,7 @@ public:
...
@@ -365,7 +373,7 @@ public:
*/
*/
virtual
void
SetGridVisibility
(
bool
aVisible
)
virtual
void
SetGridVisibility
(
bool
aVisible
)
{
{
m_
D
rawGrid
=
aVisible
;
m_
d
rawGrid
=
aVisible
;
}
}
/**
/**
...
@@ -374,7 +382,7 @@ public:
...
@@ -374,7 +382,7 @@ public:
*/
*/
virtual
EDA_COLOR_T
GetGridColor
()
const
virtual
EDA_COLOR_T
GetGridColor
()
const
{
{
return
m_
G
ridColor
;
return
m_
g
ridColor
;
}
}
/**
/**
...
@@ -383,7 +391,7 @@ public:
...
@@ -383,7 +391,7 @@ public:
*/
*/
virtual
void
SetGridColor
(
EDA_COLOR_T
aColor
)
virtual
void
SetGridColor
(
EDA_COLOR_T
aColor
)
{
{
m_
G
ridColor
=
aColor
;
m_
g
ridColor
=
aColor
;
}
}
/**
/**
...
...
include/sch_base_frame.h
View file @
230b60e6
...
@@ -68,6 +68,11 @@ public:
...
@@ -68,6 +68,11 @@ public:
}
}
void
SetGridOrigin
(
const
wxPoint
&
aPoint
)
{}
// overload EDA_DRAW_FRAME
void
SetGridOrigin
(
const
wxPoint
&
aPoint
)
{}
// overload EDA_DRAW_FRAME
// Virtual from EDA_DRAW_FRAME
// the background color of the draw canvas:
EDA_COLOR_T
GetDrawBgColor
()
const
;
void
SetDrawBgColor
(
EDA_COLOR_T
aColor
);
const
TITLE_BLOCK
&
GetTitleBlock
()
const
;
// overload EDA_DRAW_FRAME
const
TITLE_BLOCK
&
GetTitleBlock
()
const
;
// overload EDA_DRAW_FRAME
void
SetTitleBlock
(
const
TITLE_BLOCK
&
aTitleBlock
);
// overload EDA_DRAW_FRAME
void
SetTitleBlock
(
const
TITLE_BLOCK
&
aTitleBlock
);
// overload EDA_DRAW_FRAME
...
...
include/sch_item_struct.h
View file @
230b60e6
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
#include <general.h>
#include <general.h>
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
class
SCH_ITEM
;
class
SCH_ITEM
;
class
SCH_SHEET_PATH
;
class
SCH_SHEET_PATH
;
class
LINE_READER
;
class
LINE_READER
;
...
@@ -115,7 +115,7 @@ public:
...
@@ -115,7 +115,7 @@ public:
class
SCH_ITEM
:
public
EDA_ITEM
class
SCH_ITEM
:
public
EDA_ITEM
{
{
protected
:
protected
:
L
ayerNumber
m_Layer
;
L
AYERSCH_ID
m_Layer
;
EDA_ITEMS
m_connections
;
///< List of items connected to this item.
EDA_ITEMS
m_connections
;
///< List of items connected to this item.
public
:
public
:
...
@@ -145,14 +145,14 @@ public:
...
@@ -145,14 +145,14 @@ public:
* Function GetLayer
* Function GetLayer
* returns the layer this item is on.
* returns the layer this item is on.
*/
*/
L
ayerNumber
GetLayer
()
const
{
return
m_Layer
;
}
L
AYERSCH_ID
GetLayer
()
const
{
return
m_Layer
;
}
/**
/**
* Function SetLayer
* Function SetLayer
* sets the layer this item is on.
* sets the layer this item is on.
* @param aLayer The layer number.
* @param aLayer The layer number.
*/
*/
void
SetLayer
(
L
ayerNumber
aLayer
)
{
m_Layer
=
aLayer
;
}
void
SetLayer
(
L
AYERSCH_ID
aLayer
)
{
m_Layer
=
aLayer
;
}
/**
/**
* Function GetPenSize virtual pure
* Function GetPenSize virtual pure
...
@@ -293,7 +293,7 @@ public:
...
@@ -293,7 +293,7 @@ public:
bool
IsConnected
(
const
wxPoint
&
aPoint
)
const
;
bool
IsConnected
(
const
wxPoint
&
aPoint
)
const
;
/** @copydoc EDA_ITEM::HitTest(const wxPoint&) */
/** @copydoc EDA_ITEM::HitTest(const wxPoint&) */
virtual
bool
HitTest
(
const
wxPoint
&
aPosition
)
const
virtual
bool
HitTest
(
const
wxPoint
&
aPosition
)
const
{
{
return
HitTest
(
aPosition
,
0
);
return
HitTest
(
aPosition
,
0
);
}
}
...
...
include/wxPcbStruct.h
View file @
230b60e6
...
@@ -514,6 +514,19 @@ public:
...
@@ -514,6 +514,19 @@ public:
*/
*/
void
ReCreateLayerBox
(
bool
aForceResizeToolbar
=
true
);
void
ReCreateLayerBox
(
bool
aForceResizeToolbar
=
true
);
/**
* Function SetCurrentNetClass
* Must be called after a netclass selection (or after a netclass parameter change
* calls BOARD_DESIGN_SETTINGS::SetCurrentNetClass() and update trace width and via size
* combo boxes on main toolbar
* Initialize vias and tracks values displayed in comb boxes of the auxiliary toolbar
* and some others parameters (netclass name ....)
* @param aNetClassName = the new netclass name
* @return true if lists of tracks and vias sizes are modified
*/
bool
SetCurrentNetClass
(
const
wxString
&
aNetClassName
);
/**
/**
* Function OnModify
* Function OnModify
* must be called after a board change to set the modified flag.
* must be called after a board change to set the modified flag.
...
...
pcbnew/CMakeLists.txt
View file @
230b60e6
...
@@ -166,6 +166,7 @@ set( PCBNEW_CLASS_SRCS
...
@@ -166,6 +166,7 @@ set( PCBNEW_CLASS_SRCS
modview_frame.cpp
modview_frame.cpp
pcbframe.cpp
pcbframe.cpp
pcb_base_edit_frame.cpp
pcb_base_edit_frame.cpp
append_board_to_current.cpp
attribut.cpp
attribut.cpp
board_items_to_polygon_shape_transform.cpp
board_items_to_polygon_shape_transform.cpp
board_undo_redo.cpp
board_undo_redo.cpp
...
...
pcbnew/append_board_to_current.cpp
0 → 100644
View file @
230b60e6
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2004-2014 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2014 KiCad Developers, see change_log.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file append_board_to_current.cpp
* @brief append a board to the currently edited board.
*/
#include <fctsys.h>
#include <confirm.h>
#include <wxPcbStruct.h>
#include <pcbnew.h>
#include <io_mgr.h>
#include <class_module.h>
#include <class_zone.h>
#include <class_board.h>
#include <pcb_draw_panel_gal.h>
// Defined in files.cpp:
extern
IO_MGR
::
PCB_FILE_T
plugin_type
(
const
wxString
&
aFileName
,
int
aCtl
);
bool
PCB_EDIT_FRAME
::
AppendBoardFile
(
const
wxString
&
aFullFileName
,
int
aCtl
)
{
IO_MGR
::
PCB_FILE_T
pluginType
=
plugin_type
(
aFullFileName
,
aCtl
);
PLUGIN
::
RELEASER
pi
(
IO_MGR
::
PluginFind
(
pluginType
)
);
// keep trace of existing items, in order to know what are the new items
// (for undo command for instance)
// Tracks are inserted, not append, so mark existing tracks to know what are
// the new tracks
for
(
TRACK
*
track
=
GetBoard
()
->
m_Track
;
track
;
track
=
track
->
Next
()
)
track
->
SetFlags
(
FLAG0
);
// Other items are append to the item list, so keep trace to the
// last existing item is enough
MODULE
*
module
=
GetBoard
()
->
m_Modules
.
GetLast
();
BOARD_ITEM
*
drawing
=
GetBoard
()
->
m_Drawings
.
GetLast
();
int
zonescount
=
GetBoard
()
->
GetAreaCount
();
// Keep also the count of copper layers, because we can happen boards
// with different copper layers counts,
// and the enabled layers
int
initialCopperLayerCount
=
GetBoard
()
->
GetCopperLayerCount
();
LSET
initialEnabledLayers
=
GetBoard
()
->
GetEnabledLayers
();
try
{
PROPERTIES
props
;
char
xbuf
[
30
];
char
ybuf
[
30
];
// EAGLE_PLUGIN can use this info to center the BOARD, but it does not yet.
sprintf
(
xbuf
,
"%d"
,
GetPageSizeIU
().
x
);
sprintf
(
ybuf
,
"%d"
,
GetPageSizeIU
().
y
);
props
[
"page_width"
]
=
xbuf
;
props
[
"page_height"
]
=
ybuf
;
GetDesignSettings
().
m_NetClasses
.
Clear
();
pi
->
Load
(
aFullFileName
,
GetBoard
(),
&
props
);
}
catch
(
const
IO_ERROR
&
ioe
)
{
for
(
TRACK
*
track
=
GetBoard
()
->
m_Track
;
track
;
track
=
track
->
Next
()
)
track
->
ClearFlags
(
FLAG0
);
wxString
msg
=
wxString
::
Format
(
_
(
"Error loading board.
\n
%s"
),
GetChars
(
ioe
.
errorText
)
);
DisplayError
(
this
,
msg
);
return
false
;
}
// Now prepare a block move command to place the new items, and
// prepare the undo command.
BLOCK_SELECTOR
&
blockmove
=
GetScreen
()
->
m_BlockLocate
;
HandleBlockBegin
(
NULL
,
BLOCK_PRESELECT_MOVE
,
wxPoint
(
0
,
0
)
);
PICKED_ITEMS_LIST
&
blockitemsList
=
blockmove
.
GetItems
();
PICKED_ITEMS_LIST
undoListPicker
;
ITEM_PICKER
picker
(
NULL
,
UR_NEW
);
EDA_RECT
bbox
;
// the new items bounding box, for block move
bool
bboxInit
=
true
;
// true until the bounding box is initialized
for
(
TRACK
*
track
=
GetBoard
()
->
m_Track
;
track
;
track
=
track
->
Next
()
)
{
if
(
track
->
GetFlags
()
&
FLAG0
)
{
track
->
ClearFlags
(
FLAG0
);
continue
;
}
track
->
SetFlags
(
IS_MOVED
);
picker
.
SetItem
(
track
);
undoListPicker
.
PushItem
(
picker
);
blockitemsList
.
PushItem
(
picker
);
if
(
bboxInit
)
bbox
=
track
->
GetBoundingBox
();
else
bboxInit
=
false
;
bbox
.
Merge
(
track
->
GetBoundingBox
()
);
}
if
(
module
)
module
=
module
->
Next
();
else
module
=
GetBoard
()
->
m_Modules
;
for
(
;
module
;
module
=
module
->
Next
()
)
{
module
->
SetFlags
(
IS_MOVED
);
picker
.
SetItem
(
module
);
undoListPicker
.
PushItem
(
picker
);
blockitemsList
.
PushItem
(
picker
);
if
(
bboxInit
)
bbox
=
module
->
GetBoundingBox
();
else
bbox
.
Merge
(
module
->
GetBoundingBox
()
);
bboxInit
=
false
;
}
if
(
drawing
)
drawing
=
drawing
->
Next
();
else
drawing
=
GetBoard
()
->
m_Drawings
;
for
(
;
drawing
;
drawing
=
drawing
->
Next
()
)
{
drawing
->
SetFlags
(
IS_MOVED
);
picker
.
SetItem
(
drawing
);
undoListPicker
.
PushItem
(
picker
);
blockitemsList
.
PushItem
(
picker
);
if
(
bboxInit
)
bbox
=
drawing
->
GetBoundingBox
();
else
bbox
.
Merge
(
drawing
->
GetBoundingBox
()
);
bboxInit
=
false
;
}
for
(
ZONE_CONTAINER
*
zone
=
GetBoard
()
->
GetArea
(
zonescount
);
zone
;
zone
=
GetBoard
()
->
GetArea
(
zonescount
)
)
{
zone
->
SetFlags
(
IS_MOVED
);
picker
.
SetItem
(
zone
);
undoListPicker
.
PushItem
(
picker
);
blockitemsList
.
PushItem
(
picker
);
zonescount
++
;
if
(
bboxInit
)
bbox
=
zone
->
GetBoundingBox
();
else
bbox
.
Merge
(
zone
->
GetBoundingBox
()
);
bboxInit
=
false
;
}
SaveCopyInUndoList
(
undoListPicker
,
UR_NEW
);
// we should not ask PLUGINs to do these items:
int
copperLayerCount
=
GetBoard
()
->
GetCopperLayerCount
();
if
(
copperLayerCount
>
initialCopperLayerCount
)
GetBoard
()
->
SetCopperLayerCount
(
copperLayerCount
);
// Enable all used layers, and make them visible:
LSET
enabledLayers
=
GetBoard
()
->
GetEnabledLayers
();
enabledLayers
|=
initialEnabledLayers
;
GetBoard
()
->
SetEnabledLayers
(
enabledLayers
);
GetBoard
()
->
SetVisibleLayers
(
enabledLayers
);
ReCreateLayerBox
();
ReFillLayerWidget
();
if
(
IsGalCanvasActive
()
)
static_cast
<
PCB_DRAW_PANEL_GAL
*>
(
GetGalCanvas
()
)
->
SyncLayersVisibility
(
GetBoard
()
);
GetBoard
()
->
BuildListOfNets
();
GetBoard
()
->
SynchronizeNetsAndNetClasses
();
SetStatusText
(
wxEmptyString
);
BestZoom
();
// Finish block move command:
wxPoint
cpos
=
GetNearestGridPosition
(
bbox
.
Centre
()
);
blockmove
.
SetOrigin
(
bbox
.
GetOrigin
()
);
blockmove
.
SetSize
(
bbox
.
GetSize
()
);
blockmove
.
SetLastCursorPosition
(
cpos
);
HandleBlockEnd
(
NULL
);
return
true
;
}
pcbnew/block.cpp
View file @
230b60e6
...
@@ -185,7 +185,7 @@ int PCB_EDIT_FRAME::BlockCommand( int aKey )
...
@@ -185,7 +185,7 @@ int PCB_EDIT_FRAME::BlockCommand( int aKey )
switch
(
aKey
)
switch
(
aKey
)
{
{
default
:
default
:
cmd
=
aKey
&
0x
255
;
cmd
=
aKey
&
0x
FF
;
break
;
break
;
case
0
:
case
0
:
...
@@ -219,6 +219,8 @@ int PCB_EDIT_FRAME::BlockCommand( int aKey )
...
@@ -219,6 +219,8 @@ int PCB_EDIT_FRAME::BlockCommand( int aKey )
void
PCB_EDIT_FRAME
::
HandleBlockPlace
(
wxDC
*
DC
)
void
PCB_EDIT_FRAME
::
HandleBlockPlace
(
wxDC
*
DC
)
{
{
GetBoard
()
->
m_Status_Pcb
&=
~
DO_NOT_SHOW_GENERAL_RASTNEST
;
if
(
!
m_canvas
->
IsMouseCaptured
()
)
if
(
!
m_canvas
->
IsMouseCaptured
()
)
{
{
DisplayError
(
this
,
wxT
(
"Error in HandleBlockPLace : m_mouseCaptureCallback = NULL"
)
);
DisplayError
(
this
,
wxT
(
"Error in HandleBlockPLace : m_mouseCaptureCallback = NULL"
)
);
...
@@ -274,7 +276,6 @@ bool PCB_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
...
@@ -274,7 +276,6 @@ bool PCB_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
{
{
bool
nextcmd
=
false
;
// Will be set to true if a block place is needed
bool
nextcmd
=
false
;
// Will be set to true if a block place is needed
bool
cancelCmd
=
false
;
bool
cancelCmd
=
false
;
// If coming here after cancel block, clean up and exit
// If coming here after cancel block, clean up and exit
if
(
GetScreen
()
->
m_BlockLocate
.
GetState
()
==
STATE_NO_BLOCK
)
if
(
GetScreen
()
->
m_BlockLocate
.
GetState
()
==
STATE_NO_BLOCK
)
{
{
...
@@ -369,6 +370,7 @@ bool PCB_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
...
@@ -369,6 +370,7 @@ bool PCB_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
if
(
!
nextcmd
)
if
(
!
nextcmd
)
{
{
GetBoard
()
->
m_Status_Pcb
|=
DO_NOT_SHOW_GENERAL_RASTNEST
;
GetScreen
()
->
ClearBlockCommand
();
GetScreen
()
->
ClearBlockCommand
();
m_canvas
->
EndMouseCapture
(
GetToolId
(),
m_canvas
->
GetCurrentCursor
(),
wxEmptyString
,
m_canvas
->
EndMouseCapture
(
GetToolId
(),
m_canvas
->
GetCurrentCursor
(),
wxEmptyString
,
false
);
false
);
...
@@ -562,6 +564,10 @@ static void drawMovingBlock( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& a
...
@@ -562,6 +564,10 @@ static void drawMovingBlock( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& a
{
{
BASE_SCREEN
*
screen
=
aPanel
->
GetScreen
();
BASE_SCREEN
*
screen
=
aPanel
->
GetScreen
();
// do not show local module rastnest in block move, it is not usable.
bool
tmp
=
g_Show_Module_Ratsnest
;
g_Show_Module_Ratsnest
=
false
;
if
(
aErase
)
if
(
aErase
)
{
{
if
(
screen
->
m_BlockLocate
.
GetMoveVector
().
x
||
screen
->
m_BlockLocate
.
GetMoveVector
().
y
)
if
(
screen
->
m_BlockLocate
.
GetMoveVector
().
x
||
screen
->
m_BlockLocate
.
GetMoveVector
().
y
)
...
@@ -589,6 +595,8 @@ static void drawMovingBlock( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& a
...
@@ -589,6 +595,8 @@ static void drawMovingBlock( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& a
if
(
blockDrawItems
)
if
(
blockDrawItems
)
drawPickedItems
(
aPanel
,
aDC
,
screen
->
m_BlockLocate
.
GetMoveVector
()
);
drawPickedItems
(
aPanel
,
aDC
,
screen
->
m_BlockLocate
.
GetMoveVector
()
);
}
}
g_Show_Module_Ratsnest
=
tmp
;
}
}
...
@@ -795,6 +803,7 @@ void PCB_EDIT_FRAME::Block_Move()
...
@@ -795,6 +803,7 @@ void PCB_EDIT_FRAME::Block_Move()
BOARD_ITEM
*
item
=
(
BOARD_ITEM
*
)
itemsList
->
GetPickedItem
(
ii
);
BOARD_ITEM
*
item
=
(
BOARD_ITEM
*
)
itemsList
->
GetPickedItem
(
ii
);
itemsList
->
SetPickedItemStatus
(
UR_MOVED
,
ii
);
itemsList
->
SetPickedItemStatus
(
UR_MOVED
,
ii
);
item
->
Move
(
MoveVector
);
item
->
Move
(
MoveVector
);
item
->
ClearFlags
(
IS_MOVED
);
switch
(
item
->
Type
()
)
switch
(
item
->
Type
()
)
{
{
...
...
pcbnew/block_module_editor.cpp
View file @
230b60e6
...
@@ -80,7 +80,7 @@ int FOOTPRINT_EDIT_FRAME::BlockCommand( int key )
...
@@ -80,7 +80,7 @@ int FOOTPRINT_EDIT_FRAME::BlockCommand( int key )
switch
(
key
)
switch
(
key
)
{
{
default
:
default
:
cmd
=
key
&
0x
255
;
cmd
=
key
&
0x
FF
;
break
;
break
;
case
-
1
:
case
-
1
:
...
@@ -400,6 +400,11 @@ void CopyMarkedItems( MODULE* module, wxPoint offset )
...
@@ -400,6 +400,11 @@ void CopyMarkedItems( MODULE* module, wxPoint offset )
if
(
module
==
NULL
)
if
(
module
==
NULL
)
return
;
return
;
// Reference and value cannot be copied, they are unique.
// Ensure they are not selected
module
->
Reference
().
ClearFlags
();
module
->
Value
().
ClearFlags
();
for
(
D_PAD
*
pad
=
module
->
Pads
();
pad
;
pad
=
pad
->
Next
()
)
for
(
D_PAD
*
pad
=
module
->
Pads
();
pad
;
pad
=
pad
->
Next
()
)
{
{
if
(
!
pad
->
IsSelected
()
)
if
(
!
pad
->
IsSelected
()
)
...
@@ -440,6 +445,12 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
...
@@ -440,6 +445,12 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
if
(
module
==
NULL
)
if
(
module
==
NULL
)
return
;
return
;
if
(
module
->
Reference
().
IsSelected
()
)
module
->
Reference
().
MoveTransformWithModule
(
offset
);
if
(
module
->
Value
().
IsSelected
()
)
module
->
Value
().
MoveTransformWithModule
(
offset
);
D_PAD
*
pad
=
module
->
Pads
();
D_PAD
*
pad
=
module
->
Pads
();
for
(
;
pad
!=
NULL
;
pad
=
pad
->
Next
()
)
for
(
;
pad
!=
NULL
;
pad
=
pad
->
Next
()
)
...
@@ -461,7 +472,7 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
...
@@ -461,7 +472,7 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
switch
(
item
->
Type
()
)
switch
(
item
->
Type
()
)
{
{
case
PCB_MODULE_TEXT_T
:
case
PCB_MODULE_TEXT_T
:
static_cast
<
TEXTE_MODULE
*>
(
item
)
->
Move
(
offset
);
static_cast
<
TEXTE_MODULE
*>
(
item
)
->
Move
TransformWithModule
(
offset
);
break
;
break
;
case
PCB_MODULE_EDGE_T
:
case
PCB_MODULE_EDGE_T
:
...
@@ -477,9 +488,9 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
...
@@ -477,9 +488,9 @@ void MoveMarkedItems( MODULE* module, wxPoint offset )
default
:
default
:
;
;
}
}
item
->
ClearFlags
();
}
}
ClearMarkItems
(
module
);
}
}
...
@@ -518,6 +529,9 @@ void DeleteMarkedItems( MODULE* module )
...
@@ -518,6 +529,9 @@ void DeleteMarkedItems( MODULE* module )
item
->
DeleteStructure
();
item
->
DeleteStructure
();
}
}
// Ref and value can be flagged, but cannot be deleted
ClearMarkItems
(
module
);
}
}
...
@@ -534,6 +548,12 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset, bool force_all )
...
@@ -534,6 +548,12 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset, bool force_all )
if
(
module
==
NULL
)
if
(
module
==
NULL
)
return
;
return
;
if
(
module
->
Reference
().
IsSelected
()
||
force_all
)
module
->
Reference
().
MirrorTransformWithModule
(
offset
.
x
);
if
(
module
->
Value
().
IsSelected
()
||
force_all
)
module
->
Value
().
MirrorTransformWithModule
(
offset
.
x
);
for
(
D_PAD
*
pad
=
module
->
Pads
();
pad
;
pad
=
pad
->
Next
()
)
for
(
D_PAD
*
pad
=
module
->
Pads
();
pad
;
pad
=
pad
->
Next
()
)
{
{
// Skip pads not selected, i.e. not inside the block to mirror:
// Skip pads not selected, i.e. not inside the block to mirror:
...
@@ -584,15 +604,15 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset, bool force_all )
...
@@ -584,15 +604,15 @@ void MirrorMarkedItems( MODULE* module, wxPoint offset, bool force_all )
break
;
break
;
case
PCB_MODULE_TEXT_T
:
case
PCB_MODULE_TEXT_T
:
static_cast
<
TEXTE_MODULE
*>
(
item
)
->
MirrorWithModule
(
offset
.
x
);
static_cast
<
TEXTE_MODULE
*>
(
item
)
->
Mirror
Transform
WithModule
(
offset
.
x
);
break
;
break
;
default
:
default
:
break
;
break
;
}
}
item
->
ClearFlags
();
}
}
ClearMarkItems
(
module
);
}
}
...
@@ -607,6 +627,12 @@ void RotateMarkedItems( MODULE* module, wxPoint offset, bool force_all )
...
@@ -607,6 +627,12 @@ void RotateMarkedItems( MODULE* module, wxPoint offset, bool force_all )
if
(
module
==
NULL
)
if
(
module
==
NULL
)
return
;
return
;
if
(
module
->
Reference
().
IsSelected
()
||
force_all
)
module
->
Reference
().
RotateTransformWithModule
(
offset
,
900
);
if
(
module
->
Value
().
IsSelected
()
||
force_all
)
module
->
Value
().
RotateTransformWithModule
(
offset
,
900
);
for
(
D_PAD
*
pad
=
module
->
Pads
();
pad
;
pad
=
pad
->
Next
()
)
for
(
D_PAD
*
pad
=
module
->
Pads
();
pad
;
pad
=
pad
->
Next
()
)
{
{
if
(
!
pad
->
IsSelected
()
&&
!
force_all
)
if
(
!
pad
->
IsSelected
()
&&
!
force_all
)
...
@@ -622,7 +648,7 @@ void RotateMarkedItems( MODULE* module, wxPoint offset, bool force_all )
...
@@ -622,7 +648,7 @@ void RotateMarkedItems( MODULE* module, wxPoint offset, bool force_all )
for
(
EDA_ITEM
*
item
=
module
->
GraphicalItems
();
item
;
item
=
item
->
Next
()
)
for
(
EDA_ITEM
*
item
=
module
->
GraphicalItems
();
item
;
item
=
item
->
Next
()
)
{
{
if
(
!
item
->
IsSelected
()
&&
!
force_all
)
if
(
!
item
->
IsSelected
()
&&
!
force_all
)
continue
;
continue
;
switch
(
item
->
Type
()
)
switch
(
item
->
Type
()
)
...
@@ -644,26 +670,27 @@ void RotateMarkedItems( MODULE* module, wxPoint offset, bool force_all )
...
@@ -644,26 +670,27 @@ void RotateMarkedItems( MODULE* module, wxPoint offset, bool force_all )
break
;
break
;
case
PCB_MODULE_TEXT_T
:
case
PCB_MODULE_TEXT_T
:
static_cast
<
TEXTE_MODULE
*>
(
item
)
->
Rotate
WithModule
(
wxPoint
(
0
,
0
)
,
900
);
static_cast
<
TEXTE_MODULE
*>
(
item
)
->
Rotate
TransformWithModule
(
offset
,
900
);
break
;
break
;
default
:
default
:
break
;
break
;
}
}
item
->
ClearFlags
();
}
}
ClearMarkItems
(
module
);
}
}
void
ClearMarkItems
(
MODULE
*
module
)
void
ClearMarkItems
(
MODULE
*
module
)
{
{
EDA_ITEM
*
item
;
if
(
module
==
NULL
)
if
(
module
==
NULL
)
return
;
return
;
item
=
module
->
GraphicalItems
();
module
->
Reference
().
ClearFlags
();
module
->
Value
().
ClearFlags
();
EDA_ITEM
*
item
=
module
->
GraphicalItems
();
for
(
;
item
!=
NULL
;
item
=
item
->
Next
()
)
for
(
;
item
!=
NULL
;
item
=
item
->
Next
()
)
{
{
...
@@ -692,6 +719,24 @@ int MarkItemsInBloc( MODULE* module, EDA_RECT& Rect )
...
@@ -692,6 +719,24 @@ int MarkItemsInBloc( MODULE* module, EDA_RECT& Rect )
if
(
module
==
NULL
)
if
(
module
==
NULL
)
return
0
;
return
0
;
ClearMarkItems
(
module
);
// Just in case ...
pos
=
module
->
Reference
().
GetTextPosition
();
if
(
Rect
.
Contains
(
pos
)
)
{
module
->
Reference
().
SetFlags
(
SELECTED
);
ItemsCount
++
;
}
pos
=
module
->
Value
().
GetTextPosition
();
if
(
Rect
.
Contains
(
pos
)
)
{
module
->
Value
().
SetFlags
(
SELECTED
);
ItemsCount
++
;
}
pad
=
module
->
Pads
();
pad
=
module
->
Pads
();
for
(
;
pad
!=
NULL
;
pad
=
pad
->
Next
()
)
for
(
;
pad
!=
NULL
;
pad
=
pad
->
Next
()
)
...
...
pcbnew/class_edge_mod.cpp
View file @
230b60e6
...
@@ -130,7 +130,6 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
...
@@ -130,7 +130,6 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
const
wxPoint
&
offset
)
const
wxPoint
&
offset
)
{
{
int
ux0
,
uy0
,
dx
,
dy
,
radius
,
StAngle
,
EndAngle
;
int
ux0
,
uy0
,
dx
,
dy
,
radius
,
StAngle
,
EndAngle
;
int
type_trace
;
int
typeaff
;
int
typeaff
;
LAYER_ID
curr_layer
=
(
(
PCB_SCREEN
*
)
panel
->
GetScreen
()
)
->
m_Active_Layer
;
LAYER_ID
curr_layer
=
(
(
PCB_SCREEN
*
)
panel
->
GetScreen
()
)
->
m_Active_Layer
;
...
@@ -154,8 +153,6 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
...
@@ -154,8 +153,6 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
PCB_BASE_FRAME
*
frame
=
(
PCB_BASE_FRAME
*
)
panel
->
GetParent
();
PCB_BASE_FRAME
*
frame
=
(
PCB_BASE_FRAME
*
)
panel
->
GetParent
();
type_trace
=
m_Shape
;
ux0
=
m_Start
.
x
-
offset
.
x
;
ux0
=
m_Start
.
x
-
offset
.
x
;
uy0
=
m_Start
.
y
-
offset
.
y
;
uy0
=
m_Start
.
y
-
offset
.
y
;
...
@@ -176,7 +173,7 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
...
@@ -176,7 +173,7 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
if
(
DC
->
LogicalToDeviceXRel
(
m_Width
)
<=
MIN_DRAW_WIDTH
)
if
(
DC
->
LogicalToDeviceXRel
(
m_Width
)
<=
MIN_DRAW_WIDTH
)
typeaff
=
LINE
;
typeaff
=
LINE
;
switch
(
type_trac
e
)
switch
(
m_Shap
e
)
{
{
case
S_SEGMENT
:
case
S_SEGMENT
:
if
(
typeaff
==
LINE
)
if
(
typeaff
==
LINE
)
...
@@ -245,10 +242,9 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
...
@@ -245,10 +242,9 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
break
;
break
;
case
S_POLYGON
:
case
S_POLYGON
:
{
// We must compute true coordinates from m_PolyPoints
// We must compute true coordinates from m_PolyPoints
// which are relative to module position, orientation 0
// which are relative to module position, orientation 0
std
::
vector
<
wxPoint
>
points
=
m_PolyPoints
;
std
::
vector
<
wxPoint
>
points
=
m_PolyPoints
;
for
(
unsigned
ii
=
0
;
ii
<
points
.
size
();
ii
++
)
for
(
unsigned
ii
=
0
;
ii
<
points
.
size
();
ii
++
)
...
@@ -260,6 +256,10 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
...
@@ -260,6 +256,10 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
}
}
GRPoly
(
panel
->
GetClipBox
(),
DC
,
points
.
size
(),
&
points
[
0
],
true
,
m_Width
,
color
,
color
);
GRPoly
(
panel
->
GetClipBox
(),
DC
,
points
.
size
(),
&
points
[
0
],
true
,
m_Width
,
color
,
color
);
}
break
;
default
:
break
;
break
;
}
}
}
}
...
@@ -312,3 +312,41 @@ EDA_ITEM* EDGE_MODULE::Clone() const
...
@@ -312,3 +312,41 @@ EDA_ITEM* EDGE_MODULE::Clone() const
return
new
EDGE_MODULE
(
*
this
);
return
new
EDGE_MODULE
(
*
this
);
}
}
void
EDGE_MODULE
::
Flip
(
const
wxPoint
&
aCentre
)
{
wxPoint
pt
;
switch
(
GetShape
()
)
{
case
S_ARC
:
SetAngle
(
-
GetAngle
()
);
//Fall through
default
:
case
S_SEGMENT
:
pt
=
GetStart
();
pt
.
y
-=
aCentre
.
y
;
pt
.
y
=
-
pt
.
y
;
pt
.
y
+=
aCentre
.
y
;
SetStart
(
pt
);
pt
=
GetEnd
();
pt
.
y
-=
aCentre
.
y
;
pt
.
y
=
-
pt
.
y
;
pt
.
y
+=
aCentre
.
y
;
SetEnd
(
pt
);
NEGATE
(
m_Start0
.
y
);
NEGATE
(
m_End0
.
y
);
break
;
case
S_POLYGON
:
// polygon corners coordinates are always relative to the
// footprint position, orientation 0
for
(
unsigned
ii
=
0
;
ii
<
m_PolyPoints
.
size
();
ii
++
)
NEGATE
(
m_PolyPoints
[
ii
].
y
);
}
SetLayer
(
FlipLayer
(
GetLayer
()
)
);
}
pcbnew/class_edge_mod.h
View file @
230b60e6
...
@@ -68,6 +68,9 @@ public:
...
@@ -68,6 +68,9 @@ public:
SetLocalCoord
();
SetLocalCoord
();
}
}
/// Flip entity relative to aCentre
void
Flip
(
const
wxPoint
&
aCentre
);
void
SetStart0
(
const
wxPoint
&
aPoint
)
{
m_Start0
=
aPoint
;
}
void
SetStart0
(
const
wxPoint
&
aPoint
)
{
m_Start0
=
aPoint
;
}
const
wxPoint
&
GetStart0
()
const
{
return
m_Start0
;
}
const
wxPoint
&
GetStart0
()
const
{
return
m_Start0
;
}
...
...
pcbnew/class_module.cpp
View file @
230b60e6
...
@@ -947,31 +947,7 @@ void MODULE::Flip( const wxPoint& aCentre )
...
@@ -947,31 +947,7 @@ void MODULE::Flip( const wxPoint& aCentre )
switch
(
item
->
Type
()
)
switch
(
item
->
Type
()
)
{
{
case
PCB_MODULE_EDGE_T
:
case
PCB_MODULE_EDGE_T
:
{
(
(
EDGE_MODULE
*
)
item
)
->
Flip
(
m_Pos
);
EDGE_MODULE
*
em
=
(
EDGE_MODULE
*
)
item
;
wxPoint
s
=
em
->
GetStart
();
s
.
y
-=
m_Pos
.
y
;
s
.
y
=
-
s
.
y
;
s
.
y
+=
m_Pos
.
y
;
em
->
SetStart
(
s
);
wxPoint
e
=
em
->
GetEnd
();
e
.
y
-=
m_Pos
.
y
;
e
.
y
=
-
e
.
y
;
e
.
y
+=
m_Pos
.
y
;
em
->
SetEnd
(
e
);
NEGATE
(
em
->
m_Start0
.
y
);
NEGATE
(
em
->
m_End0
.
y
);
if
(
em
->
GetShape
()
==
S_ARC
)
{
em
->
SetAngle
(
-
em
->
GetAngle
()
);
}
em
->
SetLayer
(
FlipLayer
(
em
->
GetLayer
()
)
);
}
break
;
break
;
case
PCB_MODULE_TEXT_T
:
case
PCB_MODULE_TEXT_T
:
...
...
pcbnew/class_text_mod.cpp
View file @
230b60e6
...
@@ -105,33 +105,45 @@ void TEXTE_MODULE::Flip(const wxPoint& aCentre )
...
@@ -105,33 +105,45 @@ void TEXTE_MODULE::Flip(const wxPoint& aCentre )
void
TEXTE_MODULE
::
FlipWithModule
(
int
aOffset
)
void
TEXTE_MODULE
::
FlipWithModule
(
int
aOffset
)
{
{
// flipping the footprint is relative to the X axis
m_Pos
.
y
=
aOffset
-
(
m_Pos
.
y
-
aOffset
);
m_Pos
.
y
=
aOffset
-
(
m_Pos
.
y
-
aOffset
);
NEGATE_AND_NORMALIZE_ANGLE_POS
(
m_Orient
);
NEGATE_AND_NORMALIZE_ANGLE_POS
(
m_Orient
);
wxPoint
tmp
=
GetPos0
();
tmp
.
y
=
-
tmp
.
y
;
SetPos0
(
tmp
);
SetLayer
(
FlipLayer
(
GetLayer
()
)
);
SetLayer
(
FlipLayer
(
GetLayer
()
)
);
m_Mirror
=
IsBackLayer
(
GetLayer
()
);
m_Mirror
=
IsBackLayer
(
GetLayer
()
);
}
}
void
TEXTE_MODULE
::
MirrorWithModule
(
int
aOffset
)
void
TEXTE_MODULE
::
Mirror
Transform
WithModule
(
int
aOffset
)
{
{
wxPoint
tmp
=
GetTextPosition
();
// Used in modedit, to transform the footprint
tmp
.
x
=
aOffset
-
(
tmp
.
x
-
aOffset
);
// the mirror is relative to the Y axis
SetTextPosition
(
tmp
);
// the position is mirrored, but the text itself is not mirrored
tmp
.
y
=
GetPos0
().
y
;
// Note also in module editor, m_Pos0 = m_Pos
SetPos0
(
tmp
);
m_Pos
.
x
=
aOffset
-
(
m_Pos
.
x
-
aOffset
);
m_Pos0
=
m_Pos
;
NEGATE_AND_NORMALIZE_ANGLE_POS
(
m_Orient
);
NEGATE_AND_NORMALIZE_ANGLE_POS
(
m_Orient
);
}
}
void
TEXTE_MODULE
::
RotateWithModule
(
const
wxPoint
&
aOffset
,
double
aAngle
)
void
TEXTE_MODULE
::
Rotate
Transform
WithModule
(
const
wxPoint
&
aOffset
,
double
aAngle
)
{
{
wxPoint
pos
=
GetTextPosition
();
// Used in modedit, to transform the footprint
RotatePoint
(
&
pos
,
aOffset
,
aAngle
);
// Note also in module editor, m_Pos0 = m_Pos
SetTextPosition
(
pos
);
RotatePoint
(
&
m_Pos
,
aOffset
,
aAngle
);
SetPos0
(
GetTextPosition
()
)
;
m_Pos0
=
m_Pos
;
SetOrientation
(
GetOrientation
()
+
aAngle
);
SetOrientation
(
GetOrientation
()
+
aAngle
);
}
}
void
TEXTE_MODULE
::
MoveTransformWithModule
(
const
wxPoint
&
aMoveVector
)
{
// Used in modedit, to transform the footprint
// Note also in module editor, m_Pos0 = m_Pos
m_Pos0
+=
aMoveVector
;
m_Pos
=
m_Pos0
;
}
void
TEXTE_MODULE
::
Copy
(
TEXTE_MODULE
*
source
)
void
TEXTE_MODULE
::
Copy
(
TEXTE_MODULE
*
source
)
{
{
...
...
pcbnew/class_text_mod.h
View file @
230b60e6
...
@@ -94,17 +94,21 @@ public:
...
@@ -94,17 +94,21 @@ public:
void
Flip
(
const
wxPoint
&
aCentre
);
void
Flip
(
const
wxPoint
&
aCentre
);
/// Rotate
entity during module rotation
/// Rotate
text during module rotation transform, in footprint editor
void
RotateWithModule
(
const
wxPoint
&
aOffset
,
double
aAngle
);
void
Rotate
Transform
WithModule
(
const
wxPoint
&
aOffset
,
double
aAngle
);
/// Flip entity during module flip
/// Flip entity during module flip
void
FlipWithModule
(
int
aOffset
);
void
FlipWithModule
(
int
aOffset
);
/// Mirror entiry during module mirroring
/// Mirror text during module mirroring transform, in footprint editor
void
MirrorWithModule
(
int
aOffset
);
/// the text itself is not mirrored, only position.
void
MirrorTransformWithModule
(
int
aOffset
);
/// move text during module mirroring transform, in footprint editor
void
MoveTransformWithModule
(
const
wxPoint
&
aMoveVector
);
/// @deprecated it seems (but the type is used to 'protect'
/// @deprecated it seems (but the type is used to 'protect'
//reference and value from deletion, and for identification)
//
reference and value from deletion, and for identification)
void
SetType
(
TEXT_TYPE
aType
)
{
m_Type
=
aType
;
}
void
SetType
(
TEXT_TYPE
aType
)
{
m_Type
=
aType
;
}
TEXT_TYPE
GetType
()
const
{
return
m_Type
;
}
TEXT_TYPE
GetType
()
const
{
return
m_Type
;
}
...
...
pcbnew/dialogs/dialog_copper_zones.cpp
View file @
230b60e6
...
@@ -284,11 +284,11 @@ void DIALOG_COPPER_ZONE::initDialog()
...
@@ -284,11 +284,11 @@ void DIALOG_COPPER_ZONE::initDialog()
// unfortunately this option does not work well both on
// unfortunately this option does not work well both on
// wxWidgets 2.8 ( column witdth too small), and
// wxWidgets 2.8 ( column witdth too small), and
// wxWidgets 2.9 ( column witdth too large)
// wxWidgets 2.9 ( column witdth too large)
ctrlWidth
+=
LAYER_BITMAP_SIZE_X
+
16
;
// Add bitmap width + margin between bitmap and text
ctrlWidth
+=
LAYER_BITMAP_SIZE_X
+
25
;
// Add bitmap width + margin between bitmap and text
m_LayerSelectionCtrl
->
SetColumnWidth
(
0
,
ctrlWidth
);
m_LayerSelectionCtrl
->
SetColumnWidth
(
0
,
ctrlWidth
);
ctrlWidth
+=
4
;
// add small margin between text and window borders
ctrlWidth
+=
25
;
// add small margin between text and window borders
// and room for vertical scroll bar
m_LayerSelectionCtrl
->
SetMinSize
(
wxSize
(
ctrlWidth
,
-
1
)
);
m_LayerSelectionCtrl
->
SetMinSize
(
wxSize
(
ctrlWidth
,
-
1
)
);
wxString
netNameDoNotShowFilter
=
wxT
(
"Net-*"
);
wxString
netNameDoNotShowFilter
=
wxT
(
"Net-*"
);
...
...
pcbnew/dialogs/dialog_non_copper_zones_properties.cpp
View file @
230b60e6
...
@@ -143,13 +143,15 @@ void DIALOG_NON_COPPER_ZONES_EDITOR::Init()
...
@@ -143,13 +143,15 @@ void DIALOG_NON_COPPER_ZONES_EDITOR::Init()
wxImageList
*
imageList
=
new
wxImageList
(
LAYER_BITMAP_SIZE_X
,
LAYER_BITMAP_SIZE_Y
);
wxImageList
*
imageList
=
new
wxImageList
(
LAYER_BITMAP_SIZE_X
,
LAYER_BITMAP_SIZE_Y
);
m_LayerSelectionCtrl
->
AssignImageList
(
imageList
,
wxIMAGE_LIST_SMALL
);
m_LayerSelectionCtrl
->
AssignImageList
(
imageList
,
wxIMAGE_LIST_SMALL
);
int
ii
=
0
;
int
lyrSelect
=
(
(
PCB_SCREEN
*
)
m_parent
->
GetScreen
()
)
->
m_Active_Layer
;
int
lyrSelect
=
(
(
PCB_SCREEN
*
)
m_parent
->
GetScreen
()
)
->
m_Active_Layer
;
if
(
m_zone
)
if
(
m_zone
)
lyrSelect
=
m_zone
->
GetLayer
();
lyrSelect
=
m_zone
->
GetLayer
();
for
(
LSEQ
seq
=
LSET
::
AllNonCuMask
().
Seq
();
seq
;
++
seq
,
++
ii
)
int
ctrlWidth
=
0
;
// Min width for m_LayerSelectionCtrl to show the layers names
int
imgIdx
=
0
;
for
(
LSEQ
seq
=
LSET
::
AllNonCuMask
().
Seq
();
seq
;
++
seq
,
++
imgIdx
)
{
{
LAYER_ID
layer
=
*
seq
;
LAYER_ID
layer
=
*
seq
;
...
@@ -160,11 +162,25 @@ void DIALOG_NON_COPPER_ZONES_EDITOR::Init()
...
@@ -160,11 +162,25 @@ void DIALOG_NON_COPPER_ZONES_EDITOR::Init()
msg
.
Trim
();
msg
.
Trim
();
int
itemIndex
=
m_LayerSelectionCtrl
->
InsertItem
(
int
itemIndex
=
m_LayerSelectionCtrl
->
InsertItem
(
m_LayerSelectionCtrl
->
GetItemCount
(),
msg
,
i
i
);
m_LayerSelectionCtrl
->
GetItemCount
(),
msg
,
i
mgIdx
);
if
(
lyrSelect
==
layer
)
if
(
lyrSelect
==
layer
)
m_LayerSelectionCtrl
->
Select
(
itemIndex
);
m_LayerSelectionCtrl
->
Select
(
itemIndex
);
wxSize
tsize
(
GetTextSize
(
msg
,
m_LayerSelectionCtrl
)
);
ctrlWidth
=
std
::
max
(
ctrlWidth
,
tsize
.
x
);
}
}
// The most easy way to ensure the right size is to use wxLIST_AUTOSIZE
// unfortunately this option does not work well both on
// wxWidgets 2.8 ( column witdth too small), and
// wxWidgets 2.9 ( column witdth too large)
ctrlWidth
+=
LAYER_BITMAP_SIZE_X
+
25
;
// Add bitmap width + margin between bitmap and text
m_LayerSelectionCtrl
->
SetColumnWidth
(
0
,
ctrlWidth
);
ctrlWidth
+=
25
;
// add small margin between text and window borders
// and room for vertical scroll bar
m_LayerSelectionCtrl
->
SetMinSize
(
wxSize
(
ctrlWidth
,
-
1
)
);
}
}
...
...
pcbnew/editrack.cpp
View file @
230b60e6
...
@@ -167,7 +167,7 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC )
...
@@ -167,7 +167,7 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* aDC )
// Display info about track Net class, and init track and vias sizes:
// Display info about track Net class, and init track and vias sizes:
g_CurrentTrackSegment
->
SetNetCode
(
GetBoard
()
->
GetHighLightNetCode
()
);
g_CurrentTrackSegment
->
SetNetCode
(
GetBoard
()
->
GetHighLightNetCode
()
);
GetDesignSettings
().
SetCurrentNetClass
(
g_CurrentTrackSegment
->
GetNetClassName
()
);
SetCurrentNetClass
(
g_CurrentTrackSegment
->
GetNetClassName
()
);
g_CurrentTrackSegment
->
SetLayer
(
GetScreen
()
->
m_Active_Layer
);
g_CurrentTrackSegment
->
SetLayer
(
GetScreen
()
->
m_Active_Layer
);
g_CurrentTrackSegment
->
SetWidth
(
GetDesignSettings
().
GetCurrentTrackWidth
()
);
g_CurrentTrackSegment
->
SetWidth
(
GetDesignSettings
().
GetCurrentTrackWidth
()
);
...
...
pcbnew/files.cpp
View file @
230b60e6
...
@@ -69,10 +69,11 @@ static const wxChar autosavePrefix[] = wxT( "_autosave-" );
...
@@ -69,10 +69,11 @@ static const wxChar autosavePrefix[] = wxT( "_autosave-" );
* @param aCtl is where to put the OpenProjectFiles() control bits.
* @param aCtl is where to put the OpenProjectFiles() control bits.
*
*
* @param aFileName on entry is a probable choice, on return is the chosen filename.
* @param aFileName on entry is a probable choice, on return is the chosen filename.
* @param aKicadFilesOnly true to list kiacad pcb files plugins only, false to list all plugins.
*
*
* @return bool - true if chosen, else false if user aborted.
* @return bool - true if chosen, else false if user aborted.
*/
*/
bool
AskLoadBoardFileName
(
wxWindow
*
aParent
,
int
*
aCtl
,
wxString
*
aFileName
)
bool
AskLoadBoardFileName
(
wxWindow
*
aParent
,
int
*
aCtl
,
wxString
*
aFileName
,
bool
aKicadFilesOnly
=
false
)
{
{
// This is a subset of all PLUGINs which are trusted to be able to
// This is a subset of all PLUGINs which are trusted to be able to
// load a BOARD. User may occasionally use the wrong plugin to load a
// load a BOARD. User may occasionally use the wrong plugin to load a
...
@@ -93,7 +94,9 @@ bool AskLoadBoardFileName( wxWindow* aParent, int* aCtl, wxString* aFileName )
...
@@ -93,7 +94,9 @@ bool AskLoadBoardFileName( wxWindow* aParent, int* aCtl, wxString* aFileName )
wxFileName
fileName
(
*
aFileName
);
wxFileName
fileName
(
*
aFileName
);
wxString
fileFilters
;
wxString
fileFilters
;
for
(
unsigned
i
=
0
;
i
<
DIM
(
loaders
);
++
i
)
unsigned
pluginsCount
=
aKicadFilesOnly
?
2
:
DIM
(
loaders
);
for
(
unsigned
i
=
0
;
i
<
pluginsCount
;
++
i
)
{
{
if
(
i
>
0
)
if
(
i
>
0
)
fileFilters
+=
wxChar
(
'|'
);
fileFilters
+=
wxChar
(
'|'
);
...
@@ -291,10 +294,12 @@ void PCB_EDIT_FRAME::Files_io( wxCommandEvent& event )
...
@@ -291,10 +294,12 @@ void PCB_EDIT_FRAME::Files_io( wxCommandEvent& event )
int
open_ctl
;
int
open_ctl
;
wxString
fileName
;
wxString
fileName
;
if
(
!
AskLoadBoardFileName
(
this
,
&
open_ctl
,
&
fileName
)
)
if
(
!
AskLoadBoardFileName
(
this
,
&
open_ctl
,
&
fileName
,
true
)
)
break
;
break
;
AppendBoardFile
(
fileName
,
open_ctl
);
AppendBoardFile
(
fileName
,
open_ctl
);
m_canvas
->
Refresh
();
}
}
break
;
break
;
...
@@ -343,7 +348,7 @@ void PCB_EDIT_FRAME::Files_io( wxCommandEvent& event )
...
@@ -343,7 +348,7 @@ void PCB_EDIT_FRAME::Files_io( wxCommandEvent& event )
// The KIWAY_PLAYER::OpenProjectFiles() API knows nothing about plugins, so
// The KIWAY_PLAYER::OpenProjectFiles() API knows nothing about plugins, so
// determine how to load the BOARD here, with minor assistance from KICTL_EAGLE_BRD
// determine how to load the BOARD here, with minor assistance from KICTL_EAGLE_BRD
// bit flag.
// bit flag.
static
IO_MGR
::
PCB_FILE_T
plugin_type
(
const
wxString
&
aFileName
,
int
aCtl
)
IO_MGR
::
PCB_FILE_T
plugin_type
(
const
wxString
&
aFileName
,
int
aCtl
)
{
{
IO_MGR
::
PCB_FILE_T
pluginType
;
IO_MGR
::
PCB_FILE_T
pluginType
;
...
@@ -369,19 +374,6 @@ static IO_MGR::PCB_FILE_T plugin_type( const wxString& aFileName, int aCtl )
...
@@ -369,19 +374,6 @@ static IO_MGR::PCB_FILE_T plugin_type( const wxString& aFileName, int aCtl )
}
}
bool
PCB_EDIT_FRAME
::
AppendBoardFile
(
const
wxString
&
aFullFileName
,
int
aCtl
)
{
return
false
;
// I'll never use it, and it was mucking up OpenProjectFiles() with
// complicated cruft. If you must, put it here separate from that important
// function.
// Actually I think this serves too many masters. Just do panelization in
// a good gerber file manager.
}
bool
PCB_EDIT_FRAME
::
OpenProjectFiles
(
const
std
::
vector
<
wxString
>&
aFileSet
,
int
aCtl
)
bool
PCB_EDIT_FRAME
::
OpenProjectFiles
(
const
std
::
vector
<
wxString
>&
aFileSet
,
int
aCtl
)
{
{
// This is for python:
// This is for python:
...
@@ -567,7 +559,7 @@ bool PCB_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
...
@@ -567,7 +559,7 @@ bool PCB_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
GetBoard
()
->
m_Status_Pcb
=
0
;
GetBoard
()
->
m_Status_Pcb
=
0
;
// Update info shown by the horizontal toolbars
// Update info shown by the horizontal toolbars
GetDesignSettings
().
SetCurrentNetClass
(
NETCLASS
::
Default
);
SetCurrentNetClass
(
NETCLASS
::
Default
);
ReFillLayerWidget
();
ReFillLayerWidget
();
ReCreateLayerBox
();
ReCreateLayerBox
();
...
@@ -581,9 +573,6 @@ bool PCB_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
...
@@ -581,9 +573,6 @@ bool PCB_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
// See case RATSNEST_VISIBLE: in BOARD::SetElementVisibility()
// See case RATSNEST_VISIBLE: in BOARD::SetElementVisibility()
GetBoard
()
->
SetVisibleElements
(
GetBoard
()
->
GetVisibleElements
()
);
GetBoard
()
->
SetVisibleElements
(
GetBoard
()
->
GetVisibleElements
()
);
updateTraceWidthSelectBox
();
updateViaSizeSelectBox
();
// Display the loaded board:
// Display the loaded board:
Zoom_Automatique
(
false
);
Zoom_Automatique
(
false
);
...
@@ -689,7 +678,7 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
...
@@ -689,7 +678,7 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
// Select default Netclass before writing file.
// Select default Netclass before writing file.
// Useful to save default values in headers
// Useful to save default values in headers
GetDesignSettings
().
SetCurrentNetClass
(
NETCLASS
::
Default
);
SetCurrentNetClass
(
NETCLASS
::
Default
);
ClearMsgPanel
();
ClearMsgPanel
();
...
@@ -713,7 +702,7 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
...
@@ -713,7 +702,7 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
);
);
DisplayError
(
this
,
msg
);
DisplayError
(
this
,
msg
);
lowerTxt
=
_
(
"Failed to create "
)
+
pcbFileName
.
GetFullPath
(
);
lowerTxt
.
Printf
(
_
(
"Failed to create '%s'"
),
GetChars
(
pcbFileName
.
GetFullPath
()
)
);
AppendMsgPanel
(
upperTxt
,
lowerTxt
,
CYAN
);
AppendMsgPanel
(
upperTxt
,
lowerTxt
,
CYAN
);
...
@@ -739,9 +728,9 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
...
@@ -739,9 +728,9 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
wxRemoveFile
(
autoSaveFileName
.
GetFullPath
()
);
wxRemoveFile
(
autoSaveFileName
.
GetFullPath
()
);
if
(
!!
backupFileName
)
if
(
!!
backupFileName
)
upperTxt
=
_
(
"Backup file: "
)
+
backupFileName
;
upperTxt
.
Printf
(
_
(
"Backup file: '%s'"
),
GetChars
(
backupFileName
)
)
;
lowerTxt
=
_
(
"Wrote board file: "
)
+
pcbFileName
.
GetFullPath
(
);
lowerTxt
.
Printf
(
_
(
"Wrote board file: '%s'"
),
GetChars
(
pcbFileName
.
GetFullPath
()
)
);
AppendMsgPanel
(
upperTxt
,
lowerTxt
,
CYAN
);
AppendMsgPanel
(
upperTxt
,
lowerTxt
,
CYAN
);
...
...
pcbnew/hotkeys_board_editor.cpp
View file @
230b60e6
...
@@ -668,7 +668,11 @@ bool PCB_EDIT_FRAME::OnHotkeyEditItem( int aIdCommand )
...
@@ -668,7 +668,11 @@ bool PCB_EDIT_FRAME::OnHotkeyEditItem( int aIdCommand )
case
PCB_TRACE_T
:
case
PCB_TRACE_T
:
case
PCB_VIA_T
:
case
PCB_VIA_T
:
if
(
aIdCommand
==
HK_EDIT_ITEM
)
if
(
aIdCommand
==
HK_EDIT_ITEM
)
{
// Be sure the corresponding netclass is selected before edit:
SetCurrentNetClass
(
(
(
BOARD_CONNECTED_ITEM
*
)
item
)
->
GetNetClassName
()
);
evt_type
=
ID_POPUP_PCB_EDIT_TRACKSEG
;
evt_type
=
ID_POPUP_PCB_EDIT_TRACKSEG
;
}
break
;
break
;
...
...
pcbnew/menubar_pcbframe.cpp
View file @
230b60e6
...
@@ -43,6 +43,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
...
@@ -43,6 +43,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
{
{
wxString
text
;
wxString
text
;
wxMenuBar
*
menuBar
=
GetMenuBar
();
wxMenuBar
*
menuBar
=
GetMenuBar
();
wxMenuItem
*
menutitem
;
wxFileHistory
&
fhist
=
Kiface
().
GetFileHistory
();
wxFileHistory
&
fhist
=
Kiface
().
GetFileHistory
();
...
@@ -95,10 +96,14 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
...
@@ -95,10 +96,14 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
KiBitmap
(
open_project_xpm
)
);
KiBitmap
(
open_project_xpm
)
);
}
}
AddMenuItem
(
filesMenu
,
ID_APPEND_FILE
,
menutitem
=
AddMenuItem
(
filesMenu
,
ID_APPEND_FILE
,
_
(
"&Append Board"
),
_
(
"&Append Board"
),
_
(
"Append another Pcbnew board to the current loaded board"
),
_
(
"Append another Pcbnew board to the current loaded board
. Available only when Pcbnew runs in stand alone mode
"
),
KiBitmap
(
import_xpm
)
);
KiBitmap
(
import_xpm
)
);
if
(
!
Kiface
().
IsSingle
()
)
// disable when under a project mgr
menutitem
->
Enable
(
false
);
filesMenu
->
AppendSeparator
();
filesMenu
->
AppendSeparator
();
text
=
AddHotkeyName
(
_
(
"&Save"
),
g_Board_Editor_Hokeys_Descr
,
HK_SAVE_BOARD
);
text
=
AddHotkeyName
(
_
(
"&Save"
),
g_Board_Editor_Hokeys_Descr
,
HK_SAVE_BOARD
);
...
...
pcbnew/modedit.cpp
View file @
230b60e6
...
@@ -818,25 +818,13 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
...
@@ -818,25 +818,13 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
void
FOOTPRINT_EDIT_FRAME
::
Transform
(
MODULE
*
module
,
int
transform
)
void
FOOTPRINT_EDIT_FRAME
::
Transform
(
MODULE
*
module
,
int
transform
)
{
{
wxPoint
pos
;
double
angle
=
900
;
// Necessary +- 900 (+- 90 degrees).
// Be prudent: because RotateMarkedItems is used to rotate some items
// used the same value as RotateMarkedItems
switch
(
transform
)
switch
(
transform
)
{
{
case
ID_MODEDIT_MODULE_ROTATE
:
case
ID_MODEDIT_MODULE_ROTATE
:
module
->
Reference
().
RotateWithModule
(
wxPoint
(
0
,
0
),
angle
);
module
->
Value
().
RotateWithModule
(
wxPoint
(
0
,
0
),
angle
);
RotateMarkedItems
(
module
,
wxPoint
(
0
,
0
),
true
);
RotateMarkedItems
(
module
,
wxPoint
(
0
,
0
),
true
);
break
;
break
;
case
ID_MODEDIT_MODULE_MIRROR
:
case
ID_MODEDIT_MODULE_MIRROR
:
module
->
Reference
().
MirrorWithModule
(
0
);
module
->
Value
().
MirrorWithModule
(
0
);
// Mirror pads and graphic items of the footprint:
MirrorMarkedItems
(
module
,
wxPoint
(
0
,
0
),
true
);
MirrorMarkedItems
(
module
,
wxPoint
(
0
,
0
),
true
);
break
;
break
;
...
...
pcbnew/onleftclick.cpp
View file @
230b60e6
...
@@ -166,10 +166,8 @@ void PCB_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition )
...
@@ -166,10 +166,8 @@ void PCB_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition )
case
PCB_TRACE_T
:
case
PCB_TRACE_T
:
case
PCB_VIA_T
:
case
PCB_VIA_T
:
case
PCB_PAD_T
:
case
PCB_PAD_T
:
GetDesignSettings
().
SetCurrentNetClass
(
SetCurrentNetClass
(
((
BOARD_CONNECTED_ITEM
*
)
DrawStruct
)
->
GetNetClassName
()
);
((
BOARD_CONNECTED_ITEM
*
)
DrawStruct
)
->
GetNetClassName
()
);
updateTraceWidthSelectBox
();
updateViaSizeSelectBox
();
break
;
break
;
default
:
default
:
...
...
pcbnew/onrightclick.cpp
View file @
230b60e6
...
@@ -464,9 +464,7 @@ void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
...
@@ -464,9 +464,7 @@ void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
wxPoint
cursorPosition
=
GetCrossHairPosition
();
wxPoint
cursorPosition
=
GetCrossHairPosition
();
wxString
msg
;
wxString
msg
;
GetDesignSettings
().
SetCurrentNetClass
(
Track
->
GetNetClassName
()
);
SetCurrentNetClass
(
Track
->
GetNetClassName
()
);
updateTraceWidthSelectBox
();
updateViaSizeSelectBox
();
int
flags
=
Track
->
GetFlags
();
int
flags
=
Track
->
GetFlags
();
...
@@ -834,12 +832,7 @@ void PCB_EDIT_FRAME::createPopUpMenuForFpPads( D_PAD* Pad, wxMenu* menu )
...
@@ -834,12 +832,7 @@ void PCB_EDIT_FRAME::createPopUpMenuForFpPads( D_PAD* Pad, wxMenu* menu )
if
(
flags
)
// Currently in edit, no others commands possible
if
(
flags
)
// Currently in edit, no others commands possible
return
;
return
;
if
(
GetDesignSettings
().
GetCurrentNetClassName
()
!=
Pad
->
GetNetClassName
()
)
SetCurrentNetClass
(
Pad
->
GetNetClassName
()
);
{
GetDesignSettings
().
SetCurrentNetClass
(
Pad
->
GetNetClassName
()
);
updateTraceWidthSelectBox
();
updateViaSizeSelectBox
();
}
wxString
msg
=
Pad
->
GetSelectMenuText
();
wxString
msg
=
Pad
->
GetSelectMenuText
();
...
...
pcbnew/pcbframe.cpp
View file @
230b60e6
...
@@ -1079,3 +1079,17 @@ void PCB_EDIT_FRAME::ToPlotter( wxCommandEvent& event )
...
@@ -1079,3 +1079,17 @@ void PCB_EDIT_FRAME::ToPlotter( wxCommandEvent& event )
dlg
.
ShowModal
();
dlg
.
ShowModal
();
}
}
bool
PCB_EDIT_FRAME
::
SetCurrentNetClass
(
const
wxString
&
aNetClassName
)
{
bool
change
=
GetDesignSettings
().
SetCurrentNetClass
(
aNetClassName
);
if
(
change
)
{
updateTraceWidthSelectBox
();
updateViaSizeSelectBox
();
}
return
change
;
}
pcbnew/router/router_tool.cpp
View file @
230b60e6
...
@@ -534,7 +534,13 @@ void ROUTER_TOOL::performRouting()
...
@@ -534,7 +534,13 @@ void ROUTER_TOOL::performRouting()
frame
->
SetActiveLayer
(
ToLAYER_ID
(
m_startLayer
)
);
frame
->
SetActiveLayer
(
ToLAYER_ID
(
m_startLayer
)
);
if
(
m_startItem
&&
m_startItem
->
Net
()
>=
0
)
if
(
m_startItem
&&
m_startItem
->
Net
()
>=
0
)
{
highlightNet
(
true
,
m_startItem
->
Net
()
);
highlightNet
(
true
,
m_startItem
->
Net
()
);
// Update track width and via size shown in main toolbar comboboxes
frame
->
SetCurrentNetClass
(
m_startItem
->
Parent
()
->
GetNetClass
()
->
GetName
()
);
}
else
frame
->
SetCurrentNetClass
(
NETCLASS
::
Default
);
ctls
->
ForceCursorPosition
(
false
);
ctls
->
ForceCursorPosition
(
false
);
ctls
->
SetAutoPan
(
true
);
ctls
->
SetAutoPan
(
true
);
...
...
pcbnew/tracepcb.cpp
View file @
230b60e6
...
@@ -67,7 +67,7 @@ void FOOTPRINT_EDIT_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg )
...
@@ -67,7 +67,7 @@ void FOOTPRINT_EDIT_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg )
GRSetDrawMode
(
DC
,
GR_COPY
);
GRSetDrawMode
(
DC
,
GR_COPY
);
m_canvas
->
DrawBackGround
(
DC
);
m_canvas
->
DrawBackGround
(
DC
);
DrawWorkSheet
(
DC
,
screen
,
0
,
IU_PER_MILS
,
wxEmptyString
);
DrawWorkSheet
(
DC
,
screen
,
0
,
IU_PER_MILS
,
wxEmptyString
);
// Redraw the footprints
// Redraw the footprints
for
(
MODULE
*
module
=
GetBoard
()
->
m_Modules
;
module
;
module
=
module
->
Next
()
)
for
(
MODULE
*
module
=
GetBoard
()
->
m_Modules
;
module
;
module
=
module
->
Next
()
)
...
@@ -153,11 +153,19 @@ void BOARD::Draw( EDA_DRAW_PANEL* aPanel, wxDC* DC, GR_DRAWMODE aDrawMode, const
...
@@ -153,11 +153,19 @@ void BOARD::Draw( EDA_DRAW_PANEL* aPanel, wxDC* DC, GR_DRAWMODE aDrawMode, const
*/
*/
for
(
TRACK
*
track
=
m_Track
;
track
;
track
=
track
->
Next
()
)
for
(
TRACK
*
track
=
m_Track
;
track
;
track
=
track
->
Next
()
)
{
{
if
(
track
->
IsMoving
()
)
continue
;
track
->
Draw
(
aPanel
,
DC
,
aDrawMode
);
track
->
Draw
(
aPanel
,
DC
,
aDrawMode
);
}
}
// SEGZONE is outdated, only her for compatibility with
// very old designs
for
(
SEGZONE
*
zone
=
m_Zone
;
zone
;
zone
=
zone
->
Next
()
)
for
(
SEGZONE
*
zone
=
m_Zone
;
zone
;
zone
=
zone
->
Next
()
)
{
{
if
(
zone
->
IsMoving
()
)
continue
;
zone
->
Draw
(
aPanel
,
DC
,
aDrawMode
);
zone
->
Draw
(
aPanel
,
DC
,
aDrawMode
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment