Merge in changes
|
@ -190,9 +190,11 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
||||||
set( TO_LINKER -Wl )
|
set( TO_LINKER -Wl )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Thou shalt not link vaporware and tell us it's a valid DSO:
|
# Thou shalt not link vaporware and tell us it's a valid DSO (apple ld doesn't support it)
|
||||||
|
if( NOT APPLE )
|
||||||
set( CMAKE_SHARED_LINKER_FLAGS "${TO_LINKER},--no-undefined" )
|
set( CMAKE_SHARED_LINKER_FLAGS "${TO_LINKER},--no-undefined" )
|
||||||
set( CMAKE_MODULE_LINKER_FLAGS "${TO_LINKER},--no-undefined" )
|
set( CMAKE_MODULE_LINKER_FLAGS "${TO_LINKER},--no-undefined" )
|
||||||
|
endif()
|
||||||
|
|
||||||
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" )
|
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" )
|
||||||
endif()
|
endif()
|
||||||
|
@ -361,6 +363,9 @@ add_custom_target( lib-wxpython )
|
||||||
|
|
||||||
if( KICAD_BUILD_STATIC )
|
if( KICAD_BUILD_STATIC )
|
||||||
message(STATUS "KICAD_BUILD_STATIC set")
|
message(STATUS "KICAD_BUILD_STATIC set")
|
||||||
|
if( KICAD_SCRIPTING OR KICAD_SCRIPTING_WXPYTHON OR KICAD_SCRIPTING_MODULES )
|
||||||
|
message(FATAL_ERROR "KICAD_SCRIPTING* is not supported with KICAD_BUILD_STATIC, please select KICAD_BUILD_DYNAMIC" )
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if( KICAD_BUILD_DYNAMIC )
|
if( KICAD_BUILD_DYNAMIC )
|
||||||
|
@ -374,6 +379,9 @@ add_custom_target( lib-wxpython )
|
||||||
include( download_libpng )
|
include( download_libpng )
|
||||||
|
|
||||||
if( KICAD_SCRIPTING OR KICAD_SCRIPTING_WXPYTHON OR KICAD_SCRIPTING_MODULES )
|
if( KICAD_SCRIPTING OR KICAD_SCRIPTING_WXPYTHON OR KICAD_SCRIPTING_MODULES )
|
||||||
|
|
||||||
|
message(STATUS "Scripting ENABLED")
|
||||||
|
|
||||||
set( SWIG_EXECUTABLE ${SWIG_ROOT}/bin/swig )
|
set( SWIG_EXECUTABLE ${SWIG_ROOT}/bin/swig )
|
||||||
set( SWIG_INCLUDE ${SWIG_ROOT}/include )
|
set( SWIG_INCLUDE ${SWIG_ROOT}/include )
|
||||||
set( PYTHON_DEST ${LIBWXPYTHON_ROOT}/wxPython/lib/python2.6/site-packages )
|
set( PYTHON_DEST ${LIBWXPYTHON_ROOT}/wxPython/lib/python2.6/site-packages )
|
||||||
|
@ -505,18 +513,24 @@ 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( NOT APPLE )
|
if( APPLE )
|
||||||
set( PythonInterp_FIND_VERSION )
|
|
||||||
else()
|
|
||||||
set( PYTHON_LIBRARY /System/Library/Frameworks/Python.framework/Versions/2.6/Python )
|
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( PYTHON_INCLUDE_DIR /System/Library/Frameworks/Python.framework/Versions//2.6/include/python2.6 )
|
||||||
set( PythonInterp_FIND_VERSION 2.6 )
|
set( PythonInterp_FIND_VERSION 2.6 )
|
||||||
set( PythonLibs_FIND_VERSION 2.6 )
|
set( PythonLibs_FIND_VERSION 2.6 )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# force a python version < 3.0
|
||||||
|
set( PythonInterp_FIND_VERSION 2.6)
|
||||||
|
set( PythonLibs_FIND_VERSION 2.6 )
|
||||||
|
|
||||||
find_package( PythonInterp )
|
find_package( PythonInterp )
|
||||||
|
|
||||||
check_find_package_result( PYTHONINTERP_FOUND "Python Interpreter" )
|
check_find_package_result( PYTHONINTERP_FOUND "Python Interpreter" )
|
||||||
|
|
||||||
|
if( NOT PYTHON_VERSION_MAJOR EQUAL 2 )
|
||||||
|
message( FATAL_ERROR "Python 2.x is required." )
|
||||||
|
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 )
|
||||||
|
@ -534,7 +548,7 @@ if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES )
|
||||||
mark_as_advanced( PYTHON_DEST )
|
mark_as_advanced( PYTHON_DEST )
|
||||||
message( STATUS "Python module install path: ${PYTHON_DEST}" )
|
message( STATUS "Python module install path: ${PYTHON_DEST}" )
|
||||||
|
|
||||||
find_package( PythonLibs )
|
find_package( PythonLibs 2.6 )
|
||||||
|
|
||||||
#message( STATUS "PYTHON_INCLUDE_DIRS:${PYTHON_INCLUDE_DIRS}" )
|
#message( STATUS "PYTHON_INCLUDE_DIRS:${PYTHON_INCLUDE_DIRS}" )
|
||||||
|
|
||||||
|
|
|
@ -138,9 +138,17 @@ bzr branch lp:kicad/stable kicad_src
|
||||||
Components and Footprints libraries
|
Components and Footprints libraries
|
||||||
all (schematic libs, 3D shapes ...) but new footprints libraries (use Download zip tool)
|
all (schematic libs, 3D shapes ...) but new footprints libraries (use Download zip tool)
|
||||||
https://github.com/KiCad/kicad-library/
|
https://github.com/KiCad/kicad-library/
|
||||||
|
|
||||||
New footprints libraries (use Download zip tool for each lib you want)
|
New footprints libraries (use Download zip tool for each lib you want)
|
||||||
https://github.com/KiCad/ for footprint libs (*.pretty folders)
|
https://github.com/KiCad/ for footprint libs (*.pretty folders)
|
||||||
|
|
||||||
|
A mirror of github is available, using bzr:
|
||||||
|
(schematic libs, 3D shapes ... all but new footprints libraries)
|
||||||
|
bzr checkout lp:~kicad-product-committers/kicad/library
|
||||||
|
|
||||||
|
Old legacy libraries:
|
||||||
|
bzr checkout lp:~dickelbeck/kicad/library-read-only
|
||||||
|
|
||||||
Note also Kicad is able to read on github.com/KiCad/ the *.pretty folders
|
Note also Kicad is able to read on github.com/KiCad/ the *.pretty folders
|
||||||
without download, using github plugin.
|
without download, using github plugin.
|
||||||
(however the time to read them can be long)
|
(however the time to read them can be long)
|
||||||
|
|
|
@ -8,84 +8,96 @@
|
||||||
static const unsigned char png[] = {
|
static const unsigned char png[] = {
|
||||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||||
0xce, 0x00, 0x00, 0x04, 0xbb, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x4b, 0x6c, 0x1b,
|
0xce, 0x00, 0x00, 0x05, 0x7d, 0x49, 0x44, 0x41, 0x54, 0x48, 0x4b, 0xbd, 0x95, 0xd9, 0x4f, 0x54,
|
||||||
0x55, 0x14, 0x86, 0xbf, 0x7b, 0x67, 0xfc, 0x4a, 0x1c, 0xdb, 0x72, 0xd3, 0x34, 0x4a, 0xe3, 0x28,
|
0x67, 0x18, 0xc6, 0x69, 0xaf, 0x9a, 0x36, 0x05, 0xda, 0x9b, 0x36, 0xbd, 0xed, 0x45, 0xfb, 0x87,
|
||||||
0xa5, 0xb1, 0xe2, 0x3a, 0x21, 0x88, 0x22, 0x0a, 0x34, 0x52, 0xda, 0xaa, 0xa2, 0x5d, 0x20, 0xd2,
|
0x34, 0xe9, 0x0d, 0x91, 0x75, 0x2c, 0xbb, 0x06, 0x4c, 0x34, 0x46, 0x22, 0x2d, 0x09, 0x04, 0x90,
|
||||||
0xec, 0x40, 0xa2, 0x11, 0x0b, 0x58, 0x50, 0x56, 0xac, 0x91, 0x8a, 0x58, 0x21, 0x58, 0x74, 0xd3,
|
0xcd, 0x85, 0x04, 0x8b, 0x28, 0x16, 0x94, 0x4d, 0x36, 0x45, 0x10, 0x18, 0x86, 0x75, 0x70, 0x1a,
|
||||||
0x15, 0xad, 0x94, 0x45, 0x57, 0x45, 0x42, 0x42, 0x65, 0x55, 0xb1, 0xa0, 0x40, 0xc5, 0x06, 0xa5,
|
0xa2, 0xec, 0xc8, 0x80, 0xc8, 0x3e, 0x08, 0x38, 0x1b, 0x30, 0x2c, 0xb3, 0x00, 0x0e, 0xe8, 0x08,
|
||||||
0x4f, 0x35, 0xcd, 0x4b, 0x4e, 0x1f, 0x4e, 0x5b, 0x8b, 0x46, 0x69, 0x1c, 0xb7, 0x71, 0x33, 0x9e,
|
0xd2, 0xa7, 0xdf, 0xfb, 0xea, 0x39, 0x72, 0xac, 0x4d, 0xd3, 0x34, 0xe9, 0x24, 0xcf, 0xcc, 0x9c,
|
||||||
0xc7, 0x61, 0x41, 0xc6, 0xb2, 0x63, 0x07, 0xe8, 0x86, 0x2b, 0xfd, 0x9a, 0x3b, 0x9a, 0x3b, 0xf7,
|
0x93, 0x73, 0xbe, 0xdf, 0xf7, 0xbc, 0xdb, 0xe7, 0x05, 0xc0, 0xeb, 0xff, 0x10, 0x7f, 0x15, 0x17,
|
||||||
0x3f, 0xff, 0x39, 0x67, 0xfe, 0x3b, 0x4a, 0x44, 0xf8, 0x3f, 0x86, 0x09, 0x70, 0xf6, 0xec, 0xd9,
|
0x17, 0xd7, 0x96, 0x94, 0x94, 0xa0, 0xbc, 0xbc, 0x1c, 0x55, 0x55, 0x55, 0xa8, 0xac, 0xac, 0x44,
|
||||||
0xf3, 0x4a, 0xa9, 0xf7, 0x4d, 0xd3, 0xc4, 0x30, 0x0c, 0x44, 0x04, 0xc7, 0x71, 0x70, 0x5d, 0x17,
|
0x59, 0x59, 0x19, 0xc4, 0x7d, 0x14, 0x16, 0x16, 0x22, 0x3f, 0x3f, 0x1f, 0x57, 0xae, 0x5c, 0xc1,
|
||||||
0xc7, 0x71, 0xaa, 0x78, 0xd1, 0x7b, 0xad, 0xf5, 0xb7, 0x13, 0x13, 0x13, 0x27, 0x00, 0x38, 0x7d,
|
0xe5, 0xcb, 0x97, 0x91, 0x9d, 0x9d, 0x8d, 0xf3, 0xe7, 0xcf, 0x23, 0x3d, 0x3d, 0x1d, 0xa9, 0xa9,
|
||||||
0xfa, 0x74, 0xec, 0xcc, 0x99, 0x33, 0x15, 0xdb, 0xb6, 0xc5, 0x75, 0xdd, 0xa6, 0x70, 0x1c, 0xa7,
|
0xa9, 0x48, 0x4a, 0x4a, 0x42, 0x42, 0x42, 0x02, 0xce, 0x9e, 0x3d, 0x8b, 0x33, 0x67, 0xce, 0xe0,
|
||||||
0x0a, 0xdb, 0xb6, 0xeb, 0x50, 0xa9, 0x54, 0xaa, 0xb0, 0x2c, 0xab, 0x8a, 0x52, 0xa9, 0x24, 0xe3,
|
0xd4, 0xa9, 0x53, 0x38, 0x71, 0xe2, 0x04, 0x8e, 0x1f, 0x3f, 0x8e, 0x98, 0x98, 0x98, 0x9b, 0x32,
|
||||||
0xe3, 0xe3, 0x9e, 0x88, 0x20, 0x22, 0x98, 0xae, 0xeb, 0x6a, 0xad, 0xb5, 0xa7, 0x94, 0x22, 0x9f,
|
0xe8, 0xfa, 0xf5, 0xeb, 0xde, 0x62, 0xc1, 0xbd, 0xfd, 0xfd, 0x7d, 0x1c, 0x1c, 0x1c, 0x7c, 0x50,
|
||||||
0xcf, 0xa3, 0x94, 0x02, 0x40, 0x29, 0x55, 0x37, 0x6f, 0x76, 0xdd, 0x6a, 0x68, 0xad, 0x49, 0x24,
|
0xaf, 0x5f, 0xbf, 0x96, 0x45, 0xcf, 0x1d, 0xd6, 0xde, 0xde, 0x9e, 0xac, 0x57, 0xaf, 0x5e, 0xc9,
|
||||||
0x12, 0x88, 0x88, 0xaa, 0x4b, 0x9d, 0xe7, 0x79, 0x4d, 0x37, 0x6f, 0x36, 0xff, 0x2f, 0x44, 0xcd,
|
0x7a, 0xfe, 0xfc, 0x39, 0xa2, 0xa2, 0xa2, 0xfe, 0x90, 0x41, 0x57, 0xaf, 0x5e, 0xf5, 0x2d, 0x2d,
|
||||||
0x9e, 0x9b, 0x00, 0xae, 0xeb, 0x02, 0x50, 0x2a, 0x95, 0x58, 0x59, 0x59, 0xa1, 0xa7, 0xa7, 0x07,
|
0x2d, 0xf5, 0xd0, 0x22, 0x26, 0x93, 0x09, 0x66, 0xb3, 0x99, 0x65, 0xb1, 0x58, 0x60, 0xb5, 0x5a,
|
||||||
0xad, 0x35, 0x0b, 0x0b, 0x0b, 0x6c, 0x6e, 0x96, 0x7f, 0x22, 0x11, 0x11, 0xfa, 0xfb, 0xfb, 0xab,
|
0x59, 0x4b, 0x4b, 0x4b, 0x18, 0x1e, 0x1e, 0x46, 0x7b, 0x7b, 0x3b, 0x6e, 0xdf, 0xbe, 0xcd, 0xce,
|
||||||
0x6b, 0x6a, 0xdf, 0x6d, 0x50, 0xd4, 0xd7, 0xd7, 0x47, 0x28, 0x14, 0xa2, 0x5c, 0x2e, 0x93, 0x4e,
|
0x6b, 0x6b, 0x6b, 0xa1, 0xd3, 0xe9, 0x30, 0x3d, 0x3d, 0x8d, 0x95, 0x95, 0x15, 0x85, 0x56, 0x57,
|
||||||
0xa7, 0x5f, 0x28, 0x7d, 0x22, 0x82, 0xd6, 0x1a, 0xad, 0x75, 0x23, 0xd1, 0xea, 0xea, 0x2a, 0x89,
|
0x57, 0xf1, 0xf2, 0xe5, 0x4b, 0x44, 0x46, 0x46, 0x42, 0x01, 0x12, 0x8e, 0x18, 0x24, 0x01, 0x24,
|
||||||
0x44, 0x02, 0x80, 0x44, 0x22, 0x81, 0x52, 0x0a, 0xcb, 0xb2, 0x50, 0x4a, 0x91, 0xcb, 0xe5, 0xea,
|
0x08, 0x01, 0xe6, 0xe7, 0xe7, 0x51, 0x53, 0x53, 0x83, 0xb1, 0xb1, 0x31, 0x38, 0x1c, 0x0e, 0x6c,
|
||||||
0x16, 0x6f, 0xde, 0x5c, 0x44, 0x18, 0x18, 0x18, 0xd8, 0x32, 0x75, 0x0d, 0x8a, 0x5c, 0xd7, 0x45,
|
0x6f, 0x6f, 0xc3, 0xe1, 0xda, 0xc4, 0xd6, 0xd6, 0x16, 0xd6, 0xd6, 0xd6, 0xa0, 0x56, 0xab, 0x79,
|
||||||
0x44, 0x50, 0x4a, 0x55, 0x1f, 0x2a, 0xa5, 0x48, 0xa7, 0xd3, 0xd5, 0xe8, 0x9a, 0x35, 0x87, 0xaf,
|
0x03, 0xf4, 0xac, 0xcd, 0x66, 0x63, 0xd1, 0xfd, 0x0f, 0x82, 0x6e, 0xdc, 0xb8, 0xc1, 0xa0, 0xc9,
|
||||||
0x60, 0x33, 0xb9, 0xbf, 0xb6, 0x81, 0xc8, 0x71, 0x9c, 0xa6, 0x11, 0xfd, 0x9b, 0xa2, 0x66, 0x0a,
|
0xc9, 0x49, 0xf4, 0xf4, 0xf4, 0xb0, 0x33, 0x82, 0x69, 0xb5, 0x5a, 0xdc, 0xbd, 0x7b, 0x17, 0x9b,
|
||||||
0xb3, 0xd9, 0x6c, 0xf5, 0xde, 0x2f, 0x49, 0x43, 0x33, 0xf8, 0x91, 0xf8, 0x1b, 0xf8, 0x85, 0xad,
|
0x9b, 0x9b, 0x68, 0xed, 0x99, 0x46, 0x58, 0x66, 0x33, 0x82, 0x52, 0x9b, 0xa0, 0x4a, 0xd7, 0x20,
|
||||||
0x55, 0x92, 0xcb, 0xe5, 0xb0, 0x6d, 0x9b, 0xb6, 0xb6, 0x36, 0x4c, 0xd3, 0xa4, 0x58, 0x2c, 0xb2,
|
0xe4, 0x5c, 0x13, 0x7e, 0xc9, 0xd7, 0xc1, 0xb6, 0xe1, 0xe2, 0xcd, 0x88, 0x35, 0xd0, 0xd5, 0xd5,
|
||||||
0xbe, 0xbe, 0x4e, 0x36, 0x9b, 0x25, 0x14, 0x0a, 0xd5, 0x29, 0x6c, 0x20, 0xb2, 0x6d, 0xbb, 0x4e,
|
0xc5, 0x8e, 0xd6, 0xd7, 0xd7, 0x19, 0x14, 0x11, 0x11, 0xa1, 0x04, 0x15, 0x14, 0x14, 0x30, 0x68,
|
||||||
0xb2, 0xbf, 0xf1, 0xfc, 0xfc, 0x7c, 0x55, 0x91, 0x65, 0x59, 0x88, 0x08, 0x83, 0x43, 0xaf, 0xf0,
|
0x6a, 0x6a, 0x8a, 0x1f, 0xa4, 0x9d, 0x93, 0x3b, 0x2a, 0x0c, 0x72, 0x10, 0x2f, 0x16, 0x8c, 0xc9,
|
||||||
0xd3, 0xd5, 0x87, 0x4c, 0xdd, 0x5c, 0xc2, 0x71, 0x3c, 0xd2, 0xdd, 0x09, 0xde, 0x79, 0xa3, 0x8f,
|
0xe9, 0x84, 0x76, 0xc4, 0x8a, 0x09, 0xa3, 0x13, 0xa6, 0x75, 0x37, 0x9e, 0x2e, 0x6f, 0xa1, 0xee,
|
||||||
0xc5, 0xc5, 0xfb, 0x14, 0x0a, 0x05, 0x46, 0x46, 0x46, 0x30, 0x0c, 0xa3, 0x91, 0xa8, 0x58, 0x2c,
|
0xe1, 0x02, 0x02, 0x52, 0xd4, 0xe8, 0x7d, 0xbc, 0x88, 0xd9, 0xd9, 0x59, 0xb4, 0xb4, 0xb4, 0x30,
|
||||||
0x12, 0x8b, 0xc5, 0xea, 0xd2, 0xb1, 0x59, 0x91, 0xe7, 0x79, 0xcc, 0xcc, 0xcc, 0xd0, 0xb2, 0xbd,
|
0xc4, 0x6e, 0xb7, 0x33, 0x28, 0x3c, 0x3c, 0xfc, 0x1d, 0x28, 0x33, 0x33, 0xd3, 0xf7, 0xda, 0xb5,
|
||||||
0x97, 0x93, 0xe7, 0xae, 0x71, 0x6c, 0x64, 0x0f, 0x1f, 0x0e, 0xec, 0xc2, 0xb2, 0x3d, 0xee, 0x14,
|
0x6b, 0x0c, 0x92, 0xec, 0x13, 0x4c, 0xa3, 0xd1, 0xc0, 0x68, 0x34, 0xa2, 0xac, 0x59, 0x8f, 0x58,
|
||||||
0x56, 0xf9, 0xea, 0xbb, 0x9b, 0x1c, 0x7d, 0xb5, 0x93, 0x3d, 0xe9, 0x34, 0x4b, 0x4b, 0x4b, 0x74,
|
0x01, 0x69, 0x1b, 0x5a, 0xc4, 0xe3, 0xf9, 0x35, 0xcc, 0x5a, 0x1c, 0x30, 0xad, 0x8a, 0xb0, 0xb9,
|
||||||
0x76, 0x76, 0x36, 0x57, 0xe4, 0x38, 0x4e, 0xc3, 0x47, 0x09, 0x30, 0x37, 0x37, 0x87, 0x88, 0xf0,
|
0x76, 0x61, 0x73, 0xb8, 0xd1, 0x33, 0xb5, 0x0a, 0xff, 0x64, 0x35, 0xec, 0xae, 0x6d, 0x34, 0x34,
|
||||||
0xf8, 0xf1, 0x63, 0x5e, 0x7f, 0x73, 0x98, 0x2f, 0xce, 0x5d, 0xe5, 0xb3, 0xf7, 0xf6, 0xd1, 0xb5,
|
0x34, 0x70, 0x54, 0x68, 0xa3, 0x04, 0x0a, 0x0b, 0x0b, 0x53, 0x82, 0x44, 0xe9, 0x7a, 0xa8, 0x82,
|
||||||
0x2d, 0x8a, 0xe3, 0x7a, 0x94, 0x2d, 0x9b, 0x4c, 0x77, 0x8c, 0x64, 0x6c, 0x88, 0xef, 0x7f, 0xbe,
|
0x96, 0x97, 0x97, 0xe5, 0x84, 0x8a, 0xfb, 0x70, 0x8a, 0x5c, 0xd0, 0x22, 0x45, 0x5a, 0x03, 0x3a,
|
||||||
0x4d, 0x3a, 0xd5, 0xcf, 0xfd, 0x85, 0x5b, 0x74, 0x74, 0x74, 0x6c, 0x5d, 0xa3, 0x66, 0xa9, 0xcb,
|
0x47, 0x97, 0xd8, 0xcd, 0x9c, 0x70, 0x62, 0x5a, 0x73, 0x63, 0xc9, 0xbe, 0xc3, 0x32, 0x0b, 0x77,
|
||||||
0x64, 0x32, 0x68, 0xad, 0xb1, 0x2c, 0x8b, 0x1f, 0x7e, 0xbf, 0xcb, 0xdb, 0x6f, 0xf5, 0x13, 0x8f,
|
0x85, 0x2d, 0x93, 0xb8, 0x54, 0xd9, 0x83, 0xb9, 0xb9, 0x39, 0xb4, 0xb6, 0xb6, 0xc2, 0xe9, 0x74,
|
||||||
0x46, 0x70, 0x3c, 0x01, 0xa5, 0x09, 0x06, 0x02, 0x78, 0x68, 0x44, 0x2a, 0xbc, 0x36, 0xd8, 0xc3,
|
0xc2, 0xe3, 0xf1, 0x20, 0x34, 0x34, 0x54, 0x09, 0xca, 0xc9, 0xc9, 0x51, 0x80, 0x9e, 0x3d, 0x7b,
|
||||||
0xc4, 0xc5, 0x69, 0x4e, 0x1c, 0xdd, 0xc5, 0xf2, 0xf2, 0x32, 0x91, 0x48, 0xa4, 0xb9, 0xa2, 0x66,
|
0xc6, 0xa0, 0xc1, 0x27, 0x0b, 0x88, 0xbe, 0xd8, 0x86, 0x5f, 0xef, 0xe9, 0x51, 0xdc, 0x36, 0x8e,
|
||||||
0x63, 0x7e, 0x7e, 0x1e, 0xdb, 0xb6, 0x31, 0x4d, 0x93, 0x85, 0x47, 0x25, 0x76, 0xf7, 0xec, 0xe0,
|
0xc1, 0x99, 0x15, 0x8c, 0x0a, 0x57, 0x93, 0x46, 0x3b, 0x66, 0xcd, 0x76, 0x18, 0x2c, 0x76, 0xcc,
|
||||||
0xe9, 0xb3, 0x32, 0xeb, 0xa6, 0x42, 0x21, 0xb8, 0xae, 0xc7, 0xda, 0xba, 0xcd, 0x83, 0x47, 0x4b,
|
0x98, 0xd6, 0xd1, 0x31, 0x60, 0x40, 0x44, 0x96, 0x86, 0x0b, 0xe8, 0xd6, 0xad, 0x5b, 0x32, 0xe8,
|
||||||
0xd8, 0x15, 0xe1, 0xb9, 0xe5, 0x10, 0x0e, 0x87, 0x29, 0x14, 0x0a, 0x74, 0x77, 0x77, 0xd7, 0xfb,
|
0xe8, 0xd1, 0xa3, 0x4a, 0x90, 0x68, 0x42, 0x06, 0x11, 0x84, 0x42, 0xd7, 0xdb, 0xdb, 0x8b, 0xdc,
|
||||||
0x5f, 0xb1, 0x58, 0xac, 0x76, 0xdd, 0xe6, 0x3a, 0x65, 0x32, 0x19, 0x32, 0x99, 0x0c, 0x86, 0x61,
|
0xdc, 0x5c, 0xdc, 0xd1, 0x8e, 0x22, 0xee, 0xb7, 0x07, 0x28, 0xee, 0x9c, 0x63, 0xb5, 0xe9, 0xad,
|
||||||
0x60, 0x1a, 0x0a, 0xcc, 0x20, 0xda, 0x0c, 0x12, 0x0c, 0x86, 0x88, 0x44, 0x22, 0x44, 0x5a, 0x5a,
|
0x18, 0x59, 0xb0, 0x63, 0x5c, 0x38, 0x9b, 0xb5, 0x8a, 0x22, 0x58, 0xd9, 0xc2, 0xa2, 0xd0, 0xe3,
|
||||||
0xc0, 0x0c, 0x93, 0xda, 0xd9, 0x49, 0x57, 0xe7, 0x76, 0x42, 0xc1, 0x00, 0x96, 0x65, 0xe1, 0x79,
|
0xf9, 0x75, 0x84, 0x65, 0x68, 0x38, 0xf4, 0xa2, 0x2f, 0xe1, 0x72, 0xb9, 0x18, 0x14, 0x12, 0x12,
|
||||||
0x5e, 0x43, 0x19, 0xaa, 0x8a, 0x6a, 0x53, 0xe7, 0x8f, 0xd9, 0xd9, 0x59, 0x3c, 0xcf, 0x63, 0x6d,
|
0xa2, 0x04, 0x65, 0x65, 0x65, 0x79, 0xa8, 0xe1, 0x08, 0x42, 0x3d, 0x40, 0x89, 0x8d, 0x8b, 0x8b,
|
||||||
0x6d, 0x8d, 0xc1, 0xde, 0x76, 0xae, 0xdc, 0xbe, 0xc7, 0xb3, 0xd5, 0x36, 0xa2, 0x21, 0x8d, 0x16,
|
0xc3, 0x83, 0x47, 0xd3, 0x88, 0xbc, 0xd0, 0x82, 0xdc, 0xfa, 0x11, 0x59, 0xd5, 0xbf, 0xcf, 0xe0,
|
||||||
0x07, 0x25, 0x36, 0xcf, 0x6d, 0xc5, 0xba, 0xa3, 0x58, 0x29, 0x7b, 0x84, 0x03, 0x42, 0xb9, 0x5c,
|
0xe1, 0x13, 0x33, 0x06, 0xa6, 0x2c, 0x18, 0x9e, 0xb6, 0x60, 0x64, 0xc6, 0x8c, 0xd6, 0xee, 0x31,
|
||||||
0x26, 0x99, 0x4c, 0x36, 0x3a, 0xba, 0xdf, 0xde, 0x00, 0x4f, 0x9e, 0x3c, 0x61, 0x7a, 0x7a, 0x1a,
|
0x44, 0xbe, 0x75, 0x54, 0x54, 0x54, 0xc4, 0xa5, 0x4f, 0xa0, 0xa0, 0xa0, 0xa0, 0x77, 0xa0, 0xf8,
|
||||||
0xcb, 0xb2, 0xaa, 0x35, 0x1a, 0x1c, 0x1c, 0x44, 0x6b, 0xcd, 0xb1, 0xfd, 0xbb, 0x78, 0xf8, 0xe7,
|
0xf8, 0x78, 0x5f, 0x31, 0x4e, 0x64, 0x10, 0xf5, 0x00, 0x55, 0x0e, 0x55, 0x8c, 0x75, 0x69, 0x19,
|
||||||
0x53, 0x08, 0x44, 0x69, 0x8d, 0x6f, 0x63, 0xfb, 0x8e, 0x9d, 0x74, 0xa5, 0x76, 0xd3, 0xd3, 0xd3,
|
0x7e, 0x49, 0x0d, 0xec, 0xa6, 0xe4, 0xfe, 0x53, 0x59, 0x77, 0x1e, 0x2c, 0xa2, 0x5d, 0x6f, 0x41,
|
||||||
0x4b, 0x47, 0x67, 0x17, 0x33, 0xf9, 0xa7, 0x7c, 0x3a, 0x3a, 0xc4, 0xf5, 0xeb, 0xd7, 0x49, 0xa5,
|
0xef, 0xe4, 0x0a, 0x1e, 0x19, 0x6c, 0xa8, 0xd2, 0x4d, 0xe1, 0x62, 0xf9, 0x43, 0xce, 0x51, 0x63,
|
||||||
0x52, 0xcd, 0xdd, 0xdb, 0xaf, 0x91, 0x61, 0x18, 0xa4, 0xd3, 0x69, 0x5a, 0x5b, 0x5b, 0xa9, 0x54,
|
0x63, 0xa3, 0x0c, 0x0a, 0x08, 0x08, 0x50, 0x82, 0x52, 0x52, 0x52, 0x38, 0x74, 0xe4, 0x46, 0x02,
|
||||||
0x2a, 0xcc, 0xce, 0xce, 0x22, 0x22, 0x84, 0xc3, 0x61, 0x2e, 0x5f, 0xfe, 0x8d, 0x93, 0xe3, 0x07,
|
0xd1, 0x2c, 0x1b, 0x1a, 0x1a, 0x42, 0x91, 0xfa, 0x91, 0xa8, 0x3a, 0xad, 0xc2, 0x55, 0xbe, 0x5a,
|
||||||
0xf8, 0xe6, 0xfc, 0x24, 0xd1, 0x48, 0x80, 0x9d, 0xed, 0x61, 0xa2, 0xad, 0x11, 0xd6, 0x2a, 0x26,
|
0x8f, 0xa2, 0xe6, 0x61, 0x54, 0xb4, 0x0d, 0xa3, 0xe6, 0xfe, 0x08, 0x54, 0x69, 0x1a, 0xac, 0x6e,
|
||||||
0x53, 0xb9, 0x02, 0x9f, 0xbc, 0x3b, 0x40, 0x40, 0x39, 0x58, 0x96, 0xc5, 0xe4, 0xe4, 0x24, 0xc3,
|
0x38, 0x51, 0x5f, 0x5f, 0x8f, 0xf1, 0xf1, 0x71, 0x6e, 0x09, 0x02, 0x1d, 0x39, 0x72, 0x44, 0x09,
|
||||||
0xc3, 0xc3, 0xf5, 0x44, 0xc5, 0x62, 0x91, 0x78, 0x3c, 0x8e, 0x88, 0x10, 0x8f, 0xc7, 0xd1, 0x5a,
|
0x12, 0x83, 0x91, 0x1d, 0x49, 0x90, 0x8d, 0x8d, 0x0d, 0x18, 0x0c, 0x06, 0x1c, 0x3b, 0x76, 0x8c,
|
||||||
0x57, 0x15, 0xf6, 0xf7, 0xf7, 0x63, 0x18, 0x06, 0x4a, 0x29, 0x8a, 0xc5, 0x22, 0xd7, 0xfe, 0xb8,
|
0x9b, 0x35, 0x2e, 0x4f, 0x8b, 0xa8, 0x4b, 0x5a, 0xdc, 0xd4, 0xce, 0xa1, 0x54, 0x37, 0x8f, 0x8a,
|
||||||
0xcc, 0x97, 0xe3, 0xc3, 0xdc, 0x5b, 0x5a, 0xe7, 0xd6, 0x9d, 0x65, 0xca, 0x65, 0x9b, 0x97, 0x5f,
|
0xae, 0x05, 0xdc, 0xeb, 0x33, 0xa2, 0x40, 0x54, 0x1b, 0x35, 0x70, 0xff, 0xb8, 0x91, 0x1b, 0x5c,
|
||||||
0x4a, 0xf0, 0xc1, 0x81, 0x7d, 0x5c, 0xbd, 0x32, 0x89, 0x93, 0x48, 0x10, 0x0a, 0x85, 0xc8, 0xe7,
|
0xb4, 0x09, 0xfa, 0xfb, 0xfb, 0x79, 0xce, 0x51, 0x79, 0xfb, 0xf9, 0xf9, 0x29, 0x41, 0x62, 0xfa,
|
||||||
0xf3, 0x2c, 0x2e, 0x2e, 0x36, 0xa6, 0xae, 0xb6, 0xeb, 0x6a, 0xbd, 0xad, 0xd6, 0x50, 0x93, 0xc9,
|
0xfe, 0x05, 0x44, 0xbf, 0x34, 0xb9, 0xd3, 0xd2, 0xd2, 0xde, 0x4c, 0x86, 0xde, 0x19, 0xa8, 0xce,
|
||||||
0x24, 0x87, 0x0f, 0x1f, 0x26, 0x97, 0xcb, 0xf1, 0x60, 0xee, 0x0a, 0xa9, 0xd0, 0x12, 0x43, 0x1d,
|
0xa9, 0x45, 0xb9, 0x37, 0x20, 0x38, 0x55, 0xcd, 0xfa, 0x39, 0xff, 0x3e, 0xd6, 0x1c, 0x5b, 0xfc,
|
||||||
0xcf, 0x59, 0xbe, 0x7b, 0x8d, 0x5f, 0x7f, 0xb9, 0x44, 0xa9, 0x54, 0x22, 0x9f, 0xcf, 0xfb, 0x27,
|
0xbc, 0x5e, 0xaf, 0xe7, 0x86, 0xad, 0xae, 0xae, 0xe6, 0x89, 0xf2, 0xe2, 0xc5, 0x0b, 0x25, 0x48,
|
||||||
0x2b, 0x22, 0x42, 0x7b, 0x7b, 0x3b, 0xa3, 0xa3, 0xa3, 0x2d, 0x00, 0x66, 0x20, 0x10, 0x10, 0xcb,
|
0x8c, 0x73, 0x5f, 0x01, 0x53, 0x80, 0xa8, 0xb3, 0xe9, 0x65, 0x6a, 0xbc, 0xe6, 0xe6, 0x66, 0x9e,
|
||||||
0xb2, 0xb4, 0xaf, 0xa8, 0xd6, 0xa7, 0x6a, 0x7d, 0xcb, 0x0f, 0x60, 0xef, 0xde, 0xbd, 0x78, 0x9e,
|
0x59, 0xb4, 0x53, 0x8a, 0xbd, 0x7b, 0x67, 0x87, 0x9b, 0x73, 0x77, 0x77, 0x97, 0x9f, 0xa3, 0xbe,
|
||||||
0x87, 0xeb, 0xba, 0xd8, 0xb6, 0x5d, 0xb5, 0x1b, 0xa5, 0x14, 0x97, 0x2e, 0xfd, 0x4d, 0xd8, 0xd6,
|
0xa1, 0xbc, 0xd0, 0xa0, 0xcd, 0xc8, 0xc8, 0xe0, 0x69, 0x42, 0x21, 0x24, 0xf9, 0xfb, 0xfb, 0x2b,
|
||||||
0xd6, 0x46, 0xa5, 0x52, 0xe1, 0xe0, 0xc1, 0x83, 0x4c, 0x4d, 0x4d, 0xcd, 0x1f, 0x39, 0x72, 0x64,
|
0x41, 0xe2, 0x1c, 0xf1, 0xd0, 0x68, 0x97, 0xdc, 0x48, 0x20, 0x5a, 0x9c, 0x4a, 0xbd, 0xb3, 0xb3,
|
||||||
0x9f, 0x02, 0x92, 0x63, 0x63, 0x63, 0x3f, 0x2a, 0xa5, 0xf6, 0xfb, 0x2f, 0xd5, 0xda, 0xbd, 0x3f,
|
0x13, 0x89, 0x89, 0x89, 0x5c, 0x20, 0xd1, 0xd1, 0xd1, 0x7c, 0xf6, 0x9c, 0x3c, 0x79, 0x12, 0xc9,
|
||||||
0xf7, 0x3c, 0xaf, 0xee, 0xea, 0xc3, 0x3f, 0x0e, 0x6a, 0x8f, 0x86, 0x43, 0x87, 0x0e, 0xe9, 0xde,
|
0xc9, 0xc9, 0xa8, 0xab, 0xab, 0x63, 0xe7, 0x4d, 0x4d, 0x4d, 0x5c, 0x71, 0x14, 0x01, 0x3a, 0xc7,
|
||||||
0xde, 0x5e, 0x5a, 0x5a, 0x5a, 0x48, 0xa5, 0x52, 0x9c, 0x3a, 0x75, 0xea, 0xa2, 0x09, 0x78, 0x17,
|
0xe8, 0x9a, 0x7a, 0x51, 0x9c, 0x61, 0xdf, 0xc8, 0x20, 0xf1, 0x12, 0x83, 0x28, 0x2f, 0xdd, 0xdd,
|
||||||
0x2e, 0x5c, 0xf8, 0x38, 0x16, 0x8b, 0xf5, 0x2a, 0xa5, 0xa2, 0x7e, 0x83, 0x00, 0x0a, 0x10, 0x40,
|
0xdd, 0xdc, 0xb8, 0x92, 0x23, 0xea, 0x09, 0x0a, 0x1d, 0xb9, 0xa1, 0x24, 0x93, 0x6b, 0x2a, 0x7f,
|
||||||
0x89, 0x88, 0x29, 0x22, 0x06, 0x60, 0x88, 0x88, 0x21, 0x22, 0xda, 0x9f, 0x6f, 0xa4, 0x5f, 0x01,
|
0xba, 0xa6, 0xf0, 0x50, 0x2e, 0xe8, 0x3f, 0x0d, 0x5f, 0x1a, 0x41, 0x15, 0x15, 0x15, 0x5c, 0x48,
|
||||||
0x9e, 0x52, 0xca, 0x03, 0xec, 0x1b, 0x37, 0x6e, 0xc4, 0x8e, 0x1f, 0x3f, 0xfe, 0xf9, 0xd8, 0xd8,
|
0xd4, 0x4f, 0x14, 0x4a, 0x31, 0x75, 0x6c, 0x02, 0xf6, 0x3d, 0x83, 0x62, 0x63, 0x63, 0x19, 0x44,
|
||||||
0x58, 0x3c, 0x1a, 0x8d, 0x12, 0x0c, 0x06, 0x5d, 0xb5, 0x11, 0x8d, 0x06, 0xc2, 0x1b, 0x08, 0x6e,
|
0x53, 0x98, 0x9a, 0x96, 0x5e, 0x94, 0x1c, 0xf5, 0xf5, 0xf5, 0xc9, 0xa2, 0xeb, 0x81, 0x81, 0x01,
|
||||||
0xf5, 0x73, 0xb3, 0x11, 0x84, 0xb1, 0x01, 0x5d, 0x43, 0xc2, 0x46, 0x50, 0x02, 0xb8, 0xc0, 0x7a,
|
0xd6, 0xe0, 0xe0, 0x20, 0x9f, 0x45, 0x54, 0x5d, 0x14, 0x76, 0x02, 0xd2, 0x71, 0x41, 0x47, 0x0a,
|
||||||
0x2a, 0x95, 0xf2, 0xb2, 0xd9, 0xec, 0x47, 0xf1, 0x78, 0x3c, 0xb9, 0xbc, 0xbc, 0xfc, 0xf5, 0x5f,
|
0x41, 0xc9, 0x0d, 0x9d, 0xd4, 0xa3, 0xa3, 0xa3, 0xe4, 0x4a, 0xe7, 0x25, 0x6a, 0xdd, 0x57, 0x54,
|
||||||
0x8c, 0x86, 0xc8, 0x61, 0x09, 0x89, 0x45, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
|
0x97, 0x87, 0x5e, 0x90, 0xf2, 0x23, 0x85, 0x8e, 0x7e, 0xdf, 0x77, 0x44, 0x15, 0xb5, 0x23, 0xf2,
|
||||||
0xae, 0x42, 0x60, 0x82,
|
0x44, 0x39, 0x22, 0x47, 0xf4, 0x9e, 0x74, 0xaa, 0xd2, 0x7f, 0xda, 0x10, 0xe5, 0x8b, 0xf2, 0x46,
|
||||||
|
0x7d, 0x45, 0xbd, 0x99, 0x97, 0x97, 0xe7, 0x64, 0x90, 0x38, 0x37, 0x64, 0xd0, 0xe1, 0x1c, 0xd1,
|
||||||
|
0xcc, 0x22, 0xd0, 0x61, 0x88, 0xdb, 0xed, 0x56, 0x80, 0xc8, 0xc9, 0x61, 0xd1, 0xbd, 0x89, 0x89,
|
||||||
|
0x09, 0xce, 0x17, 0xb9, 0xee, 0xe8, 0xe8, 0x20, 0x47, 0x85, 0x5e, 0x2a, 0x95, 0xca, 0x47, 0xcc,
|
||||||
|
0xa4, 0x3d, 0x7a, 0x88, 0x60, 0x92, 0xa4, 0xdd, 0x4a, 0x7a, 0x7f, 0xc1, 0x7f, 0x12, 0x39, 0x39,
|
||||||
|
0x7d, 0xfa, 0x34, 0x41, 0x02, 0x85, 0x3e, 0xf2, 0x12, 0x9f, 0x2f, 0x85, 0xab, 0xbe, 0xc0, 0xc0,
|
||||||
|
0xc0, 0x03, 0x01, 0x94, 0x15, 0x1c, 0x1c, 0xac, 0xb8, 0xfe, 0x3b, 0x89, 0x8d, 0x2a, 0x24, 0xdd,
|
||||||
|
0x17, 0x53, 0x81, 0xd4, 0x26, 0xd6, 0xff, 0x9c, 0xab, 0x4e, 0x7c, 0x7c, 0x85, 0xbe, 0xf3, 0xf6,
|
||||||
|
0xf6, 0xfe, 0xd1, 0xc7, 0xc7, 0x27, 0x58, 0xe8, 0xa7, 0xb7, 0x0a, 0x3d, 0xf4, 0xff, 0xdf, 0x48,
|
||||||
|
0xe5, 0xf3, 0x66, 0x9d, 0x1f, 0xc4, 0xba, 0xdf, 0x0a, 0x7d, 0xc6, 0xa0, 0xb7, 0xb4, 0x8f, 0x85,
|
||||||
|
0x3e, 0x25, 0x77, 0x42, 0x5f, 0xff, 0x47, 0x7d, 0x25, 0xf4, 0x85, 0xd0, 0x27, 0x52, 0xb3, 0x92,
|
||||||
|
0xfe, 0x04, 0xe6, 0x65, 0xc3, 0xbb, 0x89, 0x46, 0xb5, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
|
||||||
|
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||||
};
|
};
|
||||||
|
|
||||||
const BITMAP_OPAQUE find_xpm[1] = {{ png, sizeof( png ), "find_xpm" }};
|
const BITMAP_OPAQUE find_xpm[1] = {{ png, sizeof( png ), "find_xpm" }};
|
||||||
|
|
|
@ -8,85 +8,52 @@
|
||||||
static const unsigned char png[] = {
|
static const unsigned char png[] = {
|
||||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||||
0xce, 0x00, 0x00, 0x04, 0xd4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0x49, 0x4f, 0x5d,
|
0xce, 0x00, 0x00, 0x02, 0xbc, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0xb1, 0x6e, 0x1b,
|
||||||
0x75, 0x18, 0x87, 0x31, 0x6a, 0xe2, 0xc2, 0x98, 0xe8, 0x86, 0x8d, 0x89, 0x71, 0xa3, 0x18, 0x1a,
|
0x47, 0x10, 0x86, 0xbf, 0x99, 0x3b, 0x16, 0x76, 0xc3, 0xe8, 0x00, 0x35, 0x24, 0x61, 0x50, 0x4f,
|
||||||
0x59, 0x6a, 0x5c, 0xba, 0xe0, 0xdb, 0x98, 0x7e, 0x08, 0x16, 0x5d, 0xb0, 0x64, 0x86, 0x96, 0x05,
|
0xe2, 0x56, 0x2f, 0xa1, 0x57, 0x48, 0xa0, 0x52, 0x11, 0x54, 0x07, 0x10, 0x90, 0x56, 0xb0, 0xe1,
|
||||||
0x94, 0x36, 0x1d, 0x80, 0x96, 0x99, 0x36, 0x05, 0x0a, 0x65, 0x86, 0x32, 0xcf, 0x73, 0x69, 0x65,
|
0xca, 0xae, 0xf8, 0x00, 0x2e, 0xd9, 0xa4, 0x15, 0x60, 0x40, 0x10, 0xd2, 0xa4, 0x10, 0xa1, 0x44,
|
||||||
0x86, 0x0b, 0x1c, 0xc6, 0x0b, 0xbc, 0xfe, 0x9e, 0x57, 0xcf, 0xe5, 0x5c, 0x5b, 0x63, 0x62, 0xe2,
|
0xe1, 0x11, 0x48, 0x63, 0x8b, 0x80, 0x62, 0x92, 0xb7, 0xb7, 0xeb, 0xc2, 0xdc, 0xe3, 0xde, 0xf2,
|
||||||
0x49, 0xde, 0x1c, 0xee, 0xff, 0x9c, 0xfb, 0x7b, 0xde, 0xf9, 0x92, 0x92, 0x92, 0x92, 0xf2, 0x45,
|
0x8e, 0xb4, 0x81, 0x64, 0x81, 0xc5, 0xce, 0x2d, 0xee, 0xf6, 0x9f, 0x6f, 0x66, 0x67, 0x70, 0x02,
|
||||||
0x5a, 0x5a, 0xda, 0x77, 0x19, 0x19, 0x19, 0x37, 0xfe, 0x0f, 0x4b, 0x4f, 0x4f, 0xff, 0x41, 0x8c,
|
0x0c, 0x81, 0x01, 0x90, 0xf2, 0xff, 0x0c, 0x03, 0xfc, 0x9d, 0x02, 0x2f, 0x3e, 0x7e, 0xfc, 0xf4,
|
||||||
0x2f, 0x65, 0x29, 0xe9, 0xbf, 0xaf, 0xad, 0xc5, 0x36, 0xb7, 0xb6, 0x6c, 0x6b, 0x7b, 0xdb, 0xb6,
|
0x9b, 0x31, 0x06, 0x51, 0x41, 0x64, 0x3d, 0x01, 0xc2, 0x55, 0x04, 0xe0, 0xeb, 0xf3, 0x7a, 0xaf,
|
||||||
0x77, 0x76, 0x6c, 0x71, 0x69, 0xc9, 0x76, 0xf7, 0xf6, 0x6c, 0x2f, 0x16, 0xb3, 0x2d, 0x9d, 0x2f,
|
0x7a, 0x16, 0x69, 0x55, 0x49, 0x92, 0x84, 0xe7, 0xcf, 0x9e, 0xbd, 0x4c, 0x01, 0x2d, 0x8a, 0x15,
|
||||||
0x2e, 0x2e, 0x5a, 0x6c, 0x7f, 0x3f, 0x61, 0x73, 0xf3, 0xf3, 0x76, 0x70, 0x78, 0xe8, 0xb6, 0xba,
|
0x77, 0x77, 0x13, 0x86, 0x47, 0x47, 0xa8, 0x2a, 0xaa, 0xeb, 0x43, 0x62, 0x51, 0xd9, 0xec, 0xe3,
|
||||||
0xba, 0x6a, 0x87, 0x41, 0x60, 0x83, 0xaf, 0x5f, 0x5b, 0x4d, 0x6d, 0xad, 0xad, 0xbe, 0x7d, 0xeb,
|
0x1c, 0x02, 0xb8, 0xc0, 0xa6, 0x41, 0xd4, 0x59, 0x0b, 0xa0, 0x29, 0x80, 0x26, 0x09, 0xfd, 0x7e,
|
||||||
0x9f, 0x03, 0x99, 0xdf, 0x8f, 0x8e, 0xe2, 0x62, 0xfc, 0x04, 0xe8, 0xc7, 0xb5, 0xb5, 0xb5, 0x60,
|
0x8f, 0x24, 0xd1, 0xcd, 0xe1, 0x91, 0xc0, 0x16, 0x61, 0xb8, 0xc6, 0x84, 0xc1, 0xf0, 0xce, 0xa9,
|
||||||
0x71, 0x69, 0xd9, 0xd6, 0x37, 0x36, 0xdd, 0x9e, 0x3c, 0x7d, 0x6a, 0x23, 0xa3, 0xa3, 0x0e, 0xdd,
|
0xdf, 0xc8, 0xf3, 0xbc, 0x4e, 0x21, 0x82, 0xa8, 0xa2, 0xb1, 0xdd, 0xb4, 0xae, 0xed, 0xf0, 0xdd,
|
||||||
0xd8, 0xd4, 0xe7, 0x27, 0x4f, 0x6c, 0x6a, 0x7a, 0xda, 0xc1, 0x38, 0xc0, 0xf3, 0xf5, 0xf5, 0x75,
|
0x6a, 0xae, 0x85, 0x52, 0x1f, 0xc7, 0xfe, 0x60, 0x40, 0x92, 0x24, 0x88, 0xf7, 0xe2, 0x7b, 0xc8,
|
||||||
0xdb, 0x17, 0xf4, 0xa9, 0xfe, 0xde, 0x3f, 0x38, 0xb0, 0x87, 0x0f, 0x1f, 0x5a, 0x5e, 0x5e, 0x9e,
|
0x62, 0x3b, 0x18, 0xaa, 0x1a, 0x10, 0x39, 0x47, 0x3e, 0x9d, 0x7e, 0x7d, 0x7f, 0xed, 0x85, 0x36,
|
||||||
0x03, 0x43, 0x27, 0x30, 0x81, 0x2e, 0xc5, 0xf8, 0xc5, 0x41, 0xeb, 0x1b, 0x1b, 0xc1, 0xca, 0x9b,
|
0x90, 0x35, 0x12, 0x89, 0x54, 0x44, 0xb2, 0x8f, 0x48, 0x54, 0xe9, 0xf7, 0xfb, 0xa8, 0x6a, 0x8d,
|
||||||
0x37, 0xb6, 0xb4, 0xbc, 0x6c, 0x43, 0xc3, 0xc3, 0x46, 0x74, 0x2e, 0x3e, 0x35, 0xe5, 0xc2, 0x3b,
|
0xc2, 0xdb, 0x44, 0x7b, 0xec, 0x58, 0xd9, 0x9b, 0xa3, 0xd9, 0xac, 0x9e, 0xa3, 0x40, 0x54, 0x23,
|
||||||
0xbb, 0xbb, 0x56, 0x5f, 0x5f, 0xef, 0x91, 0x22, 0xfe, 0xa2, 0xa5, 0xc5, 0xe4, 0x9c, 0x0b, 0xd5,
|
0x42, 0xef, 0x50, 0xe8, 0xd8, 0x56, 0x7e, 0x83, 0x59, 0x11, 0xa9, 0x2a, 0xfd, 0x5e, 0xaf, 0x4e,
|
||||||
0xd4, 0xd4, 0xd8, 0xa1, 0xee, 0x8f, 0x1e, 0x3d, 0xb2, 0xfc, 0xfc, 0x7c, 0x1b, 0x1a, 0x1a, 0xf2,
|
0x14, 0x51, 0xc5, 0x07, 0xee, 0xa2, 0x68, 0x1a, 0x7b, 0x6f, 0x5d, 0x9b, 0x97, 0xfb, 0x28, 0x9a,
|
||||||
0x68, 0x42, 0x3b, 0x8a, 0x82, 0x36, 0x04, 0xea, 0xed, 0xeb, 0xb3, 0xb1, 0xf1, 0x71, 0x2b, 0x2c,
|
0x89, 0x44, 0xb6, 0x73, 0xd4, 0x42, 0x16, 0xc7, 0xbe, 0xed, 0xb9, 0x91, 0xc8, 0x39, 0xc7, 0x74,
|
||||||
0x2c, 0x74, 0x20, 0x69, 0xc4, 0xf3, 0xb9, 0xb9, 0x39, 0x4f, 0x17, 0x11, 0x8e, 0xca, 0x10, 0x6f,
|
0x3a, 0xad, 0x2a, 0x3c, 0x14, 0xd1, 0x16, 0x82, 0x98, 0x26, 0x14, 0x6c, 0x25, 0x12, 0x55, 0x06,
|
||||||
0x6d, 0x6d, 0x55, 0xe4, 0x1b, 0x2e, 0x54, 0x5b, 0x57, 0x87, 0x98, 0x3d, 0x7e, 0xfc, 0xd8, 0x0a,
|
0x83, 0xc1, 0x86, 0x68, 0x5d, 0xe1, 0x12, 0x79, 0xdb, 0x46, 0xf4, 0x2d, 0xb9, 0xaa, 0x72, 0x34,
|
||||||
0x0a, 0x0a, 0x6c, 0x58, 0x8e, 0x1e, 0x1d, 0x1f, 0x27, 0xec, 0xf8, 0xe4, 0xe4, 0x1a, 0xb4, 0xb9,
|
0xf5, 0x75, 0xb4, 0x23, 0x17, 0x6d, 0x44, 0x6d, 0x74, 0xe1, 0x77, 0xb5, 0x1c, 0x35, 0x25, 0x7f,
|
||||||
0xb9, 0x19, 0x90, 0xa6, 0x49, 0x45, 0x90, 0x93, 0x93, 0x63, 0xe5, 0x77, 0xef, 0x7a, 0x54, 0x6f,
|
0x5f, 0xcd, 0x78, 0xdb, 0x5a, 0x8b, 0x73, 0x0e, 0xe7, 0x1c, 0x3e, 0x1d, 0x5b, 0xa1, 0x73, 0xeb,
|
||||||
0xdf, 0xbd, 0x73, 0xef, 0x0f, 0x94, 0x9a, 0xd1, 0xb1, 0x31, 0x1b, 0x93, 0x21, 0xde, 0xda, 0xd6,
|
0x5b, 0xd7, 0xed, 0x76, 0x6b, 0x5d, 0xba, 0xc9, 0xb3, 0x78, 0xb5, 0xd6, 0x6e, 0x4d, 0x2f, 0x06,
|
||||||
0x66, 0x72, 0xce, 0x85, 0xea, 0x04, 0x3a, 0xd6, 0xbd, 0xb2, 0xb2, 0xd2, 0x9d, 0x1c, 0x19, 0x19,
|
0x90, 0xa6, 0x69, 0x9d, 0xa8, 0x17, 0xdc, 0xba, 0x7d, 0xb5, 0xe2, 0xf7, 0xca, 0xb2, 0xc4, 0x5a,
|
||||||
0xb1, 0x93, 0x93, 0x93, 0xa8, 0x45, 0x40, 0x5b, 0x5b, 0x01, 0x29, 0xa3, 0x0e, 0x39, 0xb9, 0xb9,
|
0x4b, 0x59, 0x96, 0x18, 0x63, 0xb6, 0xc4, 0x54, 0x95, 0xc5, 0x62, 0x61, 0x00, 0x57, 0x11, 0xcd,
|
||||||
0x96, 0x2b, 0x7b, 0xf9, 0xf2, 0xa5, 0xa9, 0x49, 0xac, 0x45, 0xde, 0x53, 0x54, 0x20, 0xe3, 0x8a,
|
0xf2, 0x9c, 0x1f, 0xba, 0xdd, 0xc6, 0xb0, 0x34, 0x89, 0xfa, 0x03, 0x8b, 0xa2, 0xc0, 0x18, 0xc3,
|
||||||
0x18, 0x71, 0x9e, 0xe1, 0x08, 0x42, 0xa4, 0xf4, 0xf4, 0xf4, 0xd4, 0xaa, 0xaa, 0xaa, 0xac, 0xa8,
|
0x6a, 0xb5, 0x62, 0xb1, 0x58, 0xb0, 0x5c, 0x2e, 0x29, 0x8a, 0x82, 0x4e, 0xa7, 0x83, 0xb5, 0xd6,
|
||||||
0xa8, 0xc8, 0xa3, 0x3e, 0x3d, 0x3b, 0xb3, 0x33, 0x19, 0x77, 0x3d, 0xbb, 0x06, 0xa9, 0xb3, 0x02,
|
0x5e, 0x5d, 0x5d, 0xbd, 0x03, 0xe6, 0x1b, 0xa2, 0xa8, 0x33, 0xec, 0x0a, 0x9d, 0x17, 0x31, 0xc6,
|
||||||
0xea, 0x30, 0x2d, 0x10, 0x90, 0x5c, 0x15, 0x15, 0x31, 0x0a, 0x4e, 0x9a, 0x54, 0x50, 0x1b, 0x9f,
|
0x60, 0x8c, 0xe1, 0xe9, 0xe9, 0x89, 0x9b, 0x9b, 0x1b, 0x44, 0x84, 0x2c, 0xcb, 0xc8, 0xb2, 0x8c,
|
||||||
0x98, 0xb0, 0x09, 0x19, 0xe2, 0xed, 0xed, 0xed, 0xb6, 0xad, 0xd4, 0x02, 0x68, 0x6c, 0x6c, 0x74,
|
0xf9, 0x7c, 0xee, 0x2e, 0x2f, 0x2f, 0x5f, 0x8d, 0x46, 0xa3, 0xb7, 0xc0, 0x1f, 0x55, 0x1d, 0xe5,
|
||||||
0xd1, 0xea, 0xea, 0x6a, 0x2b, 0x2e, 0x2e, 0x76, 0x67, 0xce, 0xcf, 0xcf, 0xa3, 0x16, 0x01, 0x6d,
|
0x79, 0x5e, 0x8b, 0xed, 0xae, 0xab, 0xeb, 0x9c, 0xa3, 0x2c, 0xcb, 0x2a, 0x64, 0x45, 0x51, 0x20,
|
||||||
0x6f, 0x07, 0x0b, 0x6a, 0xe1, 0xe9, 0x99, 0x19, 0x87, 0xe4, 0xa9, 0xa8, 0x80, 0x48, 0x4f, 0x9b,
|
0x22, 0x1c, 0x1f, 0x1f, 0x33, 0x1c, 0x0e, 0x79, 0x7c, 0x7c, 0x74, 0x17, 0x17, 0x17, 0xbf, 0x8e,
|
||||||
0xd2, 0x44, 0x6a, 0x26, 0x27, 0x27, 0xdd, 0x10, 0xef, 0xe8, 0xe8, 0xb0, 0x1d, 0xa5, 0x1a, 0x21,
|
0x46, 0xa3, 0xd7, 0xc0, 0x2d, 0xf0, 0x39, 0xf5, 0x87, 0xf5, 0x7a, 0xbd, 0xbd, 0xf5, 0x20, 0x22,
|
||||||
0x40, 0xdc, 0x01, 0x95, 0x94, 0x94, 0xb8, 0x33, 0xf1, 0x78, 0x3c, 0x61, 0x49, 0x20, 0xd5, 0x27,
|
0xd5, 0xcd, 0xf2, 0xb9, 0x29, 0xcb, 0x92, 0xe5, 0x6a, 0xc5, 0xc1, 0xc1, 0x01, 0xb3, 0xd9, 0x8c,
|
||||||
0x98, 0x90, 0x08, 0x20, 0x20, 0x74, 0x4f, 0xc7, 0xab, 0x57, 0x0e, 0x02, 0x48, 0x14, 0x74, 0x20,
|
0x87, 0x87, 0x07, 0x7b, 0x7e, 0x7e, 0xfe, 0xcb, 0x78, 0x3c, 0x7e, 0x07, 0xfc, 0xe9, 0x9c, 0x5b,
|
||||||
0x11, 0xe3, 0xfd, 0x2b, 0x3d, 0xdb, 0x55, 0x06, 0x10, 0x6a, 0x6a, 0x6a, 0xf2, 0x7b, 0x43, 0x43,
|
0xd6, 0x3a, 0x43, 0x4c, 0xb4, 0x4b, 0xd4, 0x8b, 0x79, 0xb2, 0xe5, 0x62, 0xc1, 0xe1, 0xe1, 0x21,
|
||||||
0x43, 0x12, 0xe8, 0xe2, 0xe2, 0xe2, 0x7d, 0x90, 0xbc, 0x0b, 0x68, 0xe3, 0x59, 0x75, 0x18, 0x90,
|
0x93, 0xc9, 0xc4, 0x9c, 0x9e, 0x9e, 0xfe, 0x3c, 0x1e, 0x8f, 0xdf, 0x00, 0x13, 0x2f, 0xb2, 0xe9,
|
||||||
0x7c, 0x75, 0x4f, 0x67, 0x57, 0x97, 0xd7, 0x81, 0x88, 0x88, 0x82, 0x68, 0x00, 0xe1, 0x3d, 0x11,
|
0x0c, 0xdf, 0x48, 0xe4, 0x45, 0x42, 0xb1, 0xb2, 0x2c, 0x49, 0x92, 0x84, 0xfb, 0xfb, 0xfb, 0xf9,
|
||||||
0xed, 0xe9, 0x7d, 0x84, 0x88, 0x08, 0x51, 0x3a, 0x2f, 0x04, 0xf1, 0x39, 0x34, 0xbd, 0x93, 0x0c,
|
0xd9, 0xd9, 0xd9, 0x8f, 0xd7, 0xd7, 0xd7, 0xef, 0x81, 0x4f, 0xce, 0xb9, 0x32, 0xfc, 0x2e, 0x05,
|
||||||
0x1a, 0x18, 0x18, 0xf0, 0x89, 0x07, 0x42, 0x9b, 0x76, 0x75, 0x77, 0x5b, 0xbf, 0xce, 0x00, 0x13,
|
0xac, 0x26, 0x09, 0x59, 0x96, 0xed, 0xec, 0x02, 0x71, 0x2f, 0x4b, 0xd3, 0x14, 0xe7, 0x1c, 0x69,
|
||||||
0x05, 0x83, 0x49, 0xe1, 0x11, 0xe7, 0x79, 0xd8, 0x81, 0xb7, 0x6e, 0xdd, 0xf2, 0xe8, 0x2e, 0x2f,
|
0xa7, 0x63, 0x6e, 0x6f, 0x6f, 0x3f, 0x9c, 0x9c, 0x9c, 0xfc, 0x54, 0x14, 0xc5, 0xef, 0xc0, 0xbf,
|
||||||
0x2f, 0xed, 0xf6, 0xed, 0xdb, 0xee, 0x10, 0x7f, 0x87, 0x26, 0xd8, 0x35, 0x48, 0x2f, 0x06, 0x0c,
|
0xae, 0x21, 0xd9, 0xf2, 0x1f, 0xfc, 0x40, 0x16, 0xc0, 0x5f, 0xc0, 0x3f, 0x61, 0xa8, 0xe2, 0xf1,
|
||||||
0xdd, 0xbc, 0x40, 0x88, 0x14, 0xa8, 0x4d, 0x7b, 0x7a, 0x7a, 0x6c, 0x60, 0x70, 0xd0, 0xca, 0xcb,
|
0x05, 0x95, 0x9b, 0x4e, 0x78, 0x5f, 0x66, 0xb8, 0x85, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||||
0xcb, 0x3d, 0x8a, 0xe6, 0xe6, 0x66, 0x7b, 0xfe, 0xfc, 0xb9, 0x83, 0x2a, 0x2a, 0x2a, 0xbc, 0xbb,
|
0x44, 0xae, 0x42, 0x60, 0x82,
|
||||||
0x18, 0x5e, 0xc4, 0x19, 0xde, 0x10, 0x44, 0x8a, 0xaf, 0xae, 0xae, 0x12, 0xf6, 0x1e, 0x68, 0x76,
|
|
||||||
0x76, 0xd6, 0x16, 0x16, 0x16, 0x1c, 0xc4, 0x3c, 0xf4, 0xf6, 0xf6, 0xba, 0xa7, 0x9c, 0x21, 0x8e,
|
|
||||||
0x18, 0x5d, 0x48, 0x3a, 0x38, 0x63, 0xb6, 0x10, 0x47, 0x98, 0xe7, 0x88, 0xfe, 0x3b, 0x68, 0x6f,
|
|
||||||
0x2f, 0x60, 0x66, 0x58, 0x9e, 0x40, 0x98, 0x87, 0x3e, 0x6d, 0x0a, 0x22, 0x09, 0xbb, 0x27, 0xcc,
|
|
||||||
0x79, 0x34, 0x2d, 0x51, 0x41, 0xae, 0x3b, 0x77, 0xee, 0x78, 0x1d, 0xa3, 0xe7, 0x7a, 0xef, 0x1a,
|
|
||||||
0xa4, 0xc2, 0x06, 0x74, 0x18, 0xbb, 0x0c, 0x08, 0x46, 0xcd, 0xfe, 0x09, 0xf2, 0x77, 0x00, 0x17,
|
|
||||||
0xe7, 0xd1, 0xae, 0x0b, 0x9d, 0x4c, 0xea, 0x3a, 0x40, 0xaf, 0xb5, 0x75, 0x89, 0x08, 0x08, 0x83,
|
|
||||||
0x37, 0xa8, 0xfa, 0xd0, 0x04, 0xd4, 0x01, 0x08, 0xb3, 0x44, 0x9b, 0x23, 0x4e, 0x13, 0x20, 0xcc,
|
|
||||||
0x15, 0xd3, 0x46, 0x47, 0x90, 0x77, 0xc9, 0x06, 0xbb, 0x2e, 0xba, 0x54, 0xf5, 0xbd, 0x64, 0x90,
|
|
||||||
0x96, 0x9f, 0x2d, 0x6b, 0x99, 0x86, 0x20, 0xc0, 0xec, 0xad, 0x07, 0x0f, 0x1e, 0x38, 0xa8, 0x45,
|
|
||||||
0x3b, 0x8f, 0x99, 0x02, 0xc4, 0xd9, 0x8c, 0x66, 0x8e, 0x06, 0xe2, 0x5d, 0xea, 0xc7, 0xdf, 0x6c,
|
|
||||||
0x15, 0x52, 0xce, 0x30, 0x87, 0x26, 0x47, 0x2f, 0xc4, 0xf8, 0xf9, 0x4f, 0x50, 0x2c, 0x16, 0xd0,
|
|
||||||
0x96, 0x51, 0x10, 0xeb, 0x1e, 0x18, 0xe9, 0xc0, 0x7b, 0x06, 0x92, 0x99, 0x01, 0x54, 0x5a, 0x5a,
|
|
||||||
0xea, 0x9e, 0x13, 0x4d, 0x76, 0x76, 0xb6, 0xd7, 0x05, 0xd1, 0xce, 0xce, 0x4e, 0xdf, 0xf6, 0x2b,
|
|
||||||
0x2b, 0x2b, 0x6e, 0x4b, 0x2a, 0x85, 0x96, 0xed, 0x0b, 0x31, 0xbe, 0x71, 0x90, 0xbe, 0xe0, 0xed,
|
|
||||||
0xbd, 0xac, 0x87, 0x40, 0xe8, 0x1e, 0xa2, 0xa1, 0x6e, 0x00, 0x00, 0xf1, 0x19, 0xe3, 0xe2, 0x8c,
|
|
||||||
0x67, 0xa4, 0xb3, 0x5b, 0xf3, 0x46, 0x84, 0x6c, 0x88, 0x67, 0xcf, 0x9e, 0xf9, 0x1c, 0x01, 0x60,
|
|
||||||
0xe7, 0x49, 0xab, 0x49, 0xfa, 0xdf, 0xca, 0x3e, 0x4d, 0x80, 0xf8, 0x49, 0x7e, 0xa3, 0x1f, 0xbf,
|
|
||||||
0xb2, 0xb2, 0x32, 0x5f, 0x9a, 0xe4, 0x1c, 0x8f, 0xbb, 0xb4, 0x21, 0x00, 0x31, 0x63, 0x18, 0x17,
|
|
||||||
0x67, 0x2c, 0x55, 0x9c, 0x23, 0x12, 0xc4, 0xef, 0xdd, 0xbf, 0xef, 0xcf, 0x38, 0xc7, 0xa1, 0xac,
|
|
||||||
0xac, 0xac, 0x7b, 0x7f, 0x45, 0xf2, 0x89, 0x8e, 0x53, 0x12, 0x20, 0xc2, 0xa7, 0xd8, 0x14, 0x3f,
|
|
||||||
0xec, 0x36, 0xd2, 0xc3, 0x5c, 0x84, 0x20, 0xe6, 0x87, 0xd4, 0x21, 0xdc, 0xdf, 0xdf, 0xef, 0x8e,
|
|
||||||
0xe8, 0xb7, 0xcc, 0xcf, 0x59, 0x4b, 0x44, 0xa9, 0x26, 0xba, 0xba, 0x79, 0xf3, 0x66, 0xbe, 0x74,
|
|
||||||
0xbf, 0x0e, 0x21, 0x49, 0x20, 0x3a, 0x84, 0x28, 0x80, 0x91, 0x12, 0x06, 0x16, 0x50, 0xd8, 0xd2,
|
|
||||||
0x51, 0x10, 0xad, 0x4b, 0xd1, 0xf9, 0x09, 0x21, 0x0b, 0x44, 0x40, 0x5b, 0x2b, 0x8d, 0xf1, 0xcc,
|
|
||||||
0xcc, 0xcc, 0xdf, 0xa4, 0x99, 0x2a, 0xfb, 0x38, 0x84, 0x24, 0x81, 0x78, 0x19, 0x10, 0xf3, 0x43,
|
|
||||||
0x87, 0x11, 0x61, 0x74, 0x76, 0x58, 0x9a, 0x38, 0x10, 0x82, 0xf8, 0xcc, 0x08, 0xf0, 0xf3, 0xc0,
|
|
||||||
0xff, 0x0d, 0x5a, 0x51, 0xfb, 0xa9, 0xa9, 0xa9, 0xbf, 0x4a, 0xef, 0x73, 0xd9, 0x47, 0x51, 0x48,
|
|
||||||
0x08, 0xba, 0xa1, 0xf6, 0x5c, 0x93, 0x48, 0x5c, 0xd1, 0xc4, 0xb5, 0xa9, 0x13, 0x26, 0x70, 0x5c,
|
|
||||||
0xa2, 0x09, 0xe3, 0xe2, 0xce, 0x33, 0x65, 0x20, 0xae, 0x34, 0xc7, 0x55, 0x93, 0xb8, 0x20, 0xbd,
|
|
||||||
0xd2, 0xf9, 0x5e, 0xf6, 0xd9, 0x87, 0x20, 0x21, 0x88, 0x7f, 0xee, 0xd2, 0x65, 0x19, 0xff, 0xd1,
|
|
||||||
0xf8, 0xee, 0x57, 0xd1, 0x7a, 0x7c, 0xc8, 0xfe, 0x00, 0x0a, 0x0d, 0x10, 0x76, 0xc6, 0x00, 0x96,
|
|
||||||
0x87, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const BITMAP_OPAQUE new_pcb_xpm[1] = {{ png, sizeof( png ), "new_pcb_xpm" }};
|
const BITMAP_OPAQUE new_pcb_xpm[1] = {{ png, sizeof( png ), "new_pcb_xpm" }};
|
||||||
|
|
|
@ -8,214 +8,88 @@
|
||||||
static const unsigned char png[] = {
|
static const unsigned char png[] = {
|
||||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||||
0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9,
|
0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9,
|
||||||
0x87, 0x00, 0x00, 0x0c, 0xdb, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xd5, 0x99, 0x7b, 0x6c, 0x54,
|
0x87, 0x00, 0x00, 0x05, 0x02, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xdd, 0x59, 0x5b, 0x6c, 0x14,
|
||||||
0xd7, 0x9d, 0x80, 0xbf, 0xfb, 0xf0, 0xcc, 0xd8, 0x1e, 0x3f, 0xc6, 0x9e, 0xf1, 0x1b, 0x1b, 0x1c,
|
0x55, 0x18, 0x5e, 0xdd, 0x52, 0x15, 0xcb, 0x92, 0x72, 0x79, 0xe0, 0x09, 0xd2, 0x68, 0x2f, 0x5a,
|
||||||
0x8c, 0xbd, 0xa6, 0x36, 0x09, 0x09, 0x10, 0x36, 0xae, 0x4b, 0x29, 0xc1, 0x09, 0x50, 0x85, 0x87,
|
0x7b, 0xd1, 0x07, 0x22, 0x18, 0x25, 0xb1, 0x69, 0x79, 0x81, 0x07, 0x4a, 0x94, 0x9a, 0x6a, 0xe8,
|
||||||
0x01, 0xb5, 0x8e, 0x20, 0x51, 0xac, 0x88, 0x26, 0x80, 0xaa, 0xb6, 0xa4, 0x34, 0x8d, 0xd2, 0xa8,
|
0x83, 0x49, 0x81, 0xc4, 0xc4, 0x07, 0x78, 0xb2, 0x17, 0x62, 0x4d, 0x78, 0xe0, 0x85, 0x47, 0x08,
|
||||||
0x5d, 0x56, 0x95, 0x1a, 0xd4, 0x55, 0x68, 0x57, 0x9b, 0x84, 0x50, 0x20, 0x9b, 0x22, 0x2d, 0x54,
|
0xf0, 0x80, 0xbd, 0x28, 0xb1, 0xb6, 0x15, 0xbc, 0xd4, 0x00, 0x2b, 0x6d, 0x43, 0xbb, 0x97, 0xd9,
|
||||||
0x21, 0x29, 0x24, 0x4d, 0xe4, 0x50, 0x20, 0x6e, 0x03, 0xd4, 0xa1, 0x6e, 0x30, 0x25, 0x25, 0x7e,
|
0xad, 0xc4, 0xc6, 0xb4, 0x6b, 0x43, 0x8a, 0x10, 0xaa, 0xc1, 0x42, 0xd5, 0xa5, 0xed, 0x76, 0xb6,
|
||||||
0xe1, 0x07, 0x7e, 0x8e, 0x3d, 0xf6, 0xd8, 0x33, 0x9e, 0xc7, 0xbd, 0x67, 0xff, 0xb0, 0xe7, 0xe2,
|
0xbf, 0xff, 0x7f, 0x3a, 0x67, 0x33, 0x3b, 0x3d, 0xbb, 0x7b, 0x66, 0x76, 0x26, 0x05, 0x37, 0xf9,
|
||||||
0xf1, 0x8c, 0x89, 0xcd, 0x2e, 0x2b, 0xed, 0x91, 0xae, 0xce, 0xb9, 0xe7, 0xde, 0x73, 0xce, 0xef,
|
0x32, 0xf3, 0xcd, 0xce, 0x9c, 0x39, 0xdf, 0x9c, 0xef, 0x3f, 0xff, 0x3f, 0x67, 0x5c, 0x00, 0xe0,
|
||||||
0xfd, 0x3a, 0x92, 0x10, 0x82, 0xff, 0xcf, 0x4d, 0x0d, 0x0d, 0xb6, 0x6d, 0xdb, 0xf6, 0xb4, 0xd9,
|
0x4a, 0x05, 0xfc, 0x3d, 0x8f, 0x28, 0x4b, 0x77, 0x8e, 0x15, 0xe0, 0xef, 0x29, 0xc4, 0x6b, 0xd4,
|
||||||
0x6c, 0xce, 0x51, 0x55, 0x15, 0x59, 0x96, 0x51, 0x55, 0x95, 0xc9, 0xe3, 0xc9, 0xbd, 0xa2, 0x28,
|
0x7e, 0xd6, 0x6d, 0x09, 0x1a, 0xcf, 0x41, 0x94, 0x22, 0xde, 0x47, 0x7c, 0x8a, 0x78, 0xcb, 0x6e,
|
||||||
0xa8, 0xea, 0xf8, 0xd2, 0xe9, 0xfe, 0x99, 0xfc, 0x08, 0x21, 0x3a, 0x9e, 0x7c, 0xf2, 0xc9, 0xd7,
|
0x01, 0xda, 0x7d, 0xde, 0xd6, 0xda, 0xa7, 0xfb, 0xbc, 0x8c, 0x70, 0x67, 0x25, 0x40, 0x6b, 0xe4,
|
||||||
0xee, 0x1a, 0x02, 0x4f, 0x3c, 0xf1, 0xc4, 0xee, 0x17, 0x5e, 0x78, 0xe1, 0xe5, 0xa4, 0xa4, 0xa4,
|
0x00, 0xa2, 0x19, 0xf1, 0x99, 0x0e, 0x2f, 0x21, 0x36, 0x3b, 0x80, 0x57, 0x0c, 0xf7, 0x69, 0x42,
|
||||||
0x18, 0x00, 0x49, 0x92, 0x98, 0xda, 0x0b, 0x21, 0x90, 0x24, 0x29, 0x6c, 0x3c, 0xb5, 0x45, 0x9b,
|
0xbc, 0x8b, 0x28, 0x36, 0xf9, 0x20, 0x5c, 0x79, 0x88, 0x06, 0x43, 0x63, 0xab, 0x8d, 0x7a, 0xc4,
|
||||||
0x13, 0x42, 0xa0, 0x69, 0x5a, 0xf0, 0xe8, 0xd1, 0xa3, 0xea, 0xb6, 0x6d, 0xdb, 0xfe, 0xfd, 0xae,
|
0x73, 0xd2, 0x23, 0xa0, 0x79, 0x92, 0x6c, 0xf3, 0x1e, 0xa2, 0x65, 0x95, 0x46, 0xe0, 0x13, 0xc4,
|
||||||
0x20, 0x60, 0x32, 0x99, 0x8a, 0x6d, 0x36, 0x5b, 0x8c, 0xae, 0xeb, 0xc6, 0xa1, 0x00, 0xa3, 0x17,
|
0x3b, 0x88, 0xa2, 0x6c, 0x63, 0x60, 0x0d, 0x05, 0x2e, 0xe2, 0xa0, 0xe6, 0xd1, 0x37, 0x1d, 0x8a,
|
||||||
0x2f, 0x62, 0xca, 0xcd, 0x45, 0xcd, 0xc8, 0x08, 0x9b, 0x8f, 0xd6, 0x87, 0x9e, 0xa9, 0xef, 0x42,
|
0x81, 0x2a, 0xc4, 0x71, 0xed, 0xa1, 0x95, 0x64, 0x1d, 0x03, 0x29, 0x6e, 0xe2, 0x41, 0xbc, 0xea,
|
||||||
0x08, 0x6c, 0x36, 0x9b, 0x6a, 0x32, 0x99, 0x0a, 0xef, 0x06, 0x07, 0xe4, 0xa9, 0x14, 0x94, 0x24,
|
0xd0, 0x2c, 0x54, 0x2e, 0x6b, 0x13, 0xcb, 0x02, 0x9e, 0x04, 0xfc, 0x2f, 0x04, 0xe4, 0x20, 0x0e,
|
||||||
0x09, 0x59, 0x96, 0xc1, 0xe3, 0xa1, 0xe3, 0xe9, 0xa7, 0x69, 0xdd, 0xb8, 0x11, 0xd7, 0xb1, 0x63,
|
0x20, 0xbc, 0x88, 0x87, 0xab, 0x8c, 0x07, 0x88, 0x1f, 0x11, 0xfb, 0x11, 0x6e, 0x81, 0xf5, 0x9e,
|
||||||
0x48, 0x93, 0x38, 0x30, 0xdb, 0x27, 0x24, 0x6a, 0x77, 0x15, 0x81, 0xc9, 0xc0, 0x4f, 0x16, 0x85,
|
0x15, 0x09, 0x68, 0x08, 0x06, 0x83, 0xf0, 0xb8, 0x21, 0x16, 0x8b, 0x7d, 0x20, 0x10, 0x50, 0x27,
|
||||||
0xcc, 0xea, 0x6a, 0x06, 0x5e, 0x7d, 0x95, 0xb6, 0xed, 0xdb, 0x09, 0x34, 0x35, 0x85, 0xfd, 0x33,
|
0x12, 0x10, 0xa6, 0x0b, 0xf4, 0x3f, 0x11, 0x1f, 0x9f, 0x1d, 0x87, 0xae, 0x5b, 0x5d, 0x70, 0x54,
|
||||||
0x1d, 0xb0, 0x93, 0xf7, 0x9b, 0x2a, 0x8e, 0x77, 0x95, 0x03, 0x53, 0x01, 0x03, 0xb0, 0x6f, 0xd8,
|
0x39, 0xca, 0xf8, 0x86, 0x2f, 0x37, 0x80, 0xeb, 0x73, 0x17, 0x03, 0x71, 0xbe, 0x2f, 0xc3, 0x47,
|
||||||
0xc0, 0xa2, 0x3f, 0xfe, 0x91, 0xb8, 0x79, 0xf3, 0x68, 0xdd, 0xba, 0x95, 0xfe, 0x5f, 0xfd, 0x0a,
|
0x02, 0x23, 0x70, 0x7a, 0xe2, 0x34, 0x3c, 0x52, 0x1f, 0xb1, 0xf6, 0x15, 0x45, 0x81, 0x78, 0x3c,
|
||||||
0x02, 0x81, 0x19, 0x51, 0x7d, 0x72, 0xd3, 0x34, 0xed, 0xff, 0x86, 0x03, 0xd1, 0x80, 0x88, 0x49,
|
0x9e, 0xb8, 0x1f, 0x71, 0x55, 0x55, 0x07, 0x0d, 0x9d, 0x7f, 0x41, 0x9b, 0x6e, 0x0b, 0x8d, 0x02,
|
||||||
0x4d, 0xa5, 0xe0, 0xc0, 0x01, 0x0a, 0x0f, 0x1d, 0x62, 0xe4, 0xfd, 0xf7, 0x69, 0xad, 0xac, 0xc4,
|
0x20, 0x9d, 0x80, 0xa9, 0x7f, 0xa7, 0x4c, 0x77, 0x30, 0x13, 0xbf, 0x11, 0xb8, 0xc1, 0xb6, 0x9b,
|
||||||
0x7b, 0xf9, 0x72, 0x18, 0x75, 0xbf, 0x0c, 0x99, 0x60, 0x30, 0x78, 0xf7, 0xcc, 0x68, 0x34, 0x36,
|
0x2e, 0x6e, 0x82, 0xa6, 0xd1, 0x26, 0xa1, 0x80, 0xa5, 0xa5, 0xa5, 0x87, 0x06, 0x01, 0xb5, 0x9a,
|
||||||
0x47, 0xa3, 0x62, 0xf2, 0x8a, 0x15, 0x2c, 0xaa, 0xa9, 0xa1, 0x7d, 0xff, 0x7e, 0xda, 0xab, 0xab,
|
0x80, 0xfd, 0xa6, 0x04, 0xf4, 0xdc, 0xee, 0x71, 0x4c, 0x00, 0xc7, 0x70, 0x60, 0x18, 0xae, 0xdd,
|
||||||
0x49, 0xda, 0xb0, 0x01, 0xc7, 0x77, 0xbf, 0x8b, 0x64, 0xb5, 0x46, 0xfd, 0xbf, 0xab, 0xab, 0x8b,
|
0xbb, 0x96, 0x52, 0x00, 0xe5, 0x08, 0x2d, 0xd1, 0xf1, 0x84, 0xe7, 0x5e, 0x21, 0xe0, 0x71, 0x03,
|
||||||
0x9a, 0x9a, 0x1a, 0x54, 0x55, 0xa5, 0xb7, 0xb7, 0x77, 0xe3, 0xc5, 0x8b, 0x17, 0x4b, 0x14, 0x45,
|
0x8e, 0x88, 0x5e, 0x40, 0xb1, 0x21, 0x6b, 0x17, 0xaf, 0x10, 0x40, 0x43, 0xc8, 0xa1, 0xe7, 0xb5,
|
||||||
0x31, 0xcc, 0xad, 0xa2, 0x28, 0x86, 0x49, 0x9e, 0x3c, 0x3f, 0xd5, 0x64, 0x87, 0xbe, 0x4d, 0x7e,
|
0x3f, 0xd5, 0x32, 0x9e, 0xdb, 0x9e, 0x9b, 0x40, 0xb6, 0x9c, 0x9e, 0xb8, 0x91, 0xe7, 0x75, 0xe4,
|
||||||
0x00, 0xdd, 0xef, 0xf7, 0xbf, 0xa8, 0x4e, 0x06, 0x38, 0xd0, 0xd1, 0x41, 0xf7, 0xcb, 0x2f, 0x23,
|
0x41, 0xc5, 0xe5, 0x0a, 0x88, 0xa9, 0x31, 0xd1, 0x08, 0xd4, 0x19, 0x04, 0xd4, 0x49, 0x5b, 0x68,
|
||||||
0x34, 0x0d, 0x31, 0x41, 0x31, 0x11, 0x0c, 0xd2, 0x7d, 0xf8, 0x30, 0x3d, 0x47, 0x8e, 0x18, 0x80,
|
0xeb, 0xd7, 0x5b, 0x1d, 0xb7, 0x10, 0x71, 0x12, 0x42, 0xfb, 0xe7, 0x7f, 0x3b, 0x9f, 0x24, 0x80,
|
||||||
0x2d, 0x38, 0x78, 0x10, 0xfb, 0xfa, 0xf5, 0x34, 0xed, 0xd9, 0x43, 0xcb, 0x86, 0x0d, 0xa4, 0xed,
|
0xb2, 0xb5, 0x56, 0x72, 0xe8, 0x05, 0x1c, 0xe7, 0x59, 0x3c, 0xad, 0x80, 0x99, 0x85, 0x19, 0xe9,
|
||||||
0xdd, 0x8b, 0xf5, 0x1b, 0xdf, 0x88, 0x40, 0xa0, 0xa6, 0xa6, 0x86, 0x67, 0x9e, 0x79, 0x26, 0xf4,
|
0x0e, 0x6e, 0xf9, 0x6a, 0x0b, 0x54, 0x7e, 0x5b, 0x09, 0x05, 0x3d, 0x05, 0x59, 0x09, 0xa8, 0xb9,
|
||||||
0x9a, 0x23, 0x49, 0x52, 0xce, 0x4c, 0xa8, 0x1a, 0x32, 0xd5, 0xd3, 0x35, 0x21, 0x04, 0xb2, 0x2c,
|
0x5a, 0x63, 0x14, 0x40, 0x25, 0x47, 0x8d, 0xae, 0xf8, 0xab, 0x40, 0x54, 0xd3, 0xf1, 0x27, 0x22,
|
||||||
0x53, 0x5b, 0x5b, 0x3b, 0x5f, 0x9d, 0x3c, 0xa9, 0x58, 0xad, 0xc4, 0x16, 0x15, 0x81, 0x10, 0xe8,
|
0x06, 0xa8, 0x6e, 0xd2, 0xb6, 0xf9, 0x9a, 0x80, 0xcd, 0x49, 0xc7, 0xd3, 0xc5, 0xc0, 0xa9, 0x5f,
|
||||||
0x3e, 0x1f, 0xee, 0x73, 0xe7, 0x40, 0x96, 0xb1, 0x6f, 0xdc, 0x88, 0x6d, 0xd5, 0x2a, 0x63, 0x03,
|
0x4f, 0x25, 0x3c, 0xdc, 0x3a, 0xda, 0x0a, 0x91, 0xd9, 0xc8, 0x8a, 0x18, 0x91, 0xe5, 0x9e, 0x2e,
|
||||||
0x53, 0x7a, 0x3a, 0x52, 0x4c, 0x0c, 0x25, 0xa7, 0x4e, 0xd1, 0xf5, 0xfa, 0xeb, 0x74, 0xfc, 0xf8,
|
0x4f, 0xc6, 0x18, 0x48, 0xc4, 0x8c, 0x12, 0x14, 0x4d, 0xa3, 0x49, 0x02, 0xa4, 0x62, 0xa0, 0xf7,
|
||||||
0xc7, 0xc4, 0x9f, 0x3e, 0x8d, 0x63, 0xef, 0x5e, 0x14, 0x87, 0xc3, 0xf8, 0x2f, 0x21, 0x21, 0x01,
|
0x76, 0x2f, 0x0c, 0xfd, 0x39, 0x04, 0x32, 0x89, 0x2e, 0x13, 0x6f, 0xf9, 0xb9, 0x45, 0xca, 0x42,
|
||||||
0x80, 0xb1, 0xb1, 0xb1, 0xdb, 0x02, 0x33, 0x75, 0x7c, 0x3b, 0x93, 0x1c, 0x9a, 0x8b, 0x8b, 0x8b,
|
0xcc, 0x72, 0x76, 0x09, 0xb0, 0x93, 0x0f, 0xfc, 0x31, 0xe0, 0xac, 0x00, 0x0a, 0x1c, 0x0e, 0x27,
|
||||||
0x23, 0x29, 0x29, 0x49, 0x09, 0xe3, 0x40, 0x8c, 0xdd, 0x4e, 0xc6, 0xce, 0x9d, 0xe3, 0x4a, 0x37,
|
0x38, 0x75, 0x8a, 0x3a, 0x4a, 0x20, 0xce, 0xf7, 0x53, 0x71, 0x7d, 0x1e, 0x90, 0x12, 0x60, 0xd6,
|
||||||
0x3c, 0x4c, 0xef, 0x6b, 0xaf, 0x21, 0xc9, 0x32, 0x6a, 0x62, 0x22, 0x6a, 0x62, 0x62, 0x24, 0xa5,
|
0xd3, 0x46, 0x1e, 0x8d, 0x45, 0x61, 0x62, 0x76, 0x02, 0x06, 0xa6, 0x07, 0x18, 0xf7, 0xde, 0xf3,
|
||||||
0x54, 0x95, 0xac, 0xef, 0x7c, 0x87, 0xd4, 0xb5, 0x6b, 0x69, 0xda, 0xbb, 0x97, 0xd6, 0x8d, 0x1b,
|
0x26, 0x40, 0xbc, 0xed, 0x66, 0x9b, 0x74, 0x0c, 0xa4, 0x28, 0x25, 0xb2, 0xb7, 0xd0, 0xfd, 0xf9,
|
||||||
0xb1, 0xef, 0xde, 0x4d, 0xe2, 0xa6, 0x4d, 0x11, 0xd6, 0x28, 0x5a, 0xab, 0xaf, 0xaf, 0xe7, 0xcc,
|
0xfb, 0xd0, 0x79, 0xab, 0x93, 0xf1, 0xc3, 0xbe, 0xc3, 0xb0, 0xc7, 0xbb, 0x87, 0x25, 0x1f, 0x3b,
|
||||||
0x99, 0x33, 0x51, 0xa9, 0x3d, 0xe1, 0x3f, 0xa8, 0xaa, 0xaa, 0x0a, 0x89, 0x4c, 0x04, 0xc2, 0x92,
|
0xf3, 0x40, 0x6e, 0x87, 0xcd, 0x02, 0xe6, 0xd4, 0x39, 0xc6, 0xab, 0xaf, 0x54, 0x43, 0x4e, 0x7b,
|
||||||
0x24, 0xa1, 0x4e, 0xe7, 0x49, 0x67, 0x63, 0xf6, 0xcc, 0xb9, 0xb9, 0x14, 0xff, 0xf6, 0xb7, 0x74,
|
0x8e, 0xe3, 0x89, 0xac, 0xa8, 0xaf, 0xc8, 0x9a, 0x00, 0x91, 0x87, 0x03, 0x4a, 0x80, 0x0d, 0xaf,
|
||||||
0xbd, 0xfe, 0x3a, 0x37, 0x7e, 0xf6, 0x33, 0xfa, 0x5f, 0x79, 0x05, 0xc9, 0x6c, 0x26, 0xb0, 0x6e,
|
0x8c, 0x67, 0xed, 0xe2, 0xbe, 0xa0, 0xcf, 0x9e, 0x18, 0xd8, 0x7d, 0x75, 0xb7, 0x6d, 0xb5, 0x8f,
|
||||||
0x9d, 0xb1, 0x57, 0xc7, 0x48, 0x07, 0xdb, 0xdf, 0xdf, 0x8e, 0x2e, 0x74, 0x1e, 0xce, 0x7b, 0x98,
|
0x6c, 0x2d, 0x44, 0xfb, 0x94, 0x6f, 0xb2, 0xb2, 0xd0, 0xf4, 0xdc, 0xb4, 0xed, 0xb5, 0x8f, 0x19,
|
||||||
0xe7, 0x97, 0x3d, 0xcf, 0xd1, 0xa3, 0x47, 0x71, 0x3a, 0x9d, 0xe4, 0xe6, 0xe6, 0xe2, 0x74, 0x3a,
|
0x0b, 0x75, 0x4f, 0x75, 0x5b, 0x17, 0x40, 0x7e, 0x2f, 0xf9, 0xa6, 0x64, 0x55, 0x05, 0x4c, 0xfe,
|
||||||
0x51, 0x55, 0x95, 0x60, 0x30, 0x88, 0xa2, 0x28, 0xc4, 0xc6, 0xc6, 0x72, 0xe6, 0xcc, 0x19, 0x96,
|
0x33, 0x69, 0x3d, 0x06, 0xfc, 0x41, 0xbf, 0x69, 0xcf, 0xf2, 0x18, 0x21, 0xef, 0xd2, 0xf5, 0x81,
|
||||||
0x2f, 0x5f, 0x0e, 0x0e, 0xd8, 0xf6, 0xc1, 0x36, 0x74, 0xa1, 0x53, 0x91, 0x5b, 0xc1, 0x8b, 0x4b,
|
0x60, 0x80, 0x71, 0xda, 0x72, 0xc8, 0xb6, 0x47, 0x6d, 0xf1, 0x18, 0x34, 0x1d, 0x03, 0x63, 0x0f,
|
||||||
0x5f, 0xbc, 0xe5, 0x5f, 0xa2, 0x21, 0x20, 0x49, 0x12, 0x42, 0x0e, 0xb3, 0xb0, 0x8c, 0xd4, 0xd7,
|
0xc6, 0x60, 0x6d, 0xc7, 0x5a, 0x69, 0x4f, 0xef, 0xf3, 0xee, 0x63, 0x6f, 0x51, 0x6a, 0x5c, 0x95,
|
||||||
0xd3, 0xfe, 0x8b, 0x5f, 0xf0, 0x4f, 0x6f, 0xbd, 0x15, 0x15, 0x89, 0xfe, 0xb7, 0xdf, 0xa6, 0xf3,
|
0xca, 0x13, 0x32, 0x31, 0xb0, 0xab, 0x7f, 0x17, 0x3b, 0xdf, 0xd2, 0x08, 0x1c, 0x0b, 0x1d, 0x33,
|
||||||
0xd7, 0xbf, 0x26, 0xb6, 0xa4, 0x84, 0xc4, 0x4d, 0x9b, 0x50, 0xec, 0x76, 0xd4, 0x96, 0x16, 0x83,
|
0x65, 0x09, 0xd9, 0x52, 0x22, 0xf2, 0x77, 0x44, 0xda, 0x42, 0x47, 0xfc, 0x47, 0xd2, 0xbd, 0x13,
|
||||||
0x03, 0xbd, 0x9e, 0x5e, 0xae, 0xf4, 0x5d, 0x01, 0x20, 0x3d, 0x2e, 0xdd, 0x38, 0x6b, 0xc9, 0x92,
|
0xa7, 0x17, 0x40, 0x75, 0xbc, 0x8c, 0x80, 0xd2, 0x4b, 0xa5, 0xa6, 0x04, 0x9c, 0xf8, 0xe5, 0x84,
|
||||||
0x25, 0xec, 0xda, 0xb5, 0x8b, 0x43, 0x87, 0x0e, 0xe1, 0xf3, 0xf9, 0x70, 0xb9, 0x5c, 0x94, 0x94,
|
0xb4, 0x80, 0x33, 0x91, 0x33, 0xd6, 0x05, 0x98, 0x9d, 0xa7, 0x65, 0x6b, 0x21, 0x5a, 0x42, 0x91,
|
||||||
0x94, 0xb0, 0x78, 0xf1, 0x62, 0x9e, 0x7a, 0xea, 0x29, 0x84, 0x10, 0x38, 0xbd, 0x4e, 0xda, 0xdd,
|
0x6d, 0x9f, 0xea, 0x25, 0xcb, 0x31, 0x20, 0x3b, 0x8f, 0x9f, 0x8b, 0x9c, 0x93, 0xae, 0x95, 0xfa,
|
||||||
0xed, 0x00, 0x34, 0x0d, 0x35, 0x19, 0x6b, 0x85, 0x10, 0x84, 0x89, 0x90, 0xf0, 0x7a, 0x71, 0x7d,
|
0xa6, 0xfa, 0xa4, 0xf3, 0xc0, 0xfa, 0xce, 0xf5, 0xac, 0x9e, 0xb2, 0x1c, 0x03, 0xb2, 0xd3, 0x60,
|
||||||
0xf8, 0xe1, 0xb8, 0x12, 0x87, 0xe4, 0x56, 0x08, 0x9c, 0xef, 0xbe, 0x4b, 0xf7, 0x9b, 0x6f, 0xe2,
|
0xf3, 0x68, 0xb3, 0x94, 0x85, 0xee, 0x44, 0xef, 0xc0, 0xc6, 0x8b, 0x1b, 0xa5, 0xa7, 0xd1, 0xb2,
|
||||||
0xbd, 0x7e, 0x9d, 0x7f, 0x54, 0x57, 0x33, 0xf7, 0x27, 0x3f, 0xc1, 0x3c, 0x67, 0x0e, 0x00, 0xbe,
|
0x4b, 0x65, 0x99, 0xd6, 0x85, 0xec, 0x11, 0x50, 0x7e, 0xb9, 0x5c, 0x4a, 0xc0, 0xce, 0x1f, 0x76,
|
||||||
0x8e, 0x0e, 0x9a, 0x7f, 0xf4, 0x23, 0xdc, 0x75, 0x75, 0x38, 0x76, 0xef, 0x26, 0x79, 0xcb, 0x16,
|
0x9a, 0xca, 0x03, 0xf5, 0x83, 0xf5, 0xd9, 0x09, 0x30, 0x5b, 0xbb, 0xa4, 0xf2, 0xbc, 0x99, 0x79,
|
||||||
0x84, 0x24, 0xa1, 0xeb, 0x3a, 0x72, 0x77, 0xb7, 0xe1, 0x5f, 0x2c, 0xaa, 0xe5, 0x16, 0xc7, 0x54,
|
0x5f, 0xcf, 0x29, 0x87, 0xe8, 0xdb, 0x73, 0x2c, 0x06, 0x38, 0xdf, 0xd6, 0xbd, 0x0d, 0x1a, 0x87,
|
||||||
0xb3, 0x21, 0x16, 0x21, 0x04, 0xcb, 0xca, 0xca, 0xf8, 0xe0, 0x83, 0x0f, 0xb0, 0x5a, 0xad, 0x2c,
|
0x1b, 0xe1, 0xe4, 0xd8, 0x49, 0xc6, 0x69, 0xfd, 0xa8, 0xb0, 0xb7, 0xd0, 0x72, 0x2d, 0xd4, 0xff,
|
||||||
0x5e, 0xbc, 0x38, 0x8c, 0x98, 0xf1, 0x31, 0xf1, 0xc6, 0xda, 0xc9, 0x63, 0x5d, 0xd7, 0xc3, 0x39,
|
0x7b, 0x7f, 0x22, 0x86, 0x0c, 0xab, 0x12, 0xf4, 0xf1, 0xf1, 0x0d, 0x44, 0x01, 0x5f, 0x1b, 0x45,
|
||||||
0xe0, 0xbf, 0x79, 0x93, 0x9e, 0x43, 0x87, 0x40, 0x08, 0xc4, 0x84, 0xe3, 0xd1, 0xfd, 0x7e, 0xe2,
|
0xbc, 0x8e, 0xa8, 0x4c, 0x12, 0xe0, 0xf9, 0xc2, 0xe3, 0x58, 0xe9, 0x20, 0x63, 0xa1, 0xbb, 0xd1,
|
||||||
0x4b, 0x4b, 0x49, 0xa9, 0xa8, 0xa0, 0x6f, 0x68, 0x88, 0xf4, 0xc7, 0x1f, 0x47, 0xb5, 0xd9, 0x10,
|
0xbb, 0x42, 0x0b, 0xd1, 0x92, 0xba, 0x60, 0x5d, 0xa8, 0x8d, 0xbe, 0x1e, 0x25, 0x09, 0xd8, 0xeb,
|
||||||
0x9a, 0x46, 0xf7, 0x1b, 0x6f, 0xd0, 0xbe, 0x7f, 0x3f, 0xf1, 0x4b, 0x97, 0x92, 0x7f, 0xf2, 0x24,
|
0xdd, 0x6b, 0x6b, 0x87, 0x29, 0x56, 0xaa, 0xae, 0x54, 0x49, 0xaf, 0x8d, 0xa6, 0x5b, 0xdc, 0x15,
|
||||||
0x6a, 0x7a, 0xfa, 0xb8, 0x8c, 0x4e, 0x0a, 0xf6, 0x42, 0x00, 0x96, 0xa6, 0x95, 0x72, 0xe5, 0xc9,
|
0xac, 0xcc, 0x35, 0x08, 0x6b, 0x21, 0x6a, 0xc8, 0xae, 0xfa, 0x9e, 0xe7, 0x00, 0xab, 0x31, 0x95,
|
||||||
0x2b, 0x68, 0x42, 0x23, 0xc5, 0x92, 0x12, 0x21, 0xae, 0x45, 0x45, 0x45, 0x14, 0x16, 0x16, 0x1a,
|
0x61, 0x6d, 0xb4, 0x62, 0x85, 0x00, 0x55, 0x55, 0xe1, 0xec, 0xf8, 0x59, 0x58, 0xd7, 0xb9, 0x8e,
|
||||||
0xca, 0xda, 0xd3, 0xd3, 0x63, 0x7c, 0xbf, 0x37, 0xed, 0x5e, 0x3e, 0xdf, 0xfe, 0x39, 0xba, 0xd0,
|
0x71, 0xda, 0x72, 0x98, 0xe1, 0x3b, 0xbe, 0xdb, 0xb1, 0xfc, 0x8e, 0xbc, 0x10, 0x85, 0xfc, 0xae,
|
||||||
0xb1, 0x28, 0x16, 0x63, 0xcf, 0x08, 0x04, 0x62, 0x0b, 0x0a, 0x58, 0x78, 0xea, 0x14, 0x92, 0x24,
|
0x7c, 0xe1, 0xf9, 0xf4, 0xa0, 0xf4, 0x9c, 0x02, 0x38, 0x16, 0x8b, 0xb1, 0x3e, 0x10, 0x04, 0x23,
|
||||||
0xa1, 0x0d, 0x0f, 0xf3, 0x69, 0x69, 0x29, 0xb2, 0xd9, 0x8c, 0x65, 0xee, 0x5c, 0x52, 0x1e, 0x7d,
|
0xf0, 0xb4, 0x6e, 0x75, 0xba, 0x15, 0x91, 0x9b, 0xf2, 0x7d, 0xe0, 0x90, 0xef, 0x90, 0x25, 0xcb,
|
||||||
0x14, 0x49, 0x55, 0x49, 0x5e, 0xb1, 0x82, 0xd1, 0xab, 0x57, 0x69, 0xde, 0xb3, 0x07, 0x5f, 0x77,
|
0xd0, 0xeb, 0x26, 0xad, 0xf5, 0x2f, 0xc4, 0x17, 0x18, 0x0f, 0xcf, 0x84, 0xa5, 0x63, 0x80, 0x66,
|
||||||
0x37, 0xd9, 0xfb, 0xf6, 0x91, 0x58, 0x51, 0x81, 0xae, 0xeb, 0xd3, 0x9a, 0x3e, 0x49, 0x92, 0xd0,
|
0x2e, 0x13, 0xdf, 0x07, 0xea, 0x8d, 0xb3, 0xd0, 0x98, 0x68, 0x1e, 0xdf, 0xfe, 0xfd, 0x76, 0x29,
|
||||||
0x84, 0xc6, 0x75, 0xd7, 0x75, 0x84, 0x10, 0xe4, 0x27, 0xe7, 0x93, 0x60, 0x4e, 0xf8, 0x52, 0x25,
|
0x01, 0xee, 0x76, 0xf7, 0xb2, 0x05, 0xfe, 0x52, 0x92, 0xae, 0xbf, 0x30, 0x79, 0x41, 0x5a, 0x00,
|
||||||
0x0f, 0xb5, 0xb1, 0xe0, 0x18, 0x67, 0x3b, 0xce, 0xa2, 0xe9, 0x1a, 0x85, 0xb6, 0x42, 0x16, 0x24,
|
0x95, 0x10, 0x82, 0x2f, 0x34, 0x3e, 0x83, 0x80, 0x17, 0x35, 0x01, 0xe5, 0x46, 0x01, 0x8d, 0xec,
|
||||||
0x2f, 0x88, 0x2e, 0x42, 0xb7, 0x0b, 0x07, 0xcc, 0xd9, 0xd9, 0xa4, 0x6d, 0xdd, 0xca, 0x8d, 0x7d,
|
0x89, 0x85, 0xc3, 0x09, 0x70, 0xee, 0x57, 0xfc, 0x30, 0x1c, 0x5c, 0xae, 0xf7, 0x07, 0x03, 0x83,
|
||||||
0xfb, 0xe8, 0x3e, 0x78, 0x10, 0xdb, 0xfa, 0xf5, 0xe4, 0xbd, 0xf1, 0x06, 0x72, 0x42, 0x82, 0x11,
|
0x70, 0xdd, 0x7f, 0x9d, 0x81, 0x9e, 0xd8, 0x50, 0x60, 0x08, 0x46, 0x94, 0x11, 0x08, 0x85, 0x42,
|
||||||
0x5e, 0x47, 0x43, 0x20, 0xb4, 0xd7, 0xc5, 0xce, 0x8b, 0x6c, 0x7a, 0x7b, 0xdc, 0x3a, 0xad, 0x9a,
|
0x20, 0xba, 0x3e, 0x14, 0x0e, 0xb1, 0xff, 0xf8, 0xff, 0x7c, 0x3f, 0x15, 0x37, 0x5e, 0x8f, 0x96,
|
||||||
0xbb, 0x8a, 0x13, 0xeb, 0x4f, 0x44, 0x0d, 0xd7, 0xa3, 0xe9, 0xe3, 0x85, 0xee, 0x0b, 0xec, 0xf8,
|
0xfa, 0x50, 0xf0, 0x8d, 0xec, 0x20, 0x5f, 0x13, 0xd5, 0x0b, 0x78, 0x66, 0x7e, 0x7e, 0xfe, 0xe3,
|
||||||
0x68, 0x07, 0x00, 0x15, 0x79, 0x15, 0x1c, 0x5c, 0x75, 0xd0, 0x08, 0x4f, 0x66, 0x1c, 0x22, 0x0e,
|
0xc5, 0xc5, 0xc5, 0x9b, 0xdc, 0x83, 0xab, 0x09, 0xec, 0x87, 0x82, 0xfd, 0xf9, 0x08, 0xfb, 0xb5,
|
||||||
0x7d, 0xfc, 0x31, 0xcd, 0x7b, 0xf7, 0x82, 0x2c, 0x93, 0xff, 0x9b, 0xdf, 0x10, 0xbf, 0x74, 0x69,
|
0x46, 0x20, 0x20, 0xcf, 0x78, 0xec, 0x3f, 0x1b, 0x75, 0xce, 0x5d, 0xf3, 0xcf, 0xc0, 0x5f, 0x00,
|
||||||
0x98, 0x6d, 0xbe, 0x9d, 0x53, 0x92, 0x24, 0x09, 0xa4, 0x70, 0x13, 0x19, 0x0d, 0x58, 0x31, 0x45,
|
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||||
0xf4, 0x8c, 0x5e, 0x9a, 0xde, 0x87, 0x84, 0x39, 0xb2, 0x68, 0x4e, 0x25, 0x38, 0x30, 0x40, 0xe3,
|
|
||||||
0x81, 0x03, 0x38, 0xdf, 0x79, 0x87, 0xb4, 0xea, 0x6a, 0xd2, 0x77, 0xee, 0x44, 0x32, 0x99, 0x22,
|
|
||||||
0x00, 0x9f, 0x8e, 0xfa, 0xa1, 0x7e, 0xbe, 0x6d, 0x3e, 0x95, 0x45, 0x95, 0x08, 0x21, 0x28, 0x9f,
|
|
||||||
0x53, 0x1e, 0xa1, 0x23, 0xb7, 0xdb, 0x67, 0x61, 0xea, 0x42, 0xb6, 0x17, 0x8f, 0x9b, 0xe0, 0x87,
|
|
||||||
0xb2, 0x1e, 0x32, 0xd6, 0x44, 0x70, 0x20, 0x1a, 0x02, 0xd7, 0xaa, 0xaa, 0x88, 0x2d, 0x28, 0xa0,
|
|
||||||
0xe8, 0xe4, 0x49, 0x2c, 0x45, 0x45, 0x51, 0x11, 0x9d, 0x09, 0x17, 0xb2, 0x12, 0xb2, 0x38, 0xbc,
|
|
||||||
0xee, 0x70, 0x54, 0x20, 0x6f, 0x97, 0xdd, 0x49, 0x92, 0x44, 0x46, 0x7c, 0x06, 0x3f, 0xff, 0xea,
|
|
||||||
0xcf, 0xa3, 0x7a, 0x64, 0x35, 0x1a, 0x5b, 0x84, 0x10, 0x48, 0xb1, 0xb1, 0x78, 0x1e, 0xab, 0xa2,
|
|
||||||
0xd7, 0x96, 0xcd, 0x40, 0xc6, 0x5c, 0x4c, 0x7f, 0xe9, 0x22, 0xa7, 0xcb, 0xc7, 0xc2, 0x85, 0xb9,
|
|
||||||
0xa4, 0xa6, 0x26, 0x7e, 0x29, 0xe0, 0x53, 0x3d, 0x66, 0xbb, 0xbb, 0x9d, 0x6f, 0x9d, 0xfc, 0x16,
|
|
||||||
0x9a, 0xd0, 0x58, 0x99, 0xb7, 0x92, 0x7d, 0x5f, 0xdb, 0x17, 0x15, 0x81, 0x68, 0x7b, 0xb6, 0x0e,
|
|
||||||
0xb7, 0xb2, 0xf9, 0xdd, 0xcd, 0xe8, 0xe8, 0x3c, 0x92, 0xf7, 0x08, 0x2f, 0x3d, 0xf8, 0x52, 0xb8,
|
|
||||||
0x19, 0x0d, 0x04, 0x02, 0x3d, 0x2d, 0x2d, 0x1d, 0x5a, 0x47, 0xc7, 0x90, 0xa2, 0x69, 0x3a, 0x20,
|
|
||||||
0xd1, 0xd8, 0xd8, 0x45, 0xdd, 0xa0, 0x8c, 0x32, 0xdc, 0x86, 0xdc, 0x7e, 0x63, 0x22, 0x24, 0x96,
|
|
||||||
0xf0, 0x7a, 0x55, 0xb6, 0x6c, 0x59, 0x8d, 0xd5, 0x1a, 0xcb, 0xb8, 0x70, 0x4e, 0x3e, 0x30, 0xfc,
|
|
||||||
0xbd, 0xbd, 0xdd, 0xc3, 0x99, 0x33, 0x9f, 0x01, 0x82, 0x96, 0xa1, 0x16, 0xfa, 0x1a, 0xc6, 0xf7,
|
|
||||||
0xfe, 0xac, 0xab, 0x93, 0xb3, 0xe2, 0x0a, 0x7e, 0x7f, 0x02, 0x4e, 0x27, 0x9c, 0x3b, 0xd7, 0x60,
|
|
||||||
0xac, 0x99, 0x3b, 0x37, 0x8d, 0xec, 0xec, 0x70, 0x33, 0xeb, 0xf4, 0x3a, 0x69, 0x73, 0xb7, 0x01,
|
|
||||||
0xd0, 0xe8, 0x6a, 0x8c, 0x74, 0x64, 0x57, 0xaf, 0x9a, 0x3f, 0x3f, 0x7f, 0xfe, 0xaa, 0xbc, 0x74,
|
|
||||||
0x69, 0x31, 0x8a, 0xa2, 0x20, 0x49, 0x32, 0x0e, 0x47, 0x12, 0x8b, 0x17, 0xcf, 0x27, 0x18, 0xd4,
|
|
||||||
0xd0, 0x75, 0x1d, 0x49, 0x92, 0x19, 0x5f, 0x17, 0xca, 0xd8, 0x24, 0x64, 0x39, 0x9a, 0xe5, 0xba,
|
|
||||||
0x35, 0x5e, 0xb3, 0x66, 0x9d, 0x31, 0x77, 0x7f, 0x8a, 0x9d, 0xe3, 0xf9, 0xbf, 0x0b, 0xfb, 0xfe,
|
|
||||||
0xfd, 0xef, 0x3f, 0x37, 0x21, 0xcb, 0x3a, 0x7e, 0xbf, 0x46, 0x20, 0x10, 0xa4, 0xb6, 0xb6, 0x15,
|
|
||||||
0x4d, 0xbb, 0xca, 0xca, 0x95, 0x05, 0x06, 0x77, 0xe2, 0xd4, 0x38, 0x03, 0x19, 0xab, 0xc9, 0x6a,
|
|
||||||
0x8c, 0x83, 0xc1, 0xe0, 0x38, 0x02, 0x79, 0x79, 0xe9, 0x7b, 0x2a, 0x2b, 0xbf, 0x2a, 0x99, 0xcd,
|
|
||||||
0x26, 0x23, 0x06, 0x1f, 0x1a, 0xf2, 0x30, 0x34, 0xe4, 0xc5, 0xe3, 0x19, 0xc3, 0xe7, 0x0b, 0x22,
|
|
||||||
0xcb, 0xca, 0x04, 0xc0, 0xe1, 0xbd, 0x2c, 0x2b, 0xf4, 0xf5, 0x75, 0x73, 0xfc, 0xf8, 0x9b, 0x98,
|
|
||||||
0x4c, 0x16, 0xb6, 0x6c, 0x79, 0x1c, 0xbf, 0xdf, 0x4f, 0x4f, 0x4f, 0x3b, 0x9a, 0xe6, 0x43, 0xd7,
|
|
||||||
0x75, 0x12, 0x13, 0xed, 0x64, 0x65, 0xcd, 0x23, 0x3d, 0x3d, 0x87, 0x9b, 0x3d, 0x9d, 0x38, 0x07,
|
|
||||||
0x9d, 0x48, 0x12, 0x84, 0x88, 0xac, 0xeb, 0xe0, 0xf5, 0xfa, 0xc8, 0x76, 0x14, 0x50, 0x5a, 0x5a,
|
|
||||||
0xc4, 0x47, 0x1f, 0x7d, 0xc2, 0xd8, 0x58, 0xc0, 0x00, 0xb4, 0xd8, 0x5e, 0x4c, 0xe3, 0x53, 0x8d,
|
|
||||||
0x68, 0xba, 0x86, 0x45, 0xb1, 0x44, 0x5a, 0xa1, 0x8c, 0x8c, 0xe4, 0x7c, 0xb7, 0x7b, 0x18, 0x49,
|
|
||||||
0x4a, 0x44, 0x51, 0x14, 0x84, 0x10, 0xf8, 0x7c, 0x7e, 0x46, 0x47, 0xbd, 0xb8, 0xdd, 0x1e, 0xc6,
|
|
||||||
0xc6, 0x42, 0x08, 0xc8, 0x11, 0xbd, 0xa2, 0x28, 0xbc, 0xf4, 0xaf, 0xff, 0x42, 0xfe, 0xe3, 0x47,
|
|
||||||
0xe9, 0x73, 0x7b, 0xd8, 0xff, 0xcb, 0x9d, 0xbc, 0xf2, 0x6f, 0xbf, 0x44, 0x92, 0x86, 0x39, 0x72,
|
|
||||||
0xe4, 0x08, 0x6b, 0xd6, 0xac, 0xe1, 0xeb, 0x5f, 0x7f, 0x90, 0x9e, 0x9e, 0x6e, 0xbe, 0xf8, 0xe2,
|
|
||||||
0x02, 0x0d, 0xed, 0x43, 0x54, 0x6d, 0xac, 0x20, 0xa0, 0x43, 0xe7, 0xa8, 0x42, 0x9f, 0x47, 0xc6,
|
|
||||||
0x35, 0x26, 0xe3, 0x72, 0xfb, 0xf0, 0x35, 0x5f, 0xc6, 0x6c, 0x76, 0x30, 0x32, 0x12, 0xc4, 0xed,
|
|
||||||
0xbe, 0x15, 0x82, 0x7b, 0x02, 0x1e, 0x8e, 0xfe, 0xfd, 0x28, 0x41, 0x3d, 0xc8, 0x22, 0xfb, 0x22,
|
|
||||||
0xca, 0xb2, 0xca, 0xc2, 0x75, 0xc0, 0xe7, 0x0b, 0xdc, 0x71, 0x79, 0x4e, 0x08, 0x9d, 0x2f, 0xba,
|
|
||||||
0xdc, 0x34, 0x34, 0xa6, 0xa0, 0x6b, 0xc9, 0x14, 0x0e, 0x04, 0xc8, 0xcd, 0xcd, 0xe5, 0x87, 0x3f,
|
|
||||||
0x7c, 0x8e, 0x13, 0x27, 0x4e, 0x50, 0x5f, 0x5f, 0xcf, 0xe6, 0xcd, 0x5b, 0x89, 0x8d, 0x8d, 0x23,
|
|
||||||
0x23, 0x23, 0x9b, 0x76, 0x57, 0x2d, 0xb5, 0x6d, 0xe0, 0x09, 0x2a, 0x13, 0xda, 0xa2, 0x03, 0x3a,
|
|
||||||
0x09, 0x8a, 0x17, 0x49, 0x92, 0x27, 0xf2, 0x07, 0x7f, 0xd8, 0x19, 0xd7, 0x06, 0xae, 0xf1, 0xd3,
|
|
||||||
0x4f, 0x7e, 0x0a, 0xc0, 0x8a, 0x9c, 0x15, 0x06, 0x02, 0x06, 0x07, 0xee, 0xb4, 0x62, 0xe0, 0xf1,
|
|
||||||
0xb8, 0xb9, 0x79, 0xb3, 0x81, 0x5d, 0x55, 0x0f, 0xf3, 0x1f, 0xa7, 0xab, 0x20, 0x38, 0xc6, 0x0f,
|
|
||||||
0x7e, 0x50, 0x05, 0xc0, 0xb3, 0xcf, 0x3e, 0x4b, 0x77, 0x77, 0x37, 0x3b, 0x76, 0xec, 0x30, 0x2c,
|
|
||||||
0x8b, 0xaa, 0xaa, 0x3c, 0xb8, 0x70, 0x2e, 0xcd, 0x2d, 0xe7, 0x19, 0x1b, 0x76, 0xd3, 0xd6, 0xd6,
|
|
||||||
0x41, 0x71, 0xf1, 0x72, 0x02, 0x01, 0x1d, 0x9f, 0x4f, 0xc3, 0x9e, 0x36, 0x0f, 0x97, 0x6b, 0x74,
|
|
||||||
0xc6, 0xe7, 0x47, 0xc4, 0x42, 0xb3, 0xa3, 0xbc, 0xa0, 0xa3, 0xa3, 0x81, 0xd5, 0xab, 0xd7, 0x60,
|
|
||||||
0xb1, 0x98, 0xf9, 0xf6, 0xb7, 0xdd, 0xc4, 0xc5, 0x99, 0xb1, 0xdb, 0x53, 0x01, 0x28, 0x2f, 0x2f,
|
|
||||||
0xe7, 0xfc, 0xf9, 0x8f, 0x11, 0x42, 0x27, 0x18, 0xd4, 0x8d, 0x75, 0x59, 0x59, 0x73, 0x70, 0x38,
|
|
||||||
0x32, 0x09, 0x04, 0x34, 0x3c, 0x9e, 0x11, 0x2e, 0x5c, 0xb8, 0xcc, 0x92, 0x25, 0x6b, 0x70, 0xb9,
|
|
||||||
0x46, 0x19, 0x1a, 0x1a, 0x35, 0x14, 0xb7, 0xbe, 0xbe, 0xde, 0x58, 0x53, 0x98, 0x52, 0xc8, 0x73,
|
|
||||||
0x4b, 0x9e, 0x43, 0xd3, 0x35, 0xee, 0x75, 0xdc, 0x1b, 0x89, 0xc0, 0x9d, 0x30, 0xa0, 0xa9, 0xe9,
|
|
||||||
0x33, 0x96, 0x2d, 0xfb, 0x67, 0x83, 0xed, 0xa9, 0xa9, 0xa9, 0x98, 0x4c, 0xca, 0xac, 0xf6, 0x88,
|
|
||||||
0x89, 0xb1, 0x90, 0x97, 0x97, 0x41, 0x6f, 0x6f, 0x3b, 0x26, 0x53, 0x4a, 0xd8, 0xb7, 0x63, 0xc7,
|
|
||||||
0x8e, 0x61, 0xb3, 0xd9, 0x70, 0x38, 0x1c, 0xc4, 0xab, 0xf1, 0x7c, 0xef, 0xfe, 0xef, 0x45, 0x38,
|
|
||||||
0xb2, 0x59, 0xc5, 0x42, 0x53, 0x45, 0x27, 0x3b, 0xdb, 0x81, 0xc5, 0x62, 0x8d, 0xfa, 0x3d, 0x10,
|
|
||||||
0xf0, 0xd3, 0xd6, 0xd6, 0xc6, 0xe0, 0xe0, 0x20, 0x00, 0x69, 0x69, 0xe9, 0x64, 0x66, 0x66, 0x45,
|
|
||||||
0xfd, 0x37, 0x3b, 0x3b, 0x97, 0xda, 0xda, 0xb3, 0x14, 0x14, 0xac, 0x0e, 0x9b, 0x3f, 0x7c, 0xf8,
|
|
||||||
0x30, 0xe9, 0xe9, 0x49, 0xd3, 0xe6, 0xca, 0xaa, 0xaa, 0x22, 0x84, 0x10, 0x77, 0x84, 0x40, 0x57,
|
|
||||||
0xd7, 0x75, 0x96, 0x2d, 0xfb, 0x5a, 0xd4, 0x6f, 0x9d, 0x9d, 0xed, 0xb4, 0xb5, 0xb5, 0xa1, 0xaa,
|
|
||||||
0x26, 0x86, 0x86, 0x46, 0x90, 0x24, 0x09, 0x9f, 0xcf, 0xcf, 0xa7, 0x9f, 0xd6, 0x51, 0x56, 0x56,
|
|
||||||
0x8e, 0xd9, 0x1c, 0x37, 0x45, 0x8e, 0xe1, 0xbe, 0xfb, 0x96, 0x50, 0x57, 0xf7, 0x09, 0xd9, 0xd9,
|
|
||||||
0xf7, 0x19, 0x22, 0xd4, 0xd3, 0xd3, 0x43, 0x30, 0x38, 0x12, 0x35, 0x4a, 0x08, 0x51, 0xbf, 0xa1,
|
|
||||||
0xa1, 0xa1, 0xff, 0x8e, 0x94, 0xd8, 0xe1, 0x70, 0xa0, 0xeb, 0x91, 0x86, 0xab, 0xb7, 0xb7, 0x9b,
|
|
||||||
0xc1, 0xc1, 0x41, 0x46, 0x47, 0x35, 0xac, 0x56, 0xab, 0x51, 0x95, 0xd0, 0xb4, 0x20, 0x16, 0x8b,
|
|
||||||
0x87, 0x0b, 0x17, 0xfe, 0x4c, 0x59, 0x59, 0xf9, 0xd4, 0x82, 0x20, 0xb1, 0xb1, 0x56, 0x02, 0x81,
|
|
||||||
0x81, 0x30, 0x8f, 0x7e, 0xe0, 0xc0, 0xab, 0xaf, 0xc8, 0xf2, 0x48, 0xff, 0xd4, 0xca, 0x21, 0x20,
|
|
||||||
0x64, 0x59, 0xd6, 0x15, 0x45, 0xf1, 0x0d, 0x0e, 0x0e, 0xbe, 0x35, 0x6b, 0x04, 0x7c, 0xbe, 0x31,
|
|
||||||
0x12, 0x13, 0x93, 0x22, 0xe6, 0x15, 0x45, 0xa2, 0xa3, 0xa3, 0x1d, 0xbf, 0x5f, 0x22, 0x3b, 0x7b,
|
|
||||||
0x1e, 0x03, 0x03, 0x7d, 0xfc, 0xfe, 0xf7, 0x27, 0x70, 0x38, 0x1c, 0xac, 0x5c, 0xb9, 0x0e, 0x9b,
|
|
||||||
0xad, 0x80, 0xae, 0xae, 0x26, 0xde, 0x7b, 0xef, 0x14, 0x6b, 0xd7, 0xae, 0x27, 0x10, 0xd0, 0xc2,
|
|
||||||
0x3c, 0xaa, 0xdd, 0x6e, 0x0b, 0xdb, 0xef, 0xf2, 0xe5, 0xab, 0x57, 0x9a, 0x9b, 0x2f, 0xb6, 0x47,
|
|
||||||
0x93, 0x50, 0xc0, 0x07, 0x0c, 0x44, 0x24, 0xf5, 0x33, 0x69, 0x2e, 0x57, 0x1f, 0x76, 0x7b, 0x5e,
|
|
||||||
0x64, 0x52, 0xdf, 0xdf, 0x4b, 0x7c, 0x7c, 0x3c, 0x99, 0x59, 0x59, 0x0c, 0x38, 0xfb, 0x78, 0xf4,
|
|
||||||
0xd1, 0x72, 0x02, 0x81, 0x71, 0x6f, 0xba, 0x60, 0xc1, 0x21, 0x4e, 0xbf, 0x77, 0x0e, 0xc1, 0x1c,
|
|
||||||
0x5c, 0xae, 0x7e, 0x14, 0x45, 0x9a, 0x22, 0x1a, 0x90, 0x94, 0x64, 0xc3, 0xe7, 0xf3, 0x13, 0x32,
|
|
||||||
0x2a, 0x56, 0x6b, 0x4a, 0x17, 0x10, 0x0d, 0x01, 0x6d, 0xe2, 0xf1, 0x00, 0x6e, 0xf9, 0x56, 0x10,
|
|
||||||
0x36, 0x53, 0x04, 0x7a, 0xb1, 0x58, 0x62, 0xa3, 0xcc, 0x0f, 0x10, 0x08, 0x6a, 0xd8, 0x52, 0x12,
|
|
||||||
0x79, 0xe7, 0xdd, 0xff, 0x32, 0x80, 0x07, 0xb8, 0x7e, 0xfd, 0x3a, 0x7f, 0xfb, 0xdb, 0x25, 0xb2,
|
|
||||||
0x73, 0xb2, 0x48, 0x48, 0x48, 0xa0, 0xb9, 0xb9, 0x29, 0x62, 0x7d, 0x52, 0x92, 0x0d, 0x97, 0xab,
|
|
||||||
0xc7, 0xd0, 0x81, 0xc2, 0xc2, 0xf2, 0x66, 0xe0, 0x5a, 0x94, 0xe7, 0xba, 0x10, 0xa2, 0x51, 0x08,
|
|
||||||
0x71, 0x53, 0x08, 0x31, 0x3a, 0x6b, 0x11, 0x92, 0x24, 0x99, 0x68, 0x51, 0x74, 0x28, 0x2d, 0xd4,
|
|
||||||
0x75, 0x1d, 0x6b, 0x7c, 0xa4, 0x75, 0x8a, 0xb7, 0x5a, 0x8d, 0xc0, 0x30, 0x74, 0x91, 0x32, 0xd5,
|
|
||||||
0xa3, 0x2b, 0x8a, 0x32, 0x49, 0x24, 0x55, 0x21, 0x66, 0x70, 0x81, 0x27, 0xcf, 0x56, 0x84, 0x92,
|
|
||||||
0x93, 0xd3, 0x18, 0x1b, 0x8b, 0xf4, 0x96, 0xa9, 0xa9, 0x76, 0x4c, 0x31, 0x31, 0x8c, 0x8c, 0xb8,
|
|
||||||
0xf9, 0xe6, 0x63, 0x9b, 0x48, 0x49, 0xb9, 0x65, 0xd7, 0x1f, 0x7a, 0xa8, 0x8c, 0xe2, 0xe2, 0x12,
|
|
||||||
0x7a, 0x7b, 0xbb, 0x71, 0xbb, 0xdd, 0xe4, 0xe7, 0xcf, 0x8f, 0x4c, 0x59, 0x87, 0x06, 0x49, 0x4a,
|
|
||||||
0x4a, 0x9f, 0x75, 0x61, 0x6d, 0xd6, 0x8e, 0xcc, 0x66, 0x73, 0xe0, 0x76, 0x0f, 0x61, 0xb1, 0x24,
|
|
||||||
0x4c, 0x41, 0xcc, 0x4e, 0x43, 0xc3, 0x15, 0xdc, 0x23, 0xa3, 0xe4, 0xcc, 0xc9, 0xe7, 0xec, 0xf9,
|
|
||||||
0x8b, 0xd4, 0x7c, 0xf8, 0x1e, 0x76, 0xbb, 0x83, 0x65, 0xcb, 0xcb, 0xf0, 0x7a, 0xbd, 0xf4, 0x76,
|
|
||||||
0x77, 0xe0, 0x74, 0x3a, 0xd1, 0xb4, 0xc8, 0x8c, 0x6c, 0x70, 0x70, 0x90, 0xa4, 0xa4, 0x7b, 0x66,
|
|
||||||
0x5c, 0xa9, 0x08, 0xe3, 0xc0, 0x6c, 0x44, 0x28, 0x26, 0xc6, 0xc4, 0xe8, 0xe8, 0x50, 0x94, 0x0b,
|
|
||||||
0x0c, 0x9d, 0xd2, 0xd2, 0x45, 0x20, 0x34, 0x6e, 0xb4, 0x7e, 0x81, 0xa6, 0x05, 0x58, 0xfd, 0xc8,
|
|
||||||
0x5a, 0x16, 0x3f, 0xb0, 0x14, 0x97, 0x6b, 0x80, 0x96, 0xa6, 0x6b, 0xb4, 0xb6, 0xb6, 0x50, 0x59,
|
|
||||||
0xb9, 0x35, 0x22, 0xeb, 0x8a, 0x89, 0x51, 0xe8, 0xef, 0x1f, 0xfe, 0x9f, 0x5d, 0xb3, 0xce, 0xa6,
|
|
||||||
0xf5, 0xf4, 0xf4, 0x93, 0x9f, 0x1f, 0x29, 0x9e, 0x29, 0x29, 0xe3, 0x71, 0xd0, 0x9f, 0xfe, 0x54,
|
|
||||||
0x8b, 0x84, 0x3e, 0xa1, 0x2f, 0x3a, 0x63, 0x63, 0x63, 0x34, 0x37, 0x37, 0xf3, 0xd8, 0x63, 0x1b,
|
|
||||||
0x89, 0x8d, 0x8d, 0x27, 0x10, 0x08, 0xbf, 0xec, 0x70, 0xbb, 0x5d, 0x58, 0xad, 0x19, 0x5f, 0x9a,
|
|
||||||
0x27, 0xff, 0xaf, 0xe8, 0xc0, 0x78, 0x02, 0xf4, 0x15, 0x9a, 0x9a, 0xfe, 0x1e, 0x71, 0x88, 0x10,
|
|
||||||
0xe3, 0x61, 0x43, 0x65, 0xe5, 0x66, 0x0a, 0x0b, 0x0b, 0xf1, 0x7a, 0x3d, 0xf8, 0x7c, 0x3e, 0x4a,
|
|
||||||
0x4b, 0x17, 0x51, 0x5d, 0xfd, 0x34, 0xc9, 0xc9, 0xb6, 0x48, 0x00, 0x64, 0xa8, 0xab, 0xfb, 0x0b,
|
|
||||||
0x05, 0x05, 0x0f, 0xcc, 0xa8, 0xa2, 0x7d, 0xdb, 0x1b, 0x9a, 0x99, 0x36, 0x93, 0xc9, 0x42, 0x5f,
|
|
||||||
0x9f, 0xce, 0xf0, 0xb0, 0x13, 0x87, 0x23, 0x23, 0x7a, 0x15, 0x22, 0x2b, 0x8b, 0xec, 0xec, 0x1c,
|
|
||||||
0x23, 0x1a, 0x0d, 0x06, 0xb5, 0x69, 0x82, 0xc2, 0x7f, 0x50, 0x52, 0xb2, 0x6a, 0x8a, 0x29, 0x9f,
|
|
||||||
0x39, 0x3c, 0x77, 0xc4, 0x01, 0x80, 0x39, 0x73, 0x0a, 0xb8, 0x74, 0xe9, 0x12, 0xc1, 0x60, 0xe0,
|
|
||||||
0x8e, 0xef, 0xb7, 0x3c, 0x1e, 0x37, 0xc3, 0xc3, 0x1a, 0xc9, 0xc9, 0xf6, 0x19, 0x5d, 0x9a, 0xdf,
|
|
||||||
0x06, 0x81, 0x3b, 0x4b, 0x68, 0xee, 0xb9, 0xe7, 0x7e, 0xfe, 0xf0, 0x87, 0xd3, 0xf4, 0xf5, 0xf5,
|
|
||||||
0xcc, 0x7a, 0xed, 0x8d, 0x1b, 0x8d, 0xd4, 0xd5, 0x7d, 0xc6, 0x92, 0x25, 0xab, 0xa2, 0x00, 0x3f,
|
|
||||||
0x7b, 0x1d, 0xb8, 0xa3, 0x94, 0xd2, 0x6c, 0xb6, 0x50, 0x5a, 0xba, 0x82, 0xbf, 0xfe, 0xf5, 0x73,
|
|
||||||
0x2e, 0x5d, 0xfa, 0xf3, 0x8c, 0xae, 0x52, 0xbd, 0x5e, 0x2f, 0x35, 0x35, 0x1f, 0xa2, 0xeb, 0xc9,
|
|
||||||
0x94, 0x97, 0xaf, 0x9f, 0xa6, 0xa8, 0x35, 0x73, 0x98, 0x54, 0x80, 0x96, 0x96, 0xde, 0xda, 0x91,
|
|
||||||
0x11, 0xcf, 0x37, 0x13, 0xa3, 0x5c, 0x23, 0xcd, 0x8c, 0x13, 0x5f, 0xc1, 0xeb, 0x1d, 0xe5, 0xf8,
|
|
||||||
0xf1, 0xdf, 0x91, 0x9e, 0x6e, 0x27, 0x27, 0x27, 0x8b, 0xcc, 0xcc, 0x4c, 0x1c, 0x8e, 0x34, 0x02,
|
|
||||||
0x01, 0x3f, 0x3d, 0x3d, 0xbd, 0x74, 0x76, 0x76, 0xd2, 0xd5, 0xd5, 0x8d, 0xdb, 0xed, 0x63, 0xd9,
|
|
||||||
0xb2, 0xb5, 0x98, 0xcd, 0x96, 0x69, 0x32, 0x3d, 0x70, 0xbb, 0x47, 0x9c, 0x92, 0x24, 0x35, 0xcf,
|
|
||||||
0x28, 0x32, 0x10, 0x42, 0x50, 0x51, 0xf1, 0xfc, 0x03, 0x99, 0x99, 0xc9, 0xff, 0xb9, 0x60, 0x41,
|
|
||||||
0x56, 0xa1, 0x10, 0xe3, 0xf5, 0x1e, 0xbf, 0x5f, 0xc3, 0xe7, 0x0b, 0x10, 0x0c, 0xea, 0x84, 0x8a,
|
|
||||||
0x5d, 0xe3, 0xd5, 0x88, 0x90, 0x85, 0x90, 0x8d, 0x8b, 0xf1, 0xd0, 0x9c, 0x2c, 0x2b, 0x13, 0x3e,
|
|
||||||
0xc1, 0x47, 0x30, 0x38, 0x8c, 0xaa, 0x8e, 0xa1, 0x69, 0x12, 0x8a, 0x92, 0x88, 0xc5, 0x62, 0x43,
|
|
||||||
0x55, 0xcd, 0x46, 0x5d, 0xe8, 0xd6, 0x75, 0xe9, 0x78, 0x8d, 0x33, 0x10, 0x18, 0xaf, 0x0b, 0xf5,
|
|
||||||
0xf5, 0x0d, 0xf4, 0x8d, 0x8c, 0x8c, 0xee, 0x39, 0x7c, 0x78, 0xd7, 0x91, 0x99, 0x20, 0xf0, 0xdf,
|
|
||||||
0xd1, 0x1d, 0xfc, 0xa3, 0x61, 0x31, 0x70, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
|
|
||||||
0xae, 0x42, 0x60, 0x82,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const BITMAP_OPAQUE icon_bitmap2component_xpm[1] = {{ png, sizeof( png ), "icon_bitmap2component_xpm" }};
|
const BITMAP_OPAQUE icon_bitmap2component_xpm[1] = {{ png, sizeof( png ), "icon_bitmap2component_xpm" }};
|
||||||
|
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
@ -13,8 +13,8 @@
|
||||||
inkscape:export-ydpi="90.000000"
|
inkscape:export-ydpi="90.000000"
|
||||||
inkscape:export-xdpi="90.000000"
|
inkscape:export-xdpi="90.000000"
|
||||||
inkscape:export-filename="/home/steven/edit-find-48.png"
|
inkscape:export-filename="/home/steven/edit-find-48.png"
|
||||||
sodipodi:docname="find.svg.BASE"
|
sodipodi:docname="find.svg"
|
||||||
inkscape:version="0.48.2 r9819"
|
inkscape:version="0.48.3.1 r9886"
|
||||||
sodipodi:version="0.32"
|
sodipodi:version="0.32"
|
||||||
id="svg249"
|
id="svg249"
|
||||||
height="26"
|
height="26"
|
||||||
|
@ -59,18 +59,6 @@
|
||||||
offset="1.0000000"
|
offset="1.0000000"
|
||||||
style="stop-color:#ffffff;stop-opacity:0.24761905;" />
|
style="stop-color:#ffffff;stop-opacity:0.24761905;" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
|
||||||
id="linearGradient4477"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
id="stop4479"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#000000;stop-opacity:1;" />
|
|
||||||
<stop
|
|
||||||
id="stop4481"
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#000000;stop-opacity:0;" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="linearGradient2366">
|
id="linearGradient2366">
|
||||||
<stop
|
<stop
|
||||||
|
@ -97,66 +85,6 @@
|
||||||
offset="1.0000000"
|
offset="1.0000000"
|
||||||
id="stop2850" />
|
id="stop2850" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient4477"
|
|
||||||
id="radialGradient1527"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1,0,0,0.237968,0,28.93278)"
|
|
||||||
cx="24.130018"
|
|
||||||
cy="37.967922"
|
|
||||||
fx="24.130018"
|
|
||||||
fy="37.967922"
|
|
||||||
r="16.528622" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient2846"
|
|
||||||
id="linearGradient1529"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="27.366341"
|
|
||||||
y1="26.580296"
|
|
||||||
x2="31.335964"
|
|
||||||
y2="30.557772" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient4440"
|
|
||||||
id="linearGradient1531"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.334593,0,0,1.291292,-6.973842,-7.460658)"
|
|
||||||
x1="30.65625"
|
|
||||||
y1="34"
|
|
||||||
x2="33.21875"
|
|
||||||
y2="31.0625" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient2366"
|
|
||||||
id="linearGradient1533"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="18.292673"
|
|
||||||
y1="13.602121"
|
|
||||||
x2="17.500893"
|
|
||||||
y2="25.743469" />
|
|
||||||
<radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient4454"
|
|
||||||
id="radialGradient1537"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
cx="18.240929"
|
|
||||||
cy="21.817987"
|
|
||||||
fx="18.240929"
|
|
||||||
fy="21.817987"
|
|
||||||
r="8.3085051" />
|
|
||||||
<radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient4467"
|
|
||||||
id="radialGradient1539"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(2.592963,0,0,2.252104,-25.05975,-18.941)"
|
|
||||||
cx="15.414371"
|
|
||||||
cy="13.078408"
|
|
||||||
fx="15.414371"
|
|
||||||
fy="13.078408"
|
|
||||||
r="6.65625" />
|
|
||||||
<radialGradient
|
<radialGradient
|
||||||
id="aigrd2-8"
|
id="aigrd2-8"
|
||||||
cx="20.892099"
|
cx="20.892099"
|
||||||
|
@ -338,18 +266,279 @@
|
||||||
fx="8.824419"
|
fx="8.824419"
|
||||||
fy="3.7561285"
|
fy="3.7561285"
|
||||||
r="37.751713" />
|
r="37.751713" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2846-1-5"
|
||||||
|
id="linearGradient2730-7"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1,0,0,1,48.18409,0)"
|
||||||
|
x1="27.366341"
|
||||||
|
y1="26.580296"
|
||||||
|
x2="31.335964"
|
||||||
|
y2="30.557772" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2846-1-5">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#8a8a8a;stop-opacity:1.0000000;"
|
||||||
|
offset="0.0000000"
|
||||||
|
id="stop2848-0-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#484848;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop2850-4-6" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4440-1-1"
|
||||||
|
id="linearGradient2732-2"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1.334593,0,0,1.291292,55.15793,-7.460658)"
|
||||||
|
x1="30.65625"
|
||||||
|
y1="34"
|
||||||
|
x2="33.21875"
|
||||||
|
y2="31.0625" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4440-1-1">
|
||||||
|
<stop
|
||||||
|
id="stop4442-1-7"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#7d7d7d;stop-opacity:1;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#b1b1b1;stop-opacity:1.0000000;"
|
||||||
|
offset="0.50000000"
|
||||||
|
id="stop4448-8-8" />
|
||||||
|
<stop
|
||||||
|
id="stop4444-6-5"
|
||||||
|
offset="1.0000000"
|
||||||
|
style="stop-color:#686868;stop-opacity:1.0000000;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2366-4-4"
|
||||||
|
id="linearGradient2734-7"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1,0,0,1,44.17827,0)"
|
||||||
|
x1="18.292673"
|
||||||
|
y1="13.602121"
|
||||||
|
x2="17.500893"
|
||||||
|
y2="25.743469" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2366-4-4">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop2368-3-1" />
|
||||||
|
<stop
|
||||||
|
id="stop2374-4-8"
|
||||||
|
offset="0.50000000"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.21904762;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop2370-7-5" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4454-7-7"
|
||||||
|
id="radialGradient2736-9"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1,0,0,1,43.352,0)"
|
||||||
|
cx="18.240929"
|
||||||
|
cy="21.817987"
|
||||||
|
fx="18.240929"
|
||||||
|
fy="21.817987"
|
||||||
|
r="8.3085051" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4454-7-7">
|
||||||
|
<stop
|
||||||
|
id="stop4456-0-5"
|
||||||
|
offset="0.0000000"
|
||||||
|
style="stop-color:#729fcf;stop-opacity:0.20784314;" />
|
||||||
|
<stop
|
||||||
|
id="stop4458-7-3"
|
||||||
|
offset="1.0000000"
|
||||||
|
style="stop-color:#729fcf;stop-opacity:0.67619050;" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
r="6.65625"
|
||||||
|
fy="13.078408"
|
||||||
|
fx="15.414371"
|
||||||
|
cy="13.078408"
|
||||||
|
cx="15.414371"
|
||||||
|
gradientTransform="matrix(2.592963,0,0,2.252104,-25.05976,-18.941)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="radialGradient3411"
|
||||||
|
xlink:href="#linearGradient4467-4-8"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4467-4-8">
|
||||||
|
<stop
|
||||||
|
id="stop4469-5-3"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||||
|
<stop
|
||||||
|
id="stop4471-3-1"
|
||||||
|
offset="1.0000000"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.24761905;" />
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient
|
||||||
|
r="6.65625"
|
||||||
|
fy="13.078408"
|
||||||
|
fx="15.414371"
|
||||||
|
cy="13.078408"
|
||||||
|
cx="15.414371"
|
||||||
|
gradientTransform="matrix(2.592963,0,0,2.252104,-25.05976,-18.941)"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="radialGradient3143"
|
||||||
|
xlink:href="#linearGradient4467-4-8"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2846-1-5"
|
||||||
|
id="linearGradient3953"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1,0,0,1,48.18409,0)"
|
||||||
|
x1="27.366341"
|
||||||
|
y1="26.580296"
|
||||||
|
x2="31.335964"
|
||||||
|
y2="30.557772" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4440-1-1"
|
||||||
|
id="linearGradient3955"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1.334593,0,0,1.291292,55.15793,-7.460658)"
|
||||||
|
x1="30.65625"
|
||||||
|
y1="34"
|
||||||
|
x2="33.21875"
|
||||||
|
y2="31.0625" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2366-4-4"
|
||||||
|
id="linearGradient3957"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1,0,0,1,44.17827,0)"
|
||||||
|
x1="18.292673"
|
||||||
|
y1="13.602121"
|
||||||
|
x2="17.500893"
|
||||||
|
y2="25.743469" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4454-7-7"
|
||||||
|
id="radialGradient3959"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1,0,0,1,43.352,0)"
|
||||||
|
cx="18.240929"
|
||||||
|
cy="21.817987"
|
||||||
|
fx="18.240929"
|
||||||
|
fy="21.817987"
|
||||||
|
r="8.3085051" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4467-4-8"
|
||||||
|
id="radialGradient3961"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(2.592963,0,0,2.252104,-25.05976,-18.941)"
|
||||||
|
cx="15.414371"
|
||||||
|
cy="13.078408"
|
||||||
|
fx="15.414371"
|
||||||
|
fy="13.078408"
|
||||||
|
r="6.65625" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4467-4-8"
|
||||||
|
id="radialGradient3964"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1.1830991,0,0,1.0154904,7.797398,16.499809)"
|
||||||
|
cx="15.414371"
|
||||||
|
cy="13.078408"
|
||||||
|
fx="15.414371"
|
||||||
|
fy="13.078408"
|
||||||
|
r="6.65625" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4440-1-1"
|
||||||
|
id="linearGradient3970"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-0.60893882,0,0,0.58225314,4.761172,21.67638)"
|
||||||
|
x1="30.65625"
|
||||||
|
y1="34"
|
||||||
|
x2="33.21875"
|
||||||
|
y2="31.0625" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2846-1-5"
|
||||||
|
id="linearGradient3974"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-0.45627305,0,0,0.45090742,1.5791967,25.040446)"
|
||||||
|
x1="27.366341"
|
||||||
|
y1="26.580296"
|
||||||
|
x2="31.335964"
|
||||||
|
y2="30.557772" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2846-1-5"
|
||||||
|
id="linearGradient3985"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-0.45627305,0,0,0.45090742,1.5791967,25.040446)"
|
||||||
|
x1="27.366341"
|
||||||
|
y1="26.580296"
|
||||||
|
x2="31.335964"
|
||||||
|
y2="30.557772" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4440-1-1"
|
||||||
|
id="linearGradient3987"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-0.60893882,0,0,0.58225314,4.761172,21.67638)"
|
||||||
|
x1="30.65625"
|
||||||
|
y1="34"
|
||||||
|
x2="33.21875"
|
||||||
|
y2="31.0625" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2366-4-4"
|
||||||
|
id="linearGradient3989"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1,0,0,1,44.17827,0)"
|
||||||
|
x1="18.292673"
|
||||||
|
y1="13.602121"
|
||||||
|
x2="17.500893"
|
||||||
|
y2="25.743469" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4454-7-7"
|
||||||
|
id="radialGradient3991"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1,0,0,1,43.352,0)"
|
||||||
|
cx="18.240929"
|
||||||
|
cy="21.817987"
|
||||||
|
fx="18.240929"
|
||||||
|
fy="21.817987"
|
||||||
|
r="8.3085051" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4467-4-8"
|
||||||
|
id="radialGradient3993"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(-1.1830991,0,0,1.0154904,7.797398,16.499809)"
|
||||||
|
cx="15.414371"
|
||||||
|
cy="13.078408"
|
||||||
|
fx="15.414371"
|
||||||
|
fy="13.078408"
|
||||||
|
r="6.65625" />
|
||||||
</defs>
|
</defs>
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
inkscape:window-y="26"
|
inkscape:window-y="29"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="0"
|
||||||
inkscape:window-height="969"
|
inkscape:window-height="849"
|
||||||
inkscape:window-width="1280"
|
inkscape:window-width="1600"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:grid-bbox="true"
|
inkscape:grid-bbox="true"
|
||||||
showgrid="true"
|
showgrid="true"
|
||||||
inkscape:current-layer="layer5"
|
inkscape:current-layer="layer5"
|
||||||
inkscape:cy="13.694933"
|
inkscape:cy="12.288442"
|
||||||
inkscape:cx="19.492108"
|
inkscape:cx="8.4435897"
|
||||||
inkscape:zoom="22.627416"
|
inkscape:zoom="22.627416"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
|
@ -364,7 +553,7 @@
|
||||||
<inkscape:grid
|
<inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
id="grid2919"
|
id="grid2919"
|
||||||
empspacing="5"
|
empspacing="1"
|
||||||
visible="true"
|
visible="true"
|
||||||
enabled="true"
|
enabled="true"
|
||||||
snapvisiblegridlinesonly="true" />
|
snapvisiblegridlinesonly="true" />
|
||||||
|
@ -611,66 +800,74 @@
|
||||||
id="rect15686-03"
|
id="rect15686-03"
|
||||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970757;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:block;overflow:visible" />
|
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970757;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:block;overflow:visible" />
|
||||||
<g
|
<g
|
||||||
id="g1772"
|
id="g3976"
|
||||||
transform="matrix(0.39105747,0,0,0.37162201,7.9100602,31.393184)">
|
transform="translate(25.279068,-0.44194166)">
|
||||||
<path
|
|
||||||
sodipodi:type="arc"
|
|
||||||
style="opacity:0.17112301;color:#000000;fill:url(#radialGradient1527);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
|
||||||
id="path4475"
|
|
||||||
sodipodi:cx="24.130018"
|
|
||||||
sodipodi:cy="37.967922"
|
|
||||||
sodipodi:rx="16.528622"
|
|
||||||
sodipodi:ry="3.9332814"
|
|
||||||
d="m 40.65864,37.967922 c 0,2.172292 -7.400116,3.933282 -16.528622,3.933282 -9.128505,0 -16.5286214,-1.76099 -16.5286214,-3.933282 0,-2.172291 7.4001164,-3.933281 16.5286214,-3.933281 9.128506,0 16.528622,1.76099 16.528622,3.933281 z"
|
|
||||||
transform="matrix(1.446431,0,0,1.51999,-10.97453,-17.75168)" />
|
|
||||||
<path
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="csscccscccscczzzz"
|
sodipodi:nodetypes="csscccscccscczzzz"
|
||||||
id="path2844"
|
id="path2844-9-9"
|
||||||
d="m 18.627569,3.1435548 c -8.13913,0 -14.7448008,6.6056711 -14.7448008,14.7448012 0,8.13913 6.6056708,14.744802 14.7448008,14.744802 3.479555,0 6.551001,-1.384393 9.073723,-3.402647 -0.205377,1.006881 -0.07803,2.035368 0.756144,2.759925 l 10.964084,9.52741 c 1.233416,1.071329 3.087462,0.93096 4.15879,-0.302457 1.071328,-1.233418 0.930959,-3.087462 -0.302457,-4.15879 L 32.313769,27.529188 c -0.671527,-0.583279 -1.492878,-0.755969 -2.306238,-0.642722 1.9867,-2.512422 3.364839,-5.548803 3.364839,-8.99811 0,-8.1391301 -6.605671,-14.7448012 -14.744801,-14.7448012 z m -0.07562,1.2261833 c 7.639459,0 13.291775,4.7889505 13.291775,13.2917749 0,8.675113 -5.81669,13.291775 -13.291775,13.291775 -7.302949,0 -13.2917734,-5.478092 -13.2917734,-13.291775 0,-7.9841069 5.8246384,-13.291775 13.2917734,-13.2917749 z"
|
d="m -11.906647,26.457898 c -3.713666,0 -6.727656,2.978546 -6.727656,6.64854 0,3.669995 3.01399,6.648541 6.727656,6.648541 1.587627,0 2.9890449,-0.624233 4.140095,-1.534279 -0.093708,0.45401 -0.035603,0.917763 0.3450081,1.244471 l 5.0026161,4.29598 c 0.5627744,0.48307 1.4087257,0.419777 1.89754376,-0.13638 0.4888181,-0.556158 0.42477151,-1.39216 -0.13800297,-1.87523 l -5.00261609,-4.29598 c -0.3063996,-0.263005 -0.68116,-0.340872 -1.0522742,-0.289808 0.9064777,-1.13287 1.5352853,-2.501996 1.5352853,-4.057315 0,-3.669994 -3.0139896,-6.64854 -6.727655,-6.64854 z m -0.0345,0.552895 c 3.4856796,0 6.0646791,2.159374 6.0646791,5.99336 0,3.911673 -2.6539989,5.99336 -6.0646791,5.99336 -3.332138,0 -6.064678,-2.470112 -6.064678,-5.99336 0,-3.600093 2.657626,-5.99336 6.064678,-5.99336 z"
|
||||||
style="color:#000000;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient1529);stroke-width:3.00581574;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
|
style="color:#000000;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3985);stroke-width:1.80999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||||
|
inkscape:r_cx="true"
|
||||||
|
inkscape:r_cy="true" />
|
||||||
<path
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
style="color:#000000;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000036;marker:none;visibility:visible;display:inline;overflow:visible"
|
style="color:#000000;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000036;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||||
d="m 18.602905,3.0803551 c -8.16544,0 -14.7924642,6.627024 -14.7924642,14.7924639 0,8.16544 6.6270242,14.792464 14.7924642,14.792464 3.490803,0 6.572177,-1.388867 9.103055,-3.413645 -0.206041,1.010136 -0.07829,2.041947 0.758587,2.768846 l 10.999526,9.558207 c 1.237403,1.074792 3.097442,0.93397 4.172233,-0.303435 1.074791,-1.237404 0.933968,-3.097442 -0.303435,-4.172233 L 32.333346,27.544815 c -0.673698,-0.585164 -1.497704,-0.758413 -2.313693,-0.644799 1.993122,-2.520544 3.375716,-5.56674 3.375716,-9.027197 0,-8.1654399 -6.627024,-14.7924639 -14.792464,-14.7924639 z m -0.07586,3.1860692 c 6.281108,2e-7 11.378818,5.0977107 11.378818,11.3788187 0,6.281108 -5.09771,11.378818 -11.378818,11.378818 -6.281108,0 -11.3788184,-5.09771 -11.3788184,-11.378818 2e-7,-6.281108 5.0977104,-11.3788187 11.3788184,-11.3788187 z"
|
d="m -11.917901,26.429401 c -3.72567,0 -6.749403,2.988174 -6.749403,6.670032 0,3.681857 3.023733,6.670031 6.749403,6.670031 1.59276,0 2.9987074,-0.62625 4.1534789,-1.539237 -0.094011,0.455477 -0.035722,0.920729 0.3461228,1.248493 l 5.0187873,4.309866 c 0.5645936,0.484632 1.41327926,0.421134 1.90367743,-0.136821 0.49039817,-0.557954 0.42614443,-1.396659 -0.13844921,-1.881291 L -5.6530706,37.460607 c -0.3073902,-0.263854 -0.683362,-0.341974 -1.0556758,-0.290744 0.9094079,-1.136532 1.5402483,-2.510085 1.5402483,-4.07043 0,-3.681858 -3.0237325,-6.670032 -6.7494029,-6.670032 z m -0.03461,1.436622 c 2.8659006,0 5.1918483,2.298596 5.1918483,5.130794 0,2.832198 -2.3259477,5.130793 -5.1918483,5.130793 -2.8659,0 -5.191848,-2.298595 -5.191848,-5.130793 0,-2.832198 2.325948,-5.130794 5.191848,-5.130794 z"
|
||||||
id="path4430" />
|
id="path4430-3-6"
|
||||||
|
inkscape:r_cx="true"
|
||||||
|
inkscape:r_cy="true" />
|
||||||
<path
|
<path
|
||||||
style="color:#000000;fill:url(#linearGradient1531);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
inkscape:connector-curvature="0"
|
||||||
d="m 39.507004,41.57769 c -0.478672,-2.273187 1.39733,-4.811422 3.584053,-4.788375 0,0 -10.760367,-9.258111 -10.760367,-9.258111 -2.944791,-0.05671 -4.269502,2.272616 -3.776814,4.599922 l 10.953128,9.446564 z"
|
style="color:#000000;fill:url(#linearGradient3987);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||||
id="path4438"
|
d="m -2.3799238,43.788135 c -0.2184051,-1.024997 0.637564,-2.169506 1.63530681,-2.159114 0,0 -4.90966551,-4.174551 -4.90966551,-4.174551 -1.3436287,-0.02557 -1.9480587,1.02474 -1.7232584,2.074139 l 4.9976171,4.259526 z"
|
||||||
sodipodi:nodetypes="ccccc" />
|
id="path4438-0-4"
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:r_cx="true"
|
||||||
|
inkscape:r_cy="true" />
|
||||||
<path
|
<path
|
||||||
sodipodi:type="arc"
|
sodipodi:type="arc"
|
||||||
style="color:#000000;fill:none;stroke:url(#linearGradient1533);stroke-width:1.20643401;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
style="color:#000000;fill:none;stroke:url(#linearGradient3989);stroke-width:1.24788225;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||||
id="path4450"
|
id="path4450-2-3"
|
||||||
sodipodi:cx="17.500893"
|
sodipodi:cx="17.500893"
|
||||||
sodipodi:cy="18.920233"
|
sodipodi:cy="18.920233"
|
||||||
sodipodi:rx="11.048544"
|
sodipodi:rx="11.048544"
|
||||||
sodipodi:ry="11.048544"
|
sodipodi:ry="11.048544"
|
||||||
d="m 28.549437,18.920233 c 0,6.101942 -4.946602,11.048544 -11.048544,11.048544 -6.101943,0 -11.0485443,-4.946602 -11.0485443,-11.048544 0,-6.101943 4.9466013,-11.0485442 11.0485443,-11.0485442 6.101942,0 11.048544,4.9466012 11.048544,11.0485442 z"
|
d="m 28.549437,18.920233 c 0,6.101942 -4.946602,11.048544 -11.048544,11.048544 -6.101943,0 -11.0485443,-4.946602 -11.0485443,-11.048544 0,-6.101943 4.9466013,-11.0485442 11.0485443,-11.0485442 6.101942,0 11.048544,4.9466012 11.048544,11.0485442 z"
|
||||||
transform="matrix(1.245743,0,0,1.245743,-3.425346,-6.177033)" />
|
transform="matrix(0.56839909,0,0,0.56171489,-21.968801,22.255175)"
|
||||||
|
inkscape:r_cx="true"
|
||||||
|
inkscape:r_cy="true" />
|
||||||
<rect
|
<rect
|
||||||
style="opacity:0.43315507;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.50295389;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
style="opacity:0.43315507;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.70510882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||||
id="rect4495"
|
id="rect4495-7-3"
|
||||||
width="19.048439"
|
width="8.6471872"
|
||||||
height="4.4404783"
|
height="2.0123112"
|
||||||
x="40.373337"
|
x="19.239033"
|
||||||
y="0.14086054"
|
y="32.352734"
|
||||||
rx="3.2112026"
|
rx="1.5078329"
|
||||||
ry="2.837393"
|
ry="1.3300102"
|
||||||
transform="matrix(0.752986,0.658037,-0.648902,0.760872,0,0)" />
|
transform="matrix(0.75682702,0.65361522,-0.65333777,0.75706655,0,0)"
|
||||||
|
inkscape:r_cx="true"
|
||||||
|
inkscape:r_cy="true" />
|
||||||
<path
|
<path
|
||||||
sodipodi:type="arc"
|
sodipodi:type="arc"
|
||||||
style="color:#000000;fill:url(#radialGradient1537);fill-opacity:1;fill-rule:evenodd;stroke:#3063a3;stroke-width:1.07456946;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible"
|
style="color:#000000;fill:url(#radialGradient3991);fill-opacity:1;fill-rule:evenodd;stroke:#3063a3;stroke-width:1.11148739;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||||
id="path4452"
|
id="path4452-9-3"
|
||||||
sodipodi:cx="17.589281"
|
sodipodi:cx="17.589281"
|
||||||
sodipodi:cy="18.478292"
|
sodipodi:cy="18.478292"
|
||||||
sodipodi:rx="8.3085051"
|
sodipodi:rx="8.3085051"
|
||||||
sodipodi:ry="8.3085051"
|
sodipodi:ry="8.3085051"
|
||||||
d="m 25.897786,18.478292 c 0,4.588661 -3.719844,8.308506 -8.308505,8.308506 -4.588661,0 -8.308505,-3.719845 -8.308505,-8.308506 0,-4.58866 3.719844,-8.308505 8.308505,-8.308505 4.588661,0 8.308505,3.719845 8.308505,8.308505 z"
|
d="m 25.897786,18.478292 c 0,4.588661 -3.719844,8.308506 -8.308505,8.308506 -4.588661,0 -8.308505,-3.719845 -8.308505,-8.308506 0,-4.58866 3.719844,-8.308505 8.308505,-8.308505 4.588661,0 8.308505,3.719845 8.308505,8.308505 z"
|
||||||
transform="matrix(1.398614,0,0,1.398614,-6.224338,-8.298958)" />
|
transform="matrix(0.63815043,0,0,0.63064598,-23.245907,21.298384)"
|
||||||
|
inkscape:r_cx="true"
|
||||||
|
inkscape:r_cy="true" />
|
||||||
<path
|
<path
|
||||||
style="opacity:0.83422457;color:#000000;fill:url(#radialGradient1539);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
inkscape:connector-curvature="0"
|
||||||
d="m 18.156915,7.3966938 c -5.20759,0 -9.4245469,4.2169572 -9.4245469,9.4245472 0,1.503975 0.4203072,2.887773 1.0471719,4.149903 1.25238,0.461613 2.582757,0.775683 3.994767,0.775683 6.170955,0 11.099282,-4.861637 11.480106,-10.937129 C 23.523449,8.7641668 21.044374,7.3966938 18.156915,7.3966938 z"
|
style="opacity:0.83422457;color:#000000;fill:url(#radialGradient3993);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||||
id="path4462" />
|
d="m -11.921206,28.37567 c 2.3760829,0 4.3001667,1.901457 4.3001667,4.249598 0,0.678154 -0.1917749,1.302119 -0.4777963,1.871222 -0.5714273,0.208145 -1.1784425,0.349762 -1.8227046,0.349762 -2.8156408,0 -5.0643028,-2.192149 -5.2380628,-4.931633 0.789792,-0.922345 1.920927,-1.538949 3.238397,-1.538949 z"
|
||||||
|
id="path4462-9-8"
|
||||||
|
inkscape:r_cx="true"
|
||||||
|
inkscape:r_cy="true" />
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 30 KiB |
|
@ -623,18 +623,10 @@ void GRLineArray( EDA_RECT* aClipBox, wxDC* aDC, std::vector<wxPoint>& aLines,
|
||||||
aClipBox->Inflate(-aWidth/2);
|
aClipBox->Inflate(-aWidth/2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw the outline of a thick segment wih rounded ends
|
||||||
void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
||||||
int width, int aPenSize, EDA_COLOR_T Color )
|
int width, int aPenSize, EDA_COLOR_T Color )
|
||||||
{
|
{
|
||||||
long radius;
|
|
||||||
int dwx, dwy;
|
|
||||||
long dx, dy, dwx2, dwy2;
|
|
||||||
long sx1, sy1, ex1, ey1;
|
|
||||||
long sx2, sy2, ex2, ey2;
|
|
||||||
bool swap_ends = false;
|
|
||||||
|
|
||||||
|
|
||||||
GRLastMoveToX = x2;
|
GRLastMoveToX = x2;
|
||||||
GRLastMoveToY = y2;
|
GRLastMoveToY = y2;
|
||||||
|
|
||||||
|
@ -658,114 +650,63 @@ void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
||||||
GRSetColorPen( DC, Color, aPenSize );
|
GRSetColorPen( DC, Color, aPenSize );
|
||||||
GRSetBrush( DC, Color, false );
|
GRSetBrush( DC, Color, false );
|
||||||
|
|
||||||
radius = (width + 1) >> 1;
|
int radius = (width + 1) >> 1;
|
||||||
|
int dx = x2 - x1;
|
||||||
|
int dy = y2 - y1;
|
||||||
|
double angle = -ArcTangente( dy, dx );
|
||||||
|
wxPoint start;
|
||||||
|
wxPoint end;
|
||||||
|
wxPoint org( x1, y1);
|
||||||
|
int len = (int) hypot( dx, dy );
|
||||||
|
|
||||||
dx = x2 - x1;
|
// We know if the DC is mirrored, to draw arcs
|
||||||
dy = y2 - y1;
|
int slx = DC->DeviceToLogicalX( 1 ) - DC->DeviceToLogicalX( 0 );
|
||||||
|
int sly = DC->DeviceToLogicalY( 1 ) - DC->DeviceToLogicalY( 0 );
|
||||||
|
bool mirrored = (slx > 0 && sly < 0) || (slx < 0 && sly > 0);
|
||||||
|
|
||||||
if( dx == 0 ) /* segment vertical */
|
// first edge
|
||||||
{
|
start.x = 0;
|
||||||
dwx = radius;
|
start.y = radius;
|
||||||
if( dy >= 0 )
|
end.x = len;
|
||||||
dwx = -dwx;
|
end.y = radius;
|
||||||
|
RotatePoint( &start, angle);
|
||||||
|
RotatePoint( &end, angle);
|
||||||
|
|
||||||
sx1 = x1 - dwx;
|
start += org;
|
||||||
sy1 = y1;
|
end += org;
|
||||||
|
|
||||||
ex1 = x2 - dwx;
|
DC->DrawLine( start, end );
|
||||||
ey1 = y2;
|
|
||||||
|
|
||||||
DC->DrawLine( sx1, sy1, ex1, ey1 );
|
// first rounded end
|
||||||
|
end.x = 0;
|
||||||
|
end.y = -radius;
|
||||||
|
RotatePoint( &end, angle);
|
||||||
|
end += org;
|
||||||
|
|
||||||
sx2 = x1 + dwx;
|
if( !mirrored )
|
||||||
sy2 = y1;
|
DC->DrawArc( end, start, org );
|
||||||
|
|
||||||
ex2 = x2 + dwx;
|
|
||||||
ey2 = y2;
|
|
||||||
|
|
||||||
DC->DrawLine( sx2, sy2, ex2, ey2 );
|
|
||||||
}
|
|
||||||
else if( dy == 0 ) /* segment horizontal */
|
|
||||||
{
|
|
||||||
dwy = radius;
|
|
||||||
if( dx < 0 )
|
|
||||||
dwy = -dwy;
|
|
||||||
|
|
||||||
sx1 = x1;
|
|
||||||
sy1 = y1 - dwy;
|
|
||||||
|
|
||||||
ex1 = x2;
|
|
||||||
ey1 = y2 - dwy;
|
|
||||||
|
|
||||||
DC->DrawLine( sx1, sy1, ex1, ey1 );
|
|
||||||
|
|
||||||
sx2 = x1;
|
|
||||||
sy2 = y1 + dwy;
|
|
||||||
|
|
||||||
ex2 = x2;
|
|
||||||
ey2 = y2 + dwy;
|
|
||||||
|
|
||||||
DC->DrawLine( sx2, sy2, ex2, ey2 );
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
DC->DrawArc( start, end, org );
|
||||||
if( std::abs( dx ) == std::abs( dy ) ) // segment 45 degrees
|
|
||||||
{
|
|
||||||
dwx = dwy = ( (width * 5) + 4 ) / 7; // = width / 2 * 0.707
|
// second edge
|
||||||
if( dy < 0 )
|
start.x = len;
|
||||||
{
|
start.y = -radius;
|
||||||
if( dx <= 0 )
|
RotatePoint( &start, angle);
|
||||||
{
|
start += org;
|
||||||
dwx = -dwx; swap_ends = true;
|
|
||||||
}
|
DC->DrawLine( start, end );
|
||||||
}
|
|
||||||
else // dy >= 0
|
// second rounded end
|
||||||
{
|
end.x = len;
|
||||||
if( dx > 0 )
|
end.y = radius;
|
||||||
{
|
RotatePoint( &end, angle);
|
||||||
dwy = -dwy; swap_ends = true;
|
end += org;
|
||||||
}
|
|
||||||
|
if( !mirrored )
|
||||||
|
DC->DrawArc( end.x, end.y, start.x, start.y, x2, y2 );
|
||||||
else
|
else
|
||||||
swap_ends = true;
|
DC->DrawArc( start.x, start.y, end.x, end.y, x2, y2 );
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
double delta_angle = ArcTangente( dy, dx );
|
|
||||||
dwx = 0;
|
|
||||||
dwy = width;
|
|
||||||
RotatePoint( &dwx, &dwy, -delta_angle );
|
|
||||||
}
|
|
||||||
dwx2 = dwx >> 1;
|
|
||||||
dwy2 = dwy >> 1;
|
|
||||||
|
|
||||||
sx1 = x1 - dwx2;
|
|
||||||
sy1 = y1 - dwy2;
|
|
||||||
|
|
||||||
ex1 = x2 - dwx2;
|
|
||||||
ey1 = y2 - dwy2;
|
|
||||||
|
|
||||||
DC->DrawLine( sx1, sy1, ex1, ey1 );
|
|
||||||
|
|
||||||
sx2 = x1 + dwx2;
|
|
||||||
sy2 = y1 + dwy2;
|
|
||||||
|
|
||||||
ex2 = x2 + dwx2;
|
|
||||||
ey2 = y2 + dwy2;
|
|
||||||
|
|
||||||
DC->DrawLine( sx2, sy2, ex2, ey2 );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( swap_ends )
|
|
||||||
{
|
|
||||||
DC->DrawArc( sx2, sy2, sx1, sy1, x1, y1 );
|
|
||||||
DC->DrawArc( ex1, ey1, ex2, ey2, x2, y2 );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DC->DrawArc( sx1, sy1, sx2, sy2, x1, y1 );
|
|
||||||
DC->DrawArc( ex2, ey2, ex1, ey1, x2, y2 );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@ set( EESCHEMA_DLGS
|
||||||
dialogs/dialog_bom.cpp
|
dialogs/dialog_bom.cpp
|
||||||
dialogs/dialog_bom_base.cpp
|
dialogs/dialog_bom_base.cpp
|
||||||
dialogs/dialog_bom_cfg_keywords.cpp
|
dialogs/dialog_bom_cfg_keywords.cpp
|
||||||
|
dialogs/dialog_choose_component.cpp
|
||||||
|
dialogs/dialog_choose_component_base.cpp
|
||||||
dialogs/dialog_lib_edit_text.cpp
|
dialogs/dialog_lib_edit_text.cpp
|
||||||
dialogs/dialog_lib_edit_text_base.cpp
|
dialogs/dialog_lib_edit_text_base.cpp
|
||||||
dialogs/dialog_edit_component_in_lib.cpp
|
dialogs/dialog_edit_component_in_lib.cpp
|
||||||
|
@ -88,6 +90,7 @@ set( EESCHEMA_SRCS
|
||||||
files-io.cpp
|
files-io.cpp
|
||||||
find.cpp
|
find.cpp
|
||||||
getpart.cpp
|
getpart.cpp
|
||||||
|
component_tree_search_container.cpp
|
||||||
hierarch.cpp
|
hierarch.cpp
|
||||||
hotkeys.cpp
|
hotkeys.cpp
|
||||||
libarch.cpp
|
libarch.cpp
|
||||||
|
|
|
@ -0,0 +1,357 @@
|
||||||
|
/* -*- c++ -*-
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Henner Zeller <h.zeller@acm.org>
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
#include <component_tree_search_container.h>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
|
#include <wx/string.h>
|
||||||
|
#include <wx/tokenzr.h>
|
||||||
|
#include <wx/treectrl.h>
|
||||||
|
#include <wx/arrstr.h>
|
||||||
|
|
||||||
|
#include <class_library.h>
|
||||||
|
#include <macros.h>
|
||||||
|
|
||||||
|
// Each node gets this lowest score initially, without any matches applied. Matches
|
||||||
|
// will then increase this score depending on match quality.
|
||||||
|
// This way, an empty search string will result in all components being displayed as they
|
||||||
|
// have the minimum score. However, in that case, we avoid expanding all the nodes asd the
|
||||||
|
// result is very unspecific.
|
||||||
|
static const unsigned kLowestDefaultScore = 1;
|
||||||
|
|
||||||
|
struct COMPONENT_TREE_SEARCH_CONTAINER::TREE_NODE
|
||||||
|
{
|
||||||
|
TREE_NODE(TREE_NODE* aParent, CMP_LIBRARY* aOwningLib,
|
||||||
|
const wxString& aName, const wxString& aDisplayInfo,
|
||||||
|
const wxString& aSearchText,
|
||||||
|
bool aNormallyExpanded = false)
|
||||||
|
: Parent( aParent ),
|
||||||
|
Lib( aOwningLib ),
|
||||||
|
NormallyExpanded( aNormallyExpanded ),
|
||||||
|
Name( aName ),
|
||||||
|
DisplayInfo( aDisplayInfo ),
|
||||||
|
MatchName( aName.Lower() ),
|
||||||
|
SearchText( aSearchText.Lower() ),
|
||||||
|
MatchScore( 0 ), PreviousScore( 0 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
TREE_NODE* const Parent; ///< NULL if library, pointer to lib-node when component.
|
||||||
|
CMP_LIBRARY* const Lib; ///< Owning library of this component.
|
||||||
|
const bool NormallyExpanded; ///< If this is a parent node, should it be unfolded ?
|
||||||
|
const wxString Name; ///< Exact name as displayed to the user.
|
||||||
|
const wxString DisplayInfo; ///< Additional info displayed in the tree (description..)
|
||||||
|
|
||||||
|
const wxString MatchName; ///< Preprocessed: lowercased display name.
|
||||||
|
const wxString SearchText; ///< Other text (keywords, description..) to search in.
|
||||||
|
|
||||||
|
unsigned MatchScore; ///< Result-Score after UpdateSearchTerm()
|
||||||
|
unsigned PreviousScore; ///< Optimization: used to see if we need any tree update.
|
||||||
|
wxTreeItemId TreeId; ///< Tree-ID if stored in the tree (if MatchScore > 0).
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Sort tree nodes by reverse match-score (bigger is first), then alphabetically.
|
||||||
|
// Library nodes (i.e. the ones that don't have a parent) are always sorted before any
|
||||||
|
// leaf nodes.
|
||||||
|
bool COMPONENT_TREE_SEARCH_CONTAINER::scoreComparator( const TREE_NODE* a1, const TREE_NODE* a2 )
|
||||||
|
{
|
||||||
|
if ( a1->Parent == NULL && a2->Parent != NULL )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if ( a1->Parent != NULL && a2->Parent == NULL )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if ( a1->MatchScore != a2->MatchScore )
|
||||||
|
return a1->MatchScore > a2->MatchScore; // biggest first.
|
||||||
|
|
||||||
|
if (a1->Parent != a2->Parent)
|
||||||
|
return a1->Parent->MatchName.Cmp(a2->Parent->MatchName) < 0;
|
||||||
|
|
||||||
|
return a1->MatchName.Cmp( a2->MatchName ) < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
COMPONENT_TREE_SEARCH_CONTAINER::COMPONENT_TREE_SEARCH_CONTAINER()
|
||||||
|
: tree( NULL )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
COMPONENT_TREE_SEARCH_CONTAINER::~COMPONENT_TREE_SEARCH_CONTAINER()
|
||||||
|
{
|
||||||
|
BOOST_FOREACH( TREE_NODE* node, nodes )
|
||||||
|
delete node;
|
||||||
|
nodes.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void COMPONENT_TREE_SEARCH_CONTAINER::SetPreselectNode( const wxString& aComponentName )
|
||||||
|
{
|
||||||
|
preselect_node_name = aComponentName.Lower();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void COMPONENT_TREE_SEARCH_CONTAINER::SetTree( wxTreeCtrl* aTree )
|
||||||
|
{
|
||||||
|
tree = aTree;
|
||||||
|
UpdateSearchTerm( wxEmptyString );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void COMPONENT_TREE_SEARCH_CONTAINER::AddLibrary( CMP_LIBRARY& aLib )
|
||||||
|
{
|
||||||
|
wxArrayString all_comp;
|
||||||
|
|
||||||
|
aLib.GetEntryNames( all_comp );
|
||||||
|
AddComponentList( aLib.GetName(), all_comp, &aLib, false );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void COMPONENT_TREE_SEARCH_CONTAINER::AddComponentList( const wxString& aNodeName,
|
||||||
|
const wxArrayString& aComponentNameList,
|
||||||
|
CMP_LIBRARY* aOptionalLib,
|
||||||
|
bool aNormallyExpanded )
|
||||||
|
{
|
||||||
|
TREE_NODE* parent_node = new TREE_NODE( NULL, NULL, aNodeName, wxEmptyString, wxEmptyString,
|
||||||
|
aNormallyExpanded );
|
||||||
|
|
||||||
|
nodes.push_back( parent_node );
|
||||||
|
|
||||||
|
BOOST_FOREACH( const wxString& cName, aComponentNameList )
|
||||||
|
{
|
||||||
|
LIB_COMPONENT *c;
|
||||||
|
|
||||||
|
if (aOptionalLib)
|
||||||
|
c = aOptionalLib->FindComponent( cName );
|
||||||
|
else
|
||||||
|
c = CMP_LIBRARY::FindLibraryComponent( cName, wxEmptyString );
|
||||||
|
|
||||||
|
if (c == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
wxString keywords, descriptions;
|
||||||
|
wxString display_info;
|
||||||
|
|
||||||
|
for ( size_t i = 0; i < c->GetAliasCount(); ++i )
|
||||||
|
{
|
||||||
|
LIB_ALIAS *a = c->GetAlias( i );
|
||||||
|
keywords += a->GetKeyWords();
|
||||||
|
descriptions += a->GetDescription();
|
||||||
|
|
||||||
|
if ( display_info.empty() && !a->GetDescription().empty() )
|
||||||
|
{
|
||||||
|
// Preformatting. Unfortunately, the tree widget doesn't have columns
|
||||||
|
display_info.Printf( wxT(" %s[ %s ]"),
|
||||||
|
( cName.length() <= 8 ) ? wxT("\t\t") : wxT("\t"),
|
||||||
|
GetChars( a->GetDescription() ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there are no keywords, we give a couple of characters whitespace penalty. We want
|
||||||
|
// a component with a search-term found in the keywords score slightly higher than another
|
||||||
|
// component without keywords, but that term in the descriptions.
|
||||||
|
wxString search_text = ( !keywords.empty() ) ? keywords : wxT(" ");
|
||||||
|
search_text += descriptions;
|
||||||
|
nodes.push_back( new TREE_NODE( parent_node, c->GetLibrary(),
|
||||||
|
cName, display_info, search_text ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
LIB_COMPONENT* COMPONENT_TREE_SEARCH_CONTAINER::GetSelectedComponent()
|
||||||
|
{
|
||||||
|
const wxTreeItemId& select_id = tree->GetSelection();
|
||||||
|
BOOST_FOREACH( TREE_NODE* node, nodes )
|
||||||
|
{
|
||||||
|
if ( node->MatchScore > 0 && node->TreeId == select_id && node->Lib )
|
||||||
|
return node->Lib->FindComponent( node->Name );
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Creates a score depending on the position of a string match. If the position
|
||||||
|
// is 0 (= prefix match), this returns the maximum score. This degrades until
|
||||||
|
// pos == max, which returns a score of 0;
|
||||||
|
// Evertyhing else beyond that is just 0. Only values >= 0 allowed for position and max.
|
||||||
|
//
|
||||||
|
// @param aPosition is the position a string has been found in a substring.
|
||||||
|
// @param aMaximum is the maximum score this function returns.
|
||||||
|
// @return position dependent score.
|
||||||
|
static int matchPosScore(int aPosition, int aMaximum)
|
||||||
|
{
|
||||||
|
return ( aPosition < aMaximum ) ? aMaximum - aPosition : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void COMPONENT_TREE_SEARCH_CONTAINER::UpdateSearchTerm( const wxString& aSearch )
|
||||||
|
{
|
||||||
|
if ( tree == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// We score the list by going through it several time, essentially with a complexity
|
||||||
|
// of O(n). For the default library of 2000+ items, this typically takes less than 5ms
|
||||||
|
// on an i5. Good enough, no index needed.
|
||||||
|
|
||||||
|
// Initial AND condition: Leaf nodes are considered to match initially.
|
||||||
|
BOOST_FOREACH( TREE_NODE* node, nodes )
|
||||||
|
{
|
||||||
|
node->PreviousScore = node->MatchScore;
|
||||||
|
node->MatchScore = node->Parent ? kLowestDefaultScore : 0; // start-match for leafs.
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create match scores for each node for all the terms, that come space-separated.
|
||||||
|
// Scoring adds up values for each term according to importance of the match. If a term does
|
||||||
|
// not match at all, the result is thrown out of the results (AND semantics).
|
||||||
|
// From high to low
|
||||||
|
// - Exact match for a ccmponent name gives the highest score, trumping all.
|
||||||
|
// - A positional score depending of where a term is found as substring; prefix-match: high.
|
||||||
|
// - substring-match in library name.
|
||||||
|
// - substring match in keywords and descriptions with positional score. Keywords come
|
||||||
|
// first so contribute more to the score.
|
||||||
|
//
|
||||||
|
// This is of course subject to tweaking.
|
||||||
|
wxStringTokenizer tokenizer( aSearch );
|
||||||
|
|
||||||
|
while ( tokenizer.HasMoreTokens() )
|
||||||
|
{
|
||||||
|
const wxString term = tokenizer.GetNextToken().Lower();
|
||||||
|
BOOST_FOREACH( TREE_NODE* node, nodes )
|
||||||
|
{
|
||||||
|
if ( node->Parent == NULL)
|
||||||
|
continue; // Library nodes are not scored here.
|
||||||
|
|
||||||
|
if ( node->MatchScore == 0)
|
||||||
|
continue; // Leaf node without score are out of the game.
|
||||||
|
|
||||||
|
// Keywords and description we only count if the match string is at
|
||||||
|
// least two characters long. That avoids spurious, low quality
|
||||||
|
// matches. Most abbreviations are at three characters long.
|
||||||
|
int found_pos;
|
||||||
|
|
||||||
|
if ( term == node->MatchName )
|
||||||
|
node->MatchScore += 1000; // exact match. High score :)
|
||||||
|
else if ( (found_pos = node->MatchName.Find( term ) ) != wxNOT_FOUND )
|
||||||
|
{
|
||||||
|
// Substring match. The earlier in the string the better. score += 20..40
|
||||||
|
node->MatchScore += matchPosScore( found_pos, 20 ) + 20;
|
||||||
|
}
|
||||||
|
else if ( node->Parent->MatchName.Find( term ) != wxNOT_FOUND )
|
||||||
|
node->MatchScore += 19; // parent name matches. score += 19
|
||||||
|
else if ( ( found_pos = node->SearchText.Find( term ) ) != wxNOT_FOUND )
|
||||||
|
{
|
||||||
|
// If we have a very short search term (like one or two letters), we don't want
|
||||||
|
// to accumulate scores if they just happen to be in keywords or description as
|
||||||
|
// almost any one or two-letter combination shows up in there.
|
||||||
|
// For longer terms, we add scores 1..18 for positional match (higher in the
|
||||||
|
// front, where the keywords are). score += 0..18
|
||||||
|
node->MatchScore += ( ( term.length() >= 2 )
|
||||||
|
? matchPosScore( found_pos, 17 ) + 1
|
||||||
|
: 0 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
node->MatchScore = 0; // No match. That's it for this item.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parent nodes have the maximum score seen in any of their children.
|
||||||
|
unsigned highest_score_seen = 0;
|
||||||
|
bool any_change = false;
|
||||||
|
BOOST_FOREACH( TREE_NODE* node, nodes )
|
||||||
|
{
|
||||||
|
if ( node->Parent == NULL )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
any_change |= (node->PreviousScore != node->MatchScore);
|
||||||
|
node->Parent->MatchScore = std::max( node->Parent->MatchScore, node->MatchScore );
|
||||||
|
highest_score_seen = std::max( highest_score_seen, node->MatchScore );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// The tree update might be slow, so we want to bail out if there is no change.
|
||||||
|
if ( !any_change )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Now: sort all items according to match score, libraries first.
|
||||||
|
std::sort( nodes.begin(), nodes.end(), scoreComparator );
|
||||||
|
|
||||||
|
// Fill the tree with all items that have a match. Re-arranging, adding and removing changed
|
||||||
|
// items is pretty complex, so we just re-build the whole tree.
|
||||||
|
tree->Freeze();
|
||||||
|
tree->DeleteAllItems();
|
||||||
|
const wxTreeItemId root_id = tree->AddRoot( wxEmptyString );
|
||||||
|
const TREE_NODE* first_match = NULL;
|
||||||
|
const TREE_NODE* preselected_node = NULL;
|
||||||
|
BOOST_FOREACH( TREE_NODE* node, nodes )
|
||||||
|
{
|
||||||
|
if ( node->MatchScore == 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// If we have nodes that go beyond the default score, suppress nodes that
|
||||||
|
// have the default score. That can happen if they have an honary += 0 score due to
|
||||||
|
// some one-letter match in the keyword or description. In this case, we prefer matches
|
||||||
|
// that just have higher scores. Improves relevancy and performance as the tree has to
|
||||||
|
// display less items.
|
||||||
|
if ( highest_score_seen > kLowestDefaultScore && node->MatchScore == kLowestDefaultScore )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const bool isLeaf = ( node->Parent != NULL );
|
||||||
|
wxString node_text;
|
||||||
|
#if 0
|
||||||
|
// Node text with scoring information for debugging
|
||||||
|
node_text.Printf( wxT("%s (s=%u)%s"), GetChars(node->Name),
|
||||||
|
node->MatchScore, GetChars(node->DisplayInfo));
|
||||||
|
#else
|
||||||
|
node_text = node->Name + node->DisplayInfo;
|
||||||
|
#endif
|
||||||
|
node->TreeId = tree->AppendItem( !isLeaf ? root_id : node->Parent->TreeId, node_text );
|
||||||
|
|
||||||
|
// If we are a leaf node, we might need to expand.
|
||||||
|
if ( isLeaf )
|
||||||
|
{
|
||||||
|
if ( node->MatchScore > kLowestDefaultScore )
|
||||||
|
{
|
||||||
|
tree->EnsureVisible( node->TreeId );
|
||||||
|
|
||||||
|
if ( first_match == NULL )
|
||||||
|
first_match = node; // The "I am feeling lucky" element.
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( preselected_node == NULL && node->MatchName == preselect_node_name )
|
||||||
|
preselected_node = node;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !isLeaf && node->NormallyExpanded )
|
||||||
|
tree->Expand( node->TreeId );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( first_match ) // Highest score search match pre-selected.
|
||||||
|
tree->SelectItem( first_match->TreeId );
|
||||||
|
else if ( preselected_node ) // No search, so history item preselected.
|
||||||
|
tree->SelectItem( preselected_node->TreeId );
|
||||||
|
|
||||||
|
tree->Thaw();
|
||||||
|
}
|
|
@ -0,0 +1,108 @@
|
||||||
|
/* -*- c++ -*-
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Henner Zeller <h.zeller@acm.org>
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <wx/string.h>
|
||||||
|
|
||||||
|
class LIB_COMPONENT;
|
||||||
|
class CMP_LIBRARY;
|
||||||
|
class wxTreeCtrl;
|
||||||
|
class wxArrayString;
|
||||||
|
|
||||||
|
// class COMPONENT_TREE_SEARCH_CONTAINER
|
||||||
|
// A container for components that allows to search them matching their name, keywords
|
||||||
|
// and descripotions, updating a wxTreeCtrl with the results (toplevel nodes:
|
||||||
|
// libraries, leafs: components), scored by relevance.
|
||||||
|
//
|
||||||
|
// The scored result list is adpated on each update on the search-term: this allows
|
||||||
|
// to have a search-as-you-type experience.
|
||||||
|
class COMPONENT_TREE_SEARCH_CONTAINER
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
COMPONENT_TREE_SEARCH_CONTAINER();
|
||||||
|
~COMPONENT_TREE_SEARCH_CONTAINER();
|
||||||
|
|
||||||
|
/** Function AddLibrary
|
||||||
|
* Add the components of this library to be searched.
|
||||||
|
* To be called in the setup phase to fill this container.
|
||||||
|
*
|
||||||
|
* @param aLib containting all the components to be added.
|
||||||
|
*/
|
||||||
|
void AddLibrary( CMP_LIBRARY& aLib );
|
||||||
|
|
||||||
|
/** Function AddComponentList
|
||||||
|
* Add the given list of components, given by name, to be searched.
|
||||||
|
* To be called in the setup phase to fill this container.
|
||||||
|
*
|
||||||
|
* @param aNodeName The parent node name the components will show up as leaf.
|
||||||
|
* @param aComponentNameList List of component names.
|
||||||
|
* @param aOptionalLib Library to look up the component names (if NULL: global lookup)
|
||||||
|
* @param aNormallyExpanded Should the node in the tree be expanded by default.
|
||||||
|
*/
|
||||||
|
void AddComponentList( const wxString& aNodeName, const wxArrayString& aComponentNameList,
|
||||||
|
CMP_LIBRARY* aOptionalLib, bool aNormallyExpanded );
|
||||||
|
|
||||||
|
/** Function SetPreselectNode
|
||||||
|
* Set the component name to be selected in absence of any search-result.
|
||||||
|
*
|
||||||
|
* @param aComponentName the component name to be selected.
|
||||||
|
*/
|
||||||
|
void SetPreselectNode( const wxString& aComponentName );
|
||||||
|
|
||||||
|
/** Function SetTree
|
||||||
|
* Set the tree to be manipulated.
|
||||||
|
* Each update of the search term will update the tree, with the most
|
||||||
|
* scoring component at the top and selected. If a preselect node is set, this
|
||||||
|
* is displayed. Does not take ownership of the tree.
|
||||||
|
*
|
||||||
|
* @param aTree that is to be modified on search updates.
|
||||||
|
*/
|
||||||
|
void SetTree( wxTreeCtrl* aTree );
|
||||||
|
|
||||||
|
/** Function UpdateSearchTerm
|
||||||
|
* Update the search string provided by the user and narrow down the result list.
|
||||||
|
*
|
||||||
|
* This string is a space-separated list of terms, each of which
|
||||||
|
* is applied to the components list to narrow it down. Results are scored by
|
||||||
|
* relevancy (e.g. exact match scores higher than prefix-match which in turn scores
|
||||||
|
* higher than substring match). This updates the search and tree on each call.
|
||||||
|
*
|
||||||
|
* @param aSearch is the user-provided search string.
|
||||||
|
*/
|
||||||
|
void UpdateSearchTerm( const wxString& aSearch );
|
||||||
|
|
||||||
|
/** Function GetSelectedComponent
|
||||||
|
*
|
||||||
|
* @return the selected component or NULL if there is none.
|
||||||
|
*/
|
||||||
|
LIB_COMPONENT* GetSelectedComponent();
|
||||||
|
|
||||||
|
private:
|
||||||
|
struct TREE_NODE;
|
||||||
|
static bool scoreComparator( const TREE_NODE* a1, const TREE_NODE* a2 );
|
||||||
|
|
||||||
|
std::vector<TREE_NODE*> nodes;
|
||||||
|
wxString preselect_node_name;
|
||||||
|
wxTreeCtrl* tree;
|
||||||
|
};
|
|
@ -0,0 +1,259 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Henner Zeller <h.zeller@acm.org>
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
#include <dialog_choose_component.h>
|
||||||
|
|
||||||
|
#include <set>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <wx/tokenzr.h>
|
||||||
|
|
||||||
|
#include <class_library.h>
|
||||||
|
#include <component_tree_search_container.h>
|
||||||
|
#include <sch_base_frame.h>
|
||||||
|
|
||||||
|
// Tree navigation helpers.
|
||||||
|
static wxTreeItemId GetPrevItem( const wxTreeCtrl& tree, const wxTreeItemId& item );
|
||||||
|
static wxTreeItemId GetNextItem( const wxTreeCtrl& tree, const wxTreeItemId& item );
|
||||||
|
|
||||||
|
// Combine descriptions of all aliases from given component.
|
||||||
|
static wxString combineDescriptions( LIB_COMPONENT* aComponent )
|
||||||
|
{
|
||||||
|
std::set<wxString> descriptions;
|
||||||
|
|
||||||
|
for( size_t i = 0; i < aComponent->GetAliasCount(); ++i )
|
||||||
|
{
|
||||||
|
LIB_ALIAS* a = aComponent->GetAlias( i );
|
||||||
|
|
||||||
|
if ( !a->GetDescription().empty() )
|
||||||
|
descriptions.insert( a->GetDescription() );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString result;
|
||||||
|
BOOST_FOREACH( const wxString& s, descriptions )
|
||||||
|
result += s + wxT("\n");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Combine keywords. Keywords come as a string, but are considered space-separated
|
||||||
|
// individual words. Return a string with a unique set of these.
|
||||||
|
static wxString combineKeywords( LIB_COMPONENT* aComponent )
|
||||||
|
{
|
||||||
|
std::set<wxString> keywords;
|
||||||
|
|
||||||
|
for( size_t i = 0; i < aComponent->GetAliasCount(); ++i )
|
||||||
|
{
|
||||||
|
LIB_ALIAS* a = aComponent->GetAlias( i );
|
||||||
|
wxStringTokenizer tokenizer( a->GetKeyWords() );
|
||||||
|
|
||||||
|
while ( tokenizer.HasMoreTokens() )
|
||||||
|
keywords.insert( tokenizer.GetNextToken() );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString result;
|
||||||
|
BOOST_FOREACH( const wxString& s, keywords )
|
||||||
|
result += s + wxT(" ");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT( wxWindow* aParent, const wxString& aTitle,
|
||||||
|
COMPONENT_TREE_SEARCH_CONTAINER* aContainer )
|
||||||
|
: DIALOG_CHOOSE_COMPONENT_BASE( aParent, wxID_ANY, aTitle ),
|
||||||
|
m_search_container( aContainer ),
|
||||||
|
m_selected_component( NULL ),
|
||||||
|
m_external_browser_requested( false ),
|
||||||
|
m_received_doubleclick_in_tree( false )
|
||||||
|
{
|
||||||
|
// TODO: restore last size user was choosing.
|
||||||
|
m_search_container->SetTree( m_libraryComponentTree );
|
||||||
|
m_searchBox->SetFocus();
|
||||||
|
m_componentDetails->SetEditable( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// After this dialog is done: return the component that has been selected, or an
|
||||||
|
// empty string if there is none.
|
||||||
|
wxString DIALOG_CHOOSE_COMPONENT::GetSelectedComponentName() const
|
||||||
|
{
|
||||||
|
if ( m_selected_component == NULL )
|
||||||
|
return wxEmptyString;
|
||||||
|
|
||||||
|
return m_selected_component->GetName();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_CHOOSE_COMPONENT::OnSearchBoxChange( wxCommandEvent& aEvent )
|
||||||
|
{
|
||||||
|
m_selected_component = NULL;
|
||||||
|
m_search_container->UpdateSearchTerm( m_searchBox->GetLineText(0) );
|
||||||
|
updateSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_CHOOSE_COMPONENT::OnSearchBoxEnter( wxCommandEvent& aEvent )
|
||||||
|
{
|
||||||
|
EndModal( wxID_OK ); // We are done.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_CHOOSE_COMPONENT::SelectIfValid( const wxTreeItemId& aTreeId )
|
||||||
|
{
|
||||||
|
if ( aTreeId.IsOk() && aTreeId != m_libraryComponentTree->GetRootItem() )
|
||||||
|
m_libraryComponentTree->SelectItem( aTreeId );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_CHOOSE_COMPONENT::OnInterceptSearchBoxKey( wxKeyEvent& aKeyStroke )
|
||||||
|
{
|
||||||
|
// Cursor up/down are forwarded to the tree. This is done by intercepting some navigational
|
||||||
|
// keystrokes that normally would go to the text search box (which has the focus by default).
|
||||||
|
const wxTreeItemId sel = m_libraryComponentTree->GetSelection();
|
||||||
|
|
||||||
|
switch ( aKeyStroke.GetKeyCode() )
|
||||||
|
{
|
||||||
|
case WXK_UP:
|
||||||
|
SelectIfValid( GetPrevItem( *m_libraryComponentTree, sel ) );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_DOWN:
|
||||||
|
SelectIfValid( GetNextItem( *m_libraryComponentTree, sel ) );
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
aKeyStroke.Skip(); // Pass on to search box.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_CHOOSE_COMPONENT::OnTreeSelect( wxTreeEvent& aEvent )
|
||||||
|
{
|
||||||
|
updateSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_CHOOSE_COMPONENT::OnDoubleClickTreeSelect( wxTreeEvent& aEvent )
|
||||||
|
{
|
||||||
|
updateSelection();
|
||||||
|
|
||||||
|
if ( m_selected_component == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Ok, got selection. We don't just end the modal dialog here, but
|
||||||
|
// wait for the MouseUp event to occur. Otherwise something (broken?)
|
||||||
|
// happens: the dialog will close and will deliver the 'MouseUp' event
|
||||||
|
// to the eeschema canvas, that will immediately place the component.
|
||||||
|
m_received_doubleclick_in_tree = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_CHOOSE_COMPONENT::OnTreeMouseUp( wxMouseEvent& aMouseEvent )
|
||||||
|
{
|
||||||
|
if ( m_received_doubleclick_in_tree )
|
||||||
|
EndModal( wxID_OK ); // We are done (see OnDoubleClickTreeSelect)
|
||||||
|
else
|
||||||
|
aMouseEvent.Skip(); // Let upstream handle it.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_CHOOSE_COMPONENT::OnStartComponentBrowser( wxMouseEvent& aEvent )
|
||||||
|
{
|
||||||
|
m_external_browser_requested = true;
|
||||||
|
EndModal( wxID_OK ); // We are done.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DIALOG_CHOOSE_COMPONENT::updateSelection()
|
||||||
|
{
|
||||||
|
LIB_COMPONENT* selection = m_search_container->GetSelectedComponent();
|
||||||
|
|
||||||
|
if ( selection == m_selected_component )
|
||||||
|
return; // no change.
|
||||||
|
|
||||||
|
m_selected_component = selection;
|
||||||
|
|
||||||
|
m_componentDetails->Clear();
|
||||||
|
|
||||||
|
if ( m_selected_component == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxFont font_normal = m_componentDetails->GetFont();
|
||||||
|
wxFont font_bold = m_componentDetails->GetFont();
|
||||||
|
font_bold.SetWeight( wxFONTWEIGHT_BOLD );
|
||||||
|
|
||||||
|
wxTextAttr headline_attribute;
|
||||||
|
headline_attribute.SetFont(font_bold);
|
||||||
|
wxTextAttr text_attribute;
|
||||||
|
text_attribute.SetFont(font_normal);
|
||||||
|
|
||||||
|
const wxString description = combineDescriptions( selection );
|
||||||
|
|
||||||
|
if ( !description.empty() )
|
||||||
|
{
|
||||||
|
m_componentDetails->SetDefaultStyle( headline_attribute );
|
||||||
|
m_componentDetails->AppendText( _("Description\n") );
|
||||||
|
m_componentDetails->SetDefaultStyle( text_attribute );
|
||||||
|
m_componentDetails->AppendText( description );
|
||||||
|
m_componentDetails->AppendText( wxT("\n") );
|
||||||
|
}
|
||||||
|
|
||||||
|
const wxString keywords = combineKeywords( selection );
|
||||||
|
|
||||||
|
if ( !keywords.empty() )
|
||||||
|
{
|
||||||
|
m_componentDetails->SetDefaultStyle( headline_attribute );
|
||||||
|
m_componentDetails->AppendText( _("Keywords\n") );
|
||||||
|
m_componentDetails->SetDefaultStyle( text_attribute );
|
||||||
|
m_componentDetails->AppendText( keywords );
|
||||||
|
}
|
||||||
|
|
||||||
|
m_componentDetails->SetInsertionPoint( 0 ); // scroll up.
|
||||||
|
}
|
||||||
|
|
||||||
|
static wxTreeItemId GetPrevItem( const wxTreeCtrl& tree, const wxTreeItemId& item )
|
||||||
|
{
|
||||||
|
wxTreeItemId prevItem = tree.GetPrevSibling( item );
|
||||||
|
|
||||||
|
if ( !prevItem.IsOk() )
|
||||||
|
{
|
||||||
|
const wxTreeItemId parent = tree.GetItemParent( item );
|
||||||
|
prevItem = tree.GetLastChild( tree.GetPrevSibling( parent ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return prevItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
static wxTreeItemId GetNextItem( const wxTreeCtrl& tree, const wxTreeItemId& item )
|
||||||
|
{
|
||||||
|
wxTreeItemId nextItem = tree.GetNextSibling( item );
|
||||||
|
|
||||||
|
if ( !nextItem.IsOk() )
|
||||||
|
{
|
||||||
|
const wxTreeItemId parent = tree.GetItemParent( item );
|
||||||
|
wxTreeItemIdValue dummy;
|
||||||
|
nextItem = tree.GetFirstChild( tree.GetNextSibling( parent ), dummy );
|
||||||
|
}
|
||||||
|
|
||||||
|
return nextItem;
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
/* -*- c++ -*-
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Henner Zeller <h.zeller@acm.org>
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <dialog_choose_component_base.h>
|
||||||
|
|
||||||
|
class COMPONENT_TREE_SEARCH_CONTAINER;
|
||||||
|
class LIB_COMPONENT;
|
||||||
|
class wxTreeItemId;
|
||||||
|
|
||||||
|
class DIALOG_CHOOSE_COMPONENT : public DIALOG_CHOOSE_COMPONENT_BASE
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DIALOG_CHOOSE_COMPONENT( wxWindow* aParent, const wxString& aTitle,
|
||||||
|
COMPONENT_TREE_SEARCH_CONTAINER* aSearch_container );
|
||||||
|
|
||||||
|
/** Function GetSelectedComponentName
|
||||||
|
* To be called after this dialog returns from ShowModal().
|
||||||
|
*
|
||||||
|
* @return the component that has been selected, or an empty string if there is none.
|
||||||
|
*/
|
||||||
|
wxString GetSelectedComponentName() const;
|
||||||
|
|
||||||
|
/** Function IsExternalBrowserSelected
|
||||||
|
*
|
||||||
|
* @return true, iff the browser pressed the browsing button.
|
||||||
|
*/
|
||||||
|
bool IsExternalBrowserSelected() const { return m_external_browser_requested; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void OnSearchBoxChange( wxCommandEvent& aEvent );
|
||||||
|
virtual void OnSearchBoxEnter( wxCommandEvent& aEvent );
|
||||||
|
virtual void OnInterceptSearchBoxKey( wxKeyEvent& aEvent );
|
||||||
|
|
||||||
|
virtual void OnTreeSelect( wxTreeEvent& aEvent );
|
||||||
|
virtual void OnDoubleClickTreeSelect( wxTreeEvent& aEvent );
|
||||||
|
virtual void OnTreeMouseUp( wxMouseEvent& aMouseEvent );
|
||||||
|
|
||||||
|
virtual void OnStartComponentBrowser( wxMouseEvent& aEvent );
|
||||||
|
|
||||||
|
private:
|
||||||
|
void updateSelection();
|
||||||
|
void SelectIfValid( const wxTreeItemId& aTreeId );
|
||||||
|
|
||||||
|
COMPONENT_TREE_SEARCH_CONTAINER* const m_search_container;
|
||||||
|
LIB_COMPONENT* m_selected_component;
|
||||||
|
bool m_external_browser_requested;
|
||||||
|
bool m_received_doubleclick_in_tree;
|
||||||
|
};
|
|
@ -0,0 +1,109 @@
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// C++ code generated with wxFormBuilder (version Nov 6 2013)
|
||||||
|
// http://www.wxformbuilder.org/
|
||||||
|
//
|
||||||
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "dialog_choose_component_base.h"
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
DIALOG_CHOOSE_COMPONENT_BASE::DIALOG_CHOOSE_COMPONENT_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
|
||||||
|
{
|
||||||
|
this->SetSizeHints( wxSize( 450,-1 ), wxDefaultSize );
|
||||||
|
|
||||||
|
wxBoxSizer* bSizer1;
|
||||||
|
bSizer1 = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
|
wxBoxSizer* bSearchSizer;
|
||||||
|
bSearchSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
m_searchLabel = new wxStaticText( this, wxID_ANY, wxT("Search"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_searchLabel->Wrap( -1 );
|
||||||
|
bSearchSizer->Add( m_searchLabel, 0, wxALL, 5 );
|
||||||
|
|
||||||
|
m_searchBox = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
|
||||||
|
bSearchSizer->Add( m_searchBox, 1, wxALL, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
bSizer1->Add( bSearchSizer, 0, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
m_libraryComponentTree = new wxTreeCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_DEFAULT_STYLE|wxTR_HIDE_ROOT );
|
||||||
|
m_libraryComponentTree->SetMinSize( wxSize( -1,50 ) );
|
||||||
|
|
||||||
|
bSizer1->Add( m_libraryComponentTree, 2, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
wxBoxSizer* bSizer3;
|
||||||
|
bSizer3 = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
m_componentView = new wxStaticText( this, wxID_ANY, wxT("TODO\n(mini. comp image)"), wxDefaultPosition, wxSize( 100,100 ), 0 );
|
||||||
|
m_componentView->Wrap( -1 );
|
||||||
|
m_componentView->SetMinSize( wxSize( 100,100 ) );
|
||||||
|
|
||||||
|
bSizer3->Add( m_componentView, 0, wxALL, 5 );
|
||||||
|
|
||||||
|
wxBoxSizer* bSizer6;
|
||||||
|
bSizer6 = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
|
m_componentDetails = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,100 ), wxTE_MULTILINE );
|
||||||
|
bSizer6->Add( m_componentDetails, 1, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
m_unitChoice = new wxComboBox( this, wxID_ANY, wxT("Unit A"), wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||||
|
m_unitChoice->Enable( false );
|
||||||
|
m_unitChoice->Hide();
|
||||||
|
|
||||||
|
bSizer6->Add( m_unitChoice, 0, wxALL, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
bSizer3->Add( bSizer6, 2, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
bSizer1->Add( bSizer3, 1, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
wxBoxSizer* bSizer5;
|
||||||
|
bSizer5 = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
|
||||||
|
bSizer5->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
m_button = new wxStdDialogButtonSizer();
|
||||||
|
m_buttonOK = new wxButton( this, wxID_OK );
|
||||||
|
m_button->AddButton( m_buttonOK );
|
||||||
|
m_buttonCancel = new wxButton( this, wxID_CANCEL );
|
||||||
|
m_button->AddButton( m_buttonCancel );
|
||||||
|
m_button->Realize();
|
||||||
|
|
||||||
|
bSizer5->Add( m_button, 0, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
bSizer1->Add( bSizer5, 0, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
this->SetSizer( bSizer1 );
|
||||||
|
this->Layout();
|
||||||
|
|
||||||
|
this->Centre( wxBOTH );
|
||||||
|
|
||||||
|
// Connect Events
|
||||||
|
m_searchBox->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnInterceptSearchBoxKey ), NULL, this );
|
||||||
|
m_searchBox->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnSearchBoxChange ), NULL, this );
|
||||||
|
m_searchBox->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnSearchBoxEnter ), NULL, this );
|
||||||
|
m_libraryComponentTree->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnTreeMouseUp ), NULL, this );
|
||||||
|
m_libraryComponentTree->Connect( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, wxTreeEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnDoubleClickTreeSelect ), NULL, this );
|
||||||
|
m_libraryComponentTree->Connect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnTreeSelect ), NULL, this );
|
||||||
|
m_componentView->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnStartComponentBrowser ), NULL, this );
|
||||||
|
}
|
||||||
|
|
||||||
|
DIALOG_CHOOSE_COMPONENT_BASE::~DIALOG_CHOOSE_COMPONENT_BASE()
|
||||||
|
{
|
||||||
|
// Disconnect Events
|
||||||
|
m_searchBox->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnInterceptSearchBoxKey ), NULL, this );
|
||||||
|
m_searchBox->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnSearchBoxChange ), NULL, this );
|
||||||
|
m_searchBox->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnSearchBoxEnter ), NULL, this );
|
||||||
|
m_libraryComponentTree->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnTreeMouseUp ), NULL, this );
|
||||||
|
m_libraryComponentTree->Disconnect( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, wxTreeEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnDoubleClickTreeSelect ), NULL, this );
|
||||||
|
m_libraryComponentTree->Disconnect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnTreeSelect ), NULL, this );
|
||||||
|
m_componentView->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_CHOOSE_COMPONENT_BASE::OnStartComponentBrowser ), NULL, this );
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,710 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<wxFormBuilder_Project>
|
||||||
|
<FileVersion major="1" minor="11" />
|
||||||
|
<object class="Project" expanded="1">
|
||||||
|
<property name="class_decoration"></property>
|
||||||
|
<property name="code_generation">C++</property>
|
||||||
|
<property name="disconnect_events">1</property>
|
||||||
|
<property name="disconnect_mode">source_name</property>
|
||||||
|
<property name="disconnect_php_events">0</property>
|
||||||
|
<property name="disconnect_python_events">0</property>
|
||||||
|
<property name="embedded_files_path">res</property>
|
||||||
|
<property name="encoding">UTF-8</property>
|
||||||
|
<property name="event_generation">connect</property>
|
||||||
|
<property name="file">dialog_choose_component_base</property>
|
||||||
|
<property name="first_id">1000</property>
|
||||||
|
<property name="help_provider">none</property>
|
||||||
|
<property name="internationalize">0</property>
|
||||||
|
<property name="name">dialog_choose_component_base</property>
|
||||||
|
<property name="namespace"></property>
|
||||||
|
<property name="path">.</property>
|
||||||
|
<property name="precompiled_header"></property>
|
||||||
|
<property name="relative_path">1</property>
|
||||||
|
<property name="skip_lua_events">1</property>
|
||||||
|
<property name="skip_php_events">1</property>
|
||||||
|
<property name="skip_python_events">1</property>
|
||||||
|
<property name="ui_table">UI</property>
|
||||||
|
<property name="use_enum">0</property>
|
||||||
|
<property name="use_microsoft_bom">0</property>
|
||||||
|
<object class="Dialog" expanded="1">
|
||||||
|
<property name="aui_managed">0</property>
|
||||||
|
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="center">wxBOTH</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="event_handler">impl_virtual</property>
|
||||||
|
<property name="extra_style"></property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="minimum_size">450,-1</property>
|
||||||
|
<property name="name">DIALOG_CHOOSE_COMPONENT_BASE</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="size">450,500</property>
|
||||||
|
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||||
|
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
|
||||||
|
<property name="title"></property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnActivate"></event>
|
||||||
|
<event name="OnActivateApp"></event>
|
||||||
|
<event name="OnAuiFindManager"></event>
|
||||||
|
<event name="OnAuiPaneButton"></event>
|
||||||
|
<event name="OnAuiPaneClose"></event>
|
||||||
|
<event name="OnAuiPaneMaximize"></event>
|
||||||
|
<event name="OnAuiPaneRestore"></event>
|
||||||
|
<event name="OnAuiRender"></event>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnClose"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnHibernate"></event>
|
||||||
|
<event name="OnIconize"></event>
|
||||||
|
<event name="OnIdle"></event>
|
||||||
|
<event name="OnInitDialog"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer1</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxBoxSizer" expanded="0">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSearchSizer</property>
|
||||||
|
<property name="orient">wxHORIZONTAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticText" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">Search</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_searchLabel</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<property name="wrap">-1</property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxTextCtrl" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size">-1,-1</property>
|
||||||
|
<property name="maxlength"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_searchBox</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style">wxTE_PROCESS_ENTER</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="value"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown">OnInterceptSearchBoxKey</event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnText">OnSearchBoxChange</event>
|
||||||
|
<event name="OnTextEnter">OnSearchBoxEnter</event>
|
||||||
|
<event name="OnTextMaxLen"></event>
|
||||||
|
<event name="OnTextURL"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">2</property>
|
||||||
|
<object class="wxTreeCtrl" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size">-1,50</property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_libraryComponentTree</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style">wxTR_DEFAULT_STYLE|wxTR_HIDE_ROOT</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp">OnTreeMouseUp</event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnTreeBeginDrag"></event>
|
||||||
|
<event name="OnTreeBeginLabelEdit"></event>
|
||||||
|
<event name="OnTreeBeginRDrag"></event>
|
||||||
|
<event name="OnTreeDeleteItem"></event>
|
||||||
|
<event name="OnTreeEndDrag"></event>
|
||||||
|
<event name="OnTreeEndLabelEdit"></event>
|
||||||
|
<event name="OnTreeGetInfo"></event>
|
||||||
|
<event name="OnTreeItemActivated">OnDoubleClickTreeSelect</event>
|
||||||
|
<event name="OnTreeItemCollapsed"></event>
|
||||||
|
<event name="OnTreeItemCollapsing"></event>
|
||||||
|
<event name="OnTreeItemExpanded"></event>
|
||||||
|
<event name="OnTreeItemExpanding"></event>
|
||||||
|
<event name="OnTreeItemGetTooltip"></event>
|
||||||
|
<event name="OnTreeItemMenu"></event>
|
||||||
|
<event name="OnTreeItemMiddleClick"></event>
|
||||||
|
<event name="OnTreeItemRightClick"></event>
|
||||||
|
<event name="OnTreeKeyDown"></event>
|
||||||
|
<event name="OnTreeSelChanged">OnTreeSelect</event>
|
||||||
|
<event name="OnTreeSelChanging"></event>
|
||||||
|
<event name="OnTreeSetInfo"></event>
|
||||||
|
<event name="OnTreeStateImageClick"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer3</property>
|
||||||
|
<property name="orient">wxHORIZONTAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticText" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">TODO
(mini. comp image)</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size">100,100</property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_componentView</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size">100,100</property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<property name="wrap">-1</property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp">OnStartComponentBrowser</event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND</property>
|
||||||
|
<property name="proportion">2</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer6</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxTextCtrl" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="maxlength"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size">-1,100</property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_componentDetails</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size">-1,-1</property>
|
||||||
|
<property name="style">wxTE_MULTILINE</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="value"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnText"></event>
|
||||||
|
<event name="OnTextEnter"></event>
|
||||||
|
<event name="OnTextMaxLen"></event>
|
||||||
|
<event name="OnTextURL"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxComboBox" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="choices"></property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">0</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">1</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_unitChoice</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="selection">-1</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="value">Unit A</property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnCombobox"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnText"></event>
|
||||||
|
<event name="OnTextEnter"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALIGN_RIGHT</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer5</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStdDialogButtonSizer" expanded="0">
|
||||||
|
<property name="Apply">0</property>
|
||||||
|
<property name="Cancel">1</property>
|
||||||
|
<property name="ContextHelp">0</property>
|
||||||
|
<property name="Help">0</property>
|
||||||
|
<property name="No">0</property>
|
||||||
|
<property name="OK">1</property>
|
||||||
|
<property name="Save">0</property>
|
||||||
|
<property name="Yes">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">m_button</property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<event name="OnApplyButtonClick"></event>
|
||||||
|
<event name="OnCancelButtonClick"></event>
|
||||||
|
<event name="OnContextHelpButtonClick"></event>
|
||||||
|
<event name="OnHelpButtonClick"></event>
|
||||||
|
<event name="OnNoButtonClick"></event>
|
||||||
|
<event name="OnOKButtonClick"></event>
|
||||||
|
<event name="OnSaveButtonClick"></event>
|
||||||
|
<event name="OnYesButtonClick"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</wxFormBuilder_Project>
|
|
@ -0,0 +1,67 @@
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// C++ code generated with wxFormBuilder (version Nov 6 2013)
|
||||||
|
// http://www.wxformbuilder.org/
|
||||||
|
//
|
||||||
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __DIALOG_CHOOSE_COMPONENT_BASE_H__
|
||||||
|
#define __DIALOG_CHOOSE_COMPONENT_BASE_H__
|
||||||
|
|
||||||
|
#include <wx/artprov.h>
|
||||||
|
#include <wx/xrc/xmlres.h>
|
||||||
|
class DIALOG_SHIM;
|
||||||
|
|
||||||
|
#include "dialog_shim.h"
|
||||||
|
#include <wx/string.h>
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/gdicmn.h>
|
||||||
|
#include <wx/font.h>
|
||||||
|
#include <wx/colour.h>
|
||||||
|
#include <wx/settings.h>
|
||||||
|
#include <wx/textctrl.h>
|
||||||
|
#include <wx/sizer.h>
|
||||||
|
#include <wx/treectrl.h>
|
||||||
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// Class DIALOG_CHOOSE_COMPONENT_BASE
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class DIALOG_CHOOSE_COMPONENT_BASE : public DIALOG_SHIM
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxStaticText* m_searchLabel;
|
||||||
|
wxTextCtrl* m_searchBox;
|
||||||
|
wxTreeCtrl* m_libraryComponentTree;
|
||||||
|
wxStaticText* m_componentView;
|
||||||
|
wxTextCtrl* m_componentDetails;
|
||||||
|
wxComboBox* m_unitChoice;
|
||||||
|
wxStdDialogButtonSizer* m_button;
|
||||||
|
wxButton* m_buttonOK;
|
||||||
|
wxButton* m_buttonCancel;
|
||||||
|
|
||||||
|
// Virtual event handlers, overide them in your derived class
|
||||||
|
virtual void OnInterceptSearchBoxKey( wxKeyEvent& event ) { event.Skip(); }
|
||||||
|
virtual void OnSearchBoxChange( wxCommandEvent& event ) { event.Skip(); }
|
||||||
|
virtual void OnSearchBoxEnter( wxCommandEvent& event ) { event.Skip(); }
|
||||||
|
virtual void OnTreeMouseUp( wxMouseEvent& event ) { event.Skip(); }
|
||||||
|
virtual void OnDoubleClickTreeSelect( wxTreeEvent& event ) { event.Skip(); }
|
||||||
|
virtual void OnTreeSelect( wxTreeEvent& event ) { event.Skip(); }
|
||||||
|
virtual void OnStartComponentBrowser( wxMouseEvent& event ) { event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
DIALOG_CHOOSE_COMPONENT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 450,500 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||||
|
~DIALOG_CHOOSE_COMPONENT_BASE();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //__DIALOG_CHOOSE_COMPONENT_BASE_H__
|
|
@ -45,11 +45,14 @@
|
||||||
#include <viewlib_frame.h>
|
#include <viewlib_frame.h>
|
||||||
#include <eeschema_id.h>
|
#include <eeschema_id.h>
|
||||||
|
|
||||||
|
#include <dialog_choose_component.h>
|
||||||
|
#include <component_tree_search_container.h>
|
||||||
#include <dialog_get_component.h>
|
#include <dialog_get_component.h>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
// TODO(hzeller): would be good if we could give a pre-selected component.
|
||||||
wxString SCH_BASE_FRAME::SelectComponentFromLibBrowser( void )
|
wxString SCH_BASE_FRAME::SelectComponentFromLibBrowser( void )
|
||||||
{
|
{
|
||||||
wxSemaphore semaphore( 0, 1 );
|
wxSemaphore semaphore( 0, 1 );
|
||||||
|
@ -76,118 +79,66 @@ wxString SCH_BASE_FRAME::SelectComponentFromLibBrowser( void )
|
||||||
return cmpname;
|
return cmpname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
wxString SCH_BASE_FRAME::SelectComponentFromLibrary( const wxString& aLibname,
|
wxString SCH_BASE_FRAME::SelectComponentFromLibrary( const wxString& aLibname,
|
||||||
wxArrayString& aHistoryList,
|
wxArrayString& aHistoryList,
|
||||||
bool aUseLibBrowser,
|
bool aUseLibBrowser,
|
||||||
int* aUnit,
|
int* aUnit,
|
||||||
int* aConvert )
|
int* aConvert )
|
||||||
{
|
{
|
||||||
int CmpCount = 0;
|
int cmpCount = 0;
|
||||||
LIB_COMPONENT* libEntry = NULL;
|
wxString dialogTitle;
|
||||||
CMP_LIBRARY* currLibrary = NULL;
|
|
||||||
wxString cmpName, keys, msg;
|
COMPONENT_TREE_SEARCH_CONTAINER search_container; // Container doing search-as-you-type
|
||||||
bool allowWildSeach = true;
|
|
||||||
|
|
||||||
if( !aLibname.IsEmpty() )
|
if( !aLibname.IsEmpty() )
|
||||||
{
|
{
|
||||||
currLibrary = CMP_LIBRARY::FindLibrary( aLibname );
|
CMP_LIBRARY* currLibrary = CMP_LIBRARY::FindLibrary( aLibname );
|
||||||
|
|
||||||
if( currLibrary != NULL )
|
if( currLibrary != NULL )
|
||||||
CmpCount = currLibrary->GetCount();
|
{
|
||||||
|
cmpCount = currLibrary->GetCount();
|
||||||
|
search_container.AddLibrary( *currLibrary );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BOOST_FOREACH( CMP_LIBRARY& lib, CMP_LIBRARY::GetLibraryList() )
|
BOOST_FOREACH( CMP_LIBRARY& lib, CMP_LIBRARY::GetLibraryList() )
|
||||||
{
|
{
|
||||||
CmpCount += lib.GetCount();
|
cmpCount += lib.GetCount();
|
||||||
|
search_container.AddLibrary( lib );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ask for a component name or key words
|
if( !aHistoryList.empty() )
|
||||||
msg.Printf( _( "Component selection (%d items loaded):" ), CmpCount );
|
{
|
||||||
|
// This is good for a transition for experineced users: giving them a History. Ideally,
|
||||||
|
// we actually make this part even faster to access with a popup on ALT-a or something.
|
||||||
|
search_container.AddComponentList( _("-- History --"), aHistoryList, NULL, true );
|
||||||
|
search_container.SetPreselectNode( aHistoryList[0] );
|
||||||
|
}
|
||||||
|
|
||||||
DIALOG_GET_COMPONENT dlg( this, aHistoryList, msg, aUseLibBrowser );
|
dialogTitle.Printf( _( "Choose Component (%d items loaded)" ), cmpCount );
|
||||||
|
DIALOG_CHOOSE_COMPONENT dlg( this, dialogTitle, &search_container );
|
||||||
if( aHistoryList.GetCount() )
|
|
||||||
dlg.SetComponentName( aHistoryList[0] );
|
|
||||||
|
|
||||||
if( dlg.ShowModal() == wxID_CANCEL )
|
if( dlg.ShowModal() == wxID_CANCEL )
|
||||||
return wxEmptyString;
|
return wxEmptyString;
|
||||||
|
|
||||||
if( dlg.m_GetExtraFunction )
|
wxString cmpName = dlg.GetSelectedComponentName();
|
||||||
|
|
||||||
|
if( dlg.IsExternalBrowserSelected() )
|
||||||
{
|
{
|
||||||
cmpName = SelectComponentFromLibBrowser();
|
cmpName = SelectComponentFromLibBrowser(); // Would be good if we could pre-select.
|
||||||
|
|
||||||
if( aUnit )
|
if( aUnit )
|
||||||
*aUnit = LIB_VIEW_FRAME::GetUnit();
|
*aUnit = LIB_VIEW_FRAME::GetUnit();
|
||||||
|
|
||||||
if( aConvert )
|
if( aConvert )
|
||||||
*aConvert = LIB_VIEW_FRAME::GetConvert();
|
*aConvert = LIB_VIEW_FRAME::GetConvert();
|
||||||
if( !cmpName.IsEmpty() )
|
}
|
||||||
|
|
||||||
|
if ( !cmpName.empty() )
|
||||||
AddHistoryComponentName( aHistoryList, cmpName );
|
AddHistoryComponentName( aHistoryList, cmpName );
|
||||||
return cmpName;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
cmpName = dlg.GetComponentName();
|
|
||||||
|
|
||||||
if( cmpName.IsEmpty() )
|
|
||||||
return wxEmptyString;
|
|
||||||
|
|
||||||
// Here, cmpName contains the component name,
|
|
||||||
// or "*" if the Select All dialog button was pressed
|
|
||||||
|
|
||||||
#ifndef KICAD_KEEPCASE
|
|
||||||
cmpName.MakeUpper();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if( dlg.IsKeyword() )
|
|
||||||
{
|
|
||||||
allowWildSeach = false;
|
|
||||||
keys = cmpName;
|
|
||||||
cmpName = DataBaseGetName( this, keys, cmpName );
|
|
||||||
|
|
||||||
if( cmpName.IsEmpty() )
|
|
||||||
return wxEmptyString;
|
|
||||||
}
|
|
||||||
else if( cmpName == wxT( "*" ) )
|
|
||||||
{
|
|
||||||
allowWildSeach = false;
|
|
||||||
|
|
||||||
if( GetNameOfPartToLoad( this, currLibrary, cmpName ) == 0 )
|
|
||||||
return wxEmptyString;
|
|
||||||
}
|
|
||||||
else if( cmpName.Contains( wxT( "?" ) ) || cmpName.Contains( wxT( "*" ) ) )
|
|
||||||
{
|
|
||||||
allowWildSeach = false;
|
|
||||||
cmpName = DataBaseGetName( this, keys, cmpName );
|
|
||||||
|
|
||||||
if( cmpName.IsEmpty() )
|
|
||||||
return wxEmptyString;
|
|
||||||
}
|
|
||||||
|
|
||||||
libEntry = CMP_LIBRARY::FindLibraryComponent( cmpName, aLibname );
|
|
||||||
|
|
||||||
if( !libEntry && allowWildSeach ) // Search with wildcard
|
|
||||||
{
|
|
||||||
allowWildSeach = false;
|
|
||||||
wxString wildname = wxChar( '*' ) + cmpName + wxChar( '*' );
|
|
||||||
cmpName = wildname;
|
|
||||||
cmpName = DataBaseGetName( this, keys, cmpName );
|
|
||||||
|
|
||||||
if( !cmpName.IsEmpty() )
|
|
||||||
libEntry = CMP_LIBRARY::FindLibraryComponent( cmpName, aLibname );
|
|
||||||
|
|
||||||
if( !libEntry )
|
|
||||||
return wxEmptyString;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !libEntry )
|
|
||||||
{
|
|
||||||
msg.Printf( _( "Failed to find part <%s> in library" ), GetChars( cmpName ) );
|
|
||||||
DisplayError( this, msg );
|
|
||||||
return wxEmptyString;
|
|
||||||
}
|
|
||||||
|
|
||||||
AddHistoryComponentName( aHistoryList, cmpName );
|
|
||||||
return cmpName;
|
return cmpName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -200,8 +200,16 @@ void EDGE_MODULE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, GR_DRAWMODE draw_mode,
|
||||||
StAngle = ArcTangente( dy - uy0, dx - ux0 );
|
StAngle = ArcTangente( dy - uy0, dx - ux0 );
|
||||||
EndAngle = StAngle + m_Angle;
|
EndAngle = StAngle + m_Angle;
|
||||||
|
|
||||||
|
if( !panel->GetPrintMirrored() )
|
||||||
|
{
|
||||||
if( StAngle > EndAngle )
|
if( StAngle > EndAngle )
|
||||||
EXCHG( StAngle, EndAngle );
|
EXCHG( StAngle, EndAngle );
|
||||||
|
}
|
||||||
|
else // Mirrored mode: arc orientation is reversed
|
||||||
|
{
|
||||||
|
if( StAngle < EndAngle )
|
||||||
|
EXCHG( StAngle, EndAngle );
|
||||||
|
}
|
||||||
|
|
||||||
if( typeaff == LINE )
|
if( typeaff == LINE )
|
||||||
{
|
{
|
||||||
|
|
|
@ -799,7 +799,7 @@ void MODULE::Flip( const wxPoint& aCentre )
|
||||||
|
|
||||||
// Mirror pads to other side of board about the x axis, i.e. vertically.
|
// Mirror pads to other side of board about the x axis, i.e. vertically.
|
||||||
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
|
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
|
||||||
pad->Flip( m_Pos.y );
|
pad->Flip( m_Pos );
|
||||||
|
|
||||||
// Mirror reference.
|
// Mirror reference.
|
||||||
text = m_Reference;
|
text = m_Reference;
|
||||||
|
|
|
@ -214,13 +214,13 @@ void D_PAD::SetOrientation( double aAngle )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void D_PAD::Flip( int aTranslationY )
|
void D_PAD::Flip( const wxPoint& aCentre )
|
||||||
{
|
{
|
||||||
int y = GetPosition().y - aTranslationY;
|
int y = GetPosition().y - aCentre.y;
|
||||||
|
|
||||||
y = -y; // invert about x axis.
|
y = -y; // invert about x axis.
|
||||||
|
|
||||||
y += aTranslationY;
|
y += aCentre.y;
|
||||||
|
|
||||||
SetY( y );
|
SetY( y );
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ public:
|
||||||
void SetOffset( const wxPoint& aOffset ) { m_Offset = aOffset; }
|
void SetOffset( const wxPoint& aOffset ) { m_Offset = aOffset; }
|
||||||
const wxPoint& GetOffset() const { return m_Offset; }
|
const wxPoint& GetOffset() const { return m_Offset; }
|
||||||
|
|
||||||
void Flip( int aTranslationY );
|
void Flip( const wxPoint& aCentre ); // Virtual function
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SetOrientation
|
* Function SetOrientation
|
||||||
|
|
|
@ -169,9 +169,13 @@ bool EDA_APP::OnInit()
|
||||||
bundledir.RemoveLastDir();
|
bundledir.RemoveLastDir();
|
||||||
|
|
||||||
// Prepend in PYTHONPATH the content of the bundle libraries !
|
// Prepend in PYTHONPATH the content of the bundle libraries !
|
||||||
wxSetEnv("PYTHONPATH",((wxGetenv("PYTHONPATH") != NULL ) ? (wxString(wxGetenv("PYTHONPATH")) + ":") : wxString(""))
|
wxSetEnv("PYTHONPATH",((wxGetenv("PYTHONPATH") != NULL ) ? (wxString(wxGetenv("PYTHONPATH")) + ":") : wxString("")) +
|
||||||
+ bundledir.GetPath() +
|
"/Library/Application Support/kicad/scripting" + ":" +
|
||||||
"/Frameworks/wxPython/lib/python2.6/site-packages/wx-3.0-osx_cocoa" );
|
bundledir.GetPath() + "/PlugIns" + ":" +
|
||||||
|
wxString( wxGetenv("HOME") ) + "/Library/Application Support/kicad/scripting" +
|
||||||
|
bundledir.GetPath() +
|
||||||
|
"/Frameworks/wxPython/lib/python2.6/site-packages/wx-3.0-osx_cocoa"
|
||||||
|
);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
// On linux and osx, 2 others paths are
|
// On linux and osx, 2 others paths are
|
||||||
|
|
|
@ -282,7 +282,7 @@ void BOARD_PRINTOUT_CONTROLLER::DrawPage()
|
||||||
if( printMirror )
|
if( printMirror )
|
||||||
{
|
{
|
||||||
// Calculate the mirrored center of the board.
|
// Calculate the mirrored center of the board.
|
||||||
center.y = m_Parent->GetPageSizeIU().y - boardBoundingBox.Centre().y;
|
center.x = m_Parent->GetPageSizeIU().x - boardBoundingBox.Centre().x;
|
||||||
}
|
}
|
||||||
|
|
||||||
offset += center;
|
offset += center;
|
||||||
|
@ -301,21 +301,29 @@ void BOARD_PRINTOUT_CONTROLLER::DrawPage()
|
||||||
screen->m_IsPrinting = true;
|
screen->m_IsPrinting = true;
|
||||||
EDA_COLOR_T bg_color = g_DrawBgColor;
|
EDA_COLOR_T bg_color = g_DrawBgColor;
|
||||||
|
|
||||||
|
// Print frame reference, if reqquested, before
|
||||||
|
if( m_PrintParams.m_Print_Black_and_White )
|
||||||
|
GRForceBlackPen( true );
|
||||||
|
|
||||||
|
if( m_PrintParams.PrintBorderAndTitleBlock() )
|
||||||
|
m_Parent->DrawWorkSheet( dc, screen, m_PrintParams.m_PenDefaultSize,
|
||||||
|
IU_PER_MILS, titleblockFilename );
|
||||||
|
|
||||||
if( printMirror )
|
if( printMirror )
|
||||||
{
|
{
|
||||||
// To plot mirror, we reverse the y axis, and modify the plot y origin
|
// To plot mirror, we reverse the x axis, and modify the plot x origin
|
||||||
dc->SetAxisOrientation( true, true );
|
dc->SetAxisOrientation( false, false);
|
||||||
|
|
||||||
/* Plot offset y is moved by the y plot area size in order to have
|
/* Plot offset x is moved by the x plot area size in order to have
|
||||||
* the old draw area in the new draw area, because the draw origin has not moved
|
* the old draw area in the new draw area, because the draw origin has not moved
|
||||||
* (this is the upper left corner) but the Y axis is reversed, therefore the plotting area
|
* (this is the upper left corner) but the X axis is reversed, therefore the plotting area
|
||||||
* is the y coordinate values from - PlotAreaSize.y to 0 */
|
* is the x coordinate values from - PlotAreaSize.x to 0 */
|
||||||
int y_dc_offset = PlotAreaSizeInPixels.y;
|
int x_dc_offset = PlotAreaSizeInPixels.x;
|
||||||
y_dc_offset = KiROUND( y_dc_offset * userscale );
|
x_dc_offset = KiROUND( x_dc_offset * userscale );
|
||||||
dc->SetDeviceOrigin( 0, y_dc_offset );
|
dc->SetDeviceOrigin( x_dc_offset, 0 );
|
||||||
|
|
||||||
wxLogTrace( tracePrinting, wxT( "Device origin: x=%d, y=%d" ),
|
wxLogTrace( tracePrinting, wxT( "Device origin: x=%d, y=%d" ),
|
||||||
0, y_dc_offset );
|
x_dc_offset, 0 );
|
||||||
|
|
||||||
panel->SetClipBox( EDA_RECT( wxPoint( -MAX_VALUE/2, -MAX_VALUE/2 ),
|
panel->SetClipBox( EDA_RECT( wxPoint( -MAX_VALUE/2, -MAX_VALUE/2 ),
|
||||||
panel->GetClipBox()->GetSize() ) );
|
panel->GetClipBox()->GetSize() ) );
|
||||||
|
@ -359,13 +367,9 @@ void BOARD_PRINTOUT_CONTROLLER::DrawPage()
|
||||||
printMirror, &m_PrintParams );
|
printMirror, &m_PrintParams );
|
||||||
GRForceBlackPen( false );
|
GRForceBlackPen( false );
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if( m_PrintParams.m_Print_Black_and_White )
|
|
||||||
GRForceBlackPen( true );
|
GRForceBlackPen( true );
|
||||||
|
|
||||||
if( m_PrintParams.PrintBorderAndTitleBlock() )
|
|
||||||
m_Parent->DrawWorkSheet( dc, screen, m_PrintParams.m_PenDefaultSize,
|
|
||||||
IU_PER_MILS, titleblockFilename );
|
|
||||||
|
|
||||||
#if defined (GERBVIEW)
|
#if defined (GERBVIEW)
|
||||||
// In B&W mode, do not force black pen for Gerbview
|
// In B&W mode, do not force black pen for Gerbview
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
str_filename = str(filename)
|
str_filename = str(filename)
|
||||||
if str_filename.endswith(".brd"):
|
if str_filename.endswith(".brd"):
|
||||||
format = IO_MGR.LEGACY
|
format = IO_MGR.LEGACY
|
||||||
if str_filename.endswith(".kicad_brd"):
|
if str_filename.endswith(".kicad_pcb"):
|
||||||
format = IO_MGR.KICAD
|
format = IO_MGR.KICAD
|
||||||
return SaveBoard(filename,self,format)
|
return SaveBoard(filename,self,format)
|
||||||
|
|
||||||
|
|
|
@ -50,10 +50,11 @@ e.SetShape(S_SEGMENT)
|
||||||
module.Add(e)
|
module.Add(e)
|
||||||
|
|
||||||
# save the PCB to disk
|
# save the PCB to disk
|
||||||
module.SetLibRef("FPC"+str(pads))
|
fpid = FPID("FPC"+str(pads)) #the name in library
|
||||||
|
module.SetFPID( fpid )
|
||||||
|
|
||||||
try:
|
try:
|
||||||
FootprintLibCreate("fpc40.mod")
|
FootprintLibCreate("fpc40.mod")
|
||||||
except:
|
except:
|
||||||
pass # we try to create, but may be it exists already
|
pass # we try to create, but may be it exists already
|
||||||
FootprintSave("fpc40.mod",module)
|
FootprintSave("fpc40.mod",module)
|
||||||
|
|
||||||
|
|
|
@ -33,10 +33,10 @@ for y in range (0,10):
|
||||||
|
|
||||||
|
|
||||||
# save the PCB to disk
|
# save the PCB to disk
|
||||||
pcb.Save("/tmp/my2.kicad_brd")
|
pcb.Save("my2.kicad_pcb")
|
||||||
pcb.Save("/tmp/my2.brd")
|
pcb.Save("my2.brd")
|
||||||
|
|
||||||
pcb = LoadBoard("/tmp/my2.brd")
|
pcb = LoadBoard("my2.kicad_pcb")
|
||||||
|
|
||||||
print map( lambda x: x.GetReference() , list(pcb.GetModules()))
|
print map( lambda x: x.GetReference() , list(pcb.GetModules()))
|
||||||
|
|
||||||
|
|
|
@ -109,18 +109,22 @@ class QFPWizard(pcbnew.FootprintWizardPlugin):
|
||||||
pad_size = pad_size_left_right
|
pad_size = pad_size_left_right
|
||||||
|
|
||||||
pad_pos_x = -(pad_horizontal_pitch / 2)
|
pad_pos_x = -(pad_horizontal_pitch / 2)
|
||||||
|
pad_pos_y = (cur_pad % (num_pads / 4)) * pad_pitch - (side_length / 2)
|
||||||
|
|
||||||
if side == 2:
|
if side == 2:
|
||||||
pad_pos_x = -pad_pos_x
|
pad_pos_x = -pad_pos_x
|
||||||
|
pad_pos_y = -pad_pos_y
|
||||||
|
|
||||||
pad_pos_y = (cur_pad % (num_pads / 4)) * pad_pitch - (side_length / 2)
|
|
||||||
else:
|
else:
|
||||||
pad_size = pad_size_bottom_top
|
pad_size = pad_size_bottom_top
|
||||||
|
|
||||||
pad_pos_x = (cur_pad % (num_pads / 4)) * pad_pitch - (side_length / 2)
|
pad_pos_x = (cur_pad % (num_pads / 4)) * pad_pitch - (side_length / 2)
|
||||||
|
|
||||||
pad_pos_y = -(pad_vertical_pitch / 2)
|
pad_pos_y = -(pad_vertical_pitch / 2)
|
||||||
|
|
||||||
if side == 1:
|
if side == 1:
|
||||||
pad_pos_y = -pad_pos_y
|
pad_pos_y = -pad_pos_y
|
||||||
|
else:
|
||||||
|
pad_pos_x = -pad_pos_x
|
||||||
|
|
||||||
pad_pos = pcbnew.wxPoint(pad_pos_x, pad_pos_y)
|
pad_pos = pcbnew.wxPoint(pad_pos_x, pad_pos_y)
|
||||||
|
|
||||||
|
|
|
@ -307,7 +307,7 @@ void PCB_EDIT_FRAME::ReCreateHToolbar()
|
||||||
// Access to the scripting console
|
// Access to the scripting console
|
||||||
#ifdef KICAD_SCRIPTING_WXPYTHON
|
#ifdef KICAD_SCRIPTING_WXPYTHON
|
||||||
m_mainToolBar->AddTool( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, wxEmptyString,
|
m_mainToolBar->AddTool( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, wxEmptyString,
|
||||||
KiBitmap( book_xpm ),
|
KiBitmap( py_script_xpm ),
|
||||||
_( "Show/Hide the Scripting console" ) );
|
_( "Show/Hide the Scripting console" ) );
|
||||||
|
|
||||||
m_mainToolBar->AddSeparator();
|
m_mainToolBar->AddSeparator();
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# v 1.1 Supports migration of links (limited to the same directory) - I should add checks..
|
||||||
# usage osx_fixbundle.sh <bundle-name> <bzr_root>
|
# usage osx_fixbundle.sh <bundle-name> <bzr_root>
|
||||||
|
|
||||||
if [[ ! -f version.h ]]; then
|
if [[ ! -f version.h ]]; then
|
||||||
|
@ -11,7 +12,6 @@ fi
|
||||||
|
|
||||||
EXECUTABLES="`find . -name '*.app'`"
|
EXECUTABLES="`find . -name '*.app'`"
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Copies libraries under <bzr_root> in the bundle and relocates them in the binary
|
# Copies libraries under <bzr_root> in the bundle and relocates them in the binary
|
||||||
#
|
#
|
||||||
|
@ -29,7 +29,11 @@ function fixbundle() {
|
||||||
if [[ "$library" =~ "$bzroot" ]]; then
|
if [[ "$library" =~ "$bzroot" ]]; then
|
||||||
echo "${exec}: Migrating `basename $library` in the bundle"
|
echo "${exec}: Migrating `basename $library` in the bundle"
|
||||||
if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then
|
if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then
|
||||||
|
if [ ! -L $library ]; then
|
||||||
cp -f $library ${execpath}${exec}.app/Contents/Frameworks
|
cp -f $library ${execpath}${exec}.app/Contents/Frameworks
|
||||||
|
else
|
||||||
|
resolvelink "$library" "`dirname $library`" "${execpath}/${exec}.app/Contents/Frameworks"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
install_name_tool -change $library @executable_path/../Frameworks/`basename $library` ${execpath}${exec}.app/Contents/MacOS/${exec}
|
install_name_tool -change $library @executable_path/../Frameworks/`basename $library` ${execpath}${exec}.app/Contents/MacOS/${exec}
|
||||||
fi
|
fi
|
||||||
|
@ -46,7 +50,11 @@ function fixbundle() {
|
||||||
for library in $LIBRARIES; do
|
for library in $LIBRARIES; do
|
||||||
if [[ "$library" =~ "$bzroot" ]]; then
|
if [[ "$library" =~ "$bzroot" ]]; then
|
||||||
if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then
|
if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then
|
||||||
|
if [ ! -L $library ]; then
|
||||||
cp -f $library ${exec}.app/Contents/Frameworks
|
cp -f $library ${exec}.app/Contents/Frameworks
|
||||||
|
else
|
||||||
|
resolvelink "$library" "`dirname $library`" "${execpath}/${exec}.app/Contents/Frameworks"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
install_name_tool -change $library @executable_path/../Frameworks/`basename $library` $module
|
install_name_tool -change $library @executable_path/../Frameworks/`basename $library` $module
|
||||||
fi
|
fi
|
||||||
|
@ -70,7 +78,11 @@ function fixbundle() {
|
||||||
for library in $LIBRARIES; do
|
for library in $LIBRARIES; do
|
||||||
if [[ "$library" =~ "$bzroot" ]]; then
|
if [[ "$library" =~ "$bzroot" ]]; then
|
||||||
if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then
|
if [ ! -f ${exec}.app/Contents/Frameworks/`basename $library` ]; then
|
||||||
|
if [ ! -L $library ]; then
|
||||||
cp -f $library ${exec}.app/Contents/Frameworks
|
cp -f $library ${exec}.app/Contents/Frameworks
|
||||||
|
else
|
||||||
|
resolvelink "$library" "`dirname $library`" "${execpath}/${exec}.app/Contents/Frameworks"
|
||||||
|
fi
|
||||||
echo "copied `basename $library` into bundle"
|
echo "copied `basename $library` into bundle"
|
||||||
(( dynlib_migrate += 1))
|
(( dynlib_migrate += 1))
|
||||||
fi
|
fi
|
||||||
|
@ -84,8 +96,27 @@ function fixbundle() {
|
||||||
cd - >/dev/null
|
cd - >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# This supports only links on the same dir (TODO ?)
|
||||||
|
#
|
||||||
|
|
||||||
#fixbundle $1 $2 $3
|
function resolvelink() {
|
||||||
|
local srclib="`basename $1`"
|
||||||
|
local srcpath="$2"
|
||||||
|
local destpath="$3"
|
||||||
|
|
||||||
|
#if is a file i expect a pointed ""
|
||||||
|
local pointed="`readlink ${srcpath}/${srclib}`"
|
||||||
|
|
||||||
|
if [ ! -f ${pointed} ]; then
|
||||||
|
resolvelink "${pointed}" "${srcpath}" "${destpath}"
|
||||||
|
echo "Link ${srclib} -> ${pointed} "
|
||||||
|
(cd "${destpath}"; ln -s "${pointed}" "${srclib}" )
|
||||||
|
else
|
||||||
|
echo "Copy ${srcpath}/${srclib} -> ${destpath} "
|
||||||
|
cp "${srcpath}/${srclib}" ${destpath}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
for executable in $EXECUTABLES;
|
for executable in $EXECUTABLES;
|
||||||
do
|
do
|
||||||
|
|