mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-18 18:49:17 +00:00
+ resync with main branch r6409
+ work in progress: new VRML2 3D plugin
This commit is contained in:
commit
548b54d75d
Documentation
INSTALL.txtcommon
eeschema
include
kicad
pagelayout_editor
pcbnew
basepcbframe.cppblock.cppclass_dimension.cppclass_drawsegment.cppclass_edge_mod.cppclass_pad.cppclass_pcb_text.cppclass_track.cppclass_zone.cpp
dialogs
dialog_design_rules_base.cppdialog_design_rules_base.fbpdialog_design_rules_base.hdialog_export_vrml.cppdialog_move_exact.cppdialog_pad_properties.cpp
footprint_wizard_frame.cppgithub
hotkeys.cpphotkeys.hhotkeys_board_editor.cpploadcmp.cppmenubar_modedit.cppmenubar_pcbframe.cppmoduleframe.cppmodview_frame.cppmodview_frame.hpcbframe.cpppcbnew.cpppcbnew_id.hplugins/3d
demo
vrml/v2
utils/idftools
@ -1,56 +1,27 @@
|
||||
Contribute to KiCad (under Linux)
|
||||
--------------------
|
||||
|
||||
1) make sure you have all the dependencies of KiCad:
|
||||
sudo apt-get install debhelper dpatch libx11-dev libglm-dev
|
||||
sudo apt-get install libglu1-mesa-dev libgl1-mesa-dev mesa-common-dev
|
||||
sudo apt-get install libwxbase2.8-dev libwxgtk2.8-dev libboost-dev fakeroot
|
||||
sudo apt-get install cmake bzr
|
||||
sudo apt-get install cmake bzr bzrtools
|
||||
1) make sure you have all the dependencies of KiCad and installed a copy
|
||||
of kicad sources:
|
||||
see <kicad>/Documentation/development/compiling.md
|
||||
|
||||
2) initialize Bazaar:
|
||||
bzr whoami "John Doe <john.doe@gmail.com>"
|
||||
|
||||
3) get latest KiCad source tree:
|
||||
cd ~/
|
||||
bzr branch lp:kicad kicad.bzr
|
||||
|
||||
this should leave you with the folder kicad.bzr
|
||||
|
||||
4) Read coding_style_policy.pdf, in kicad.bzr/Documentation,
|
||||
2) Read coding_style_policy.pdf, in <kicad>/Documentation,
|
||||
and other docs.
|
||||
|
||||
5) create a local (branch) copy of the KiCad project
|
||||
bzr branch ./kicad.bzr ./kicad.my_contrib
|
||||
3) Modify/add source code in kicad sources
|
||||
|
||||
6) Modify/add source code in
|
||||
cd kicad.my_contrib
|
||||
gedit .......
|
||||
if you need to create and add the file foo.cpp do so and:
|
||||
bzr add foo.cpp
|
||||
if you need to delete files:
|
||||
bzr rm foo.cpp
|
||||
4) Compile:
|
||||
see compiling.md
|
||||
|
||||
7) Compile:
|
||||
cd kicad.my_contrib
|
||||
mkdir build; cd build
|
||||
cmake ../ -DCMAKE_BUILD_TYPE=Debug
|
||||
to build a debug version
|
||||
or
|
||||
cmake ../ -DCMAKE_BUILD_TYPE=Release
|
||||
to build a release version
|
||||
make -j8
|
||||
|
||||
8) Repeat step 6 and 7 until satisfied.
|
||||
5) Repeat step 3 and 4 until satisfied.
|
||||
|
||||
9) Create a patch file:
|
||||
cd kicad.my_contrib
|
||||
if you added the file foo.cpp do so:
|
||||
bzr add foo.cpp
|
||||
Create the patch
|
||||
bzr diff > my_changes.patch
|
||||
|
||||
9) Send the patch file "my_changes.patch" to the KiCad developers mailing list.
|
||||
in the subject of the e-mail include the keyword "[PATCH]".
|
||||
in the body of the e-mail clearly explain what you have done.
|
||||
|
||||
|
||||
for more info see INSTALL.txt.
|
||||
|
||||
|
@ -78,14 +78,6 @@ specific patches required to build a working Boost library. These patches can b
|
||||
[patches folder][] in the KiCad source. These patches are named by the platform name they should
|
||||
be applied against.
|
||||
|
||||
## OpenSSL Secure Socket Layer Library ## {#openssl}
|
||||
|
||||
The [OpenSSL][] library is only required when the KiCad build is configured with the Github plugin
|
||||
enabled. See the [KiCad Build Configuration Options](#build_opts)` section for more information.
|
||||
Please note that KiCad will download and build version 1.0.1e of OpenSSL by default. You should
|
||||
probably use the version of OpenSSL installed on your system as it will most likely be more up to
|
||||
date and contain the latest security fixes.
|
||||
|
||||
## GLEW OpenGL Extension Wrangler Library ## {#glew}
|
||||
|
||||
The [OpenGL Extension Wrangler][GLEW] is an OpenGL helper library used by the KiCad graphics
|
||||
@ -197,7 +189,7 @@ following command:
|
||||
If you are contributing directly to the KiCad project on Launchpad, you can create a local
|
||||
branch on your machine by using the following command:
|
||||
|
||||
bzr branch lp:repo_to_branch
|
||||
bzr branch https://code.launchpad.net/~kicad-product-committers/kicad/product kicad_source
|
||||
|
||||
If you prefer to use [GIT][] as you version control system, you can clone the KiCad mirror on
|
||||
Github using the following command:
|
||||
@ -206,7 +198,7 @@ Github using the following command:
|
||||
|
||||
Here is a list of source links:
|
||||
|
||||
Stable release archive: https://launchpad.net/kicad/4.0/4.0.0-rc1/+download/kicad-4.0.0-rc1.tar.xz
|
||||
Stable release archive: https://launchpad.net/kicad/4.0/4.0.1/+download/kicad-4.0.1.tar.xz
|
||||
|
||||
Development branch: https://code.launchpad.net/~kicad-product-committers/kicad/product
|
||||
|
||||
@ -216,7 +208,7 @@ Github mirror: https://github.com/KiCad/kicad-source-mirror
|
||||
|
||||
To perform a full build on Linux, run the following commands:
|
||||
|
||||
cd kicad_source_tree
|
||||
cd <your kicad source mirror>
|
||||
mkdir -p build/release
|
||||
mkdir build/debug # Optional for debug build.
|
||||
cd build/release
|
||||
@ -280,7 +272,7 @@ the following commands:
|
||||
mingw-w64-x86_64-boost \
|
||||
mingw-w64-x86_64-cairo \
|
||||
mingw-w64-x86_64-glew \
|
||||
mingw-w64-x86_64-openssl \
|
||||
mingw-w64-x86_64-curl \
|
||||
mingw-w64-x86_64-wxPython \
|
||||
mingw-w64-x86_64-wxWidgets
|
||||
cd kicad-source
|
||||
@ -292,7 +284,6 @@ the following commands:
|
||||
-DCMAKE_PREFIX_PATH=/mingw64 \
|
||||
-DCMAKE_INSTALL_PREFIX=/mingw64 \
|
||||
-DDEFAULT_INSTALL_PATH=/mingw64 \
|
||||
-DOPENSSL_ROOT_DIR=/mingw64 \
|
||||
-DKICAD_SKIP_BOOST=ON \
|
||||
-DKICAD_SCRIPTING=ON \
|
||||
-DKICAD_SCRIPTING_MODULES=ON \
|
||||
@ -313,7 +304,7 @@ currently known issues when building KiCad using MSYS2.
|
||||
### 64-bit Package of Boost 1.59 ### {#ki_msys2_64bit_boost}
|
||||
|
||||
The context library of the x86_64 package of Boost version 1.59 is broken and will cause KiCad
|
||||
to crash. You must downgrade to version 1.47 by running the command:
|
||||
to crash. You must downgrade to version 1.57 by running the command:
|
||||
|
||||
pacman -U /var/cache/pacman/pkg/mingw-w64-x86_64-boost-1.57.0-4-any.pkg.tar.xz
|
||||
|
||||
@ -415,7 +406,6 @@ Boost patches in the KiCad source [patches folder][].
|
||||
[wxWidgets]: http://wxwidgets.org/
|
||||
[patches folder]: http://bazaar.launchpad.net/~kicad-product-committers/kicad/product/files/head:/patches/
|
||||
[Boost]: http://www.boost.org/
|
||||
[OpenSSL]: https://www.openssl.org/
|
||||
[GLEW]: http://glew.sourceforge.net/
|
||||
[GLUT]: https://www.opengl.org/resources/libraries/glut/
|
||||
[Cairo]: http://cairographics.org/
|
||||
|
@ -1,12 +1,9 @@
|
||||
--== notes about wxWidgets problems ==--
|
||||
Last Revised: 02-jul-2015
|
||||
Last Revised: 28-dec-2015
|
||||
|
||||
Kicad needs wxWidgets, the multi platform G.U.I toolkit.
|
||||
|
||||
use *only* wxWidgets
|
||||
>= 3.0.1 On Windows
|
||||
>= 3.0.2 on Linux (prevision versions have bugs which crash Kicad)
|
||||
>= 3.0.2 on OSX (which need patches: see patches/wxwidgets-3.0.0_macosx_xxx)
|
||||
use *only* wxWidgets >= 3.0.2
|
||||
|
||||
Known bug on Windows:
|
||||
Postscript printers print tracks like thin line.
|
||||
@ -14,7 +11,7 @@ It happens only for PS drivers, and PDF printer.
|
||||
Other drivers (PCL for instance) work fine,
|
||||
so it is unlikely a bug inside Kicad/wxWidgets
|
||||
|
||||
On 3.0.2 Window version 64 bits:
|
||||
Window version :
|
||||
The mirror mode gives a blank sheet.
|
||||
This is a bug in wxWidgets 3.0.2
|
||||
wxWidgets 3.0.2 must be patched (see patches/wxWidgets-3.0.2-msw-dc-orientation-fix.patch) and rebuilt.
|
||||
|
34
INSTALL.txt
34
INSTALL.txt
@ -84,21 +84,41 @@ them when a new project is created.
|
||||
Installation from source code
|
||||
-----------------------------
|
||||
|
||||
Currently the only supported compilers are GCC on linux and windows and clang on OS X.
|
||||
|
||||
Some dependencies must be satisfied for the correct installation of KiCad:
|
||||
|
||||
wxWidgets >= 3.0.0 http://www.wxwidgets.org/
|
||||
wxWidgets >= 3.0.0 http://www.wxwidgets.org/
|
||||
|
||||
CMake >= 2.8.4 http://www.cmake.org/
|
||||
CMake >= 2.8.4 http://www.cmake.org/
|
||||
|
||||
Boost C++ Libraries:
|
||||
Boost C++ Libraries: >= 1.54 http://www.boost.org/
|
||||
files used by kicad are autmatically downloaded and patched if needed
|
||||
from boost site ( http://www.boost.org/ )
|
||||
from boost site.
|
||||
|
||||
OpenGL
|
||||
Linux: Mesa 3D Graphics Library http://www.mesa3d.org/
|
||||
OpenGL >= 2.1
|
||||
Linux: Mesa 3D Graphics Library http://www.mesa3d.org/
|
||||
Windows: built-in
|
||||
|
||||
Zlib Compression Library http://www.zlib.net/
|
||||
Zlib Compression Library http://www.zlib.net/
|
||||
|
||||
cairo http://cairographics.org/
|
||||
|
||||
GLEW http://glew.sourceforge.net/
|
||||
|
||||
libcurl http://curl.haxx.se/
|
||||
|
||||
OpenMP (optional) http://openmp.org/
|
||||
|
||||
GLM >= 9.5.4 http://glm.g-truc.net/
|
||||
|
||||
pkg-config http://pkgconfig.freedesktop.org/
|
||||
|
||||
Doxygen (optional) http://www.stack.nl/~dimitri/doxygen/index.html
|
||||
|
||||
python >= 2.6 (optional) http://python.org/
|
||||
|
||||
wxPython (optional) http://www.wxpython.org/
|
||||
|
||||
In source-tree-build are mostly unwanted, so make a subdir called "build" and
|
||||
change to it.
|
||||
|
@ -28,6 +28,7 @@
|
||||
* @brief EDA_BASE_FRAME class implementation.
|
||||
*/
|
||||
|
||||
#include <kicad_curl/kicad_curl.h> /* Include before any wx file */
|
||||
#include <wx/aboutdlg.h>
|
||||
#include <wx/fontdlg.h>
|
||||
#include <wx/clipbrd.h>
|
||||
@ -573,6 +574,8 @@ void EDA_BASE_FRAME::CopyVersionInfoToClipboard( wxCommandEvent& event )
|
||||
<< ( BOOST_VERSION / 100 % 1000 ) << wxT( "." )
|
||||
<< ( BOOST_VERSION % 100 ) << wxT( "\n" );
|
||||
|
||||
msg_version << KICAD_CURL::GetSimpleVersion() << wxT( "\n" );
|
||||
|
||||
msg_version << wxT( " USE_WX_GRAPHICS_CONTEXT=" );
|
||||
#ifdef USE_WX_GRAPHICS_CONTEXT
|
||||
msg_version << wxT( "ON\n" );
|
||||
|
@ -725,8 +725,9 @@ void EDA_DRAW_PANEL::DrawGrid( wxDC* aDC )
|
||||
org.y += KiROUND( gridSize.y );
|
||||
|
||||
// Use a pixel based draw to display grid. There are a lot of calls, so the cost is
|
||||
// high and grid is slowly drawn on some platforms. Please note that this should
|
||||
// always be enabled until the bitmap based solution below is fixed.
|
||||
// high and grid is slowly drawn on some platforms. An other way using blit transfert was used,
|
||||
// a long time ago, but it did not give very good results.
|
||||
// The better way is highly dependent on the platform and the graphic card.
|
||||
#ifndef __WXMAC__
|
||||
GRSetColorPen( aDC, GetParent()->GetGridColor() );
|
||||
#else
|
||||
@ -996,7 +997,7 @@ void EDA_DRAW_PANEL::OnMagnify( wxMouseEvent& event )
|
||||
|
||||
void EDA_DRAW_PANEL::OnMouseEvent( wxMouseEvent& event )
|
||||
{
|
||||
int localrealbutt = 0, localbutt = 0;
|
||||
int localbutt = 0;
|
||||
BASE_SCREEN* screen = GetScreen();
|
||||
|
||||
if( !screen )
|
||||
@ -1030,12 +1031,6 @@ void EDA_DRAW_PANEL::OnMouseEvent( wxMouseEvent& event )
|
||||
if( m_ignoreMouseEvents )
|
||||
return;
|
||||
|
||||
if( event.LeftIsDown() )
|
||||
localrealbutt |= GR_M_LEFT_DOWN;
|
||||
|
||||
if( event.MiddleIsDown() )
|
||||
localrealbutt |= GR_M_MIDDLE_DOWN;
|
||||
|
||||
if( event.LeftDown() )
|
||||
localbutt = GR_M_LEFT_DOWN;
|
||||
|
||||
@ -1045,8 +1040,6 @@ void EDA_DRAW_PANEL::OnMouseEvent( wxMouseEvent& event )
|
||||
if( event.MiddleDown() )
|
||||
localbutt = GR_M_MIDDLE_DOWN;
|
||||
|
||||
localrealbutt |= localbutt; // compensation default wxGTK
|
||||
|
||||
INSTALL_UNBUFFERED_DC( DC, this );
|
||||
DC.SetBackground( *wxBLACK_BRUSH );
|
||||
|
||||
|
@ -51,4 +51,30 @@ std::string KICAD_CURL::GetVersion()
|
||||
}
|
||||
|
||||
|
||||
std::string KICAD_CURL::GetSimpleVersion()
|
||||
{
|
||||
curl_version_info_data *info = curl_version_info(CURLVERSION_NOW);
|
||||
|
||||
std::string res;
|
||||
|
||||
if( info->version )
|
||||
{
|
||||
res += "libcurl version: " + std::string(info->version);
|
||||
}
|
||||
|
||||
res += " (";
|
||||
if( info->features & CURL_VERSION_SSL )
|
||||
{
|
||||
res += "with SSL - ";
|
||||
res += std::string(info->ssl_version);
|
||||
}
|
||||
else
|
||||
{
|
||||
res += "without SSL";
|
||||
}
|
||||
res += ")";
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
bool KICAD_CURL::m_initialized = false;
|
@ -43,8 +43,8 @@ KICAD_CURL_EASY::KICAD_CURL_EASY()
|
||||
THROW_IO_ERROR( "Unable to initialize CURL session" );
|
||||
}
|
||||
|
||||
m_Buffer.payload = (char*)malloc( 1 );
|
||||
m_Buffer.size = 0;
|
||||
m_Buffer.Payload = (char*)malloc( 1 );
|
||||
m_Buffer.Size = 0;
|
||||
|
||||
curl_easy_setopt( m_CURL, CURLOPT_WRITEFUNCTION, write_callback );
|
||||
curl_easy_setopt( m_CURL, CURLOPT_WRITEDATA, (void *)&m_Buffer );
|
||||
@ -53,7 +53,7 @@ KICAD_CURL_EASY::KICAD_CURL_EASY()
|
||||
|
||||
KICAD_CURL_EASY::~KICAD_CURL_EASY()
|
||||
{
|
||||
free(m_Buffer.payload);
|
||||
free(m_Buffer.Payload);
|
||||
curl_easy_cleanup(m_CURL);
|
||||
}
|
||||
|
||||
@ -110,27 +110,27 @@ static size_t write_callback( void *contents, size_t size, size_t nmemb, void *u
|
||||
struct KICAD_EASY_CURL_BUFFER *p = ( struct KICAD_EASY_CURL_BUFFER * ) userp;
|
||||
|
||||
/* expand buffer */
|
||||
p->payload = (char *) realloc( p->payload, p->size + realsize + 1 );
|
||||
p->Payload = (char *) realloc( p->Payload, p->Size + realsize + 1 );
|
||||
|
||||
/* check buffer */
|
||||
if ( p->payload == NULL )
|
||||
if ( p->Payload == NULL )
|
||||
{
|
||||
wxLogError( wxT( "Failed to expand buffer in curl_callback" ) );
|
||||
|
||||
/* free buffer */
|
||||
free( p->payload );
|
||||
free( p->Payload );
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* copy contents to buffer */
|
||||
memcpy( &(p->payload[p->size]), contents, realsize );
|
||||
memcpy( &(p->Payload[p->Size]), contents, realsize );
|
||||
|
||||
/* set new buffer size */
|
||||
p->size += realsize;
|
||||
p->Size += realsize;
|
||||
|
||||
/* ensure null termination */
|
||||
p->payload[p->size] = 0;
|
||||
p->Payload[p->Size] = 0;
|
||||
|
||||
/* return size */
|
||||
return realsize;
|
||||
@ -144,11 +144,11 @@ void KICAD_CURL_EASY::Perform()
|
||||
curl_easy_setopt( m_CURL, CURLOPT_HTTPHEADER, m_headers );
|
||||
}
|
||||
|
||||
if( m_Buffer.size > 0 )
|
||||
if( m_Buffer.Size > 0 )
|
||||
{
|
||||
free( m_Buffer.payload );
|
||||
m_Buffer.payload = (char*)malloc( 1 );
|
||||
m_Buffer.size = 0;
|
||||
free( m_Buffer.Payload );
|
||||
m_Buffer.Payload = (char*)malloc( 1 );
|
||||
m_Buffer.Size = 0;
|
||||
}
|
||||
|
||||
CURLcode res = curl_easy_perform( m_CURL );
|
||||
|
@ -62,7 +62,7 @@ void KIWAY::player_destroy_handler( wxWindowDestroyEvent& event )
|
||||
{
|
||||
wxWindow* w = event.GetWindow();
|
||||
|
||||
for( unsigned i=0; i<DIM(m_player); ++i )
|
||||
for( unsigned i=0; i < KIWAY_PLAYER_COUNT; ++i )
|
||||
{
|
||||
// if destroying one of our flock, then mark it as deceased.
|
||||
if( (wxWindow*) m_player[i] == w )
|
||||
@ -273,7 +273,7 @@ KIWAY_PLAYER* KIWAY::Player( FRAME_T aFrameType, bool doCreate )
|
||||
{
|
||||
// Since this will be called from python, cannot assume that code will
|
||||
// not pass a bad aFrameType.
|
||||
if( unsigned( aFrameType ) >= DIM( m_player ) )
|
||||
if( unsigned( aFrameType ) >= KIWAY_PLAYER_COUNT )
|
||||
{
|
||||
// @todo : throw an exception here for python's benefit, at least that
|
||||
// way it gets some explanatory text.
|
||||
@ -316,7 +316,7 @@ bool KIWAY::PlayerClose( FRAME_T aFrameType, bool doForce )
|
||||
{
|
||||
// Since this will be called from python, cannot assume that code will
|
||||
// not pass a bad aFrameType.
|
||||
if( unsigned( aFrameType ) >= DIM( m_player ) )
|
||||
if( unsigned( aFrameType ) >= KIWAY_PLAYER_COUNT )
|
||||
{
|
||||
// @todo : throw an exception here for python's benefit, at least that
|
||||
// way it gets some explanatory text.
|
||||
@ -344,7 +344,7 @@ bool KIWAY::PlayersClose( bool doForce )
|
||||
{
|
||||
bool ret = true;
|
||||
|
||||
for( unsigned i=0; i < DIM( m_player ); ++i )
|
||||
for( unsigned i=0; i < KIWAY_PLAYER_COUNT; ++i )
|
||||
{
|
||||
ret = ret && PlayerClose( FRAME_T( i ), doForce );
|
||||
}
|
||||
@ -383,7 +383,7 @@ void KIWAY::SetLanguage( int aLanguage )
|
||||
}
|
||||
#endif
|
||||
|
||||
for( unsigned i=0; i < DIM( m_player ); ++i )
|
||||
for( unsigned i=0; i < KIWAY_PLAYER_COUNT; ++i )
|
||||
{
|
||||
KIWAY_PLAYER* frame = m_player[i];
|
||||
|
||||
|
@ -101,14 +101,14 @@ bool KIWAY_PLAYER::ShowModal( wxString* aResult, wxWindow* aResultantFocusWindow
|
||||
m_modal_resultant_parent = aResultantFocusWindow;
|
||||
|
||||
Show( true );
|
||||
Raise(); // Needed on sole Window managers to always display the frame
|
||||
Raise(); // Needed on some Window managers to always display the frame
|
||||
|
||||
SetFocus();
|
||||
|
||||
{
|
||||
// We have to disable all frames but the the modal one.
|
||||
// wxWindowDisabler does that, but remember it disables all top level windows
|
||||
// We do not want to disable top level windows which are child off the modal one,
|
||||
// wxWindowDisabler does that, but it also disables all top level windows
|
||||
// We do not want to disable top level windows which are child of the modal one,
|
||||
// if they are enabled.
|
||||
// An example is an aui toolbar which was moved
|
||||
// or a dialog or an other frame or miniframe opened by the modal one.
|
||||
@ -121,16 +121,16 @@ bool KIWAY_PLAYER::ShowModal( wxString* aResult, wxWindow* aResultantFocusWindow
|
||||
|
||||
// exception safe way to disable all top level windows except the modal one,
|
||||
// re-enables only those that were disabled on exit
|
||||
wxWindowDisabler toggle( this );
|
||||
wxWindowDisabler toggle( this );
|
||||
|
||||
for( unsigned ii = 0; ii < enabledTopLevelWindows.size(); ii++ )
|
||||
enabledTopLevelWindows[ii]->Enable( true );
|
||||
enabledTopLevelWindows[ii]->Enable( true );
|
||||
|
||||
WX_EVENT_LOOP event_loop;
|
||||
m_modal_loop = &event_loop;
|
||||
event_loop.Run();
|
||||
|
||||
} // End of scop for some variables.
|
||||
} // End of scope for some variables.
|
||||
// End nesting before setting focus below.
|
||||
|
||||
if( aResult )
|
||||
|
@ -441,7 +441,7 @@ LSEQ LSET::SeqStackupBottom2Top() const
|
||||
}
|
||||
|
||||
|
||||
LAYER_ID FlipLayer( LAYER_ID aLayerId )
|
||||
LAYER_ID FlipLayer( LAYER_ID aLayerId, int aCopperLayersCount )
|
||||
{
|
||||
switch( aLayerId )
|
||||
{
|
||||
@ -466,14 +466,28 @@ LAYER_ID FlipLayer( LAYER_ID aLayerId )
|
||||
case B_Fab: return F_Fab;
|
||||
case F_Fab: return B_Fab;
|
||||
|
||||
// No change for the other layers
|
||||
default:
|
||||
default: // change internal layer if aCopperLayersCount is >= 4
|
||||
if( IsCopperLayer( aLayerId ) && aCopperLayersCount >= 4 )
|
||||
{
|
||||
// internal copper layers count is aCopperLayersCount-2
|
||||
LAYER_ID fliplayer = LAYER_ID(aCopperLayersCount - 2 - ( aLayerId - In1_Cu ) );
|
||||
// Ensure fliplayer has a value which does not crash pcbnew:
|
||||
if( fliplayer < F_Cu )
|
||||
fliplayer = F_Cu;
|
||||
|
||||
if( fliplayer > B_Cu )
|
||||
fliplayer = B_Cu;
|
||||
|
||||
return fliplayer;
|
||||
}
|
||||
|
||||
// No change for the other layers
|
||||
return aLayerId;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LSET FlipLayerMask( LSET aMask )
|
||||
LSET FlipLayerMask( LSET aMask, int aCopperLayersCount )
|
||||
{
|
||||
// layers on physical outside of a board:
|
||||
const static LSET and_mask( 16, // !! update count
|
||||
@ -537,6 +551,25 @@ LSET FlipLayerMask( LSET aMask )
|
||||
if( aMask[F_Fab] )
|
||||
newMask.set( B_Fab );
|
||||
|
||||
if( aCopperLayersCount >= 4 ) // Internal layers exist
|
||||
{
|
||||
LSET internalMask = aMask & ~LSET::InternalCuMask();
|
||||
|
||||
if( internalMask != LSET::InternalCuMask() )
|
||||
{ // the mask does not include all internal layers. Therefore
|
||||
// the flipped mask for internal copper layers must be built
|
||||
int innerLayerCnt = aCopperLayersCount -2;
|
||||
|
||||
for( int ii = 0; ii < innerLayerCnt; ii++ )
|
||||
{
|
||||
if( internalMask[innerLayerCnt - ii + In1_Cu] )
|
||||
newMask.set( ii + In1_Cu );
|
||||
else
|
||||
newMask.reset( ii + In1_Cu );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return newMask;
|
||||
}
|
||||
|
||||
|
@ -537,7 +537,7 @@ void LIB_PART::RemoveDrawItem( LIB_ITEM* aItem, EDA_DRAW_PANEL* aPanel, wxDC* aD
|
||||
|
||||
LIB_ITEMS::iterator i;
|
||||
|
||||
for( i = drawings.begin(); i < drawings.end(); i++ )
|
||||
for( i = drawings.begin(); i != drawings.end(); i++ )
|
||||
{
|
||||
if( *i == aItem )
|
||||
{
|
||||
@ -1222,7 +1222,7 @@ void LIB_PART::deleteAllFields()
|
||||
{
|
||||
LIB_ITEMS::iterator it;
|
||||
|
||||
for( it = drawings.begin(); it!=drawings.end(); /* deleting */ )
|
||||
for( it = drawings.begin(); it != drawings.end(); /* deleting */ )
|
||||
{
|
||||
if( it->Type() != LIB_FIELD_T )
|
||||
{
|
||||
@ -1709,7 +1709,7 @@ wxArrayString LIB_PART::GetAliasNames( bool aIncludeRoot ) const
|
||||
|
||||
LIB_ALIASES::const_iterator it;
|
||||
|
||||
for( it=m_aliases.begin(); it<m_aliases.end(); ++it )
|
||||
for( it=m_aliases.begin(); it != m_aliases.end(); ++it )
|
||||
{
|
||||
if( !aIncludeRoot && (*it)->IsRoot() )
|
||||
continue;
|
||||
@ -1756,7 +1756,7 @@ void LIB_PART::SetAliases( const wxArrayString& aAliasList )
|
||||
// Remove names in the current component that are not in the new alias list.
|
||||
LIB_ALIASES::iterator it;
|
||||
|
||||
for( it = m_aliases.begin(); it < m_aliases.end(); it++ )
|
||||
for( it = m_aliases.begin(); it != m_aliases.end(); it++ )
|
||||
{
|
||||
int index = aAliasList.Index( (*it)->GetName(), false );
|
||||
|
||||
@ -1778,7 +1778,7 @@ void LIB_PART::RemoveAlias( const wxString& aName )
|
||||
|
||||
LIB_ALIASES::iterator it;
|
||||
|
||||
for( it = m_aliases.begin(); it < m_aliases.end(); it++ )
|
||||
for( it = m_aliases.begin(); it != m_aliases.end(); it++ )
|
||||
{
|
||||
if( Cmp_KEEPCASE( aName, (*it)->GetName() ) == 0 )
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Mar 13 2015)
|
||||
// C++ code generated with wxFormBuilder (version Dec 19 2015)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
@ -35,250 +35,320 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
|
||||
m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_notebook->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
|
||||
|
||||
m_panel1 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* p1mainSizer;
|
||||
p1mainSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
m_panel5 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizer82;
|
||||
bSizer82 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxBoxSizer* bSizer3;
|
||||
bSizer3 = new wxBoxSizer( wxVERTICAL );
|
||||
wxFlexGridSizer* fgSizer32;
|
||||
fgSizer32 = new wxFlexGridSizer( 0, 3, 0, 0 );
|
||||
fgSizer32->AddGrowableCol( 0 );
|
||||
fgSizer32->AddGrowableCol( 1 );
|
||||
fgSizer32->AddGrowableCol( 2 );
|
||||
fgSizer32->SetFlexibleDirection( wxBOTH );
|
||||
fgSizer32->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
wxFlexGridSizer* fgSizer1;
|
||||
fgSizer1 = new wxFlexGridSizer( 0, 3, 0, 0 );
|
||||
fgSizer1->AddGrowableCol( 0 );
|
||||
fgSizer1->AddGrowableCol( 1 );
|
||||
fgSizer1->AddGrowableCol( 2 );
|
||||
fgSizer1->SetFlexibleDirection( wxBOTH );
|
||||
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_staticText2 = new wxStaticText( m_panel1, wxID_ANY, _("&Measurement units:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText2->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText2, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
wxArrayString m_choiceUnitsChoices;
|
||||
m_choiceUnits = new wxChoice( m_panel1, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnitsChoices, 0 );
|
||||
m_choiceUnits->SetSelection( 0 );
|
||||
fgSizer1->Add( m_choiceUnits, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
|
||||
fgSizer1->Add( 0, 0, 1, wxEXPAND, 3 );
|
||||
|
||||
m_staticText3 = new wxStaticText( m_panel1, wxID_ANY, _("&Grid size:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText3 = new wxStaticText( m_panel5, wxID_ANY, _("&Grid size:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText3->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText3, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
fgSizer32->Add( m_staticText3, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
wxArrayString m_choiceGridSizeChoices;
|
||||
m_choiceGridSize = new wxChoice( m_panel1, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceGridSizeChoices, 0 );
|
||||
m_choiceGridSize = new wxChoice( m_panel5, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceGridSizeChoices, 0 );
|
||||
m_choiceGridSize->SetSelection( 0 );
|
||||
fgSizer1->Add( m_choiceGridSize, 0, wxEXPAND|wxALL, 3 );
|
||||
fgSizer32->Add( m_choiceGridSize, 0, wxEXPAND|wxALL, 3 );
|
||||
|
||||
m_staticGridUnits = new wxStaticText( m_panel1, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticGridUnits = new wxStaticText( m_panel5, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticGridUnits->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticGridUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
fgSizer32->Add( m_staticGridUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_staticText51 = new wxStaticText( m_panel1, wxID_ANY, _("&Default bus thickness:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText51 = new wxStaticText( m_panel5, wxID_ANY, _("&Bus thickness:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText51->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText51, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
fgSizer32->Add( m_staticText51, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinBusWidth = new wxSpinCtrl( m_panel1, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, 1, 100, 1 );
|
||||
fgSizer1->Add( m_spinBusWidth, 0, wxALL|wxEXPAND, 3 );
|
||||
m_spinBusWidth = new wxSpinCtrl( m_panel5, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, 1, 100, 1 );
|
||||
fgSizer32->Add( m_spinBusWidth, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticBusWidthUnits = new wxStaticText( m_panel1, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticBusWidthUnits = new wxStaticText( m_panel5, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticBusWidthUnits->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticBusWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
fgSizer32->Add( m_staticBusWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_staticText5 = new wxStaticText( m_panel1, wxID_ANY, _("D&efault line thickness:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText5 = new wxStaticText( m_panel5, wxID_ANY, _("&Line thickness:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText5->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText5, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
fgSizer32->Add( m_staticText5, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinLineWidth = new wxSpinCtrl( m_panel1, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, 1, 100, 1 );
|
||||
fgSizer1->Add( m_spinLineWidth, 0, wxALL|wxEXPAND, 3 );
|
||||
m_spinLineWidth = new wxSpinCtrl( m_panel5, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, 1, 100, 1 );
|
||||
fgSizer32->Add( m_spinLineWidth, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticLineWidthUnits = new wxStaticText( m_panel1, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticLineWidthUnits = new wxStaticText( m_panel5, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticLineWidthUnits->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticLineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
fgSizer32->Add( m_staticLineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_staticText7 = new wxStaticText( m_panel1, wxID_ANY, _("De&fault text size:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText7->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText7, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinTextSize = new wxSpinCtrl( m_panel1, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, 0, 1000, 0 );
|
||||
fgSizer1->Add( m_spinTextSize, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticTextSizeUnits = new wxStaticText( m_panel1, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextSizeUnits->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticTextSizeUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_staticText9 = new wxStaticText( m_panel1, wxID_ANY, _("&Horizontal pitch of repeated items:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText9->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText9, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinRepeatHorizontal = new wxSpinCtrl( m_panel1, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, -5000, 5000, 0 );
|
||||
fgSizer1->Add( m_spinRepeatHorizontal, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticRepeatXUnits = new wxStaticText( m_panel1, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticRepeatXUnits->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticRepeatXUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_staticText12 = new wxStaticText( m_panel1, wxID_ANY, _("&Vertical pitch of repeated items:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText12->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText12, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinRepeatVertical = new wxSpinCtrl( m_panel1, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, -5000, 5000, 100 );
|
||||
fgSizer1->Add( m_spinRepeatVertical, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticRepeatYUnits = new wxStaticText( m_panel1, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticRepeatYUnits->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticRepeatYUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_staticText16 = new wxStaticText( m_panel1, wxID_ANY, _("&Increment of repeated labels:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText16->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText16, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinRepeatLabel = new wxSpinCtrl( m_panel1, wxID_ANY, wxT("1"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, -10, 10, 1 );
|
||||
fgSizer1->Add( m_spinRepeatLabel, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
|
||||
fgSizer1->Add( 0, 0, 1, wxEXPAND, 3 );
|
||||
|
||||
m_staticText221 = new wxStaticText( m_panel1, wxID_ANY, _("&Auto-save time interval"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText221->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText221, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinAutoSaveInterval = new wxSpinCtrl( m_panel1, ID_M_SPINAUTOSAVEINTERVAL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1000, 10 );
|
||||
fgSizer1->Add( m_spinAutoSaveInterval, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticText23 = new wxStaticText( m_panel1, wxID_ANY, _("minutes"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText23->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText23, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_stMaxUndoItems = new wxStaticText( m_panel1, wxID_ANY, _("Ma&ximum undo items (0 = unlimited):"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_stMaxUndoItems->Wrap( -1 );
|
||||
fgSizer1->Add( m_stMaxUndoItems, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
|
||||
|
||||
m_spinMaxUndoItems = new wxSpinCtrl( m_panel1, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 65536, 0 );
|
||||
fgSizer1->Add( m_spinMaxUndoItems, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_stMaxUndoItemsUnit = new wxStaticText( m_panel1, wxID_ANY, _("actions"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_stMaxUndoItemsUnit->Wrap( -1 );
|
||||
fgSizer1->Add( m_stMaxUndoItemsUnit, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
|
||||
|
||||
m_staticText26 = new wxStaticText( m_panel1, wxID_ANY, _("&Part id notation:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText26 = new wxStaticText( m_panel5, wxID_ANY, _("&Part ID notation:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText26->Wrap( -1 );
|
||||
fgSizer1->Add( m_staticText26, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 3 );
|
||||
fgSizer32->Add( m_staticText26, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 3 );
|
||||
|
||||
wxString m_choiceSeparatorRefIdChoices[] = { _("A"), _(".A"), _("-A"), _("_A"), _(".1"), _("-1"), _("_1") };
|
||||
int m_choiceSeparatorRefIdNChoices = sizeof( m_choiceSeparatorRefIdChoices ) / sizeof( wxString );
|
||||
m_choiceSeparatorRefId = new wxChoice( m_panel1, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceSeparatorRefIdNChoices, m_choiceSeparatorRefIdChoices, 0 );
|
||||
m_choiceSeparatorRefId = new wxChoice( m_panel5, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceSeparatorRefIdNChoices, m_choiceSeparatorRefIdChoices, 0 );
|
||||
m_choiceSeparatorRefId->SetSelection( 0 );
|
||||
fgSizer1->Add( m_choiceSeparatorRefId, 0, wxALL|wxEXPAND, 3 );
|
||||
fgSizer32->Add( m_choiceSeparatorRefId, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
|
||||
fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
fgSizer32->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_staticText221 = new wxStaticText( m_panel5, wxID_ANY, _("&Auto-save time interval"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText221->Wrap( -1 );
|
||||
fgSizer32->Add( m_staticText221, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinAutoSaveInterval = new wxSpinCtrl( m_panel5, ID_M_SPINAUTOSAVEINTERVAL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1000, 10 );
|
||||
fgSizer32->Add( m_spinAutoSaveInterval, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticText23 = new wxStaticText( m_panel5, wxID_ANY, _("minutes"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText23->Wrap( -1 );
|
||||
fgSizer32->Add( m_staticText23, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
|
||||
bSizer3->Add( fgSizer1, 0, wxEXPAND, 0 );
|
||||
bSizer82->Add( fgSizer32, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizer2;
|
||||
bSizer2 = new wxBoxSizer( wxVERTICAL );
|
||||
wxBoxSizer* bSizer92;
|
||||
bSizer92 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_staticline1 = new wxStaticLine( m_panel1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bSizer2->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
|
||||
m_staticline3 = new wxStaticLine( m_panel5, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bSizer92->Add( m_staticline3, 0, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_checkShowGrid = new wxCheckBox( m_panel1, wxID_ANY, _("&Show grid"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer2->Add( m_checkShowGrid, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
m_checkShowGrid = new wxCheckBox( m_panel5, wxID_ANY, _("&Show grid"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer92->Add( m_checkShowGrid, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_checkShowHiddenPins = new wxCheckBox( m_panel1, wxID_ANY, _("Sho&w hidden pins"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer2->Add( m_checkShowHiddenPins, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
m_checkHVOrientation = new wxCheckBox( m_panel5, wxID_ANY, _("&Restrict buses and wires to H and V orientation"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer92->Add( m_checkHVOrientation, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_checkEnableZoomCenter = new wxCheckBox( m_panel1, wxID_ANY, _("Ce&nter and warp cursor on zoom"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkShowHiddenPins = new wxCheckBox( m_panel5, wxID_ANY, _("S&how hidden pins"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer92->Add( m_checkShowHiddenPins, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_checkPageLimits = new wxCheckBox( m_panel5, wxID_ANY, _("Sho&w page limi&ts"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer92->Add( m_checkPageLimits, 0, wxEXPAND|wxLEFT|wxTOP|wxRIGHT, 3 );
|
||||
|
||||
|
||||
bSizer82->Add( bSizer92, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panel5->SetSizer( bSizer82 );
|
||||
m_panel5->Layout();
|
||||
bSizer82->Fit( m_panel5 );
|
||||
m_notebook->AddPage( m_panel5, _("&Display"), false );
|
||||
m_panel3 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizer8;
|
||||
bSizer8 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxFlexGridSizer* fgSizer3;
|
||||
fgSizer3 = new wxFlexGridSizer( 0, 3, 0, 0 );
|
||||
fgSizer3->AddGrowableCol( 0 );
|
||||
fgSizer3->AddGrowableCol( 1 );
|
||||
fgSizer3->AddGrowableCol( 2 );
|
||||
fgSizer3->SetFlexibleDirection( wxBOTH );
|
||||
fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_staticText2 = new wxStaticText( m_panel3, wxID_ANY, _("&Measurement units:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText2->Wrap( -1 );
|
||||
fgSizer3->Add( m_staticText2, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
wxArrayString m_choiceUnitsChoices;
|
||||
m_choiceUnits = new wxChoice( m_panel3, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnitsChoices, 0 );
|
||||
m_choiceUnits->SetSelection( 0 );
|
||||
fgSizer3->Add( m_choiceUnits, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
|
||||
fgSizer3->Add( 0, 0, 1, wxEXPAND, 3 );
|
||||
|
||||
m_staticText9 = new wxStaticText( m_panel3, wxID_ANY, _("&Horizontal pitch of repeated items:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText9->Wrap( -1 );
|
||||
fgSizer3->Add( m_staticText9, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinRepeatHorizontal = new wxSpinCtrl( m_panel3, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, -5000, 5000, 0 );
|
||||
fgSizer3->Add( m_spinRepeatHorizontal, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticRepeatXUnits = new wxStaticText( m_panel3, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticRepeatXUnits->Wrap( -1 );
|
||||
fgSizer3->Add( m_staticRepeatXUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_staticText12 = new wxStaticText( m_panel3, wxID_ANY, _("&Vertical pitch of repeated items:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText12->Wrap( -1 );
|
||||
fgSizer3->Add( m_staticText12, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinRepeatVertical = new wxSpinCtrl( m_panel3, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, -5000, 5000, 100 );
|
||||
fgSizer3->Add( m_spinRepeatVertical, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticRepeatYUnits = new wxStaticText( m_panel3, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticRepeatYUnits->Wrap( -1 );
|
||||
fgSizer3->Add( m_staticRepeatYUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_staticText16 = new wxStaticText( m_panel3, wxID_ANY, _("&Increment of repeated labels:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText16->Wrap( -1 );
|
||||
fgSizer3->Add( m_staticText16, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinRepeatLabel = new wxSpinCtrl( m_panel3, wxID_ANY, wxT("1"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, -10, 10, 1 );
|
||||
fgSizer3->Add( m_spinRepeatLabel, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
|
||||
fgSizer3->Add( 0, 0, 1, wxEXPAND, 3 );
|
||||
|
||||
m_staticText7 = new wxStaticText( m_panel3, wxID_ANY, _("Def&ault text size:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText7->Wrap( -1 );
|
||||
fgSizer3->Add( m_staticText7, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_spinTextSize = new wxSpinCtrl( m_panel3, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS|wxSP_WRAP, 0, 1000, 0 );
|
||||
fgSizer3->Add( m_spinTextSize, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticTextSizeUnits = new wxStaticText( m_panel3, wxID_ANY, _("mils"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextSizeUnits->Wrap( -1 );
|
||||
fgSizer3->Add( m_staticTextSizeUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_stMaxUndoItems = new wxStaticText( m_panel3, wxID_ANY, _("Ma&ximum undo items:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_stMaxUndoItems->Wrap( -1 );
|
||||
fgSizer3->Add( m_stMaxUndoItems, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
|
||||
|
||||
m_spinMaxUndoItems = new wxSpinCtrl( m_panel3, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 65536, 0 );
|
||||
fgSizer3->Add( m_spinMaxUndoItems, 0, wxALL|wxEXPAND, 3 );
|
||||
|
||||
m_staticText22 = new wxStaticText( m_panel3, wxID_ANY, _("(0 = unlimited)"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText22->Wrap( -1 );
|
||||
fgSizer3->Add( m_staticText22, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 3 );
|
||||
|
||||
|
||||
bSizer8->Add( fgSizer3, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizer9;
|
||||
bSizer9 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_staticline2 = new wxStaticLine( m_panel3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bSizer9->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_checkAutoplaceFields = new wxCheckBox( m_panel3, wxID_ANY, _("A&utomatically place component fields"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer9->Add( m_checkAutoplaceFields, 0, wxEXPAND|wxLEFT|wxTOP|wxRIGHT, 3 );
|
||||
|
||||
m_checkAutoplaceJustify = new wxCheckBox( m_panel3, wxID_ANY, _("A&llow field autoplace to change justification"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer9->Add( m_checkAutoplaceJustify, 0, wxEXPAND|wxLEFT|wxTOP|wxRIGHT, 3 );
|
||||
|
||||
m_checkAutoplaceAlign = new wxCheckBox( m_panel3, wxID_ANY, _("Al&ways align autoplaced fields to the 50 mil grid"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer9->Add( m_checkAutoplaceAlign, 0, wxEXPAND|wxLEFT|wxTOP|wxRIGHT, 3 );
|
||||
|
||||
|
||||
bSizer8->Add( bSizer9, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panel3->SetSizer( bSizer8 );
|
||||
m_panel3->Layout();
|
||||
bSizer8->Fit( m_panel3 );
|
||||
m_notebook->AddPage( m_panel3, _("&Editing"), false );
|
||||
m_panel4 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizer81;
|
||||
bSizer81 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxFlexGridSizer* fgSizer31;
|
||||
fgSizer31 = new wxFlexGridSizer( 0, 3, 0, 0 );
|
||||
fgSizer31->AddGrowableCol( 0 );
|
||||
fgSizer31->AddGrowableCol( 1 );
|
||||
fgSizer31->AddGrowableCol( 2 );
|
||||
fgSizer31->SetFlexibleDirection( wxBOTH );
|
||||
fgSizer31->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
|
||||
bSizer81->Add( fgSizer31, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizer91;
|
||||
bSizer91 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_checkEnableZoomCenter = new wxCheckBox( m_panel4, wxID_ANY, _("Cen&ter and warp cursor on zoom"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkEnableZoomCenter->SetToolTip( _("Keep the cursor at its current location when zooming") );
|
||||
|
||||
bSizer2->Add( m_checkEnableZoomCenter, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
bSizer91->Add( m_checkEnableZoomCenter, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_checkEnableMiddleButtonPan = new wxCheckBox( m_panel1, xwID_ANY, _("&Use middle mouse button to pan"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkEnableMiddleButtonPan = new wxCheckBox( m_panel4, xwID_ANY, _("&Use middle mouse button to pan"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkEnableMiddleButtonPan->SetToolTip( _("Use middle mouse button dragging to pan") );
|
||||
|
||||
bSizer2->Add( m_checkEnableMiddleButtonPan, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
bSizer91->Add( m_checkEnableMiddleButtonPan, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_checkMiddleButtonPanLimited = new wxCheckBox( m_panel1, wxID_ANY, _("&Limit panning to scroll size"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkMiddleButtonPanLimited = new wxCheckBox( m_panel4, wxID_ANY, _("&Limit panning to scroll size"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkMiddleButtonPanLimited->SetToolTip( _("Middle mouse button panning limited by current scrollbar size") );
|
||||
|
||||
bSizer2->Add( m_checkMiddleButtonPanLimited, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
bSizer91->Add( m_checkMiddleButtonPanLimited, 0, wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_checkAutoPan = new wxCheckBox( m_panel1, wxID_ANY, _("Pan while moving ob&ject"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer2->Add( m_checkAutoPan, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_checkHVOrientation = new wxCheckBox( m_panel1, wxID_ANY, _("&Restrict buses and wires to H and V orientation"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer2->Add( m_checkHVOrientation, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
m_checkPageLimits = new wxCheckBox( m_panel1, wxID_ANY, _("Show page limi&ts"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer2->Add( m_checkPageLimits, 0, wxEXPAND|wxLEFT|wxTOP|wxRIGHT, 3 );
|
||||
|
||||
m_checkAutoplaceFields = new wxCheckBox( m_panel1, wxID_ANY, _("Automatically place component fields"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer2->Add( m_checkAutoplaceFields, 0, wxEXPAND|wxLEFT|wxTOP|wxRIGHT, 3 );
|
||||
|
||||
m_checkAutoplaceJustify = new wxCheckBox( m_panel1, wxID_ANY, _("Allow field autoplace to change justification"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer2->Add( m_checkAutoplaceJustify, 0, wxEXPAND|wxLEFT|wxTOP|wxRIGHT, 3 );
|
||||
|
||||
m_checkAutoplaceAlign = new wxCheckBox( m_panel1, wxID_ANY, _("Always align autoplaced fields to the 50 mil grid"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer2->Add( m_checkAutoplaceAlign, 0, wxEXPAND|wxLEFT|wxTOP|wxRIGHT, 3 );
|
||||
m_checkAutoPan = new wxCheckBox( m_panel4, wxID_ANY, _("&Pan while moving ob&ject"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer91->Add( m_checkAutoPan, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
|
||||
bSizer3->Add( bSizer2, 0, wxEXPAND, 0 );
|
||||
bSizer81->Add( bSizer91, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
p1mainSizer->Add( bSizer3, 1, wxALL|wxEXPAND, 6 );
|
||||
|
||||
|
||||
m_panel1->SetSizer( p1mainSizer );
|
||||
m_panel1->Layout();
|
||||
p1mainSizer->Fit( m_panel1 );
|
||||
m_notebook->AddPage( m_panel1, _("General Options"), false );
|
||||
m_panel4->SetSizer( bSizer81 );
|
||||
m_panel4->Layout();
|
||||
bSizer81->Fit( m_panel4 );
|
||||
m_notebook->AddPage( m_panel4, _("Co&ntrols"), false );
|
||||
m_panel2 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
m_panel2->SetToolTip( _("User defined field names for schematic components. ") );
|
||||
|
||||
wxBoxSizer* bSizer6;
|
||||
bSizer6 = new wxBoxSizer( wxVERTICAL );
|
||||
bSizer6 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
wxBoxSizer* bSizer11;
|
||||
bSizer11 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
templateFieldListCtrl = new wxListView( m_panel2, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES );
|
||||
templateFieldListCtrl->SetMinSize( wxSize( 500,-1 ) );
|
||||
|
||||
bSizer6->Add( templateFieldListCtrl, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 8 );
|
||||
bSizer11->Add( templateFieldListCtrl, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 8 );
|
||||
|
||||
wxStaticBoxSizer* fieldSizer;
|
||||
fieldSizer = new wxStaticBoxSizer( new wxStaticBox( m_panel2, wxID_ANY, _("Field Settings") ), wxVERTICAL );
|
||||
wxFlexGridSizer* fgSizer4;
|
||||
fgSizer4 = new wxFlexGridSizer( 0, 2, 0, 0 );
|
||||
fgSizer4->AddGrowableCol( 1 );
|
||||
fgSizer4->SetFlexibleDirection( wxBOTH );
|
||||
fgSizer4->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
fieldNameLabel = new wxStaticText( m_panel2, wxID_ANY, _("&Name"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fieldNameLabel = new wxStaticText( m_panel2, wxID_ANY, _("Na&me"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fieldNameLabel->Wrap( -1 );
|
||||
fieldSizer->Add( fieldNameLabel, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
fgSizer4->Add( fieldNameLabel, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
fieldNameTextCtrl = new wxTextCtrl( m_panel2, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
|
||||
fieldSizer->Add( fieldNameTextCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
fgSizer4->Add( fieldNameTextCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
fieldDefaultValueLabel = new wxStaticText( m_panel2, wxID_ANY, _("D&efault Value"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fieldDefaultValueLabel = new wxStaticText( m_panel2, wxID_ANY, _("Defa&ult Value"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fieldDefaultValueLabel->Wrap( -1 );
|
||||
fieldSizer->Add( fieldDefaultValueLabel, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
fgSizer4->Add( fieldDefaultValueLabel, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
fieldDefaultValueTextCtrl = new wxTextCtrl( m_panel2, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
|
||||
fieldSizer->Add( fieldDefaultValueTextCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
fgSizer4->Add( fieldDefaultValueTextCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
fieldVisibleCheckbox = new wxCheckBox( m_panel2, wxID_ANY, _("&Visible"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fieldSizer->Add( fieldVisibleCheckbox, 0, wxALL, 5 );
|
||||
fgSizer4->Add( fieldVisibleCheckbox, 0, wxALL, 5 );
|
||||
|
||||
|
||||
bSizer6->Add( fieldSizer, 0, wxEXPAND, 5 );
|
||||
fgSizer4->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizer11->Add( fgSizer4, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizer6->Add( bSizer11, 1, wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizer10;
|
||||
bSizer10 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
addFieldButton = new wxButton( m_panel2, wxID_ADD_FIELD, _("&Add"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer6->Add( addFieldButton, 0, wxALL|wxEXPAND, 5 );
|
||||
bSizer10->Add( addFieldButton, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
deleteFieldButton = new wxButton( m_panel2, wxID_DELETE_FIELD, _("&Delete"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer6->Add( deleteFieldButton, 0, wxALL|wxEXPAND, 5 );
|
||||
deleteFieldButton = new wxButton( m_panel2, wxID_DELETE_FIELD, _("De&lete"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer10->Add( deleteFieldButton, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizer10->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizer6->Add( bSizer10, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panel2->SetSizer( bSizer6 );
|
||||
m_panel2->Layout();
|
||||
bSizer6->Fit( m_panel2 );
|
||||
m_notebook->AddPage( m_panel2, _("Template Field Names"), true );
|
||||
m_notebook->AddPage( m_panel2, _("Default &Fields"), true );
|
||||
|
||||
bOptionsSizer->Add( m_notebook, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Mar 13 2015)
|
||||
// C++ code generated with wxFormBuilder (version Dec 19 2015)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
@ -32,7 +32,6 @@ class wxListView;
|
||||
#include <wx/icon.h>
|
||||
#include <wx/listctrl.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/statbox.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/dialog.h>
|
||||
@ -69,9 +68,7 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
|
||||
};
|
||||
|
||||
wxNotebook* m_notebook;
|
||||
wxPanel* m_panel1;
|
||||
wxStaticText* m_staticText2;
|
||||
wxChoice* m_choiceUnits;
|
||||
wxPanel* m_panel5;
|
||||
wxStaticText* m_staticText3;
|
||||
wxChoice* m_choiceGridSize;
|
||||
wxStaticText* m_staticGridUnits;
|
||||
@ -81,9 +78,19 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
|
||||
wxStaticText* m_staticText5;
|
||||
wxSpinCtrl* m_spinLineWidth;
|
||||
wxStaticText* m_staticLineWidthUnits;
|
||||
wxStaticText* m_staticText7;
|
||||
wxSpinCtrl* m_spinTextSize;
|
||||
wxStaticText* m_staticTextSizeUnits;
|
||||
wxStaticText* m_staticText26;
|
||||
wxChoice* m_choiceSeparatorRefId;
|
||||
wxStaticText* m_staticText221;
|
||||
wxSpinCtrl* m_spinAutoSaveInterval;
|
||||
wxStaticText* m_staticText23;
|
||||
wxStaticLine* m_staticline3;
|
||||
wxCheckBox* m_checkShowGrid;
|
||||
wxCheckBox* m_checkHVOrientation;
|
||||
wxCheckBox* m_checkShowHiddenPins;
|
||||
wxCheckBox* m_checkPageLimits;
|
||||
wxPanel* m_panel3;
|
||||
wxStaticText* m_staticText2;
|
||||
wxChoice* m_choiceUnits;
|
||||
wxStaticText* m_staticText9;
|
||||
wxSpinCtrl* m_spinRepeatHorizontal;
|
||||
wxStaticText* m_staticRepeatXUnits;
|
||||
@ -92,26 +99,21 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
|
||||
wxStaticText* m_staticRepeatYUnits;
|
||||
wxStaticText* m_staticText16;
|
||||
wxSpinCtrl* m_spinRepeatLabel;
|
||||
wxStaticText* m_staticText221;
|
||||
wxSpinCtrl* m_spinAutoSaveInterval;
|
||||
wxStaticText* m_staticText23;
|
||||
wxStaticText* m_staticText7;
|
||||
wxSpinCtrl* m_spinTextSize;
|
||||
wxStaticText* m_staticTextSizeUnits;
|
||||
wxStaticText* m_stMaxUndoItems;
|
||||
wxSpinCtrl* m_spinMaxUndoItems;
|
||||
wxStaticText* m_stMaxUndoItemsUnit;
|
||||
wxStaticText* m_staticText26;
|
||||
wxChoice* m_choiceSeparatorRefId;
|
||||
wxStaticLine* m_staticline1;
|
||||
wxCheckBox* m_checkShowGrid;
|
||||
wxCheckBox* m_checkShowHiddenPins;
|
||||
wxStaticText* m_staticText22;
|
||||
wxStaticLine* m_staticline2;
|
||||
wxCheckBox* m_checkAutoplaceFields;
|
||||
wxCheckBox* m_checkAutoplaceJustify;
|
||||
wxCheckBox* m_checkAutoplaceAlign;
|
||||
wxPanel* m_panel4;
|
||||
wxCheckBox* m_checkEnableZoomCenter;
|
||||
wxCheckBox* m_checkEnableMiddleButtonPan;
|
||||
wxCheckBox* m_checkMiddleButtonPanLimited;
|
||||
wxCheckBox* m_checkAutoPan;
|
||||
wxCheckBox* m_checkHVOrientation;
|
||||
wxCheckBox* m_checkPageLimits;
|
||||
wxCheckBox* m_checkAutoplaceFields;
|
||||
wxCheckBox* m_checkAutoplaceJustify;
|
||||
wxCheckBox* m_checkAutoplaceAlign;
|
||||
wxPanel* m_panel2;
|
||||
wxListView* templateFieldListCtrl;
|
||||
wxStaticText* fieldNameLabel;
|
||||
|
@ -498,7 +498,7 @@ void SCH_SHEET::CleanupSheet()
|
||||
}
|
||||
|
||||
if( HLabel == NULL ) // Hlabel not found: delete sheet label.
|
||||
m_pins.erase( i );
|
||||
i = m_pins.erase( i );
|
||||
else
|
||||
++i;
|
||||
}
|
||||
|
@ -878,11 +878,9 @@ bool SCH_SHEET_LIST::TestForRecursion( const SCH_SHEET_LIST& aSrcSheetHierarchy,
|
||||
|
||||
SCH_SHEET* SCH_SHEET_LIST::FindSheetByName( const wxString& aSheetName )
|
||||
{
|
||||
SCH_SHEET* sheet = NULL;
|
||||
|
||||
for( int i = 0; i < m_count; i++ )
|
||||
{
|
||||
sheet = m_list[i].FindSheetByName( aSheetName );
|
||||
SCH_SHEET* sheet = m_list[i].FindSheetByName( aSheetName );
|
||||
|
||||
if( sheet )
|
||||
return sheet;
|
||||
|
@ -93,6 +93,7 @@ END_EVENT_TABLE()
|
||||
*/
|
||||
|
||||
#define LIB_VIEW_FRAME_NAME wxT( "ViewlibFrame" )
|
||||
#define LIB_VIEW_FRAME_NAME_MODAL wxT( "ViewlibFrameModal" )
|
||||
|
||||
LIB_VIEW_FRAME::LIB_VIEW_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType,
|
||||
PART_LIB* aLibrary ) :
|
||||
@ -100,18 +101,23 @@ LIB_VIEW_FRAME::LIB_VIEW_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrame
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
aFrameType==FRAME_SCH_VIEWER_MODAL ?
|
||||
#ifdef __WINDOWS__
|
||||
KICAD_DEFAULT_DRAWFRAME_STYLE | wxSTAY_ON_TOP :
|
||||
KICAD_DEFAULT_DRAWFRAME_STYLE | wxSTAY_ON_TOP
|
||||
#else
|
||||
KICAD_DEFAULT_DRAWFRAME_STYLE | wxFRAME_FLOAT_ON_PARENT :
|
||||
aParent ? KICAD_DEFAULT_DRAWFRAME_STYLE | wxFRAME_FLOAT_ON_PARENT
|
||||
: KICAD_DEFAULT_DRAWFRAME_STYLE | wxSTAY_ON_TOP
|
||||
#endif
|
||||
KICAD_DEFAULT_DRAWFRAME_STYLE,
|
||||
LIB_VIEW_FRAME_NAME )
|
||||
: KICAD_DEFAULT_DRAWFRAME_STYLE,
|
||||
aFrameType == FRAME_SCH_VIEWER_MODAL ?
|
||||
LIB_VIEW_FRAME_NAME_MODAL : LIB_VIEW_FRAME_NAME )
|
||||
{
|
||||
wxASSERT( aFrameType == FRAME_SCH_VIEWER || aFrameType == FRAME_SCH_VIEWER_MODAL );
|
||||
|
||||
if( aFrameType == FRAME_SCH_VIEWER_MODAL )
|
||||
SetModal( true );
|
||||
|
||||
// Force the frame name used in config. the lib viewer frame has a name
|
||||
// depending on aFrameType (needed to identify the frame by wxWidgets),
|
||||
// but only one configuration is preferable.
|
||||
m_configFrameName = LIB_VIEW_FRAME_NAME;
|
||||
|
||||
// Give an icon
|
||||
|
@ -75,6 +75,13 @@ public:
|
||||
*/
|
||||
static std::string GetVersion();
|
||||
|
||||
/**
|
||||
* Function GetSimpleVersion
|
||||
* Reports back curl version only and SSL library support
|
||||
*
|
||||
* @return std::string - Generated version string
|
||||
*/
|
||||
static std::string GetSimpleVersion();
|
||||
private:
|
||||
static bool m_initialized;
|
||||
};
|
||||
|
@ -52,8 +52,8 @@
|
||||
*/
|
||||
struct KICAD_EASY_CURL_BUFFER
|
||||
{
|
||||
char* payload;
|
||||
size_t size;
|
||||
char* Payload;
|
||||
size_t Size;
|
||||
};
|
||||
|
||||
|
||||
@ -142,7 +142,7 @@ public:
|
||||
* @param aArg is the argument being passed to CURL, ensure it is the right type per manual
|
||||
* @return CURLcode - CURL error code, will return CURLE_OK unless a problem was encountered
|
||||
*/
|
||||
template <typename T> CURLcode SetOption( CURLoption aOption, T aArg )
|
||||
template <typename T> CURLcode SetOption( CURLoption aOption, T aArg )
|
||||
{
|
||||
return curl_easy_setopt( m_CURL, aOption, aArg );
|
||||
}
|
||||
|
@ -616,16 +616,24 @@ inline bool IsBackLayer( LAYER_ID aLayerId )
|
||||
/**
|
||||
* Function FlippedLayerNumber
|
||||
* @return the layer number after flipping an item
|
||||
* some (not all) layers: external copper, Mask, Paste, and solder
|
||||
* some (not all) layers: external copper, and paired layers( Mask, Paste, solder ... )
|
||||
* are swapped between front and back sides
|
||||
* internal layers are flipped only if the copper layers count is known
|
||||
* @param aLayer = the LAYER_ID to flip
|
||||
* @param aCopperLayersCount = the number of copper layers. if 0 (in fact if < 4 )
|
||||
* internal layers will be not flipped because the layer count is not known
|
||||
*/
|
||||
LAYER_ID FlipLayer( LAYER_ID oldlayer );
|
||||
LAYER_ID FlipLayer( LAYER_ID aLayerId, int aCopperLayersCount = 0 );
|
||||
|
||||
/**
|
||||
* Calculate the mask layer when flipping a footprint
|
||||
* BACK and FRONT copper layers, mask, paste, solder layers are swapped
|
||||
* internal layers are flipped only if the copper layers count is known
|
||||
* @param aMask = the LSET to flip
|
||||
* @param aCopperLayersCount = the number of copper layers. if 0 (in fact if < 4 )
|
||||
* internal layers will be not flipped because the layer count is not known
|
||||
*/
|
||||
LSET FlipLayerMask( LSET aMask );
|
||||
LSET FlipLayerMask( LSET aMask, int aCopperLayersCount = 0 );
|
||||
|
||||
/**
|
||||
* Return a string (to be shown to the user) describing a layer mask.
|
||||
|
@ -224,12 +224,9 @@ void TREEPROJECT_ITEM::Activate( TREE_PROJECT_FRAME* prjframe )
|
||||
OpenPDF( fullFileName );
|
||||
break;
|
||||
|
||||
/* No, use a text editor. Netlists can only be handled sanely now from within
|
||||
eeschema's launcher for the *.kiface, NOT THE EXE which is now gone.
|
||||
case TREE_NET:
|
||||
frame->Execute( m_parent, CVPCB_EXE, fullFileName );
|
||||
// Nothing to do ( can be read only by Pcbnew, or by a text editor)
|
||||
break;
|
||||
*/
|
||||
|
||||
case TREE_TXT:
|
||||
{
|
||||
|
@ -105,7 +105,7 @@ void PL_EDITOR_FRAME::GetLayoutFromRedoList( wxCommandEvent& event )
|
||||
lastcmd = GetScreen()->PopCommandFromRedoList();
|
||||
|
||||
wrapper = lastcmd->PopItem();
|
||||
copyItem = (PL_ITEM_LAYOUT*)wrapper.GetItem();
|
||||
copyItem = static_cast<PL_ITEM_LAYOUT*>( wrapper.GetItem() );
|
||||
pglayout.SetPageLayout( TO_UTF8(copyItem->m_Layout) );
|
||||
delete copyItem;
|
||||
|
||||
@ -136,7 +136,7 @@ void PL_EDITOR_FRAME::GetLayoutFromUndoList( wxCommandEvent& event )
|
||||
lastcmd = GetScreen()->PopCommandFromUndoList();
|
||||
|
||||
wrapper = lastcmd->PopItem();
|
||||
copyItem = (PL_ITEM_LAYOUT*)wrapper.GetItem();
|
||||
copyItem = static_cast<PL_ITEM_LAYOUT*>( wrapper.GetItem() );
|
||||
pglayout.SetPageLayout( TO_UTF8(copyItem->m_Layout) );
|
||||
delete copyItem;
|
||||
|
||||
@ -156,6 +156,6 @@ void PL_EDITOR_FRAME::RemoveLastCommandInUndoList()
|
||||
PICKED_ITEMS_LIST* lastcmd = GetScreen()->PopCommandFromUndoList();
|
||||
|
||||
ITEM_PICKER wrapper = lastcmd->PopItem();
|
||||
PL_ITEM_LAYOUT* copyItem = (PL_ITEM_LAYOUT*)wrapper.GetItem();
|
||||
PL_ITEM_LAYOUT* copyItem = static_cast<PL_ITEM_LAYOUT*>( wrapper.GetItem() );
|
||||
delete copyItem;
|
||||
}
|
||||
|
@ -936,7 +936,7 @@ void PCB_BASE_FRAME::SwitchCanvas( wxCommandEvent& aEvent )
|
||||
|
||||
switch( aEvent.GetId() )
|
||||
{
|
||||
case ID_MENU_CANVAS_DEFAULT:
|
||||
case ID_MENU_CANVAS_LEGACY:
|
||||
break;
|
||||
|
||||
case ID_MENU_CANVAS_CAIRO:
|
||||
|
@ -752,6 +752,7 @@ void PCB_EDIT_FRAME::Block_Flip()
|
||||
itemsList->SetPickedItemStatus( UR_FLIPPED, ii );
|
||||
item->Flip( center );
|
||||
|
||||
// If a connected item is flipped, the ratsnest is no more OK
|
||||
switch( item->Type() )
|
||||
{
|
||||
case PCB_MODULE_T:
|
||||
@ -759,9 +760,8 @@ void PCB_EDIT_FRAME::Block_Flip()
|
||||
m_Pcb->m_Status_Pcb = 0;
|
||||
break;
|
||||
|
||||
// Move and rotate the track segments
|
||||
case PCB_TRACE_T: // a track segment (segment on a copper layer)
|
||||
case PCB_VIA_T: // a via (like track segment on a copper layer)
|
||||
case PCB_TRACE_T:
|
||||
case PCB_VIA_T:
|
||||
m_Pcb->m_Status_Pcb = 0;
|
||||
break;
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user