Compare commits

..

71 Commits

Author SHA1 Message Date
Rohan Agrawal bff0068065 Merge lp:~rohbotics/kicad/bug_1424003 into lp:kicad 2016-02-13 15:23:08 -05:00
unknown d0932944fc Fix long text values truncated in position file and serious cleanup of gen_modules_placefile.cpp code. (fixes lp:1412628) 2016-02-13 15:20:59 -05:00
Tomasz Wlostowski 5c3a56bdcc Fixed segfault in selection tool. (fixes lp:1542856) 2016-02-13 15:15:15 -05:00
jean-pierre charras e9bfcc28c3 Fix HPGL plot divide by zero bug. 2016-02-11 19:12:06 -05:00
Maciej Suminski 3cdac44ac2 GAL::DrawPolygon() and GAL::DrawPolyline() variants that work with VECTOR2D array. 2016-02-11 19:05:24 -05:00
jean-pierre charras 2cebaa2d79 3D Viewer: fix no solder mask unless there is something on the layer. (fixes lp:542935) 2016-02-10 20:47:34 -05:00
jean-pierre charras 609b996abe Pcbnew: zone keepout incorrectly created if previously a corner-smoothed copper zone was created. (fixes lp:1540967) 2016-02-10 20:21:26 -05:00
Simon Richter ea0c187e09 Executable icon resource build configuration fixes.
* The resource setting for bitmap2component is too late in the CMakeLists.txt,
  and is being ignored. Bitmap2component does not have an icon resource on
  Windows. Moving the entire section resolves the issue.
* The other programs only have the mingw special case listed, not the generic
  declaration for the resource file so added them.
2016-02-10 20:14:35 -05:00
jean-pierre charras bf6cd8445a Page layout editor: custom text size not saved when X or Y size value is not default. (fixes lp:1538603) 2016-02-10 20:12:16 -05:00
Chris Pavlina c50763bd5b libedit: fix iterator off end of vector (fixes lp:1537946) 2016-02-09 19:04:36 -05:00
Andrew Zonenberg 1aa6932b12 Pcbnew DRC: allow technical->copper pad overlap
* This permits things like mask "pads" over copper pads for custom mask openings.
2016-02-09 18:59:56 -05:00
Maciej Suminski 342ec2be0e Highlight a net when crossprobing with eeschema and highlight net tool is enabled. 2016-02-09 18:57:46 -05:00
Martin d'Allens d451800d0a Eeschema: Set modified flag after "Append Schematic Sheet" 2016-02-09 18:56:10 -05:00
jean-pierre charras 48435c5cb3 Fix bug in "User Custom" size selection in"Page Settings" in non English languages. (fixes lp:1536427) 2016-02-09 18:41:47 -05:00
Maciej Suminski 8999ae9fb2 Make DRC markers not editable with the standard tools (GAL). 2016-02-09 18:38:26 -05:00
Maciej Suminski 8184ba1cf3 Draw arrows for DRC markers (GAL). 2016-02-09 18:36:43 -05:00
Simon Wells 228ed4ea41 GAL: Update grid color when changed by user 2016-02-09 18:34:16 -05:00
Chris Pavlina 3031a3f5cf Pcbnew: fix Flip hotkey for blocks in legacy (fixes lp:1534120) 2016-02-09 18:31:39 -05:00
Tomasz Wlostowski 42aa93e34b GAL: apply grid offset when board is loaded and respect grid color setting. (fixes lp:1533168) 2016-02-09 18:27:13 -05:00
Tomasz Wlostowski eb8b407717 Router: check layers of all traversed joints in FindLinesBetweenJoints(). (fixes lp:1531762) 2016-02-08 21:28:22 -05:00
Johannes Agricola eaea15fbef Properly set keepout flag for new zones in GAL 2016-02-08 21:26:03 -05:00
Maciej Suminski 72a69f9428 pcbnew asks before rotating/flipping a locked item (GAL). 2016-02-08 20:06:22 -05:00
Simon Wells c66656c5d4 Open PDF viewer improvements. (fixes lp:1530162)
* Fix broken ExecuteCommand() when path contains spaces on OSX.
* Only use system defined mime type for PDF files.
* Remove system dependent fallback applications for opening PDF files.
2016-02-08 20:03:57 -05:00
Element Green 14363262c2 Pcbnew: fix VRML export dialog settings having no effect. (fixes lp:1529214) 2016-02-08 19:58:21 -05:00
Jean-Pierre Charras 509e71fdb3 Pcbnew: fix bug when flipping a block that dosesn't flip inner layers nor their connected microvias. (fixes lp:1527446) 2016-02-08 19:16:07 -05:00
Jean-Pierre Charras 6c5e2f3900 Pcbnew: avoid crash if something is wrong when opening the Python Console (for instance missing python module). 2016-02-07 19:38:08 -05:00
Chris Pavlina f46272bed9 Pcbnew: fix zone tool bug when minimum width is compared against thermal relief spoke when Pad connection set to none. (fixes lp 1526158) 2016-02-07 19:35:43 -05:00
Jean-Pierre Charras 2f7b3ab56e Eeschema: fix segfault when loading malformed libraries. (fixes lp:1527804) 2015-12-20 16:46:33 -05:00
Maciej Suminski b526227529 Fixed crash on undo pad placement in the footprint editor using GAL canvases. (fixes lp:1525552) 2015-12-15 10:22:49 -05:00
Maciej Suminski e93c815e02 Fixed ratsnest for PCBs imported using plugins (GAL). 2015-12-15 10:16:15 -05:00
Mark Roszko 5c8f7c7a3a Use defined environment variables before falling back to DEFAULT_INSTALL_PATH. 2015-12-09 09:46:56 -05:00
Jean-Pierre Charras 7fb6698e29 Kicad manager: fix a potential bug which could crash Kicad manager. 2015-12-07 09:55:59 -05:00
Jean-Pierre Charras f11b426151 Better sizing of wx_html_report_panel in dialog_netlist (fix bug #1522758) 2015-12-06 18:24:32 -05:00
Maciej Suminski 827dad3197 GAL bug fixes cherry picked from product branch. 2015-12-06 18:22:13 -05:00
Wayne Stambaugh 593c974063 One last update before 4.0.0 stable release. 2015-11-29 14:53:12 -05:00
jean-pierre charras 7b0d981f21 pcb_calculator: bigger (more readable) microstrip_zodd_zeven bitmap. 2015-11-29 20:22:03 +01:00
Wayne Stambaugh a68b3cb486 Merge with tip of product branch for 4.0.0 stable release. 2015-11-29 14:06:50 -05:00
Wayne Stambaugh 6e9237593d Update credits in AUTHORS.txt and about dialog. 2015-11-29 14:02:42 -05:00
jean-pierre charras 7f49fc9a03 Fix a minor bug I created in rev 6332 in dialog_design_rules.cpp (a line of code removed by accident). 2015-11-29 16:17:47 +01:00
jean-pierre charras 19e06f13fc Commit change which was missing in commit 6332 ( Pcbnew: auxiliary axis shape: use the same look as GAL, to be consistent with GAL.) 2015-11-29 15:53:03 +01:00
jean-pierre charras da9f68911c Autosize row label column in wxGrid in pcb_calculator and design rules dialog.
Pcbnew: auxiliary axis shape: use the same look as GAL, to be consistent with GAL.
Minor change in dialog_env_var_config (use the wxStdDialogButtonSize for usual OK, Cancel and help buttons)
2015-11-29 15:19:22 +01:00
jean-pierre charras 407aa9c586 Very minor fix: a pcbnew option (show page limits) was not stored in user config, and was lost after closing the session.
3d-viewer: very minor fix
2015-11-29 07:56:27 +01:00
unknown c1b46e6ed8 Fix bug Bug #1519590 (gal cannot start on surface book) 2015-11-29 07:50:25 +01:00
Adam Wolfe e511afdf0f Fix bug in library-repos-install.sh. 2015-11-24 16:53:15 -05:00
jean-pierre charras 22fb7dafba Rename the automatically generated version.h to kicad_build_version.h as a workaround to an issue in msys2: for a very obscure reason, version.h was added as dependency to most of .cpp files.
It was an issue, because each time the bzr version was modified, a full kicad rebuild was made.
It does not happen on Linux.
2015-11-24 11:09:39 +01:00
jean-pierre charras 9dc5bc4c66 Rename the automatically generated version.h to kicad_build_version.h as a workaround to an issue in msys2: for a very obscure reason, version.h was added as dependency to most of .cpp files. 2015-11-24 11:05:34 +01:00
jean-pierre charras 2afee8fb58 Make translation easier in dialog_create_array_base. 2015-11-22 11:21:14 +01:00
Wayne Stambaugh 08d9b362be More developer credit updates.
* Minor credit information updates.
* Add a packagers tab to the about dialog.
* Coding policy fixes.
2015-11-19 15:03:02 -05:00
Wayne Stambaugh 4b85adb7d3 Developer credit and copyright updates.
* Remove duplicate developer credits added in last commit.
* Update developer email addresses.
* Change copyright.h from GPL2+ to GPL3+ per FSF.
* Update newstroke license from CC-BY to CC0 with permission by author
  Vladimir Uryvaev which reflects the official license on the newstroke
  website http://vovanium.ru/sledy/newstroke/en.
* Coding policy fixes in AboutDialog_main.cpp.
2015-11-19 10:04:12 -05:00
jean-pierre charras 4749921bbc Remove confirmation dialog when deleting footprints.
Very minor other fixes.
2015-11-18 19:59:24 +01:00
Chris Pavlina bbba5d5c47 Eeschema: fix find and replace bug where replace value lags by one cycle. (fixes lp:1517101) 2015-11-18 10:38:46 -05:00
Tomasz Wlostowski 72b0593fdb Pcbnew: push and shove router fixes.
* Fix segfault caused by invalidation of the end item by
  PNS_LINE_PLACER::UpdateSizes().
* GAL zone drawing tool updates the ratsnest after zone drawing is complete.
* Fixed performance issue in zones processing using strict simplification
  only for the final filled area.
2015-11-18 09:35:17 -05:00
Wayne Stambaugh 20b6346180 Update authors.txt and developer list in about dialog. 2015-11-17 14:00:58 -05:00
jean-pierre charras 21d700facc Replace "module" by "footprint" in a few messages. 2015-11-17 17:18:00 +01:00
Wayne Stambaugh ebdc1e4b17 Pcbnew: minor footprint properties dialog fixes.
* Replace the term module with footprint.
* Use default dialog size to allow sizers to determine the size of the dialog.
* Fix a few alignment and spacing issues.
* Fix some minor grammatical issues.
* Use front and back for board side instead of top and bottom to be consistent
  with layer naming scheme.
2015-11-17 09:03:57 -05:00
jean-pierre charras 7f9a07334e Remove the 32 chars limit in chipname in dialog_edit_component_in_schematic, which is useless and creates a bug in wxGTK if the intial chip name has more than 32 chars. (Fix [Bug 1516157) 2015-11-17 09:22:03 +01:00
jean-pierre charras f31f129ce7 Remove the 32 chars limit in chipname in dialog_edit_component_in_schematic, which is useless and creates a bug in wxGTK if the intial chip name has more than 32 chars. 2015-11-17 08:48:51 +01:00
jean-pierre charras 49d75d5850 Drill file generation: add the option to merge NPTH and PTH, which was disabled recently, due to code changes.
Add missing translator name in AUTHORS.txt and About dialog (patch from Eldar Khayrullin)
2015-11-16 19:42:58 +01:00
jean-pierre charras d5aef07816 Kicad manager: fix a very serious bug which crashes Kicad when running and closing gerbview, pcb_calculator, bitmap2component or pl_editor, when the Kicad manager frame is not the top level frame (It happens very easily if eeschema or pcbnew is running, after opening and closing a dialog).
Fix a few wxWidgets asserts.
menubar in pcbnew: move the recreate .cmp file menu to export menu, and fixes its help comment which was fully outdated.
2015-11-15 19:04:19 +01:00
unknown 3e8b4503d1 Try to fix Bug #1458215 (3D viewer plane artifacts on first render) 2015-11-15 18:55:53 +01:00
unknown 4141a250fe Eagle plugin: remve a non-static initializer. 2015-11-15 18:53:26 +01:00
Jon Neal 19075e3434 Pcbnew: fix segfault in eagle plugin when importing zone keepout areas. 2015-11-15 08:29:48 -05:00
jean-pierre charras c3b51b0d07 2 very minor fixes in Eeschema:
* Component doc: add https as prefix in list of urls which are opened by a Internet browser.
* Import .cmp files: Use "IdModule" instead of "IdModule  =" as keyword for footprint name and use '=' only as separator.
2015-11-14 09:20:17 +01:00
jean-pierre charras a356293fee Cvpcb: Fix incorrect unique pad count for footprints using mixed letters/digits in pad name (like AA12, AB12 or Anod for instance.) and skip pads with no pad name. 2015-11-13 12:32:42 +01:00
Wayne Stambaugh 8f79b4fb11 Pcbnew: fix minor Doxygen comment error. 2015-11-11 15:16:39 -05:00
jean-pierre charras 34f1c0ea2d Fix a few Coverity warnings. 2015-11-11 19:47:51 +01:00
Damien Espitallier 16c2c398e9 CvPcb: count unique pin numbers when filtering by pin count. (fixes:1300719) 2015-11-11 13:35:26 -05:00
jean-pierre charras a988d7a2f1 Demos: minor update in kit-dev-coldfire-xilinx_5213.kicad_pcb 2015-11-10 20:33:02 +01:00
jean-pierre charras 91391a5975 Small change in gr_basic.cpp to try to fix Bug #1514635, which is a bug in wxWidgets Print process, on Linux (current pen having sometimes its setup lost after setting wxBrush in curren DC)
It was previoulsy incorrectly fixed when forcing the black and white print option.
2015-11-10 13:17:33 +01:00
jean-pierre charras 6cc91a074b Remove a few conditional compilation for wxWidgets version < 3.0
Update a old .fbp file.
2015-11-09 13:14:28 +01:00
Wayne Stambaugh ce81524b83 Merge with tip of product branch r6303, 4.0.0-rc1. 2015-11-08 16:22:19 -05:00
150 changed files with 9060 additions and 5838 deletions
+1 -2
View File
@@ -119,8 +119,7 @@ EDA_3D_CANVAS::~EDA_3D_CANVAS()
// Free the list of parsers list
for( unsigned int i = 0; i < m_model_parsers_list.size(); i++ )
if( m_model_parsers_list[i] )
delete m_model_parsers_list[i];
delete m_model_parsers_list[i];
}
+5 -4
View File
@@ -290,7 +290,7 @@ void EDA_3D_CANVAS::generateFakeShadowsTextures( REPORTER* aErrorMessages, REPOR
void EDA_3D_CANVAS::Redraw()
{
// SwapBuffer requires the window to be shown before calling
if( !IsShown() )
if( !IsShownOnScreen() )
return;
wxString err_messages;
@@ -447,7 +447,7 @@ void EDA_3D_CANVAS::Redraw()
// Board Body
GLint shininess_value = 32;
glMateriali ( GL_FRONT_AND_BACK, GL_SHININESS, shininess_value );
glMateriali( GL_FRONT_AND_BACK, GL_SHININESS, shininess_value );
if( isEnabled( FL_SHOW_BOARD_BODY ) )
{
@@ -460,8 +460,9 @@ void EDA_3D_CANVAS::Redraw()
// Board
// specify material parameters for the lighting model.
shininess_value = 52;
glMateriali ( GL_FRONT_AND_BACK, GL_SHININESS, shininess_value );
glMateriali( GL_FRONT_AND_BACK, GL_SHININESS, shininess_value );
glm::vec4 specular( GetPrm3DVisu().m_CopperColor.m_Red * 0.20f,
GetPrm3DVisu().m_CopperColor.m_Green * 0.20f,
@@ -477,7 +478,7 @@ void EDA_3D_CANVAS::Redraw()
// Tech layers
shininess_value = 32;
glMateriali ( GL_FRONT_AND_BACK, GL_SHININESS, shininess_value );
glMateriali( GL_FRONT_AND_BACK, GL_SHININESS, shininess_value );
glm::vec4 specularTech( 0.0f, 0.0f, 0.0f, 1.0f );
glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, &specularTech.x );
+4 -1
View File
@@ -572,7 +572,10 @@ void EDA_3D_CANVAS::buildTechLayers3DView( REPORTER* aErrorMessages, REPORTER* a
// bufferPolys contains polygons to merge. Many overlaps .
// Calculate merged polygons and remove pads and vias holes
if( bufferPolys.IsEmpty() )
if( layer != B_Mask && layer != F_Mask && bufferPolys.IsEmpty() )
// if a layer has no iten to draw, skip it
// However solder mask layers are negative layers, so no item
// means only a full layer mask
continue;
// Solder mask layers are "negative" layers.
+5
View File
@@ -222,6 +222,11 @@ EDA_3D_FRAME::EDA_3D_FRAME( KIWAY* aKiway, PCB_BASE_FRAME* aParent,
}
EDA_3D_FRAME::~EDA_3D_FRAME()
{
m_auimgr.UnInit();
}
void EDA_3D_FRAME::Exit3DFrame( wxCommandEvent& event )
{
Close( true );
+1 -4
View File
@@ -69,10 +69,7 @@ public:
EDA_3D_FRAME( KIWAY* aKiway, PCB_BASE_FRAME* aParent, const wxString& aTitle,
long style = KICAD_DEFAULT_3D_DRAWFRAME_STYLE );
~EDA_3D_FRAME()
{
m_auimgr.UnInit();
};
~EDA_3D_FRAME();
PCB_BASE_FRAME* Parent() const { return (PCB_BASE_FRAME*)GetParent(); }
+2 -1
View File
@@ -72,7 +72,8 @@ public:
* @param aFilename = the full file name of the file to load
* @return true if as succeeded
*/
virtual bool Load( const wxString& aFilename ) {
virtual bool Load( const wxString& aFilename )
{
return false;
};
+37 -26
View File
@@ -1,11 +1,12 @@
* Copyright (C) 1992-2014 Jean-Pierre Charras
* Copyright (C) 1992-2014 Kicad Developers Team
* Copyright (C) 1992-2015 Jean-Pierre Charras
* Copyright (C) 1992-2015 Kicad Developers Team
* under GNU General Public License (see copyright.txt)
== Main Authors
Jean-Pierre Charras <jean-pierre.charras[at]gipsa-lab-dot-inpg-dot-fr>
Dick Hollenbeck <dick[at]softplc-dot-com>
Wayne Stambaugh <stambaughw[at]verizon-dot-net>
Wayne Stambaugh <stambaughw[at]gmail-dot-com>
== Contributors
Hauptmech <hauptmech[at]gmail-dot-com>
@@ -16,28 +17,37 @@ Marco Serantoni <marco.serantoni[at]gmail-dot-com> (OSX maintener)
Rok Markovic <rok[at]kanardia.eu>
Tim Hanson <sideskate[at]gmail-dot-com>
Vesa Solonen <vesa.solonen[at]hut-dot-fi>
Alexander Zakamaldin <zaka62[at]mail.ru>
Miguel Angel Ajo Pelayo <miguelangel[at]nbee.es> (Python Scripting)
Alexander Lunev <al.lunev[at]yahoo.com> (Pcad to Kicad converter)
Jacobo Aragunde Perez <jaragunde[at]igalia.com> for Igalia and the CERN
Brian Sidebotham <brian.sidebotham[at]gmail.com>
Maciej Sumiński <maciej.suminski[at]cern.ch>
Tomasz Wlostowski <tomasz.wlostowski[at]cern.ch>
Henner Zeller <h.zeller[at]acm.org>
Mark Roszko <mark.roszko[at]gmail.com>
Daniel Majewski <lordblick[at]gmail.com>
Konstantin Baranovskiy <baranovskiykonstantin[at]gmail.com>
Torsten Hüter <torstenhtr[at]gmx.de>
Nick Østergaard <oe.nick[at]gmail.com>
Andrew Zonenberg <azonenberg[at]drawersteak.com>
Cirilo Bernardo <cirilo_bernardo[at]yahoo.com>
Alexander Zakamaldin <zaka62[at]mail-dot-ru>
Miguel Angel Ajo Pelayo <miguelangel[at]nbee-dot-es> (Python Scripting)
Alexander Lunev <al.lunev[at]yahoo-dot-com> (Pcad to Kicad converter)
Jacobo Aragunde Perez <jaragunde[at]igalia-dot-com> for Igalia and the CERN
Brian Sidebotham <brian.sidebotham[at]gmail-dot-com>
Maciej Sumiński <maciej.suminski[at]cern-dot-ch>
Tomasz Wlostowski <tomasz.wlostowski[at]cern-dot-ch>
Henner Zeller <h.zeller[at]acm-dot-org>
Mark Roszko <mark.roszko[at]gmail-dot-com>
Daniel Majewski <lordblick[at]gmail-dot-com>
Konstantin Baranovskiy <baranovskiykonstantin[at]gmail-dot-com>
Torsten Hüter <torstenhtr[at]gmx-dot-de>
Nick Østergaard <oe.nick[at]gmail-dot-com>
Andrew Zonenberg <azonenberg[at]drawersteak-dot-com>
Cirilo Bernardo <cirilo_bernardo[at]yahoo-dot-com>
Adam Wolf <adamwolf[at]feelslikeburning-dot-com>
Bernhard Stegmaier <stegmaier[at]sw-systems-dot-de>
Chris Pavlina <pavlina.chris[at]gmail-dot-com>
Simon Richter <Simon.Richter[at]hogyros-dot-de>
Mario Luzeiro <mrluzeiro[at]ua-dot-pt>
Mateusz Skowroński <skowri[at]gmail-dot-com>
See also CHANGELOG.txt for contributors.
== Document Writers
Jean-Pierre Charras <jean-pierre.charras[at]gipsa-lab.inpg.fr>
Igor Plyatov <plyatov[at]gmail.com>
Jean-Pierre Charras <jean-pierre.charras[at]gipsa-lab.inpg-dot-fr>
Igor Plyatov <plyatov[at]gmail-dot-com>
Fabrizio Tappero <fabrizio-dot-tappero[at]gmail-dot-com>
Marco Ciampa <ciampix[at]libero-dot-it>
Wayne Stambaugh <stambaughw[at]gmail-dot-com
== Translators
Czech (CZ) Martin Kratoška <martin[at]ok1rr-dot-com>
@@ -45,20 +55,21 @@ Dutch (NL) Jerry Jacobs <xor.gate.engineering[at]gmail-dot-com>
Finnish (FI) Vesa Solonen <vesa.solonen[at]hut-dot-fi>
French (FR) Jean-Pierre Charras <jean-pierre.charras[at]inpg-dot-fr>
Polish (PL) Mateusz Skowro¿ski <skowri[at]gmail-dot-com>
Polish (PL) Kerusey Karyu <keruseykaryu@o2.pl>
Polish (PL) Kerusey Karyu <keruseykaryu[at]o2.pl>
Portuguese (PT) Renie Marquet <reniemarquet[at]uol-dot-com-dot-br>"
Russian (RU) Igor Plyatov <plyatov[at]gmail-dot-com>
Russian (RU) Andrey Fedorushkov <andrf@mail.ru>
Russian (RU) Andrey Fedorushkov <andrf[at]mail-dot-ru>
Russian (RU) Eldar Khayrullin <eldar.khayrullin[at]mail-dot-ru>
Spanish (ES) Pedro Martin del Valle <pkicad[at]yahoo-dot-es>
Spanish (ES) Iñigo Zuluaga <inigo_zuluaga[at]yahoo-dot-es>
German (DE) Rafael Sokolowski <Rafael.Sokolowski[at]web-dot-de
Japanese (JA) Kenta Yonekura <midpika@hotmail.com>
Japanese (JA) yoneken <midpika@hotmail.com>
Japanese (JA) Kenta Yonekura <yoneken[at]kicad-dot-jp>
Remy Halvick, David Briscoe, Dominique Laigle, Paul Burke
== Programm credits for icons and others
Icons by Iñigo Zuluagaz <inigo_zuluaga[at]yahoo-dot-es>
New Icons by Fabrizio Tappero <fabrizio-dot-tappero[at]gmail-dot-com>
3D modules by Renie Marquet <reniemarquet[at]uol.com-dot-br>
3D modules by Renie Marquet <reniemarquet[at]uol-dot-com-dot-br>
3D modules by Christophe Boschat <nox454[at]hotmail-dot-fr>
+2 -2
View File
@@ -49,7 +49,7 @@ set( _wvh_write_version_file ON )
# Compare the version argument against the version in the existing header file for a mismatch.
if( EXISTS ${OUTPUT_FILE} )
file( STRINGS ${CMAKE_BINARY_DIR}/version.h _current_version_str
file( STRINGS ${OUTPUT_FILE} _current_version_str
REGEX "^#define[\t ]+KICAD_BUILD_VERSION[\t ]+.*" )
string( REGEX REPLACE "^#define KICAD_BUILD_VERSION \"([()a-zA-Z0-9 -.]+)\".*"
"\\1" _wvh_last_version "${_current_version_str}" )
@@ -82,6 +82,6 @@ if( _wvh_write_version_file )
endif()
# There should always be a valid version.h file. Otherwise, the build will fail.
if( NOT EXISTS ${CMAKE_BINARY_DIR}/version.h )
if( NOT EXISTS ${OUTPUT_FILE} )
message( FATAL_ERROR "Configuration failed to write file ${OUTPUT_FILE}." )
endif()
+7 -8
View File
@@ -21,6 +21,13 @@ set_source_files_properties( bitmap2cmp_gui.cpp PROPERTIES
COMPILE_DEFINITIONS "COMPILING_DLL"
)
if( MINGW )
# BITMAP2COMPONENT_RESOURCES variable is set by the macro.
mingw_resource_compiler( bitmap2component )
else()
set( BITMAP2COMPONENT_RESOURCES bitmap2component.rc )
endif()
if( APPLE )
# setup bundle
set( BITMAP2COMPONENT_RESOURCES bitmap2component.icns )
@@ -81,11 +88,3 @@ if( false ) # linker map with cross reference
LINK_FLAGS "${TO_LINKER},-cref ${TO_LINKER},-Map=bitmap2component.map"
)
endif()
if( MINGW )
# BITMAP2COMPONENT_RESOURCES variable is set by the macro.
mingw_resource_compiler( bitmap2component )
else()
set( BITMAP2COMPONENT_RESOURCES bitmap2component.rc )
endif()
+1 -1
View File
@@ -124,7 +124,7 @@ add_custom_target(
version_header ALL
COMMAND ${CMAKE_COMMAND}
-DKICAD_BUILD_VERSION=${KICAD_BUILD_VERSION}
-DOUTPUT_FILE=${CMAKE_BINARY_DIR}/version.h
-DOUTPUT_FILE=${CMAKE_BINARY_DIR}/kicad_build_version.h
-DSRC_PATH=${PROJECT_SOURCE_DIR}
-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}
-P ${CMAKE_MODULE_PATH}/WriteVersionHeader.cmake
+2 -2
View File
@@ -22,12 +22,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* Date for KiCad build version */
// Date for KiCad build version
#include <fctsys.h>
// The include file version.h is always created even if the repo version cannot be
// determined. In this case KICAD_BUILD_VERSION will default to "no-bzr".
#include <version.h>
#include <kicad_build_version.h>
/**
-30
View File
@@ -89,36 +89,6 @@ const PAGE_INFO PAGE_INFO::pageUSLedger( wxSize( 17000, 11000 ), wxT( "USLedge
int PAGE_INFO::s_user_width = 17000;
int PAGE_INFO::s_user_height = 11000;
/*
wxArrayString PAGE_INFO::GetStandardSizes()
{
wxArrayString ret;
static const PAGE_INFO* stdPageSizes[] = {
&pageA4,
&pageA3,
&pageA2,
&pageA1,
&pageA0,
&pageA,
&pageB,
&pageC,
&pageD,
&pageE,
// &pageGERBER, // standard?
&pageUSLetter,
&pageUSLegal,
&pageUSLedger,
&pageUser,
};
for( unsigned i=0; i < DIM( stdPageSizes ); ++i )
ret.Add( stdPageSizes[i]->GetType() );
return ret;
}
*/
inline void PAGE_INFO::updatePortrait()
{
+6 -3
View File
@@ -223,8 +223,6 @@ void HPGL_PLOTTER::SetViewport( const wxPoint& aOffset, double aIusPerDecimil,
paperSize.y *= 10.0 * aIusPerDecimil;
SetDefaultLineWidth( 0 ); // HPGL has pen sizes instead
m_plotMirror = aMirror;
penOverlap = 0;
penDiameter = 0;
}
@@ -685,7 +683,12 @@ void HPGL_PLOTTER::FlashPadTrapez( const wxPoint& aPadPos, const wxPoint* aCorne
}
// Calculation of dd = number of segments was traced to fill.
jj = jj / (int) ( penDiameter - penOverlap );
int delta = (int) ( penDiameter - penOverlap );
if( delta )
jj = jj / delta;
else
jj = 0;
// Trace the outline.
for( ; jj > 0; jj-- )
+266 -160
View File
@@ -58,7 +58,8 @@ static wxString HtmlNewline( const unsigned int amount = 1 );
static void InitKiCadAboutNew( AboutAppInfo& info )
{
// Set application specific icon
const wxTopLevelWindow* const tlw = wxDynamicCast( Pgm().App().GetTopWindow(), wxTopLevelWindow );
const wxTopLevelWindow* const tlw = wxDynamicCast( Pgm().App().GetTopWindow(),
wxTopLevelWindow );
if( tlw )
info.SetIcon( tlw->GetIcon() );
@@ -92,17 +93,16 @@ static void InitKiCadAboutNew( AboutAppInfo& info )
/* wxWidgets version */
wxString libVersion;
libVersion
<< wxT( "wxWidgets " )
<< wxMAJOR_VERSION << wxT( "." )
<< wxMINOR_VERSION << wxT( "." )
<< wxRELEASE_NUMBER
libVersion << wxT( "wxWidgets " )
<< wxMAJOR_VERSION << wxT( "." )
<< wxMINOR_VERSION << wxT( "." )
<< wxRELEASE_NUMBER
/* Unicode or ANSI version */
#if wxUSE_UNICODE
<< wxT( " Unicode " );
<< wxT( " Unicode " );
#else
<< wxT( " ANSI " );
<< wxT( " ANSI " );
#endif
// Just in case someone builds KiCad with the platform native of Boost instead of
@@ -127,49 +127,63 @@ static void InitKiCadAboutNew( AboutAppInfo& info )
/* short description */
description << wxT( "<p>" );
description << wxT( "<b><u>" ) << _( "Description" ) << wxT( "</u></b>" ); // bold & underlined font for caption
description << wxT( "<b><u>" )
<< _( "Description" )
<< wxT( "</u></b>" ); // bold & underlined font for caption
description << wxT( "<p>" ) <<
_( "The KiCad EDA Suite is a set of open source applications for the creation of electronic schematics and to design printed circuit boards." )
description << wxT( "<p>" )
<< _( "The KiCad EDA Suite is a set of open source applications for the "
"creation of electronic schematics and to design printed circuit boards." )
<< wxT( "</p>" );
description << wxT( "</p>" );
/* websites */
description << wxT( "<p>" );
description << wxT( "<b><u>" ) << _( "KiCad on the web" ) << wxT( "</u></b>" ); // bold & underlined font for caption
description << wxT( "<b><u>" )
<< _( "KiCad on the web" )
<< wxT( "</u></b>" ); // bold & underlined font for caption
// bullet-ed list with some http links
description << wxT( "<ul>" );
description << wxT( "<li>" ) << HtmlHyperlink( wxT( "http://iut-tice.ujf-grenoble.fr/kicad" ),
_( "The original site of the initiator of KiCad" ) )
description << wxT( "<li>" )
<< HtmlHyperlink( wxT( "http://www.kicad-pcb.org" ),
_( "The official KiCad site" ) )
<< wxT( "</li>" );
description << wxT( "<li>" )
<< HtmlHyperlink( wxT( "http://iut-tice.ujf-grenoble.fr/kicad" ),
_( "The original site of the KiCad project founder" ) )
<< wxT( "</li>" );
description << wxT( "<li>" )
<< HtmlHyperlink( wxT( "https://launchpad.net/kicad" ),
_( "Developer's website on Launchpad" ) )
<< wxT("</li>" );
description << wxT( "<li>" )
<< HtmlHyperlink( wxT( "http://www.kicadlib.org" ),
_( "Repository with additional component libraries" ) )
<< wxT( "</li>" );
description << wxT( "<li>" ) <<
HtmlHyperlink( wxT( "https://launchpad.net/kicad" ), _( "Project on Launchpad" ) ) << wxT(
"</li>" );
description << wxT( "<li>" ) <<
HtmlHyperlink( wxT( "http://www.kicad-pcb.org" ),
_( "The new KiCad site" ) ) << wxT( "</li>" );
description << wxT( "<li>" ) <<
HtmlHyperlink( wxT( "http://www.kicadlib.org" ),
_( "Repository with additional component libraries" ) ) << wxT( "</li>" );
description << wxT( "</ul>" );
description << wxT( "</p>" );
description << wxT( "<p>" );
description << wxT( "<b><u>" ) << _( "Contribute to KiCad" ) << wxT( "</u></b>" ); // bold & underlined font caption
description << wxT( "<b><u>" )
<< _( "Contribute to KiCad" )
<< wxT( "</u></b>" ); // bold & underlined font caption
// bullet-ed list with some http links
description << wxT( "<ul>" );
description << wxT( "<li>" ) <<
HtmlHyperlink( wxT( "https://bugs.launchpad.net/kicad" ),
_( "Report bugs if you found any" ) ) << wxT( "</li>" );
description << wxT( "<li>" ) << HtmlHyperlink( wxT( "https://blueprints.launchpad.net/kicad" ),
_( "File an idea for improvement" ) ) << wxT( "</li>" );
description << wxT( "<li>" ) <<
HtmlHyperlink( wxT( "http://www.kicadlib.org/Kicad_related_links.html" ),
_( "KiCad links to user groups, tutorials and much more" ) ) << wxT( "</li>" );
description << wxT( "<li>" )
<<HtmlHyperlink( wxT( "https://bugs.launchpad.net/kicad" ),
_( "Report bugs if you found any" ) )
<< wxT( "</li>" );
description << wxT( "<li>" )
<< HtmlHyperlink( wxT( "https://blueprints.launchpad.net/kicad" ),
_( "File an idea for improvement" ) )
<< wxT( "</li>" );
description << wxT( "<li>" )
<< HtmlHyperlink( wxT( "http://www.kicadlib.org/Kicad_related_links.html" ),
_( "KiCad links to user groups, tutorials and much more" ) )
<< wxT( "</li>" );
description << wxT( "</ul>" );
description << wxT( "</p>" );
@@ -184,7 +198,7 @@ static void InitKiCadAboutNew( AboutAppInfo& info )
<< HtmlNewline( 4 )
<< _( "The complete KiCad EDA Suite is released under the" ) << HtmlNewline( 2 )
<< HtmlHyperlink( wxT( "http://www.gnu.org/licenses" ),
_( "GNU General Public License (GPL) version 2 or any later version" ) )
_( "GNU General Public License (GPL) version 3 or any later version" ) )
<< wxT( "</div>" );
info.SetLicense( license );
@@ -203,135 +217,223 @@ static void InitKiCadAboutNew( AboutAppInfo& info )
*/
// The core developers
info.AddDeveloper(
new Contributor( wxT( "Jean-Pierre Charras" ), wxT( "jp.charras@wanadoo.fr" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Dick Hollenbeck" ), wxT( "dick@softplc.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Wayne Stambaugh" ), wxT( "stambaughw@verizon.net" ) ) );
info.AddDeveloper( new Contributor( wxT( "Jean-Pierre Charras" ),
wxT( "jp.charras@wanadoo.fr" ) ) );
info.AddDeveloper( new Contributor( wxT( "Dick Hollenbeck" ),
wxT( "dick@softplc.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Wayne Stambaugh" ),
wxT( "stambaughw@gmail.com" ) ) );
// alphabetically by last name after main 3 above:
info.AddDeveloper(
new Contributor( wxT( "Frank Bennett" ), wxT( "bennett78@lpbroadband.net" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Cirilo Bernardo" ), wxT( "cirilo_bernardo@yahoo.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Jonas Diemer" ), wxT( "diemer@gmx.de" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Tim Hanson" ), wxT( "sideskate@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Hauptmech" ), wxT( "hauptmech@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Torsten Hüter" ), wxT( "torstenhtr@gmx.de" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Jerry Jacobs" ), wxT( "xor.gate.engineering@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Daniel Majewski" ), wxT( "lordblick@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Lorenzo Marcantonio" ), wxT( "lomarcan@tin.it" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Rok Markovic" ), wxT( "rok@kanardia.eu" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Marco Mattila" ), wxT( "marcom99@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Miguel Angel Ajo Pelayo" ), wxT( "miguelangel@nbee.es" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Jacobo Aragunde Perez" ), wxT( "jaragunde@igalia.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Mark Roszko" ), wxT( "mark.roszko@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Marco Serantoni" ), wxT( "marco.serantoni@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Brian Sidebotham" ), wxT( "brian.sidebotham@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Orson (Maciej Sumiński)" ), wxT( "maciej.suminski@cern.ch" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Rafael Sokolowski" ), wxT( "rafael.sokolowski@web.de" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Vesa Solonen" ), wxT( "vesa.solonen@hut.fi" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Tomasz Wlostowski" ), wxT( "tomasz.wlostowski@cern.ch" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Alexander Zakamaldin" ), wxT( "zaka62@mail.ru" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Henner Zeller" ), wxT( "h.zeller@acm.org" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Andrew Zonenberg" ), wxT( "azonenberg@drawersteak.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Nick Østergaard" ), wxT( "oe.nick@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Frank Bennett" ),
wxT( "bennett78@lpbroadband.net" ) ) );
info.AddDeveloper( new Contributor( wxT( "Cirilo Bernardo" ),
wxT( "cirilo_bernardo@yahoo.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Jonas Diemer" ),
wxT( "diemer@gmx.de" ) ) );
info.AddDeveloper( new Contributor( wxT( "Torsten Hüter" ),
wxT( "torstenhtr@gmx.de" ) ) );
info.AddDeveloper( new Contributor( wxT( "Jerry Jacobs" ),
wxT( "xor.gate.engineering@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Mario Luzeiro" ),
wxT( "mrluzeiro@ua.pt" ) ) );
info.AddDeveloper( new Contributor( wxT( "Daniel Majewski" ),
wxT( "lordblick@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Lorenzo Marcantonio" ),
wxT( "lomarcan@tin.it" ) ) );
info.AddDeveloper( new Contributor( wxT( "Marco Mattila" ),
wxT( "marcom99@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Chris Pavlina" ),
wxT( "pavlina.chris@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Miguel Angel Ajo Pelayo" ),
wxT( "miguelangel@nbee.es" ) ) );
info.AddDeveloper( new Contributor( wxT( "Jacobo Aragunde Perez" ),
wxT( "jaragunde@igalia.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Simon Richter" ),
wxT( "Simon.Richter@hogyros.de" ) ) );
info.AddDeveloper( new Contributor( wxT( "Mark Roszko" ),
wxT( "mark.roszko@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Marco Serantoni" ),
wxT( "marco.serantoni@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Brian Sidebotham" ),
wxT( "brian.sidebotham@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Mateusz Skowroński" ),
wxT( "skowri@gmail.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Rafael Sokolowski" ),
wxT( "rafael.sokolowski@web.de" ) ) );
info.AddDeveloper( new Contributor( wxT( "Vesa Solonen" ),
wxT( "vesa.solonen@hut.fi" ) ) );
info.AddDeveloper( new Contributor( wxT( "Bernhard Stegmaier" ),
wxT( "stegmaier@sw-systems.de" ) ) );
info.AddDeveloper( new Contributor( wxT( "Orson (Maciej Sumiński)" ),
wxT( "maciej.suminski@cern.ch" ) ) );
info.AddDeveloper( new Contributor( wxT( "Tomasz Wlostowski" ),
wxT( "tomasz.wlostowski@cern.ch" ) ) );
info.AddDeveloper( new Contributor( wxT( "Adam Wolf" ),
wxT( "adamwolf@feelslikeburning.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Alexander Zakamaldin" ),
wxT( "zaka62@mail.ru" ) ) );
info.AddDeveloper( new Contributor( wxT( "Henner Zeller" ),
wxT( "h.zeller@acm.org" ) ) );
info.AddDeveloper( new Contributor( wxT( "Andrew Zonenberg" ),
wxT( "azonenberg@drawersteak.com" ) ) );
info.AddDeveloper( new Contributor( wxT( "Nick Østergaard" ),
wxT( "oe.nick@gmail.com" ) ) );
// The document writers
info.AddDocWriter(
new Contributor( wxT( "Jean-Pierre Charras" ), wxT( "jp.charras@wanadoo.fr" ) ) );
info.AddDocWriter(
new Contributor( wxT( "Igor Plyatov" ), wxT( "plyatov@gmail.com" ) ) );
info.AddDocWriter(
new Contributor( wxT( "Fabrizio Tappero" ), wxT( "fabrizio.tappero@gmail.com" ) ) );
info.AddDocWriter( new Contributor( wxT( "Jean-Pierre Charras" ),
wxT( "jp.charras@wanadoo.fr" ) ) );
info.AddDocWriter( new Contributor( wxT( "Marco Ciampa" ),
wxT( "ciampix@libero.it" ) ) );
info.AddDocWriter( new Contributor( wxT( "Dick Hollenbeck" ),
wxT( "dick@softplc.com" ) ) );
info.AddDocWriter( new Contributor( wxT( "Igor Plyatov" ),
wxT( "plyatov@gmail.com" ) ) );
info.AddDocWriter( new Contributor( wxT( "Wayne Stambaugh" ),
wxT( "stambaughw@gmail.com" ) ) );
info.AddDocWriter( new Contributor( wxT( "Fabrizio Tappero" ),
wxT( "fabrizio.tappero@gmail.com" ) ) );
/* The translators
* As category the language to which the translation was done is used
* and as icon the national flag of the corresponding country.
*/
info.AddTranslator(
new Contributor( wxT( "Martin Kratoška" ), wxT( "martin@ok1rr.com" ), wxT( "Czech (CZ)" ), KiBitmapNew( lang_cs_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Jerry Jacobs" ), wxT( "xor.gate.engineering@gmail.com" ),wxT( "Dutch (NL)" ), KiBitmapNew( lang_nl_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Vesa Solonen" ), wxT( "vesa.solonen@hut.fi" ), wxT( "Finnish (FI)" ), KiBitmapNew( lang_fi_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Jean-Pierre Charras" ), wxT( "jp.charras@wanadoo.fr" ), wxT( "French (FR)" ), KiBitmapNew( lang_fr_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Mateusz Skowroński" ), wxT( "skowri@gmail.com" ), wxT( "Polish (PL)" ), KiBitmapNew( lang_pl_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Kerusey Karyu" ), wxT( "keruseykaryu@o2.pl" ), wxT( "Polish (PL)" ), KiBitmapNew( lang_pl_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Renie Marquet" ), wxT( "reniemarquet@uol.com.br" ), wxT( "Portuguese (PT)" ), KiBitmapNew( lang_pt_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Igor Plyatov" ), wxT( "plyatov@gmail.com" ), wxT( "Russian (RU)" ), KiBitmapNew( lang_ru_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Andrey Fedorushkov" ), wxT( "andrf@mail.ru" ), wxT( "Russian (RU)" ), KiBitmapNew( lang_ru_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Pedro Martin del Valle" ), wxT( "pkicad@yahoo.es" ), wxT( "Spanish (ES)" ), KiBitmapNew( lang_es_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Iñigo Zuluaga" ), wxT( "inigo_zuluaga@yahoo.es" ), wxT( "Spanish (ES)" ), KiBitmapNew( lang_es_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Rafael Sokolowski" ), wxT( "rafael.sokolowski@web.de" ), wxT( "German (DE)" ), KiBitmapNew( lang_de_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Kenta Yonekura" ), wxT( "midpika@hotmail.com" ), wxT( "Japanese (JA)" ), KiBitmapNew( lang_jp_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Manolis Stefanis" ), wxT( "" ), wxT( "Greek (el_GR)" ), KiBitmapNew( lang_gr_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Athanasios Vlastos" ), wxT( "" ), wxT( "Greek (el_GR)" ), KiBitmapNew( lang_gr_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Milonas Kostas" ), wxT( "milonas.ko@gmail.com" ), wxT( "Greek (el_GR)" ), KiBitmapNew( lang_gr_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Michail Misirlis" ), wxT( "mmisirlis@gmail.com" ), wxT( "Greek (el_GR)" ), KiBitmapNew( lang_gr_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Massimo Cioce" ), wxT( "ciocemax@alice.it" ), wxT( "Italian (IT)" ), KiBitmapNew( lang_it_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Marco Ciampa" ), wxT( "ciampix@libero.it" ), wxT( "Italian (IT)" ), KiBitmapNew( lang_it_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Evgeniy Ivanov" ), wxT( "evgeniy_p_ivanov@yahoo.ca" ), wxT( "Bulgarian (BG)" ), KiBitmapNew( lang_bg_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Martin Kratoška" ),
wxT( "martin@ok1rr.com" ),
wxT( "Czech (CZ)" ),
KiBitmapNew( lang_cs_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Jerry Jacobs" ),
wxT( "xor.gate.engineering@gmail.com" ),
wxT( "Dutch (NL)" ),
KiBitmapNew( lang_nl_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Vesa Solonen" ),
wxT( "vesa.solonen@hut.fi" ),
wxT( "Finnish (FI)" ),
KiBitmapNew( lang_fi_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Jean-Pierre Charras" ),
wxT( "jp.charras@wanadoo.fr" ),
wxT( "French (FR)" ),
KiBitmapNew( lang_fr_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Mateusz Skowroński" ),
wxT( "skowri@gmail.com" ),
wxT( "Polish (PL)" ),
KiBitmapNew( lang_pl_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Kerusey Karyu" ),
wxT( "keruseykaryu@o2.pl" ),
wxT( "Polish (PL)" ),
KiBitmapNew( lang_pl_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Renie Marquet" ),
wxT( "reniemarquet@uol.com.br" ),
wxT( "Portuguese (PT)" ),
KiBitmapNew( lang_pt_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Igor Plyatov" ),
wxT( "plyatov@gmail.com" ),
wxT( "Russian (RU)" ),
KiBitmapNew( lang_ru_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Andrey Fedorushkov" ),
wxT( "andrf@mail.ru" ),
wxT( "Russian (RU)" ),
KiBitmapNew( lang_ru_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Eldar Khayrullin" ),
wxT( "eldar.khayrullin@mail.ru" ),
wxT( "Russian (RU)" ),
KiBitmapNew( lang_ru_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Pedro Martin del Valle" ),
wxT( "pkicad@yahoo.es" ),
wxT( "Spanish (ES)" ),
KiBitmapNew( lang_es_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Iñigo Zuluaga" ),
wxT( "inigo_zuluaga@yahoo.es" ),
wxT( "Spanish (ES)" ),
KiBitmapNew( lang_es_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Iñigo Figuero" ),
wxT( "ifs@elektroquark.com" ),
wxT( "Spanish (ES)" ),
KiBitmapNew( lang_es_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Rafael Sokolowski" ),
wxT( "rafael.sokolowski@web.de" ),
wxT( "German (DE)" ),
KiBitmapNew( lang_de_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Kenta Yonekura" ),
wxT( "yoneken@kicad.jp" ),
wxT( "Japanese (JA)" ),
KiBitmapNew( lang_jp_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Manolis Stefanis" ),
wxT( "" ),
wxT( "Greek (el_GR)" ),
KiBitmapNew( lang_gr_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Athanasios Vlastos" ),
wxT( "" ),
wxT( "Greek (el_GR)" ),
KiBitmapNew( lang_gr_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Milonas Kostas" ),
wxT( "milonas.ko@gmail.com" ),
wxT( "Greek (el_GR)" ),
KiBitmapNew( lang_gr_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Michail Misirlis" ),
wxT( "mmisirlis@gmail.com" ),
wxT( "Greek (el_GR)" ),
KiBitmapNew( lang_gr_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Massimo Cioce" ),
wxT( "ciocemax@alice.it" ),
wxT( "Italian (IT)" ),
KiBitmapNew( lang_it_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Marco Ciampa" ),
wxT( "ciampix@libero.it" ),
wxT( "Italian (IT)" ),
KiBitmapNew( lang_it_xpm ) ) );
info.AddTranslator( new Contributor( wxT( "Evgeniy Ivanov" ),
wxT( "evgeniy_p_ivanov@yahoo.ca" ),
wxT( "Bulgarian (BG)" ),
KiBitmapNew( lang_bg_xpm ) ) );
// TODO: are these all russian translators,
// placed them here now,
// or else align them below other language maintainer with mail adress
info.AddTranslator( new Contributor( wxT( "Remy Halvick" ), wxEmptyString, wxT( "Others" ) ) );
info.AddTranslator( new Contributor( wxT( "David Briscoe" ), wxEmptyString, wxT( "Others" ) ) );
info.AddTranslator( new Contributor( wxT( "Dominique Laigle" ), wxEmptyString, wxT( "Others" ) ) );
info.AddTranslator( new Contributor( wxT( "Paul Burke" ), wxEmptyString, wxT( "Others" ) ) );
info.AddTranslator( new Contributor( wxT( "Remy Halvick" ),
wxEmptyString,
wxT( "Others" ) ) );
info.AddTranslator( new Contributor( wxT( "David Briscoe" ),
wxEmptyString,
wxT( "Others" ) ) );
info.AddTranslator( new Contributor( wxT( "Dominique Laigle" ),
wxEmptyString,
wxT( "Others" ) ) );
info.AddTranslator( new Contributor( wxT( "Paul Burke" ),
wxEmptyString,
wxT( "Others" ) ) );
// Programm credits for icons
info.AddArtist(
new Contributor( wxT( "Iñigo Zuluagaz" ), wxT( "inigo_zuluaga@yahoo.es" ), wxT( "Icons by" ), KiBitmapNew( edit_module_xpm ) ) );
info.AddArtist(
new Contributor( wxT( "Fabrizio Tappero" ), wxT( "fabrizio.tappero@gmail.com" ), wxT( "New icons by" ), KiBitmapNew( edit_module_xpm ) ) );
info.AddArtist(
new Contributor( wxT( "Konstantin Baranovskiy" ), wxT( "baranovskiykonstantin@gmail.com" ), wxT( "New icons by" ), KiBitmapNew( edit_module_xpm ) ) );
info.AddArtist(
new Contributor( wxT( "Renie Marquet" ), wxT( "reniemarquet@uol.com.br" ), wxT( "3D modules by" ), KiBitmapNew( three_d_xpm ) ) );
info.AddArtist(
new Contributor( wxT( "Christophe Boschat" ), wxT( "nox454@hotmail.fr" ), wxT( "3D modules by" ), KiBitmapNew( three_d_xpm ) ) );
info.AddArtist( new Contributor( wxT( "Iñigo Zuluaga" ),
wxT( "inigo_zuluaga@yahoo.es" ),
wxT( "Icons by" ),
KiBitmapNew( edit_module_xpm ) ) );
info.AddArtist( new Contributor( wxT( "Konstantin Baranovskiy" ),
wxT( "baranovskiykonstantin@gmail.com" ),
wxT( "New icons by" ),
KiBitmapNew( edit_module_xpm ) ) );
info.AddArtist( new Contributor( wxT( "Fabrizio Tappero" ),
wxT( "fabrizio.tappero@gmail.com" ),
wxT( "New icons by" ),
KiBitmapNew( edit_module_xpm ) ) );
info.AddArtist( new Contributor( wxT( "Christophe Boschat" ),
wxT( "nox454@hotmail.fr" ),
wxT( "3D models by" ),
KiBitmapNew( three_d_xpm ) ) );
info.AddArtist( new Contributor( wxT( "Renie Marquet" ),
wxT( "reniemarquet@uol.com.br" ),
wxT( "3D models by" ),
KiBitmapNew( three_d_xpm ) ) );
// Programm credits for package developers.
info.AddPackager( new Contributor( wxT( "Jean-Samuel Reynaud" ),
wxT( "js.reynaud@gmail.com" ) ) );
info.AddPackager( new Contributor( wxT( "Bernhard Stegmaier" ),
wxT( "stegmaier@sw-systems.de" ) ) );
info.AddPackager( new Contributor( wxT( "Adam Wolf" ),
wxT( "adamwolf@feelslikeburning.com" ) ) );
info.AddPackager( new Contributor( wxT( "Nick Østergaard" ),
wxT( "oe.nick@gmail.com" ) ) );
}
@@ -354,39 +456,43 @@ bool ShowAboutDialog( wxWindow* parent )
///////////////////////////////////////////////////////////////////////////////
/**
* Wraps the given url with a HTML anchor tag containing a hyperlink text reference
* Function HtmlHyperlink
*
* wraps \a aUrl with a HTML anchor tag containing a hyperlink text reference
* to form a HTML hyperlink.
*
* @param url the url that will be embedded in an anchor tag containing a hyperlink reference
* @param description the optional describing text that will be represented as a hyperlink.
* @param aUrl the url that will be embedded in an anchor tag containing a hyperlink reference
* @param aDescription the optional describing text that will be represented as a hyperlink.
* If not specified the url will be used as hyperlink.
* @return a HTML conform hyperlink like <a href='url'>description</a>
*/
static wxString HtmlHyperlink( const wxString& url, const wxString& description )
static wxString HtmlHyperlink( const wxString& aUrl, const wxString& aDescription )
{
wxString hyperlink = wxEmptyString;
if( description.IsEmpty() )
hyperlink << wxT( "<a href='" ) << url << wxT( "'>" ) << url << wxT( "</a>" );
if( aDescription.IsEmpty() )
hyperlink << wxT( "<a href='" ) << aUrl << wxT( "'>" ) << aUrl << wxT( "</a>" );
else
hyperlink << wxT( "<a href='" ) << url << wxT( "'>" ) << description << wxT( "</a>" );
hyperlink << wxT( "<a href='" ) << aUrl << wxT( "'>" ) << aDescription << wxT( "</a>" );
return hyperlink;
}
/**
* Creates a HTML newline character sequence.
* Function HtmlNewline
*
* @param amount - the amount of HTML newline tags to concatenate, default is to return just
* one <br> tag
* creates an HTML newline character sequence of \a aCount.
*
* @param aCount the number of HTML newline tags to concatenate, default is to return just
* one <br> tag.
* @return the concatenated amount of HTML newline tag(s) <br>
*/
static wxString HtmlNewline( const unsigned int amount )
static wxString HtmlNewline( const unsigned int aCount )
{
wxString newlineTags = wxEmptyString;
for( size_t i = 0; i<amount; ++i )
for( size_t i = 0; i<aCount; ++i )
newlineTags << wxT( "<br>" );
return newlineTags;
+35 -12
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014 Rafael Sokolowski <Rafael.Sokolowski@web.de>
* Copyright (C) 2014 KiCad Developers, see CHANGELOG.TXT for contributors.
* Copyright (C) 2014-2015 KiCad Developers, see CHANGELOG.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
@@ -45,19 +45,41 @@ public:
AboutAppInfo() {};
virtual ~AboutAppInfo() {};
void AddDeveloper( const Contributor* developer ) { if( developer != NULL )
developers.Add( developer );}
void AddDocWriter( const Contributor* docwriter ) { if( docwriter != NULL )
docwriters.Add( docwriter );}
void AddArtist( const Contributor* artist ) { if( artist != NULL )
artists.Add( artist );}
void AddTranslator( const Contributor* translator ) { if( translator != NULL )
translators.Add( translator );}
void AddDeveloper( const Contributor* developer )
{
if( developer != NULL )
developers.Add( developer );
}
void AddDocWriter( const Contributor* docwriter )
{
if( docwriter != NULL )
docwriters.Add( docwriter );
}
void AddArtist( const Contributor* artist )
{
if( artist != NULL )
artists.Add( artist );
}
void AddTranslator( const Contributor* translator )
{
if( translator != NULL )
translators.Add( translator );
}
void AddPackager( const Contributor* packager )
{
if( packager != NULL )
packagers.Add( packager );
}
Contributors GetDevelopers() { return developers; }
Contributors GetDocWriters() { return docwriters; }
Contributors GetArtists() { return artists; }
Contributors GetTranslators() { return translators; }
Contributors GetPackagers() { return packagers; }
void SetDescription( const wxString& text ) { description = text; }
wxString& GetDescription() { return description; }
@@ -79,7 +101,6 @@ public:
return copyrightText;
}
void SetAppName( const wxString& name ) { appName = name; }
wxString& GetAppName() { return appName; }
@@ -92,12 +113,12 @@ public:
void SetIcon( const wxIcon& icon ) { appIcon = icon; }
wxIcon& GetIcon() { return appIcon; }
protected:
private:
Contributors developers;
Contributors docwriters;
Contributors artists;
Contributors translators;
Contributors packagers;
wxString description;
wxString license;
@@ -110,6 +131,7 @@ private:
wxIcon appIcon;
};
/**
* A contributor, a person which was involved in the development of the application
* or which has contributed in any kind somehow to the project.
@@ -131,6 +153,7 @@ public:
wxBitmap* icon = NULL ) :
m_checked( false )
{ m_name = name; m_email = email; m_category = category; m_icon = icon; }
virtual ~Contributor() {}
wxString& GetName() { return m_name; }
@@ -139,7 +162,7 @@ public:
wxBitmap* GetIcon() { return m_icon; }
void SetChecked( bool status ) { m_checked = status; }
bool IsChecked() { return m_checked; }
protected:
private:
wxString m_name;
wxString m_email;
+10 -7
View File
@@ -37,6 +37,7 @@ dialog_about::dialog_about(wxWindow *parent, AboutAppInfo& appInfo)
picArtists = KiBitmap( palette_xpm );
picTranslators = KiBitmap( language_xpm );
picLicense = KiBitmap( tools_xpm );
picPackagers = KiBitmap( zip_xpm );
m_bitmapApp->SetBitmap( info.GetIcon() );
@@ -62,7 +63,7 @@ dialog_about::~dialog_about()
wxFlexGridSizer* dialog_about::CreateFlexGridSizer()
{
// three colums with vertical and horizontal extra space of two pixels
// three columns with vertical and horizontal extra space of two pixels
wxFlexGridSizer* fgSizer1 = new wxFlexGridSizer( 3, 2, 2 );
fgSizer1->SetFlexibleDirection( wxHORIZONTAL );
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
@@ -89,6 +90,8 @@ void dialog_about::CreateNotebooks()
CreateNotebookPageByCategory( m_auiNotebook, _( "Artists" ), picArtists, info.GetArtists() );
CreateNotebookPageByCategory( m_auiNotebook, _( "Translators" ), picTranslators,
info.GetTranslators() );
CreateNotebookPageByCategory( m_auiNotebook, _( "Packagers" ), picPackagers,
info.GetPackagers() );
CreateNotebookHtmlPage( m_auiNotebook, _( "License" ), picLicense, info.GetLicense() );
}
@@ -142,7 +145,7 @@ void dialog_about::CreateNotebookPage( wxAuiNotebook* parent, const wxString& ca
}
else
{
fgSizer1->AddSpacer(5);
fgSizer1->AddSpacer( 5 );
}
}
@@ -232,7 +235,7 @@ void dialog_about::CreateNotebookPageByCategory(wxAuiNotebook* parent, const wxS
fgSizer1->AddSpacer( 5 );
}
/* this contributor was added to the gui,
/* this contributor was added to the GUI,
* thus can be ignored next time
*/
contributor->SetChecked( true );
@@ -309,15 +312,15 @@ void dialog_about::CreateNotebookHtmlPage( wxAuiNotebook* parent, const wxString
// used for all the other widgets
wxString htmlColor = ( this->GetBackgroundColour() ).GetAsString( wxC2S_HTML_SYNTAX );
// beginning of html structure
// beginning of HTML structure
htmlPage.Append( wxT( "<html><body bgcolor='" ) + htmlColor + wxT( "'>" ) );
htmlPage.Append( htmlContent );
// end of html structure indicated by closing tags
// end of HTML structure indicated by closing tags
htmlPage.Append( wxT( "</body></html>" ) );
// the html page is going to be created with previously created html content
// the HTML page is going to be created with previously created HTML content
wxHtmlWindow* htmlWindow = new wxHtmlWindow( panel, wxID_ANY, wxDefaultPosition, wxDefaultSize,
wxHW_SCROLLBAR_AUTO|wxHW_NO_SELECTION );
@@ -332,7 +335,7 @@ void dialog_about::CreateNotebookHtmlPage( wxAuiNotebook* parent, const wxString
htmlWindow->Connect( wxEVT_COMMAND_HTML_LINK_CLICKED,
wxHtmlLinkEventHandler( dialog_about::OnHtmlLinkClicked ), NULL, this );
// no additional space around the html window as it is also the case by the other notebook pages
// no additional space around the HTML window as it is also the case by the other notebook pages
bSizer->Add( htmlWindow, 1, wxALL|wxEXPAND, 0 );
panel->SetSizer( bSizer );
panel->Layout();
+10 -3
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2010 Rafael Sokolowski <Rafael.Sokolowski@web.de>
* Copyright (C) 2014 KiCad Developers, see CHANGELOG.TXT for contributors.
* Copyright (C) 2010-2015 KiCad Developers, see CHANGELOG.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
@@ -55,14 +55,20 @@ class dialog_about : public dialog_about_base
private:
// Icons for the various tabs of wxAuiNotebook
wxBitmap picInformation, picDevelopers, picDocWriters, picArtists, picTranslators,
picLicense;
wxBitmap picInformation;
wxBitmap picDevelopers;
wxBitmap picDocWriters;
wxBitmap picArtists;
wxBitmap picTranslators;
wxBitmap picPackagers;
wxBitmap picLicense;
AboutAppInfo info;
public:
dialog_about( wxWindow* dlg, AboutAppInfo& appInfo );
~dialog_about();
private:
void initDialog();
virtual void OnClose( wxCloseEvent& event );
@@ -89,4 +95,5 @@ private:
wxHyperlinkCtrl* CreateHyperlink( wxScrolledWindow* parent, const wxString& email );
wxStaticBitmap* CreateStaticBitmap( wxScrolledWindow* parent, wxBitmap* icon );
};
#endif // DIALOG_ABOUT_H
+1 -70
View File
@@ -234,72 +234,6 @@ void DIALOG_SHIM::onInit( wxInitDialogEvent& aEvent )
*/
#if !wxCHECK_VERSION( 2, 9, 4 )
wxWindow* DIALOG_SHIM::CheckIfCanBeUsedAsParent( wxWindow* parent ) const
{
if ( !parent )
return NULL;
extern WXDLLIMPEXP_DATA_BASE(wxList) wxPendingDelete;
if ( wxPendingDelete.Member(parent) || parent->IsBeingDeleted() )
{
// this window is being deleted and we shouldn't create any children
// under it
return NULL;
}
if ( parent->GetExtraStyle() & wxWS_EX_TRANSIENT )
{
// this window is not being deleted yet but it's going to disappear
// soon so still don't parent this window under it
return NULL;
}
if ( !parent->IsShownOnScreen() )
{
// using hidden parent won't work correctly neither
return NULL;
}
// FIXME-VC6: this compiler requires an explicit const cast or it fails
// with error C2446
if ( const_cast<const wxWindow *>(parent) == this )
{
// not sure if this can really happen but it doesn't hurt to guard
// against this clearly invalid situation
return NULL;
}
return parent;
}
wxWindow* DIALOG_SHIM::GetParentForModalDialog(wxWindow *parent, long style) const
{
// creating a parent-less modal dialog will result (under e.g. wxGTK2)
// in an unfocused dialog, so try to find a valid parent for it unless we
// were explicitly asked not to
if ( style & wxDIALOG_NO_PARENT )
return NULL;
// first try the given parent
if ( parent )
parent = CheckIfCanBeUsedAsParent(wxGetTopLevelParent(parent));
// then the currently active window
if ( !parent )
parent = CheckIfCanBeUsedAsParent(
wxGetTopLevelParent(wxGetActiveWindow()));
// and finally the application main window
if ( !parent )
parent = CheckIfCanBeUsedAsParent(wxTheApp->GetTopWindow());
return parent;
}
#endif
/*
/// wxEventLoopActivator but with a friend so it
@@ -583,14 +517,11 @@ void DIALOG_SHIM::EndQuasiModal( int retCode )
if( m_qmodal_loop )
{
#if wxCHECK_VERSION( 2, 9, 4 ) // 2.9.4 is only approximate, might be 3, 0, 0.
if( m_qmodal_loop->IsRunning() )
m_qmodal_loop->Exit( 0 );
else
m_qmodal_loop->ScheduleExit( 0 );
#else
m_qmodal_loop->Exit( 0 );
#endif
m_qmodal_loop = NULL;
}
+32 -23
View File
@@ -14,10 +14,13 @@ DIALOG_ENV_VAR_CONFIG_BASE::DIALOG_ENV_VAR_CONFIG_BASE( wxWindow* parent, wxWind
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* mainSizer;
mainSizer = new wxBoxSizer( wxHORIZONTAL );
mainSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizer1;
bSizer1 = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bupperSizer;
bupperSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bleftSizer;
bleftSizer = new wxBoxSizer( wxVERTICAL );
m_grid = new wxGrid( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
@@ -45,48 +48,54 @@ DIALOG_ENV_VAR_CONFIG_BASE::DIALOG_ENV_VAR_CONFIG_BASE( wxWindow* parent, wxWind
// Cell Defaults
m_grid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
bSizer1->Add( m_grid, 1, wxALL|wxEXPAND, 5 );
bleftSizer->Add( m_grid, 1, wxALL|wxEXPAND, 5 );
mainSizer->Add( bSizer1, 1, wxEXPAND, 5 );
bupperSizer->Add( bleftSizer, 1, wxEXPAND, 5 );
wxBoxSizer* bSizer2;
bSizer2 = new wxBoxSizer( wxVERTICAL );
m_buttonOk = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonOk->SetDefault();
bSizer2->Add( m_buttonOk, 0, wxALL, 5 );
m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer2->Add( m_buttonCancel, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
wxBoxSizer* brightSizer;
brightSizer = new wxBoxSizer( wxVERTICAL );
m_buttonAdd = new wxButton( this, wxID_ANY, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonAdd->SetToolTip( _("Add a new entry to the table.") );
bSizer2->Add( m_buttonAdd, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
brightSizer->Add( m_buttonAdd, 0, wxALL|wxEXPAND, 5 );
m_buttonDelete = new wxButton( this, wxID_ANY, _("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonDelete->SetToolTip( _("Remove the selectect entry from the table.") );
bSizer2->Add( m_buttonDelete, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
m_buttonHelp = new wxButton( this, wxID_ANY, _("Help"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer2->Add( m_buttonHelp, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
brightSizer->Add( m_buttonDelete, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND, 5 );
mainSizer->Add( bSizer2, 0, wxEXPAND, 5 );
bupperSizer->Add( brightSizer, 0, wxALIGN_CENTER_VERTICAL, 5 );
mainSizer->Add( bupperSizer, 1, wxEXPAND, 5 );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
mainSizer->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
m_sdbSizer = new wxStdDialogButtonSizer();
m_sdbSizerOK = new wxButton( this, wxID_OK );
m_sdbSizer->AddButton( m_sdbSizerOK );
m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer->AddButton( m_sdbSizerCancel );
m_sdbSizerHelp = new wxButton( this, wxID_HELP );
m_sdbSizer->AddButton( m_sdbSizerHelp );
m_sdbSizer->Realize();
mainSizer->Add( m_sdbSizer, 0, wxALL|wxALIGN_RIGHT, 5 );
this->SetSizer( mainSizer );
this->Layout();
mainSizer->Fit( this );
this->Centre( wxBOTH );
// Connect Events
m_buttonAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnAddRow ), NULL, this );
m_buttonDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnDeleteSelectedRows ), NULL, this );
m_buttonHelp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnHelpRequest ), NULL, this );
m_sdbSizerHelp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnHelpRequest ), NULL, this );
}
DIALOG_ENV_VAR_CONFIG_BASE::~DIALOG_ENV_VAR_CONFIG_BASE()
@@ -94,6 +103,6 @@ DIALOG_ENV_VAR_CONFIG_BASE::~DIALOG_ENV_VAR_CONFIG_BASE()
// Disconnect Events
m_buttonAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnAddRow ), NULL, this );
m_buttonDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnDeleteSelectedRows ), NULL, this );
m_buttonHelp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnHelpRequest ), NULL, this );
m_sdbSizerHelp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnHelpRequest ), NULL, this );
}
File diff suppressed because it is too large Load Diff
+7 -4
View File
@@ -22,6 +22,7 @@ class DIALOG_SHIM;
#include <wx/gdicmn.h>
#include <wx/sizer.h>
#include <wx/button.h>
#include <wx/statline.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
@@ -36,11 +37,13 @@ class DIALOG_ENV_VAR_CONFIG_BASE : public DIALOG_SHIM
protected:
wxGrid* m_grid;
wxButton* m_buttonOk;
wxButton* m_buttonCancel;
wxButton* m_buttonAdd;
wxButton* m_buttonDelete;
wxButton* m_buttonHelp;
wxStaticLine* m_staticline1;
wxStdDialogButtonSizer* m_sdbSizer;
wxButton* m_sdbSizerOK;
wxButton* m_sdbSizerCancel;
wxButton* m_sdbSizerHelp;
// Virtual event handlers, overide them in your derived class
virtual void OnAddRow( wxCommandEvent& event ) { event.Skip(); }
@@ -50,7 +53,7 @@ class DIALOG_ENV_VAR_CONFIG_BASE : public DIALOG_SHIM
public:
DIALOG_ENV_VAR_CONFIG_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Path Configuration"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
DIALOG_ENV_VAR_CONFIG_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Path Configuration"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 363,177 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_ENV_VAR_CONFIG_BASE();
};
+19 -16
View File
@@ -52,26 +52,29 @@
// List of page formats.
// should be statically initialized, because we need both
// the translated and the not translated version.
// they are prefixed by "_HKI" (already in use for hotkeys) instead of "_",
// because we need both the translated and the not translated version.
// when displayed in dialog we should explicitely call wxGetTranslation()
// to show the translated version.
// See hotkeys_basic.h for more info
#define _HKI( x ) wxT( x )
static const wxString pageFmts[] =
{
_("A4 210x297mm"),
_("A3 297x420mm"),
_("A2 420x594mm"),
_("A1 594x841mm"),
_("A0 841x1189mm"),
_("A 8.5x11in"),
_("B 11x17in"),
_("C 17x22in"),
_("D 22x34in"),
_("E 34x44in"),
_("USLetter 8.5x11in"), // USLetter without space is correct
_("USLegal 8.5x14in"), // USLegal without space is correct
_("USLedger 11x17in"), // USLedger without space is correct
_("User (Custom)"),
_HKI("A4 210x297mm"),
_HKI("A3 297x420mm"),
_HKI("A2 420x594mm"),
_HKI("A1 594x841mm"),
_HKI("A0 841x1189mm"),
_HKI("A 8.5x11in"),
_HKI("B 11x17in"),
_HKI("C 17x22in"),
_HKI("D 22x34in"),
_HKI("E 34x44in"),
_HKI("USLetter 8.5x11in"), // USLetter without space is correct
_HKI("USLegal 8.5x14in"), // USLegal without space is correct
_HKI("USLedger 11x17in"), // USLedger without space is correct
_HKI("User (Custom)"), // size defined by user. The string must contain "Custom"
// to be reconized in code
};
void EDA_DRAW_FRAME::Process_PageSettings( wxCommandEvent& event )
+7
View File
@@ -45,6 +45,13 @@ WX_HTML_REPORT_PANEL::~WX_HTML_REPORT_PANEL()
}
void WX_HTML_REPORT_PANEL::MsgPanelSetMinSize( const wxSize& aMinSize )
{
m_htmlView->SetMinSize( aMinSize );
GetSizer()->SetSizeHints( this );
}
REPORTER& WX_HTML_REPORT_PANEL::Reporter()
{
return m_reporter;
+3
View File
@@ -46,6 +46,9 @@ public:
const wxSize& size = wxSize( 500,300 ), long style = wxTAB_TRAVERSAL );
~WX_HTML_REPORT_PANEL();
///> Set the min size of the area which displays html messages:
void MsgPanelSetMinSize( const wxSize& aMinSize );
///> returns the reporter object that reports to this panel
REPORTER& Reporter();
+39 -59
View File
@@ -724,7 +724,6 @@ void EDA_DRAW_PANEL::DrawGrid( wxDC* aDC )
if( org.y < m_ClipBox.GetY() )
org.y += KiROUND( gridSize.y );
#if ( defined( __WXMAC__ ) || 1 )
// 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.
@@ -748,63 +747,12 @@ void EDA_DRAW_PANEL::DrawGrid( wxDC* aDC )
aDC->DrawPoint( xpos, KiROUND( y ) );
}
}
#else
/* This is fast only if the Blit function is fast. Not true on all platforms.
*
* A first grid column is drawn in a temporary bitmap, and after is duplicated using
* the Blit function (copy from a screen area to an other screen area).
*/
wxMemoryDC tmpDC;
wxBitmap tmpBM( 1, aDC->LogicalToDeviceYRel( m_ClipBox.GetHeight() ) );
tmpDC.SelectObject( tmpBM );
tmpDC.SetLogicalFunction( wxCOPY );
tmpDC.SetBackground( wxBrush( GetBackgroundColour() ) );
tmpDC.Clear();
tmpDC.SetPen( MakeColour( GetParent()->GetGridColor() ) );
double usx, usy;
int lox, loy, dox, doy;
aDC->GetUserScale( &usx, &usy );
aDC->GetLogicalOrigin( &lox, &loy );
aDC->GetDeviceOrigin( &dox, &doy );
// Create a dummy DC for coordinate translation because the actual DC scale and origin
// must be reset in order to work correctly.
wxBitmap tmpBitmap( 1, 1 );
wxMemoryDC scaleDC( tmpBitmap );
scaleDC.SetUserScale( usx, usy );
scaleDC.SetLogicalOrigin( lox, loy );
scaleDC.SetDeviceOrigin( dox, doy );
double bottom = ( double ) m_ClipBox.GetBottom();
// Draw a column of grid points.
for( double y = (double) org.y; y <= bottom; y += gridSize.y )
{
tmpDC.DrawPoint( 0, scaleDC.LogicalToDeviceY( KiROUND( y ) ) );
}
// Reset the device context scale and origin and restore on exit.
EDA_BLIT_NORMALIZER blitNorm( aDC );
// Mask of everything but the grid points.
tmpDC.SelectObject( wxNullBitmap );
tmpBM.SetMask( new wxMask( tmpBM, GetBackgroundColour() ) );
tmpDC.SelectObject( tmpBM );
double right = m_ClipBox.GetRight();
// Blit the column for each row of the damaged region.
for( double x = (double) org.x; x <= right; x += gridSize.x )
{
aDC->Blit( scaleDC.LogicalToDeviceX( KiROUND( x ) ),
scaleDC.LogicalToDeviceY( m_ClipBox.GetY() ),
1, tmpBM.GetHeight(), &tmpDC, 0, 0, wxCOPY, true );
}
#endif
}
// Set to 1 to draw auxirilary axis as lines, 0 to draw as target (circle with cross)
#define DRAW_AXIS_AS_LINES 0
// Size in pixels of the target shape
#define AXIS_SIZE_IN_PIXELS 15
void EDA_DRAW_PANEL::DrawAuxiliaryAxis( wxDC* aDC, GR_DRAWMODE aDrawMode )
{
@@ -813,11 +761,12 @@ void EDA_DRAW_PANEL::DrawAuxiliaryAxis( wxDC* aDC, GR_DRAWMODE aDrawMode )
if( origin == wxPoint( 0, 0 ) )
return;
EDA_COLOR_T color = DARKRED;
wxSize pageSize = GetParent()->GetPageSizeIU();
EDA_COLOR_T color = RED;
GRSetDrawMode( aDC, aDrawMode );
#if DRAW_AXIS_AS_LINES
wxSize pageSize = GetParent()->GetPageSizeIU();
// Draw the Y axis
GRLine( &m_ClipBox, aDC, origin.x, -pageSize.y,
origin.x, pageSize.y, 0, color );
@@ -825,6 +774,21 @@ void EDA_DRAW_PANEL::DrawAuxiliaryAxis( wxDC* aDC, GR_DRAWMODE aDrawMode )
// Draw the X axis
GRLine( &m_ClipBox, aDC, -pageSize.x, origin.y,
pageSize.x, origin.y, 0, color );
#else
int radius = aDC->DeviceToLogicalXRel( AXIS_SIZE_IN_PIXELS );
int linewidth = aDC->DeviceToLogicalXRel( 1 );
GRSetColorPen( aDC, color, linewidth );
GRLine( &m_ClipBox, aDC, origin.x, origin.y-radius,
origin.x, origin.y+radius, 0, color );
// Draw the + shape
GRLine( &m_ClipBox, aDC, origin.x-radius, origin.y,
origin.x+radius, origin.y, 0, color );
GRCircle( &m_ClipBox, aDC, origin, radius, linewidth, color );
#endif
}
@@ -834,10 +798,11 @@ void EDA_DRAW_PANEL::DrawGridAxis( wxDC* aDC, GR_DRAWMODE aDrawMode, const wxPoi
return;
EDA_COLOR_T color = GetParent()->GetGridColor();
wxSize pageSize = GetParent()->GetPageSizeIU();
GRSetDrawMode( aDC, aDrawMode );
#if DRAW_AXIS_AS_LINES
wxSize pageSize = GetParent()->GetPageSizeIU();
// Draw the Y axis
GRLine( &m_ClipBox, aDC, aGridOrigin.x, -pageSize.y,
aGridOrigin.x, pageSize.y, 0, color );
@@ -845,6 +810,21 @@ void EDA_DRAW_PANEL::DrawGridAxis( wxDC* aDC, GR_DRAWMODE aDrawMode, const wxPoi
// Draw the X axis
GRLine( &m_ClipBox, aDC, -pageSize.x, aGridOrigin.y,
pageSize.x, aGridOrigin.y, 0, color );
#else
int radius = aDC->DeviceToLogicalXRel( AXIS_SIZE_IN_PIXELS );
int linewidth = aDC->DeviceToLogicalXRel( 1 );
GRSetColorPen( aDC, GetParent()->GetGridColor(), linewidth );
GRLine( &m_ClipBox, aDC, aGridOrigin.x-radius, aGridOrigin.y-radius,
aGridOrigin.x+radius, aGridOrigin.y+radius, 0, color );
// Draw the X shape
GRLine( &m_ClipBox, aDC, aGridOrigin.x+radius, aGridOrigin.y-radius,
aGridOrigin.x-radius, aGridOrigin.y+radius, 0, color );
GRCircle( &m_ClipBox, aDC, aGridOrigin, radius, linewidth, color );
#endif
}
+3
View File
@@ -147,6 +147,9 @@ void EDA_DRAW_PANEL_GAL::onPaint( wxPaintEvent& WXUNUSED( aEvent ) )
m_gal->BeginDrawing();
m_gal->ClearScreen( m_painter->GetSettings()->GetBackgroundColor() );
KIGFX::COLOR4D gridColor = static_cast<KIGFX::PCB_RENDER_SETTINGS*> (m_painter->GetSettings())->GetLayerColor( ITEM_GAL_LAYER ( GRID_VISIBLE ) );
m_gal->SetGridColor ( gridColor );
if( m_view->IsDirty() )
{
m_view->ClearTargets();
+3 -2
View File
@@ -94,15 +94,16 @@ bool GetAssociatedDocument( wxWindow* aParent,
bool success = false;
// Is an internet url
static const wxChar* url_header[3] = {
static const wxChar* url_header[] = {
wxT( "http:" ),
wxT( "https:" ),
wxT( "ftp:" ),
wxT( "www." )
};
for( unsigned ii = 0; ii < DIM(url_header); ii++ )
{
if( aDocName.First( url_header[ii] ) == 0 ) //. seems an internet url
if( aDocName.First( url_header[ii] ) == 0 ) // looks like an internet url
{
wxLaunchDefaultBrowser( aDocName );
return true;
+4
View File
@@ -102,10 +102,14 @@ void FOOTPRINT_INFO::load()
std::auto_ptr<MODULE> m( fptable->FootprintLoad( m_nickname, m_fpname ) );
if( m.get() == NULL ) // Should happen only with malformed/broken libraries
{
m_pad_count = 0;
m_unique_pad_count = 0;
}
else
{
m_pad_count = m->GetPadCount( DO_NOT_INCLUDE_NPTH );
m_unique_pad_count = m->GetUniquePadCount( DO_NOT_INCLUDE_NPTH );
m_keywords = m->GetKeywords();
m_doc = m->GetDescription();
+33 -32
View File
@@ -257,38 +257,6 @@ void CAIRO_GAL::DrawRectangle( const VECTOR2D& aStartPoint, const VECTOR2D& aEnd
}
void CAIRO_GAL::DrawPolyline( std::deque<VECTOR2D>& aPointList )
{
// Iterate over the point list and draw the segments
std::deque<VECTOR2D>::const_iterator it = aPointList.begin();
cairo_move_to( currentContext, it->x, it->y );
for( ++it; it != aPointList.end(); ++it )
{
cairo_line_to( currentContext, it->x, it->y );
}
isElementAdded = true;
}
void CAIRO_GAL::DrawPolygon( const std::deque<VECTOR2D>& aPointList )
{
// Iterate over the point list and draw the polygon
std::deque<VECTOR2D>::const_iterator it = aPointList.begin();
cairo_move_to( currentContext, it->x, it->y );
for( ++it; it != aPointList.end(); ++it )
{
cairo_line_to( currentContext, it->x, it->y );
}
isElementAdded = true;
}
void CAIRO_GAL::DrawCurve( const VECTOR2D& aStartPoint, const VECTOR2D& aControlPointA,
const VECTOR2D& aControlPointB, const VECTOR2D& aEndPoint )
{
@@ -1059,6 +1027,39 @@ void CAIRO_GAL::setCompositor()
}
void CAIRO_GAL::drawPoly( const std::deque<VECTOR2D>& aPointList )
{
// Iterate over the point list and draw the segments
std::deque<VECTOR2D>::const_iterator it = aPointList.begin();
cairo_move_to( currentContext, it->x, it->y );
for( ++it; it != aPointList.end(); ++it )
{
cairo_line_to( currentContext, it->x, it->y );
}
isElementAdded = true;
}
void CAIRO_GAL::drawPoly( const VECTOR2D aPointList[], int aListSize )
{
// Iterate over the point list and draw the segments
const VECTOR2D* ptr = aPointList;
cairo_move_to( currentContext, ptr->x, ptr->y );
for( int i = 0; i < aListSize; ++i )
{
++ptr;
cairo_line_to( currentContext, ptr->x, ptr->y );
}
isElementAdded = true;
}
unsigned int CAIRO_GAL::getNewGroupNumber()
{
wxASSERT_MSG( groups.size() < std::numeric_limits<unsigned int>::max(),
+66 -6
View File
@@ -3,7 +3,7 @@
*
* Copyright (C) 2012 Torsten Hueter, torstenhtr <at> gmx.de
* Copyright (C) 2012 Kicad Developers, see change_log.txt for contributors.
* Copyright (C) 2013-2015 CERN
* Copyright (C) 2013-2016 CERN
* @author Maciej Suminski <maciej.suminski@cern.ch>
*
* Graphics Abstraction Layer (GAL) for OpenGL
@@ -358,7 +358,7 @@ void OPENGL_GAL::DrawArc( const VECTOR2D& aCenterPoint, double aRadius, double a
SWAP( aStartAngle, >, aEndAngle );
Save();
currentManager->Translate( aCenterPoint.x, aCenterPoint.y, layerDepth );
currentManager->Translate( aCenterPoint.x, aCenterPoint.y, 0.0 );
if( isStrokeEnabled )
{
@@ -448,7 +448,7 @@ void OPENGL_GAL::DrawRectangle( const VECTOR2D& aStartPoint, const VECTOR2D& aEn
}
void OPENGL_GAL::DrawPolyline( std::deque<VECTOR2D>& aPointList )
void OPENGL_GAL::DrawPolyline( const std::deque<VECTOR2D>& aPointList )
{
if( aPointList.empty() )
return;
@@ -476,19 +476,43 @@ void OPENGL_GAL::DrawPolyline( std::deque<VECTOR2D>& aPointList )
}
void OPENGL_GAL::DrawPolyline( const VECTOR2D aPointList[], int aListSize )
{
currentManager->Color( strokeColor.r, strokeColor.g, strokeColor.b, strokeColor.a );
// Start from the second point
for( int i = 1; i < aListSize; ++i )
{
const VECTOR2D startEndVector = ( aPointList[i] - aPointList[i - 1] );
double lineAngle = startEndVector.Angle();
drawLineQuad( aPointList[i - 1], aPointList[i] );
// There is no need to draw line caps on both ends of polyline's segments
drawFilledSemiCircle( aPointList[i - 1], lineWidth / 2, lineAngle + M_PI / 2 );
}
// ..and now - draw the ending cap
const VECTOR2D startEndVector = ( aPointList[aListSize - 1] - aPointList[aListSize - 2] );
double lineAngle = startEndVector.Angle();
drawFilledSemiCircle( aPointList[aListSize - 1], lineWidth / 2, lineAngle - M_PI / 2 );
}
void OPENGL_GAL::DrawPolygon( const std::deque<VECTOR2D>& aPointList )
{
// Any non convex polygon needs to be tesselated
// for this purpose the GLU standard functions are used
currentManager->Shader( SHADER_NONE );
currentManager->Color( fillColor.r, fillColor.g, fillColor.b, fillColor.a );
// Any non convex polygon needs to be tesselated
// for this purpose the GLU standard functions are used
TessParams params = { currentManager, tessIntersects };
gluTessBeginPolygon( tesselator, &params );
gluTessBeginContour( tesselator );
boost::shared_array<GLdouble> points( new GLdouble[3 * aPointList.size()] );
int v = 0;
for( std::deque<VECTOR2D>::const_iterator it = aPointList.begin(); it != aPointList.end(); ++it )
{
points[v] = it->x;
@@ -508,6 +532,41 @@ void OPENGL_GAL::DrawPolygon( const std::deque<VECTOR2D>& aPointList )
}
void OPENGL_GAL::DrawPolygon( const VECTOR2D aPointList[], int aListSize )
{
currentManager->Shader( SHADER_NONE );
currentManager->Color( fillColor.r, fillColor.g, fillColor.b, fillColor.a );
// Any non convex polygon needs to be tesselated
// for this purpose the GLU standard functions are used
TessParams params = { currentManager, tessIntersects };
gluTessBeginPolygon( tesselator, &params );
gluTessBeginContour( tesselator );
boost::shared_array<GLdouble> points( new GLdouble[3 * aListSize] );
int v = 0;
const VECTOR2D* ptr = aPointList;
for( int i = 0; i < aListSize; ++i )
{
points[v] = ptr->x;
points[v + 1] = ptr->y;
points[v + 2] = layerDepth;
gluTessVertex( tesselator, &points[v], &points[v] );
++ptr;
v += 3;
}
gluTessEndContour( tesselator );
gluTessEndPolygon( tesselator );
// Free allocated intersecting points
tessIntersects.clear();
// vertexList destroyed here
}
void OPENGL_GAL::DrawCurve( const VECTOR2D& aStartPoint, const VECTOR2D& aControlPointA,
const VECTOR2D& aControlPointB, const VECTOR2D& aEndPoint )
{
@@ -962,7 +1021,8 @@ unsigned int OPENGL_GAL::getNewGroupNumber()
bool OPENGL_GAL::runTest()
{
wxDialog dlgtest( GetParent(), -1, wxT( "opengl test" ), wxPoint( 50, 50 ), wxSize( 50, 50 ) );
wxDialog dlgtest( GetParent(), -1, wxT( "opengl test" ), wxPoint( 50, 50 ),
wxDLG_UNIT( GetParent(), wxSize( 50, 50 ) ) );
OPENGL_TEST* test = new OPENGL_TEST( &dlgtest, this );
dlgtest.Raise(); // on Linux, on some windows managers (Unity for instance) this is needed to actually show the dialog
+22 -80
View File
@@ -28,33 +28,26 @@
* @brief Functions for file management
*/
// For compilers that support precompilation, includes "wx.h".
#include <fctsys.h>
#include <pgm_base.h>
#include <confirm.h>
#include <common.h>
#include <macros.h>
#include <gestfich.h>
#include <wx/mimetype.h>
#include <wx/filename.h>
#include <wx/dir.h>
// For compilers that support precompilation, includes "wx.h".
#include <fctsys.h>
#include <pgm_base.h>
#include <confirm.h>
#include <common.h>
#include <macros.h>
#include <gestfich.h>
void AddDelimiterString( wxString& string )
{
wxString text;
if( !string.StartsWith( wxT( "\"" ) ) )
text = wxT( "\"" );
text += string;
if( (text.Last() != '"' ) || (text.length() <= 1) )
text += wxT( "\"" );
string = text;
{
string.Prepend ( wxT( "\"" ) );
string.Append ( wxT( "\"" ) );
}
}
@@ -227,6 +220,8 @@ int ExecuteFile( wxWindow* frame, const wxString& ExecFile, const wxString& para
#ifdef __WXMAC__
else
{
AddDelimiterString( fullFileName );
if( !param.IsEmpty() )
fullFileName += wxT( " " ) + param;
@@ -351,8 +346,6 @@ bool OpenPDF( const wxString& file )
{
wxString command;
wxString filename = file;
wxString type;
bool success = false;
Pgm().ReadPdfBrowserInfos();
@@ -363,71 +356,21 @@ bool OpenPDF( const wxString& file )
}
else
{
wxFileType* filetype = NULL;
wxFileType::MessageParameters params( filename, type );
filetype = wxTheMimeTypesManager->GetFileTypeFromExtension( wxT( "pdf" ) );
wxFileType* filetype = wxTheMimeTypesManager->GetFileTypeFromExtension( wxT( "pdf" ) );
if( filetype )
success = filetype->GetOpenCommand( &command, params );
command = filetype->GetOpenCommand( filename );
delete filetype;
#ifndef __WINDOWS__
// Bug ? under linux wxWidgets returns acroread as PDF viewer, even if
// it does not exist.
if( command.StartsWith( wxT( "acroread" ) ) ) // Workaround
success = false;
#endif
if( success && !command.IsEmpty() )
{
success = ProcessExecute( command );
if( success )
return success;
}
success = false;
command.clear();
if( !success )
{
#if !defined(__WINDOWS__)
AddDelimiterString( filename );
// here is a list of PDF viewers candidates
static const wxChar* tries[] =
{
wxT( "/usr/bin/evince" ),
wxT( "/usr/bin/okular" ),
wxT( "/usr/bin/gpdf" ),
wxT( "/usr/bin/konqueror" ),
wxT( "/usr/bin/kpdf" ),
wxT( "/usr/bin/xpdf" ),
wxT( "/usr/bin/open" ), // BSD and OSX file & dir opener
wxT( "/usr/bin/xdg-open" ), // Freedesktop file & dir opener
};
for( unsigned ii = 0; ii<DIM(tries); ii++ )
{
if( wxFileExists( tries[ii] ) )
{
command = tries[ii];
command += wxT( ' ' );
command += filename;
break;
}
}
#endif
}
}
if( !command.IsEmpty() )
{
success = ProcessExecute( command );
if( !success )
if( ProcessExecute( command ) )
{
return true;
}
else
{
wxString msg;
msg.Printf( _( "Problem while running the PDF viewer\nCommand is '%s'" ),
@@ -440,10 +383,9 @@ bool OpenPDF( const wxString& file )
wxString msg;
msg.Printf( _( "Unable to find a PDF viewer for <%s>" ), GetChars( filename ) );
DisplayError( NULL, msg );
success = false;
}
return success;
return false;
}
+13 -19
View File
@@ -70,8 +70,6 @@ static int xcliplo = 0,
ycliphi = 2000;
static EDA_COLOR_T s_DC_lastcolor = UNSPECIFIED_COLOR;
static int s_DC_lastwidth = -1;
static int s_DC_lastpenstyle = -1;
static EDA_COLOR_T s_DC_lastbrushcolor = UNSPECIFIED_COLOR;
static bool s_DC_lastbrushfill = false;
static wxDC* s_DC_lastDC = NULL;
@@ -213,31 +211,27 @@ void GRSetColorPen( wxDC* DC, EDA_COLOR_T Color, int width, wxPenStyle style )
width = DC->DeviceToLogicalXRel( 1 );
if( s_ForceBlackPen )
{
Color = BLACK;
}
if( s_DC_lastcolor != Color
|| s_DC_lastwidth != width
|| s_DC_lastpenstyle != style
|| s_DC_lastDC != DC
|| s_ForceBlackPen )
wxColour wx_color = MakeColour( Color );
const wxPen& curr_pen = DC->GetPen();
if( !curr_pen.IsOk() || curr_pen.GetColour() != wx_color
|| curr_pen.GetWidth() != width
|| curr_pen.GetStyle() != style )
{
wxPen pen;
wxColour wx_color = MakeColour( Color );
wxPen pen;
pen.SetColour( wx_color );
pen.SetWidth( width );
pen.SetStyle( style );
DC->SetPen( pen );
s_DC_lastcolor = Color;
s_DC_lastwidth = width;
s_DC_lastpenstyle = style;
s_DC_lastDC = DC;
}
else
// Should be not needed, but on Linux, in printing process
// the curr pen settings needs to be sometimes re-initialized
// Clearly, this is due to a bug, related to SetBrush(),
// but we have to live with it, at least on wxWidgets 3.0
DC->SetPen( curr_pen );
}
+1 -1
View File
@@ -212,7 +212,7 @@ KIFACE* KIWAY::KiFACE( FACE_T aFaceId, bool doLoad )
if( ! wxFileExists( dname ) )
msg << wxT( "It is missing.\n" );
else
msg << wxT( "Perhaps a wxWidgets shared (.dll or .so) file is missing.\n" );
msg << wxT( "Perhaps a shared library (.dll or .so) file is missing.\n" );
msg << wxT( "From command line: argv[0]:\n'" );
msg << wxStandardPaths::Get().GetExecutablePath() << wxT( "'\n" );
+6 -7
View File
@@ -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.
@@ -119,19 +119,18 @@ bool KIWAY_PLAYER::ShowModal( wxString* aResult, wxWindow* aResultantFocusWindow
if( wlist[ii]->IsTopLevel() && wlist[ii]->IsEnabled() )
enabledTopLevelWindows.push_back( wlist[ii] );
// 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 )
+37 -4
View File
@@ -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;
}
+40 -11
View File
@@ -416,6 +416,8 @@ bool PGM_BASE::initPgm()
{
wxString envVarName = wxT( "KIGITHUB" );
ENV_VAR_ITEM envVarItem;
wxString envValue;
wxFileName tmpFileName;
envVarItem.SetValue( wxString( wxT( "https://github.com/KiCad" ) ) );
envVarItem.SetDefinedExternally( wxGetEnv( envVarName, NULL ) );
@@ -429,24 +431,51 @@ bool PGM_BASE::initPgm()
baseSharePath.AppendDir( wxT( "kicad" ) );
#endif
wxFileName tmpFileName = baseSharePath;
tmpFileName.AppendDir( wxT( "modules" ) );
// KISYSMOD
envVarName = wxT( "KISYSMOD" );
envVarItem.SetValue( tmpFileName.GetPath() );
envVarItem.SetDefinedExternally( wxGetEnv( envVarName, NULL ) );
if( wxGetEnv( envVarName, &envValue ) == true && !envValue.IsEmpty() )
{
tmpFileName.AssignDir( envValue );
envVarItem.SetDefinedExternally( true );
}
else
{
tmpFileName = baseSharePath;
tmpFileName.AppendDir( wxT( "modules" ) );
envVarItem.SetDefinedExternally( false );
}
envVarItem.SetValue( tmpFileName.GetFullPath() );
m_local_env_vars[ envVarName ] = envVarItem;
// KISYS3DMOD
envVarName = wxT( "KISYS3DMOD" );
tmpFileName.AppendDir( wxT( "packages3d" ) );
envVarItem.SetValue( tmpFileName.GetPath() );
envVarItem.SetDefinedExternally( wxGetEnv( envVarName, NULL ) );
if( wxGetEnv( envVarName, &envValue ) == true && !envValue.IsEmpty() )
{
tmpFileName.AssignDir( envValue );
envVarItem.SetDefinedExternally( true );
}
else
{
tmpFileName.AppendDir( wxT( "packages3d" ) );
envVarItem.SetDefinedExternally( false );
}
envVarItem.SetValue( tmpFileName.GetFullPath() );
m_local_env_vars[ envVarName ] = envVarItem;
// KICAD_PTEMPLATES
envVarName = wxT( "KICAD_PTEMPLATES" );
tmpFileName = baseSharePath;
tmpFileName.AppendDir( wxT( "template" ) );
envVarItem.SetValue( tmpFileName.GetPath() );
envVarItem.SetDefinedExternally( wxGetEnv( envVarName, NULL ) );
if( wxGetEnv( envVarName, &envValue ) == true && !envValue.IsEmpty() )
{
tmpFileName.AssignDir( envValue );
envVarItem.SetDefinedExternally( true );
}
else
{
tmpFileName = baseSharePath;
tmpFileName.AppendDir( wxT( "template" ) );
envVarItem.SetDefinedExternally( false );
}
envVarItem.SetValue( tmpFileName.GetFullPath() );
m_local_env_vars[ envVarName ] = envVarItem;
}
+3 -1
View File
@@ -66,6 +66,8 @@ void TOOL_INTERACTIVE::goInternal( TOOL_STATE_FUNC& aState, const TOOL_EVENT_LIS
void TOOL_INTERACTIVE::SetContextMenu( CONTEXT_MENU* aMenu, CONTEXT_MENU_TRIGGER aTrigger )
{
aMenu->SetTool( this );
if( aMenu )
aMenu->SetTool( this );
m_toolMgr->ScheduleContextMenu( this, aMenu, aTrigger );
}
+8 -8
View File
@@ -1,23 +1,23 @@
Copyright template
A copyright message which may be added to all source files
at their top. There is one line that represents the main copyright holder which
is its original author.
A copyright message which may be added to all source files at their top.
There is one line that represents the main copyright holder which is its
original author.
Workers who earn partial copyright holder status of a source module
may choose to document this corresponding work in the CHANGELOG.txt file.
Workers who earn partial copyright holder status of a source module may
choose to document this corresponding work in the CHANGELOG.txt file.
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014 <author>
* Copyright (C) 2014 KiCad Developers, see CHANGELOG.TXT for contributors.
* Copyright (C) 2015 <author>
* Copyright (C) 2015 KiCad Developers, see CHANGELOG.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
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
+2
View File
@@ -56,6 +56,8 @@ set( CVPCB_SRCS
if( MINGW )
# CVPCB_RESOURCES variable is set by the macro.
mingw_resource_compiler( cvpcb )
else()
set( CVPCB_RESOURCES cvpcb.rc )
endif()
+1 -1
View File
@@ -156,7 +156,7 @@ void FOOTPRINTS_LISTBOX::SetFootprints( FOOTPRINT_LIST& aList, const wxString& a
continue;
if( (aFilterType & BY_PIN_COUNT) && aComponent
&& aComponent->GetNetCount() != aList.GetItem( ii ).GetPadCount() )
&& aComponent->GetNetCount() != aList.GetItem( ii ).GetUniquePadCount() )
continue;
msg.Printf( wxT( "%3d %s:%s" ), int( newList.GetCount() + 1 ),
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,465 @@
#VRML V2.0 utf8
#Exported from Wings 3D 2.0.1
DEF cube4_copy14 Transform {
children [
Shape {
appearance Appearance {
material DEF pin Material {
diffuseColor 0.7200000000000001 0.7200000000000001 0.7200000000000001
emissiveColor 0.0 0.0 0.0
specularColor 0.40298507462686567 0.40298507462686567 0.40298507462686567
ambientIntensity 0.7388059701492539
transparency 0.0
shininess 1.0
}
}
geometry IndexedFaceSet {
coord Coordinate { point [
0.49469757557083704 0.9044116856547368 0.5885495998933049,
0.49469757557107047 0.9044117988462632 0.4165495998934562,
0.8497157948850202 0.904410585242893 0.4165495998934562,
0.8497157948847871 0.9044104720513666 0.5885495998933049,
0.4946949389278774 -0.3755880511037757 0.18854694630386348,
0.4946949389281108 -0.37558793791224976 0.016546946304015004,
0.8497131582420605 -0.37558915151562 0.016546946304015004,
0.8497131582418275 -0.37558926470714593 0.18854694630386348,
0.4946968944379325 0.5737450189895246 0.5885487153633737,
0.49469621330556995 0.2430786155604212 0.18854783083379462,
0.49469689443816556 0.5737451321810509 0.4165487153635251,
0.4946962133058033 0.24307872875194758 0.016547830833946137,
0.8497151137521156 0.5737439185776807 0.4165487153635251,
0.849714432619753 0.24307751514857734 0.016547830833946137,
0.8497151137518822 0.5737438053861543 0.5885487153633737,
0.8497144326195201 0.24307740195705096 0.18854783083379462 ] }
coordIndex [
0, 1, 8, -1,
0, 3, 1, -1,
0, 8, 3, -1,
1, 2, 12, -1,
1, 3, 2, -1,
1, 10, 8, -1,
1, 12, 10, -1,
2, 3, 12, -1,
3, 8, 14, -1,
3, 14, 12, -1,
4, 5, 6, -1,
4, 6, 7, -1,
4, 7, 15, -1,
4, 9, 11, -1,
4, 11, 5, -1,
4, 15, 9, -1,
5, 11, 6, -1,
6, 11, 13, -1,
6, 13, 15, -1,
6, 15, 7, -1,
8, 9, 15, -1,
8, 10, 11, -1,
8, 11, 9, -1,
8, 15, 14, -1,
10, 12, 11, -1,
11, 12, 13, -1,
12, 14, 15, -1,
12, 15, 13, -1 ]
}
}
]
}
DEF cube4_copy13 Transform {
children [
Shape {
appearance Appearance {
material USE pin
}
geometry IndexedFaceSet {
coord Coordinate { point [
-0.8593024244219452 0.9044171255138134 0.5885495998933049,
-0.859302424421712 0.9044172387053397 0.4165495998934562,
-0.5042842051077618 0.9044160251019691 0.4165495998934562,
-0.5042842051079948 0.9044159119104427 0.5885495998933049,
-0.8593050610649048 -0.37558261124469916 0.18854694630386348,
-0.8593050610646716 -0.37558249805317323 0.016546946304015004,
-0.5042868417507214 -0.3755837116565439 0.016546946304015004,
-0.5042868417509545 -0.37558382484806985 0.18854694630386348,
-0.85930310555485 0.5737504588486011 0.5885487153633737,
-0.8593037866872122 0.24308405541949774 0.18854783083379462,
-0.8593031055546166 0.5737505720401275 0.4165487153635251,
-0.8593037866869792 0.2430841686110241 0.016547830833946137,
-0.5042848862406663 0.5737493584367568 0.4165487153635251,
-0.5042855673730287 0.24308295500765342 0.016547830833946137,
-0.5042848862408994 0.5737492452452304 0.5885487153633737,
-0.5042855673732618 0.24308284181612705 0.18854783083379462 ] }
coordIndex [
0, 1, 8, -1,
0, 3, 1, -1,
0, 8, 3, -1,
1, 2, 12, -1,
1, 3, 2, -1,
1, 10, 8, -1,
1, 12, 10, -1,
2, 3, 12, -1,
3, 8, 14, -1,
3, 14, 12, -1,
4, 5, 6, -1,
4, 6, 7, -1,
4, 7, 15, -1,
4, 9, 11, -1,
4, 11, 5, -1,
4, 15, 9, -1,
5, 11, 6, -1,
6, 11, 13, -1,
6, 13, 15, -1,
6, 15, 7, -1,
8, 9, 15, -1,
8, 10, 11, -1,
8, 11, 9, -1,
8, 15, 14, -1,
10, 12, 11, -1,
11, 12, 13, -1,
12, 14, 15, -1,
12, 15, 13, -1 ]
}
}
]
}
DEF cube4_sep12 Transform {
children [
Shape {
appearance Appearance {
material USE pin
}
geometry IndexedFaceSet {
coord Coordinate { point [
1.180697575570837 0.9044116856547368 0.5885495998933049,
1.1806975755710705 0.9044117988462632 0.4165495998934562,
1.5357157948850202 0.904410585242893 0.4165495998934562,
1.5357157948847873 0.9044104720513666 0.5885495998933049,
1.1806949389278774 -0.3755880511037757 0.18854694630386348,
1.1806949389281107 -0.37558793791224976 0.016546946304015004,
1.5357131582420604 -0.37558915151562 0.016546946304015004,
1.5357131582418275 -0.37558926470714593 0.18854694630386348,
1.1806968944379324 0.5737450189895246 0.5885487153633737,
1.1806962133055698 0.2430786155604212 0.18854783083379462,
1.1806968944381657 0.5737451321810509 0.4165487153635251,
1.1806962133058032 0.24307872875194758 0.016547830833946137,
1.5357151137521157 0.5737439185776807 0.4165487153635251,
1.5357144326197532 0.24307751514857734 0.016547830833946137,
1.5357151137518823 0.5737438053861543 0.5885487153633737,
1.5357144326195202 0.24307740195705096 0.18854783083379462 ] }
coordIndex [
0, 1, 8, -1,
0, 3, 1, -1,
0, 8, 3, -1,
1, 2, 12, -1,
1, 3, 2, -1,
1, 10, 8, -1,
1, 12, 10, -1,
2, 3, 12, -1,
3, 8, 14, -1,
3, 14, 12, -1,
4, 5, 6, -1,
4, 6, 7, -1,
4, 7, 15, -1,
4, 9, 11, -1,
4, 11, 5, -1,
4, 15, 9, -1,
5, 11, 6, -1,
6, 11, 13, -1,
6, 13, 15, -1,
6, 15, 7, -1,
8, 9, 15, -1,
8, 10, 11, -1,
8, 11, 9, -1,
8, 15, 14, -1,
10, 12, 11, -1,
11, 12, 13, -1,
12, 14, 15, -1,
12, 15, 13, -1 ]
}
}
]
}
DEF cube4_sep11 Transform {
children [
Shape {
appearance Appearance {
material DEF body Material {
diffuseColor 0.44776119402985076 0.44776119402985076 0.44776119402985076
emissiveColor 0.0 0.0 0.0
specularColor 0.1417910447761194 0.1417910447761194 0.1417910447761194
ambientIntensity 0.41791044776119407
transparency 0.0
shininess 1.0
}
}
geometry IndexedFaceSet {
coord Coordinate { point [
1.7152182518946473 4.648202041089771 0.21455433502265325,
-1.7212817480994713 4.648206473911521 0.21455433502265325,
1.715218251893144 4.648201472705371 0.9151563190222725,
2.0002170429163337 4.372600412283759 0.915153709418467,
-1.975787352051995 4.392370384480033 0.9151537094184671,
-1.7212817481009746 4.648205905527121 0.9151563190222725,
-1.9005928402305177 0.9877300684708781 0.9903511975572958,
1.9250072516857544 0.987720514056661 0.9903511970000083,
1.9250169548338514 4.3407105532877495 0.9903536678082394,
1.6848051964769646 4.573001455891576 0.990356221445347,
-1.690018073116452 4.573005799088463 0.9903562216740227,
-1.9005873998329612 4.361336105799042 0.9903536694750094,
-1.9152865271521975 0.9730364659199149 0.9756575141597525,
-1.870992956009541 0.9125300933792071 0.9151510998145782,
-1.9757927946571687 1.0173303844892836 0.9151511749515024,
1.897407043978173 0.9125206978536344 0.9151510998145782,
2.0002073279192447 1.0153204122985005 0.9151511739199032,
1.9408555979327713 0.9718721025896782 0.9745027864966964,
1.7152182518955217 4.648202371555615 0.1579523510221698,
1.6640182518963231 4.648202744883636 0.1067523510230423,
1.7152182518963175 4.699402670482303 0.1067523510230423,
2.000217042919113 4.372601490999284 0.15794974141909796,
-1.9757873520492162 4.392371463195559 0.15794974141909796,
-1.6700817480978067 4.648207028902958 0.1067523510230423,
-1.721281748098597 4.648206804377365 0.1579523510221698,
-1.721281748097801 4.699407103304052 0.1067523510230423,
-1.97579279465439 1.017331463204725 0.15794720695216236,
-1.8709929560067624 0.9125311720945917 0.15794713181520903,
2.000207327922024 1.0153214910139419 0.15794720592054828,
1.897407043980952 0.912521776569019 0.15794713181520903,
1.9490169829485158 4.350889392455781 0.10674971307897159,
1.7730073864998548 1.0365294400006129 0.10674723322683204,
1.7001994515741845 0.9637219084186877 0.10674719811808896,
-1.8497850979587613 0.9637311861239397 0.10674719827538891,
-1.9245927620025127 1.0385391731419686 0.10674723463826673,
-1.924587384580483 4.371241887419728 0.10674971421434783 ] }
coordIndex [
0, 1, 5, -1,
0, 2, 3, -1,
0, 3, 21, -1,
0, 5, 2, -1,
0, 21, 18, -1,
1, 4, 5, -1,
1, 22, 4, -1,
1, 24, 22, -1,
2, 5, 9, -1,
2, 9, 3, -1,
3, 8, 16, -1,
3, 9, 8, -1,
3, 16, 28, -1,
3, 28, 21, -1,
4, 11, 5, -1,
4, 14, 11, -1,
4, 22, 14, -1,
5, 10, 9, -1,
5, 11, 10, -1,
6, 7, 9, -1,
6, 9, 11, -1,
6, 11, 14, -1,
6, 12, 13, -1,
6, 13, 7, -1,
6, 14, 12, -1,
7, 8, 9, -1,
7, 13, 15, -1,
7, 15, 17, -1,
7, 16, 8, -1,
7, 17, 16, -1,
9, 10, 11, -1,
12, 14, 13, -1,
13, 14, 27, -1,
13, 27, 15, -1,
14, 22, 26, -1,
14, 26, 27, -1,
15, 16, 17, -1,
15, 27, 29, -1,
15, 28, 16, -1,
15, 29, 28, -1,
18, 19, 20, -1,
18, 21, 30, -1,
18, 30, 19, -1,
19, 30, 31, -1,
19, 31, 35, -1,
19, 35, 23, -1,
21, 28, 30, -1,
22, 23, 35, -1,
22, 24, 23, -1,
22, 34, 26, -1,
22, 35, 34, -1,
23, 24, 25, -1,
26, 34, 27, -1,
27, 32, 29, -1,
27, 33, 32, -1,
27, 34, 33, -1,
28, 29, 32, -1,
28, 31, 30, -1,
28, 32, 31, -1,
31, 32, 35, -1,
32, 33, 35, -1,
33, 34, 35, -1 ]
}
},
Shape {
appearance Appearance {
material USE pin
}
geometry IndexedFaceSet {
coord Coordinate { point [
1.7152182518946473 4.648202041089771 0.21455433502265325,
-1.7212817480994713 4.648206473911521 0.21455433502265325,
-1.7212817480994713 5.103406473911578 0.21455433502265325,
1.7152182518946473 5.103402041089829 0.21455433502265325,
1.7152182518963175 5.103402670482479 0.1067523510230423,
-1.721281748097801 5.10340710330423 0.1067523510230423,
-1.6964817480990886 5.128206582666104 0.18975433502307587,
1.6904182518950355 5.128202221920532 0.18975433502307587,
1.6904182518959348 5.1282025617278375 0.1315523510226197,
-1.6964817480981893 5.128206922473412 0.1315523510226197,
1.7152182518955217 4.648202371555615 0.1579523510221698,
1.6640182518963231 4.648202744883636 0.1067523510230423,
1.7152182518963175 4.699402670482303 0.1067523510230423,
-1.6700817480978067 4.648207028902958 0.1067523510230423,
-1.721281748098597 4.648206804377365 0.1579523510221698,
-1.721281748097801 4.699407103304052 0.1067523510230423 ] }
coordIndex [
0, 2, 1, -1,
0, 3, 2, -1,
0, 10, 12, -1,
0, 12, 3, -1,
1, 2, 15, -1,
1, 15, 14, -1,
2, 3, 7, -1,
2, 5, 15, -1,
2, 6, 9, -1,
2, 7, 6, -1,
2, 9, 5, -1,
3, 4, 7, -1,
3, 12, 4, -1,
4, 5, 9, -1,
4, 8, 7, -1,
4, 9, 8, -1,
4, 11, 13, -1,
4, 12, 11, -1,
4, 13, 5, -1,
5, 13, 15, -1,
6, 7, 9, -1,
7, 8, 9, -1 ]
}
}
]
}
DEF cube4_sep10 Transform {
children [
Shape {
appearance Appearance {
material USE pin
}
geometry IndexedFaceSet {
coord Coordinate { point [
-1.5293024244219453 0.9044171255138134 0.5885495998933049,
-1.5293024244217122 0.9044172387053397 0.4165495998934562,
-1.174284205107762 0.9044160251019691 0.4165495998934562,
-1.174284205107995 0.9044159119104427 0.5885495998933049,
-1.529305061064905 -0.37558261124469916 0.18854694630386348,
-1.529305061064672 -0.37558249805317323 0.016546946304015004,
-1.1742868417507215 -0.3755837116565439 0.016546946304015004,
-1.1742868417509547 -0.37558382484806985 0.18854694630386348,
-1.52930310555485 0.5737504588486011 0.5885487153633737,
-1.5293037866872121 0.24308405541949774 0.18854783083379462,
-1.5293031055546167 0.5737505720401275 0.4165487153635251,
-1.5293037866869792 0.2430841686110241 0.016547830833946137,
-1.1742848862406663 0.5737493584367568 0.4165487153635251,
-1.174285567373029 0.24308295500765342 0.016547830833946137,
-1.1742848862408997 0.5737492452452304 0.5885487153633737,
-1.1742855673732622 0.24308284181612705 0.18854783083379462 ] }
coordIndex [
0, 1, 8, -1,
0, 3, 1, -1,
0, 8, 3, -1,
1, 2, 12, -1,
1, 3, 2, -1,
1, 10, 8, -1,
1, 12, 10, -1,
2, 3, 12, -1,
3, 8, 14, -1,
3, 14, 12, -1,
4, 5, 6, -1,
4, 6, 7, -1,
4, 7, 15, -1,
4, 9, 11, -1,
4, 11, 5, -1,
4, 15, 9, -1,
5, 11, 6, -1,
6, 11, 13, -1,
6, 13, 15, -1,
6, 15, 7, -1,
8, 9, 15, -1,
8, 10, 11, -1,
8, 11, 9, -1,
8, 15, 14, -1,
10, 12, 11, -1,
11, 12, 13, -1,
12, 14, 15, -1,
12, 15, 13, -1 ]
}
}
]
}
DEF cube4_sep26 Transform {
children [
Shape {
appearance Appearance {
material USE pin
}
geometry IndexedFaceSet {
coord Coordinate { point [
-0.17930242442557165 0.9044143923163264 0.5885495998933049,
-0.17930242442533853 0.9044145055078527 0.4165495998934562,
0.17571579488861147 0.904413291904482 0.4165495998934562,
0.17571579488837835 0.9044131787129557 0.5885495998933049,
-0.17930506106853134 -0.37558534444218616 0.18854694630386348,
-0.17930506106829822 -0.37558523125066023 0.016546946304015004,
0.17571315824565187 -0.3755864448540309 0.016546946304015004,
0.17571315824541867 -0.37558655804555685 0.18854694630386348,
-0.17930310555847634 0.5737477256511141 0.5885487153633737,
-0.1793037866908388 0.24308132222201073 0.18854783083379462,
-0.17930310555824314 0.5737478388426405 0.4165487153635251,
-0.17930378669060557 0.2430814354135371 0.016547830833946137,
0.17571511375570686 0.5737466252392698 0.4165487153635251,
0.17571443262334444 0.24308022181016642 0.016547830833946137,
0.17571511375547366 0.5737465120477434 0.5885487153633737,
0.17571443262311123 0.24308010861864005 0.18854783083379462 ] }
coordIndex [
0, 1, 8, -1,
0, 3, 1, -1,
0, 8, 3, -1,
1, 2, 12, -1,
1, 3, 2, -1,
1, 10, 8, -1,
1, 12, 10, -1,
2, 3, 12, -1,
3, 8, 14, -1,
3, 14, 12, -1,
4, 5, 6, -1,
4, 6, 7, -1,
4, 7, 15, -1,
4, 9, 11, -1,
4, 11, 5, -1,
4, 15, 9, -1,
5, 11, 6, -1,
6, 11, 13, -1,
6, 13, 15, -1,
6, 15, 7, -1,
8, 9, 15, -1,
8, 10, 11, -1,
8, 11, 9, -1,
8, 15, 14, -1,
10, 12, 11, -1,
11, 12, 13, -1,
12, 14, 15, -1,
12, 15, 13, -1 ]
}
}
]
}
+2
View File
@@ -191,6 +191,8 @@ set( EESCHEMA_COMMON_SRCS
if( MINGW )
# EESCHEMA_RESOURCES variable is set by the macro.
mingw_resource_compiler( eeschema )
else()
set( EESCHEMA_RESOURCES eeschema.rc )
endif()
# Create a C++ compilable string initializer containing html text into a *.h file:
+2 -2
View File
@@ -1,7 +1,7 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2008-2013 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 2004-2015 KiCad Developers, see change_log.txt for contributors.
*
@@ -182,7 +182,7 @@ bool SCH_EDIT_FRAME::ProcessCmpToFootprintLinkFile( const wxString& aFullFilenam
{
reference = value;
}
else if( buffer.StartsWith( wxT( "IdModule =" ) ) )
else if( buffer.StartsWith( wxT( "IdModule" ) ) )
{
footprint = value;
}
+15 -7
View File
@@ -886,7 +886,7 @@ bool LIB_PART::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
{
p = strtok( line, " \t\n" );
if( stricmp( p, "ENDDEF" ) == 0 )
if( p && stricmp( p, "ENDDEF" ) == 0 )
break;
}
@@ -948,6 +948,9 @@ bool LIB_PART::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
if( *line == '#' ) // a comment
continue;
if( p == NULL ) // empty line
continue;
if( line[0] == 'T' && line[1] == 'i' )
result = LoadDateAndTime( aLineReader );
else if( *line == 'F' )
@@ -1036,7 +1039,12 @@ bool LIB_PART::LoadDrawEntries( LINE_READER& aLineReader, wxString& aErrorMsg )
break;
case '#': // Comment
continue;
continue;
case '\n':
case '\r':
case 0: // empty line
continue;
default:
aErrorMsg.Printf( wxT( "undefined DRAW command %c" ), line[0] );
@@ -1746,16 +1754,16 @@ 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;
LIB_ALIASES::iterator it = m_aliases.begin();
for( it = m_aliases.begin(); it < m_aliases.end(); it++ )
while( it != m_aliases.end() )
{
int index = aAliasList.Index( (*it)->GetName(), false );
if( index != wxNOT_FOUND || (*it)->IsRoot() )
continue;
it = m_aliases.erase( it );
++it;
else
it = m_aliases.erase( it );
}
}
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Mar 9 2015)
// C++ code generated with wxFormBuilder (version Jun 17 2015)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -22,23 +22,23 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
wxStaticBoxSizer* optionsSizer;
optionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Component") ), wxVERTICAL );
m_staticTextUnit = new wxStaticText( this, wxID_ANY, _("Unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextUnit = new wxStaticText( optionsSizer->GetStaticBox(), wxID_ANY, _("Unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextUnit->Wrap( -1 );
optionsSizer->Add( m_staticTextUnit, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
wxArrayString unitChoiceChoices;
unitChoice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, unitChoiceChoices, 0 );
unitChoice = new wxChoice( optionsSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, unitChoiceChoices, 0 );
unitChoice->SetSelection( 0 );
optionsSizer->Add( unitChoice, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerUnitsInterchangeable;
bSizerUnitsInterchangeable = new wxBoxSizer( wxHORIZONTAL );
unitsInterchageableText = new wxStaticText( this, wxID_ANY, _("Units are interchangeable:"), wxDefaultPosition, wxDefaultSize, 0 );
unitsInterchageableText = new wxStaticText( optionsSizer->GetStaticBox(), wxID_ANY, _("Units are interchangeable:"), wxDefaultPosition, wxDefaultSize, 0 );
unitsInterchageableText->Wrap( -1 );
bSizerUnitsInterchangeable->Add( unitsInterchageableText, 0, wxTOP|wxBOTTOM|wxLEFT, 5 );
unitsInterchageableLabel = new wxStaticText( this, wxID_ANY, _("Yes"), wxDefaultPosition, wxDefaultSize, 0 );
unitsInterchageableLabel = new wxStaticText( optionsSizer->GetStaticBox(), wxID_ANY, _("Yes"), wxDefaultPosition, wxDefaultSize, 0 );
unitsInterchageableLabel->Wrap( -1 );
bSizerUnitsInterchangeable->Add( unitsInterchageableLabel, 0, wxALL, 5 );
@@ -47,7 +47,7 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
wxString orientationRadioBoxChoices[] = { _("0"), _("+90"), _("180"), _("-90") };
int orientationRadioBoxNChoices = sizeof( orientationRadioBoxChoices ) / sizeof( wxString );
orientationRadioBox = new wxRadioBox( this, wxID_ANY, _("Orientation (Degrees)"), wxDefaultPosition, wxDefaultSize, orientationRadioBoxNChoices, orientationRadioBoxChoices, 1, wxRA_SPECIFY_COLS );
orientationRadioBox = new wxRadioBox( optionsSizer->GetStaticBox(), wxID_ANY, _("Orientation (Degrees)"), wxDefaultPosition, wxDefaultSize, orientationRadioBoxNChoices, orientationRadioBoxChoices, 1, wxRA_SPECIFY_COLS );
orientationRadioBox->SetSelection( 0 );
orientationRadioBox->SetToolTip( _("Select if the component is to be rotated when drawn") );
@@ -55,22 +55,21 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
wxString mirrorRadioBoxChoices[] = { _("Normal"), _("Mirror ---"), _("Mirror |") };
int mirrorRadioBoxNChoices = sizeof( mirrorRadioBoxChoices ) / sizeof( wxString );
mirrorRadioBox = new wxRadioBox( this, wxID_ANY, _("Mirror"), wxDefaultPosition, wxDefaultSize, mirrorRadioBoxNChoices, mirrorRadioBoxChoices, 1, wxRA_SPECIFY_COLS );
mirrorRadioBox = new wxRadioBox( optionsSizer->GetStaticBox(), wxID_ANY, _("Mirror"), wxDefaultPosition, wxDefaultSize, mirrorRadioBoxNChoices, mirrorRadioBoxChoices, 1, wxRA_SPECIFY_COLS );
mirrorRadioBox->SetSelection( 0 );
mirrorRadioBox->SetToolTip( _("Pick the graphical transformation to be used when displaying the component, if any") );
optionsSizer->Add( mirrorRadioBox, 0, wxALL|wxEXPAND, 5 );
convertCheckBox = new wxCheckBox( this, wxID_ANY, _("Converted Shape"), wxDefaultPosition, wxDefaultSize, 0 );
convertCheckBox = new wxCheckBox( optionsSizer->GetStaticBox(), wxID_ANY, _("Converted Shape"), wxDefaultPosition, wxDefaultSize, 0 );
convertCheckBox->SetToolTip( _("Use the alternate shape of this component.\nFor gates, this is the \"De Morgan\" conversion") );
optionsSizer->Add( convertCheckBox, 0, wxALL, 5 );
wxStaticBoxSizer* sbSizerChipName;
sbSizerChipName = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Chip Name") ), wxVERTICAL );
sbSizerChipName = new wxStaticBoxSizer( new wxStaticBox( optionsSizer->GetStaticBox(), wxID_ANY, _("Chip Name") ), wxVERTICAL );
chipnameTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
chipnameTextCtrl->SetMaxLength( 32 );
chipnameTextCtrl = new wxTextCtrl( sbSizerChipName->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
chipnameTextCtrl->SetToolTip( _("The name of the symbol in the library from which this component came") );
sbSizerChipName->Add( chipnameTextCtrl, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
@@ -78,10 +77,10 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
wxBoxSizer* bSizerChpinameButt;
bSizerChpinameButt = new wxBoxSizer( wxHORIZONTAL );
m_buttonTestChipName = new wxButton( this, wxID_ANY, _("Test"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonTestChipName = new wxButton( sbSizerChipName->GetStaticBox(), wxID_ANY, _("Test"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerChpinameButt->Add( m_buttonTestChipName, 0, wxTOP|wxBOTTOM|wxRIGHT, 5 );
m_buttonSelectChipName = new wxButton( this, wxID_ANY, _("Select"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonSelectChipName = new wxButton( sbSizerChipName->GetStaticBox(), wxID_ANY, _("Select"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerChpinameButt->Add( m_buttonSelectChipName, 0, wxTOP|wxBOTTOM, 5 );
@@ -90,19 +89,19 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
optionsSizer->Add( sbSizerChipName, 0, wxEXPAND|wxALL, 5 );
m_staticTextTimeStamp = new wxStaticText( this, wxID_ANY, _("Timestamp"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextTimeStamp = new wxStaticText( optionsSizer->GetStaticBox(), wxID_ANY, _("Timestamp"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextTimeStamp->Wrap( -1 );
optionsSizer->Add( m_staticTextTimeStamp, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_textCtrlTimeStamp = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
m_textCtrlTimeStamp = new wxTextCtrl( optionsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
m_textCtrlTimeStamp->SetToolTip( _("An unique ID (a time stamp) to identify the component.\nThis is an alternate identifier to the reference.") );
optionsSizer->Add( m_textCtrlTimeStamp, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
m_staticline1 = new wxStaticLine( optionsSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
optionsSizer->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
defaultsButton = new wxButton( this, wxID_ANY, _("Reset to Library Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
defaultsButton = new wxButton( optionsSizer->GetStaticBox(), wxID_ANY, _("Reset to Library Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
defaultsButton->SetToolTip( _("Set position and style of fields and component orientation to default lib value.\nFields texts are not modified.") );
optionsSizer->Add( defaultsButton, 0, wxALL|wxEXPAND, 5 );
@@ -114,24 +113,24 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
fieldsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Fields") ), wxHORIZONTAL );
wxStaticBoxSizer* gridStaticBoxSizer;
gridStaticBoxSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, wxEmptyString ), wxVERTICAL );
gridStaticBoxSizer = new wxStaticBoxSizer( new wxStaticBox( fieldsSizer->GetStaticBox(), wxID_ANY, wxEmptyString ), wxVERTICAL );
fieldListCtrl = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES );
fieldListCtrl = new wxListCtrl( gridStaticBoxSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES );
fieldListCtrl->SetMinSize( wxSize( 220,-1 ) );
gridStaticBoxSizer->Add( fieldListCtrl, 1, wxALL|wxEXPAND, 8 );
addFieldButton = new wxButton( this, wxID_ANY, _("Add Field"), wxDefaultPosition, wxDefaultSize, 0 );
addFieldButton = new wxButton( gridStaticBoxSizer->GetStaticBox(), wxID_ANY, _("Add Field"), wxDefaultPosition, wxDefaultSize, 0 );
addFieldButton->SetToolTip( _("Add a new custom field") );
gridStaticBoxSizer->Add( addFieldButton, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
deleteFieldButton = new wxButton( this, wxID_ANY, _("Delete Field"), wxDefaultPosition, wxDefaultSize, 0 );
deleteFieldButton = new wxButton( gridStaticBoxSizer->GetStaticBox(), wxID_ANY, _("Delete Field"), wxDefaultPosition, wxDefaultSize, 0 );
deleteFieldButton->SetToolTip( _("Delete one of the optional fields") );
gridStaticBoxSizer->Add( deleteFieldButton, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
moveUpButton = new wxButton( this, wxID_ANY, _("Move Up"), wxDefaultPosition, wxDefaultSize, 0 );
moveUpButton = new wxButton( gridStaticBoxSizer->GetStaticBox(), wxID_ANY, _("Move Up"), wxDefaultPosition, wxDefaultSize, 0 );
moveUpButton->SetToolTip( _("Move the selected optional fields up one position") );
gridStaticBoxSizer->Add( moveUpButton, 0, wxALL|wxEXPAND, 5 );
@@ -147,13 +146,13 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
wxString m_FieldHJustifyCtrlChoices[] = { _("Left"), _("Center"), _("Right") };
int m_FieldHJustifyCtrlNChoices = sizeof( m_FieldHJustifyCtrlChoices ) / sizeof( wxString );
m_FieldHJustifyCtrl = new wxRadioBox( this, wxID_ANY, _("Horiz. Justify"), wxDefaultPosition, wxDefaultSize, m_FieldHJustifyCtrlNChoices, m_FieldHJustifyCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_FieldHJustifyCtrl = new wxRadioBox( fieldsSizer->GetStaticBox(), wxID_ANY, _("Horiz. Justify"), wxDefaultPosition, wxDefaultSize, m_FieldHJustifyCtrlNChoices, m_FieldHJustifyCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_FieldHJustifyCtrl->SetSelection( 2 );
bSizerJustification->Add( m_FieldHJustifyCtrl, 1, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
wxString m_FieldVJustifyCtrlChoices[] = { _("Bottom"), _("Center"), _("Top") };
int m_FieldVJustifyCtrlNChoices = sizeof( m_FieldVJustifyCtrlChoices ) / sizeof( wxString );
m_FieldVJustifyCtrl = new wxRadioBox( this, wxID_ANY, _("Vert. Justify"), wxDefaultPosition, wxDefaultSize, m_FieldVJustifyCtrlNChoices, m_FieldVJustifyCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_FieldVJustifyCtrl = new wxRadioBox( fieldsSizer->GetStaticBox(), wxID_ANY, _("Vert. Justify"), wxDefaultPosition, wxDefaultSize, m_FieldVJustifyCtrlNChoices, m_FieldVJustifyCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_FieldVJustifyCtrl->SetSelection( 2 );
bSizerJustification->Add( m_FieldVJustifyCtrl, 1, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
@@ -164,14 +163,14 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
bSizerStyle = new wxBoxSizer( wxHORIZONTAL );
wxStaticBoxSizer* visibilitySizer;
visibilitySizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Visibility") ), wxVERTICAL );
visibilitySizer = new wxStaticBoxSizer( new wxStaticBox( fieldsSizer->GetStaticBox(), wxID_ANY, _("Visibility") ), wxVERTICAL );
showCheckBox = new wxCheckBox( this, wxID_ANY, _("Show"), wxDefaultPosition, wxDefaultSize, 0 );
showCheckBox = new wxCheckBox( visibilitySizer->GetStaticBox(), wxID_ANY, _("Show"), wxDefaultPosition, wxDefaultSize, 0 );
showCheckBox->SetToolTip( _("Check if you want this field visible") );
visibilitySizer->Add( showCheckBox, 0, wxALL, 5 );
rotateCheckBox = new wxCheckBox( this, wxID_ANY, _("Rotate"), wxDefaultPosition, wxDefaultSize, 0 );
rotateCheckBox = new wxCheckBox( visibilitySizer->GetStaticBox(), wxID_ANY, _("Rotate"), wxDefaultPosition, wxDefaultSize, 0 );
rotateCheckBox->SetToolTip( _("Check if you want this field's text rotated 90 degrees") );
visibilitySizer->Add( rotateCheckBox, 0, wxALL, 5 );
@@ -181,7 +180,7 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
wxString m_StyleRadioBoxChoices[] = { _("Normal"), _("Italic"), _("Bold"), _("Bold Italic") };
int m_StyleRadioBoxNChoices = sizeof( m_StyleRadioBoxChoices ) / sizeof( wxString );
m_StyleRadioBox = new wxRadioBox( this, wxID_ANY, _("Style:"), wxDefaultPosition, wxDefaultSize, m_StyleRadioBoxNChoices, m_StyleRadioBoxChoices, 1, wxRA_SPECIFY_COLS );
m_StyleRadioBox = new wxRadioBox( fieldsSizer->GetStaticBox(), wxID_ANY, _("Style:"), wxDefaultPosition, wxDefaultSize, m_StyleRadioBoxNChoices, m_StyleRadioBoxChoices, 1, wxRA_SPECIFY_COLS );
m_StyleRadioBox->SetSelection( 3 );
m_StyleRadioBox->SetToolTip( _("The style of the currently selected field's text in the schemati") );
@@ -193,27 +192,25 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
wxBoxSizer* fieldNameBoxSizer;
fieldNameBoxSizer = new wxBoxSizer( wxVERTICAL );
fieldNameLabel = new wxStaticText( this, wxID_ANY, _("Field Name"), wxDefaultPosition, wxDefaultSize, 0 );
fieldNameLabel = new wxStaticText( fieldsSizer->GetStaticBox(), wxID_ANY, _("Field Name"), wxDefaultPosition, wxDefaultSize, 0 );
fieldNameLabel->Wrap( -1 );
fieldNameBoxSizer->Add( fieldNameLabel, 0, wxTOP, 5 );
fieldNameTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fieldNameTextCtrl->SetMaxLength( 0 );
fieldNameTextCtrl = new wxTextCtrl( fieldsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fieldNameTextCtrl->SetToolTip( _("The name of the currently selected field\nSome fixed fields names are not editable") );
fieldNameBoxSizer->Add( fieldNameTextCtrl, 0, wxBOTTOM|wxEXPAND, 5 );
fieldValueLabel = new wxStaticText( this, wxID_ANY, _("Field Value"), wxDefaultPosition, wxDefaultSize, 0 );
fieldValueLabel = new wxStaticText( fieldsSizer->GetStaticBox(), wxID_ANY, _("Field Value"), wxDefaultPosition, wxDefaultSize, 0 );
fieldValueLabel->Wrap( -1 );
fieldNameBoxSizer->Add( fieldValueLabel, 0, wxALIGN_TOP|wxTOP, 5 );
fieldValueTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fieldValueTextCtrl->SetMaxLength( 0 );
fieldValueTextCtrl = new wxTextCtrl( fieldsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fieldValueTextCtrl->SetToolTip( _("The name of the currently selected field\nSome fixed fields names are not editable") );
fieldNameBoxSizer->Add( fieldValueTextCtrl, 0, wxEXPAND|wxBOTTOM, 5 );
m_show_datasheet_button = new wxButton( this, wxID_ANY, _("Show in Browser"), wxDefaultPosition, wxDefaultSize, 0 );
m_show_datasheet_button = new wxButton( fieldsSizer->GetStaticBox(), wxID_ANY, _("Show in Browser"), wxDefaultPosition, wxDefaultSize, 0 );
m_show_datasheet_button->SetToolTip( _("If your datasheet is an http:// link or a complete file path, then it may show in your browser by pressing this button.") );
fieldNameBoxSizer->Add( m_show_datasheet_button, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
@@ -227,45 +224,42 @@ DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP(
fgSizerPosSize->SetFlexibleDirection( wxBOTH );
fgSizerPosSize->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
textSizeLabel = new wxStaticText( this, wxID_ANY, _("Size"), wxDefaultPosition, wxDefaultSize, 0 );
textSizeLabel = new wxStaticText( fieldsSizer->GetStaticBox(), wxID_ANY, _("Size"), wxDefaultPosition, wxDefaultSize, 0 );
textSizeLabel->Wrap( -1 );
fgSizerPosSize->Add( textSizeLabel, 0, wxALIGN_CENTER_VERTICAL, 5 );
textSizeTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
textSizeTextCtrl->SetMaxLength( 0 );
textSizeTextCtrl = new wxTextCtrl( fieldsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
textSizeTextCtrl->SetToolTip( _("The size of the currently selected field's text in the schematic") );
fgSizerPosSize->Add( textSizeTextCtrl, 0, wxEXPAND|wxBOTTOM, 5 );
m_staticTextUnitSize = new wxStaticText( this, wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextUnitSize = new wxStaticText( fieldsSizer->GetStaticBox(), wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextUnitSize->Wrap( -1 );
fgSizerPosSize->Add( m_staticTextUnitSize, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
posXLabel = new wxStaticText( this, wxID_ANY, _("PosX"), wxDefaultPosition, wxDefaultSize, 0 );
posXLabel = new wxStaticText( fieldsSizer->GetStaticBox(), wxID_ANY, _("PosX"), wxDefaultPosition, wxDefaultSize, 0 );
posXLabel->Wrap( -1 );
fgSizerPosSize->Add( posXLabel, 0, wxALIGN_CENTER_VERTICAL, 5 );
posXTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
posXTextCtrl->SetMaxLength( 0 );
posXTextCtrl = new wxTextCtrl( fieldsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
posXTextCtrl->SetToolTip( _("The X coordinate of the text relative to the component") );
fgSizerPosSize->Add( posXTextCtrl, 0, wxEXPAND|wxTOP, 5 );
m_staticTextUnitPosX = new wxStaticText( this, wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextUnitPosX = new wxStaticText( fieldsSizer->GetStaticBox(), wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextUnitPosX->Wrap( -1 );
fgSizerPosSize->Add( m_staticTextUnitPosX, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
posYLabel = new wxStaticText( this, wxID_ANY, _("PosY"), wxDefaultPosition, wxDefaultSize, 0 );
posYLabel = new wxStaticText( fieldsSizer->GetStaticBox(), wxID_ANY, _("PosY"), wxDefaultPosition, wxDefaultSize, 0 );
posYLabel->Wrap( -1 );
fgSizerPosSize->Add( posYLabel, 0, wxALIGN_CENTER_VERTICAL, 5 );
posYTextCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
posYTextCtrl->SetMaxLength( 0 );
posYTextCtrl = new wxTextCtrl( fieldsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
posYTextCtrl->SetToolTip( _("The Y coordinate of the text relative to the component") );
fgSizerPosSize->Add( posYTextCtrl, 0, wxEXPAND, 5 );
m_staticTextUnitPosY = new wxStaticText( this, wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextUnitPosY = new wxStaticText( fieldsSizer->GetStaticBox(), wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextUnitPosY->Wrap( -1 );
fgSizerPosSize->Add( m_staticTextUnitPosY, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
@@ -777,7 +777,7 @@
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength">32</property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
@@ -2253,11 +2253,11 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="0">
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">fieldNameBoxSizer</property>
<property name="orient">wxVERTICAL</property>
@@ -2380,7 +2380,7 @@
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
@@ -2554,7 +2554,7 @@
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
@@ -2834,7 +2834,7 @@
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
@@ -3091,7 +3091,7 @@
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
@@ -3348,7 +3348,7 @@
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Mar 9 2015)
// C++ code generated with wxFormBuilder (version Jun 17 2015)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
+2
View File
@@ -447,6 +447,8 @@ bool SCH_EDIT_FRAME::AppendOneEEProject()
bs = nextbs;
}
}
OnModify();
// redraw base screen (ROOT) if necessary
GetScreen()->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId );
+1
View File
@@ -368,6 +368,7 @@ void SCH_EDIT_FRAME::OnFindReplace( wxFindDialogEvent& aEvent )
searchCriteria.SetFlags( aEvent.GetFlags() );
searchCriteria.SetFindString( aEvent.GetFindString() );
searchCriteria.SetReplaceString( aEvent.GetReplaceString() );
m_foundItems.SetReplaceString( aEvent.GetReplaceString() );
if( IsSearchCacheObsolete( searchCriteria ) )
{
+6
View File
@@ -503,6 +503,12 @@ SEARCH_RESULT SCH_FIND_COLLECTOR::Inspect( EDA_ITEM* aItem, const void* aTestDat
}
void SCH_FIND_COLLECTOR::SetReplaceString( const wxString &aReplaceString )
{
m_findReplaceData.SetReplaceString( aReplaceString );
}
void SCH_FIND_COLLECTOR::Collect( SCH_FIND_REPLACE_DATA& aFindReplaceData,
SCH_SHEET_PATH* aSheetPath )
{
+5
View File
@@ -352,6 +352,11 @@ public:
SEARCH_RESULT Inspect( EDA_ITEM* aItem, const void* aTestData = NULL );
/**
* Update the replace string without changing anything else.
*/
void SetReplaceString( const wxString &aReplaceString );
/**
* Function Collect
* scans \a aSheetPath using this class's Inspector method for items matching
+1 -3
View File
@@ -912,11 +912,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;
+2
View File
@@ -78,6 +78,8 @@ set( GERBVIEW_EXTRA_SRCS
if( MINGW )
# GERBVIEW_RESOURCES variable is set by the macro.
mingw_resource_compiler( gerbview )
else()
set( GERBVIEW_RESOURCES gerbview.rc )
endif()
if( APPLE )
+1
View File
@@ -130,6 +130,7 @@ void GERBER_LAYER_WIDGET::ReFillRender()
void GERBER_LAYER_WIDGET::installRightLayerClickHandler()
{
int rowCount = GetLayerRowCount();
for( int row=0; row<rowCount; ++row )
{
for( int col=0; col<LYR_COLUMN_COUNT; ++col )
@@ -29,4 +29,4 @@ Usage
awk -f fontconv.awk symbol.lib font.lib charlist.txt >newstroke_font.h
Released under CC-BY licence.
Released under CC0 licence.
+1 -15
View File
@@ -29,11 +29,7 @@
#include <hashtables.h>
#include <kiway_player.h>
#if wxMINOR_VERSION == 8 && defined(__WXGTK__)
#define DLGSHIM_USE_SETFOCUS 1
#else
#define DLGSHIM_USE_SETFOCUS 0
#endif
#define DLGSHIM_USE_SETFOCUS 0
class WDO_ENABLE_DISABLE;
class EVENT_LOOP;
@@ -41,13 +37,8 @@ class EVENT_LOOP;
// These macros are for DIALOG_SHIM only, NOT for KIWAY_PLAYER. KIWAY_PLAYER
// has its own support for quasi modal and its platform specific issues are different
// than for a wxDialog.
#if wxCHECK_VERSION( 3, 0, 0 )
#define SHOWQUASIMODAL ShowQuasiModal
#define ENDQUASIMODAL EndQuasiModal
#else
#define SHOWQUASIMODAL ShowModal
#define ENDQUASIMODAL EndModal
#endif
/**
@@ -84,11 +75,6 @@ public:
protected:
#if !wxCHECK_VERSION( 2, 9, 4 )
wxWindow* CheckIfCanBeUsedAsParent( wxWindow* parent ) const;
wxWindow* GetParentForModalDialog( wxWindow *parent, long style ) const;
#endif
std::string m_hash_key; // alternate for class_map when classname re-used.
// variables for quasi-modal behavior support, only used by a few derivatives.
+16 -8
View File
@@ -68,7 +68,8 @@ public:
m_nickname( aNickname ),
m_fpname( aFootprintName ),
m_num( 0 ),
m_pad_count( 0 )
m_pad_count( 0 ),
m_unique_pad_count( 0 )
{
#if !USE_FPI_LAZY
load();
@@ -93,6 +94,12 @@ public:
return m_pad_count;
}
unsigned GetUniquePadCount()
{
ensure_loaded();
return m_unique_pad_count;
}
int GetOrderNum()
{
ensure_loaded();
@@ -121,16 +128,17 @@ private:
/// lazily load stuff not filled in by constructor. This may throw IO_ERRORS.
void load();
FOOTPRINT_LIST* m_owner; ///< provides access to FP_LIB_TABLE
FOOTPRINT_LIST* m_owner; ///< provides access to FP_LIB_TABLE
bool m_loaded;
wxString m_nickname; ///< library as known in FP_LIB_TABLE
wxString m_fpname; ///< Module name.
int m_num; ///< Order number in the display list.
int m_pad_count; ///< Number of pads
wxString m_doc; ///< Footprint description.
wxString m_keywords; ///< Footprint keywords.
wxString m_nickname; ///< library as known in FP_LIB_TABLE
wxString m_fpname; ///< Module name.
int m_num; ///< Order number in the display list.
int m_pad_count; ///< Number of pads
int m_unique_pad_count; ///< Number of unique pads
wxString m_doc; ///< Footprint description.
wxString m_keywords; ///< Footprint keywords.
};
+8 -2
View File
@@ -112,10 +112,12 @@ public:
virtual void DrawRectangle( const VECTOR2D& aStartPoint, const VECTOR2D& aEndPoint );
/// @copydoc GAL::DrawPolyline()
virtual void DrawPolyline( std::deque<VECTOR2D>& aPointList );
virtual void DrawPolyline( const std::deque<VECTOR2D>& aPointList ) { drawPoly( aPointList ); }
virtual void DrawPolyline( const VECTOR2D aPointList[], int aListSize ) { drawPoly( aPointList, aListSize ); }
/// @copydoc GAL::DrawPolygon()
virtual void DrawPolygon( const std::deque<VECTOR2D>& aPointList );
virtual void DrawPolygon( const std::deque<VECTOR2D>& aPointList ) { drawPoly( aPointList ); }
virtual void DrawPolygon( const VECTOR2D aPointList[], int aListSize ) { drawPoly( aPointList, aListSize ); }
/// @copydoc GAL::DrawCurve()
virtual void DrawCurve( const VECTOR2D& startPoint, const VECTOR2D& controlPointA,
@@ -381,6 +383,10 @@ private:
/// Prepare the compositor
void setCompositor();
/// Drawing polygons & polylines is the same in cairo, so here is the common code
void drawPoly( const std::deque<VECTOR2D>& aPointList );
void drawPoly( const VECTOR2D aPointList[], int aListSize );
/**
* @brief Returns a valid key that can be used as a new group number.
*
+8 -3
View File
@@ -105,7 +105,8 @@ public:
*
* @param aPointList is a list of 2D-Vectors containing the polyline points.
*/
virtual void DrawPolyline( std::deque<VECTOR2D>& aPointList ) {};
virtual void DrawPolyline( const std::deque<VECTOR2D>& aPointList ) {};
virtual void DrawPolyline( const VECTOR2D aPointList[], int aListSize ) {};
/**
* @brief Draw a circle using world coordinates.
@@ -140,6 +141,7 @@ public:
* @param aPointList is the list of the polygon points.
*/
virtual void DrawPolygon( const std::deque<VECTOR2D>& aPointList ) {};
virtual void DrawPolygon( const VECTOR2D aPointList[], int aListSize ) {};
/**
* @brief Draw a cubic bezier spline.
@@ -635,8 +637,11 @@ public:
{
gridOrigin = aGridOrigin;
gridOffset = VECTOR2D( (long) gridOrigin.x % (long) gridSize.x,
(long) gridOrigin.y % (long) gridSize.y );
if( gridSize.x == 0.0 || gridSize.y == 0.0 )
gridOffset = VECTOR2D(0.0, 0.0);
else
gridOffset = VECTOR2D( (long) gridOrigin.x % (long) gridSize.x,
(long) gridOrigin.y % (long) gridSize.y );
}
/**
+4 -2
View File
@@ -3,7 +3,7 @@
*
* Copyright (C) 2012 Torsten Hueter, torstenhtr <at> gmx.de
* Copyright (C) 2012 Kicad Developers, see change_log.txt for contributors.
* Copyright (C) 2013-2015 CERN
* Copyright (C) 2013-2016 CERN
* @author Maciej Suminski <maciej.suminski@cern.ch>
*
* Graphics Abstraction Layer (GAL) for OpenGL
@@ -113,10 +113,12 @@ public:
virtual void DrawRectangle( const VECTOR2D& aStartPoint, const VECTOR2D& aEndPoint );
/// @copydoc GAL::DrawPolyline()
virtual void DrawPolyline( std::deque<VECTOR2D>& aPointList );
virtual void DrawPolyline( const std::deque<VECTOR2D>& aPointList );
virtual void DrawPolyline( const VECTOR2D aPointList[], int aListSize );
/// @copydoc GAL::DrawPolygon()
virtual void DrawPolygon( const std::deque<VECTOR2D>& aPointList );
virtual void DrawPolygon( const VECTOR2D aPointList[], int aListSize );
/// @copydoc GAL::DrawCurve()
virtual void DrawCurve( const VECTOR2D& startPoint, const VECTOR2D& controlPointA,
+2 -5
View File
@@ -88,11 +88,8 @@ private:
class KIWAY_EXPRESS;
#if wxCHECK_VERSION( 2, 9, 4 )
#define WX_EVENT_LOOP wxGUIEventLoop
#else
#define WX_EVENT_LOOP wxEventLoop
#endif
#define WX_EVENT_LOOP wxGUIEventLoop
class WX_EVENT_LOOP;
+11 -3
View File
@@ -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.
-4
View File
@@ -77,11 +77,7 @@ static inline wxString FROM_UTF8( const char* cstring )
*/
static inline const wxChar* GetChars( const wxString& s )
{
#if wxCHECK_VERSION( 2, 9, 0 )
return (const wxChar*) s.c_str();
#else
return s.GetData();
#endif
}
/// # of elements in an array
+11 -2
View File
@@ -495,6 +495,16 @@ public:
*/
bool OnHotkeyRotateItem( int aIdCommand );
/**
* Function OnHotkeyFlipItem
* Flip the item (text or footprint) found under the mouse cursor
* @note This command can be used with an item currently in edit.
* Only some items can be rotated (footprints and texts).
* @param aIdCommand = the hotkey command id
* @return true if an item was moved
*/
bool OnHotkeyFlipItem( int aIdCommand );
/**
* Function OnHotkeyBeginRoute
* If the current active layer is a copper layer,
@@ -1105,9 +1115,8 @@ public:
* The ratsnest and pad list are recalculated
* @param aModule = footprint to delete
* @param aDC = currentDevice Context. if NULL: do not redraw new ratsnest
* @param aAskBeforeDeleting : if true: ask for confirmation before deleting
*/
bool Delete_Module( MODULE* aModule, wxDC* aDC, bool aAskBeforeDeleting );
bool Delete_Module( MODULE* aModule, wxDC* aDC );
/**
* Function Change_Side_Module
-32
View File
@@ -34,9 +34,6 @@
#include <wx/xml/xml.h>
#if !wxCHECK_VERSION( 2, 9, 0 )
#define wxXmlAttribute wxXmlProperty
#endif
/**
* Class XNODE
@@ -98,35 +95,6 @@ public:
*/
virtual void FormatContents( OUTPUTFORMATTER* out, int nestLevel ) throw( IO_ERROR );
#if !wxCHECK_VERSION( 2, 9, 0 )
// The following functions did not appear in the base class until recently.
// Overload them even if they are present in base class, just to make sure
// they are present in any older base class implementation.
//-----<overloads>---------------------------------------------------------
wxString GetAttribute( const wxString& attrName, const wxString& defaultVal ) const
{
return GetPropVal( attrName, defaultVal );
}
bool GetAttribute( const wxString& attrName, wxString *value ) const
{
return GetPropVal( attrName, value );
}
void AddAttribute( const wxString& attrName, const wxString& value )
{
AddProperty( attrName, value );
}
bool DeleteAttribute( const wxString& attrName )
{
return DeleteProperty( attrName );
}
wxXmlAttribute* GetAttributes() const
{
return GetProperties();
}
//-----</overloads>--------------------------------------------------------
#endif
};
#endif // XATTR_H_
+2
View File
@@ -25,6 +25,8 @@ set( KICAD_SRCS
if( MINGW )
# KICAD_RESOURCES variable is set by the macro.
mingw_resource_compiler( kicad )
else()
set( KICAD_RESOURCES kicad.rc )
endif()
if( APPLE )
+2 -1
View File
@@ -173,7 +173,8 @@ void TREEPROJECT_ITEM::Activate( TREE_PROJECT_FRAME* prjframe )
wxString fullFileName = GetFileName();
wxTreeItemId id = GetId();
KICAD_MANAGER_FRAME* frame = (KICAD_MANAGER_FRAME*) Pgm().App().GetTopWindow();
KICAD_MANAGER_FRAME* frame = prjframe->m_Parent;
wxASSERT( frame );
switch( GetType() )
{
+12 -2
View File
@@ -6,7 +6,7 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2012 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2013 CERN (www.cern.ch)
* Copyright (C) 2004-2015 KiCad Developers, see change_log.txt for contributors.
*
@@ -249,7 +249,17 @@ void KICAD_MANAGER_FRAME::TERMINATE_HANDLER::OnTerminate( int pid, int status )
wxString msg = wxString::Format( _( "%s closed [pid=%d]\n" ),
GetChars( appName ), pid );
( (KICAD_MANAGER_FRAME*) Pgm().App().GetTopWindow() )->PrintMsg( msg );
wxWindow* window = wxWindow::FindWindowByName( KICAD_MANAGER_FRAME_NAME );
if( window ) // Should always happen.
{
// Be sure the kicad frame manager is found
// This dynamic cast is not really mandatory, but ...
KICAD_MANAGER_FRAME* frame = dynamic_cast<KICAD_MANAGER_FRAME*> (window);
if( frame )
frame->PrintMsg( msg );
}
delete this;
}
+2
View File
@@ -50,6 +50,8 @@ set( PL_EDITOR_EXTRA_SRCS
if( MINGW )
# PL_EDITOR_RESOURCES variable is set by the macro.
mingw_resource_compiler( pl_editor )
else()
set( PL_EDITOR_RESOURCES pl_editor.rc )
endif()
+3 -2
View File
@@ -237,8 +237,9 @@ void WORKSHEET_LAYOUT_IO::format( WORKSHEET_DATAITEM_TEXT* aItem, int aNestLevel
m_out->Print( 0, " (%s %s)", getTokenName( T_rotate ),
double2Str(aItem->m_Orient ).c_str() );
// Write font info
bool write_size = aItem->m_TextSize.x != 0.0 && aItem->m_TextSize.y != 0.0;
// Write font info, only if it is not the default setup
bool write_size = aItem->m_TextSize.x != 0.0 || aItem->m_TextSize.y != 0.0;
if( write_size || aItem->IsBold() || aItem->IsItalic() )
{
m_out->Print( 0, " (%s", getTokenName( T_font ) );
+2
View File
@@ -40,6 +40,8 @@ set( PCB_CALCULATOR_SRCS
if( MINGW )
# PCB_CALCULATOR_RESOURCES variable is set by the macro.
mingw_resource_compiler( pcb_calculator )
else()
set( PCB_CALCULATOR_RESOURCES pcb_calculator.rc )
endif()
if( APPLE )
+120 -64
View File
@@ -1,69 +1,125 @@
/* XPM */
static const char *microstrip_zodd_zeven_xpm[] = {
const char *microstrip_zodd_zeven_xpm[] = {
/* columns rows colors chars-per-pixel */
"119 47 16 1",
"& c #686A26",
"+ c #080808",
"# c #9E9E99",
"@ c #6B5760",
"$ c #272726",
"O c #797071",
"X c #575846",
"; c #990922",
"o c #543C40",
"* c #7D7D03",
"% c #747449",
"239 103 16 1",
"o c #594142",
"$ c #7B7070",
": c #95273A",
"X c #282815",
"& c #3F3F13",
"* c #575709",
"% c #515246",
"@ c #65655A",
" c None",
". c #838382",
"= c #0B209D",
": c #94273A",
"- c #53530F",
"+ c #838383",
"# c #6E5460",
". c #9F9E9E",
"= c #7F7F02",
"O c #040303",
"; c #9A031D",
"- c #051AA6",
/* pixels */
" .XooXooo. O....... O+++++++o OOOOOOO@",
" o+++++++O ++++++++ O+++++++o #++++++++",
" X+oOO.O.# oXoooo++# O+X ++oXoX@X",
" o+. ++ @+@ #++ ",
" o+O ++# O+X #+$ ",
" ##.#.$+. ++# @XoXo$+@ #++ ",
" #+++++++. +++++++X +++++++@ o++++++$ ",
" #$$$$o$o# $++++++o OOOO...# X++++++$ ",
" ",
" %%%&%&%%%%%%%X .%%%%%%%%%%%%X #&&&&&&&&&&&&&$ %&%&%&%&%&%%&X ",
" &***&=@******--# %****X=&*****-- #&***o==******-& &***&==X*****-% ",
" %**X====*****&*- .****X==@*****&& #***====@*****-*& &**X====&****-*% ",
" &**======*****-**# .****&===*****&*% #&**=====X****-**& &**&=====****-**% ",
" %***X====&****-**& .****&===*****-**% #****X====****-***% %****o====****-**# ",
" &****o====****-***# .*****===&****-**% #&****=====***-***& %****&====@***-**O ",
" %****X===@=***-***. .*****===X****-**&# #*****===X=@***&**& %*****===&=X**-**& ",
" &****&===*****-***. #*****o==o****-***. #&****o==o*****-**&# %*****===X****-**& ",
" %****&===*****-***O #***X====@*****&**O #*****X==@*****-***# %*****===X****-**&# ",
" &*****===&****-***% #&***=====*****&**% #&****&===*****-***. %*****o==@****-***. ",
" %*****===X****-***& #*****====o****-**& #*****&===*****-***. O*****X===*****&**% ",
" &*****@==@****-&**& #&*****=====&**-***# #******===&****-***% .*****&===*****-**% ",
" %*****&==o****&&**& #&*****X===X***-***. #&*****X==&****-***XOOX******@==*****-**&.#### ## ",
" &*******o@*****-***# #&******XoX****&***O #********oX****--**-$o$********o&****--*-$+$+$++++$",
" &**************-***. -**************-**X.......OO .--*-*&*-*&*-*--&**&..X---*--*-*-*-*--***X........$O",
" %--------*------***++++---------------**-$$$$$o$o$+. %**************-**-O..X**************-**X........X$ ",
" .**************-**XO..%**************-*&O........oo %**************-**O...&**************-*&O........+# ",
" .**************-*X....X**************-*X........O+# %**************-*@....X**************--O........o@ ",
" .**************-X.....X**************-X.........+. %**************-@.....&**************-@........@+# ",
" #%%%O%%O&O%.&$XXO.....OXXXXXXXXXXXXXXo.........oo #O.....%.X$X@@X@......@@X@@X@X@X@X@X@@.........$. ",
" @;O #+O................................@$# #;:+O...............O...................X$ ",
" O;;;.+@.................................+. :;;:...................................O+# ",
" :;;;;@.................................$X @;;;;@.....OOOO.........................$@ ",
" .::;;;@..@;:;:;..........@:....@;......@$# :;;;::...:;;;;:........................@$ ",
" :;:....O@@:;:..........o;....@;......+. .+;:......OO:;@..O...O......O....O.O...+. ",
" ;;@.......;;..@:;:..O:::;.O:;:;.....$@ #+@;:O......@;:..:;;@O;@.:;.:;;@O:::;;.oo ",
" $;;@......:;O..;:O::.;:O;:.;:O:;....@+ $@@;:......O;:..O;.@;.::O;@O;O@;O@;O@;@$# ",
" o$:;@.....:;@..@;O.o;O;@.:;.;@.:;...O+# o$.O;:.....O;;...:;;:;OO;@;.o;;::O::.O;+O ",
" X$.:;@...O@;o...O;@.::.;@.::.;@.:;...$@ O$..@;:.....:;@@OO@;O@@..;;:.O;OO:.:;.O;$ ",
" @$O.:;@....:;;;;;.:;;;O.:;;;;.@;;:;..@$ #+O..@;:.....;;;;;;.:;;o..o;@..:;;o.o:.@;. ",
" O$O..:;@O...O@O@@@..O@....OOOO..O@O@.O+# +@...O;:.............O..........O......$@ ",
" .+O:;;;;;;;O..........................$@ $o.@;;;;;;;@...........................@+ ",
" .+O.:;;;;;;;O.........................X$ @$..@;;;;;;;o..........................O$. ",
" #+O...OO.O.O..........................O+# .+....OOOOOOO...........................oo ",
" #+@....................................$O #+O.....................................O+# ",
"#$@....................................Xo +@......................................$O ",
"$+$o$o$oooooooooooo$oooo$oo$oo$o$o$oo$$+# o$XX@X@X@XX@XX@@X@@@XO@@@O@O@O@O@O@O@O@Oo$ ",
"..OO.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..# Oooooooooooooo$oo$o$o$$o$$$$$$$$$$$$$$$$+# "
" . . .... .XoXXXXXXXXOXOXOO. ",
" .OOOOOOOOOOOOOOOO+ +@#@@$@$$$$$+$++. .OOOOOOOOOOOOOOOO. .#@#%#%%o%ooooooo",
" OOOOOOOOOOOOOOOO. XOOOOOOOOOOOOOOO% +OOOOOOOOOOOOOOOO. +OOOOOOOOOOOOOOOO",
" .OOOOOOOOOOOOOOOO. oOOOOOOOOOOOOOOOo .OOOOOOOOOOOOOOOO. +OOOOOOOOOOOOOOOO",
" OOOOOOOOOOOOOOOO+ XOOOOOOOOOOOOOOO% .OOOO+$$+$+++++++ +OOOOOOOOOOOOOOOO",
" .OOOO........ . . %oXoXoXXXXXXOOOOo .OOOO +OOOO#o%%%%#%@#@@",
" .OOOO %OOO% +OOOO +OOOX ",
" .OOOO @OOOo .OOOO +OOOO ",
" .OOOO #OOOo +OOOO +OOOX ",
" .OOOO @OOOo +OOOO +OOOX ",
" .OOOO @OOOo .OOOX $OOOX ",
" .OOOO @OOOo . .$OOOO +OOOX ",
" ..+.++++++@OOOO @OOOo $OOOOOOOOOOOOOOX $OOOX ",
" +OOOOOOOOOOOOOOO @OOOOoooo%o%%%#$ +OOOOOOOOOOOOOOO +XXXXXXXXOXOOOOX ",
" +OOOOOOOOOOOOOOO @OOOOOOOOOOOOOOX +OOOOOOOOOOOOOOX @OOOOOOOOOOOOOOX ",
" .OOOOOOOOOOOOOOO $OOOOOOOOOOOOOOX +OOOOOOOOOOOOOOX $OOOOOOOOOOOOOOX ",
" +OOOOOOXOXOXXXXo $OOOOOOOOOOOOOOX ........ . @OOOOOOOOOOOOOO& ",
" .$$@$@@@%@%%%%%@ .$$$$$$$+++++.+. ",
" ",
" . ",
" .%%%%%%%%%%%%%%%%%%@%%@%@@@%+ ++$++++++++++++++.++...+..+. $&***&*&*&&&&*&*&*%&*&%&&&oX% %%&%%&%%%%%%%%*%%%%%%%%%%%&$ ",
" .&=========================*X% +**==*=*=***=**=*=**=******O. .*==========================X& %==========================O+ ",
" .&==========%#==============X*@ +*=========o-%=============X&. .&=========%--==============X=o $*=========*#--============X*+ ",
" &========*----=============&*=@ .*=========----@===========**& .&========-----=============X==% +*========%-----===========&**. ",
" &=======%------============*&==@ .o=========------==========*&=& .&=======-------============&*==% .&=======%------#==========**=*. ",
" o======%--------===========*X===% &=========#-----%==========X==& &=====*---------===========*&===& .&======o--------%=========*X==& ",
" %=====%---------%===========X====@ &=========%------==========X===& .&====%----------#==========*&====% &=====#----------==========X===& ",
" %=====-----------===========X=====% %==========------==========&*===& o=====o----------*==========X=====% &======-----------=========X====& ",
" @*=====@----------==========X======@ @*=========------%=========*&====o o=======#---------==========X======% o========----------========**====* ",
" $*=======*---------=========&*=====*+ $*=========------#==========X=====% %=========o--------=========&*=====*+ %==========--------%========X====*o ",
" +*=========--------#========*&=====*% .*=========%------==========X=====&. @*=========--------#========**=====*@ $*=========%--------%=======X=====& ",
" .*=========o--------%=======*X======o .&=========%------==========&*====*+ $*=========---------%=======*&=====*% +*==========---------=======&*====&. ",
" .&=========@---------========X======&. .&==========------@=========*&====*% +*=========%---------@======*X======o .&==========----------======**====*$ ",
" .&=========*------#---=======X======&. &==========------%==========X=====& +*=========%------%---=======X======&. .&==========------%@---=====*X=====& ",
" .&==========------%=%--======&*=====*+ o==========#------==========X=====&. .&==========------===--======X======*+ &==========%------===-#=====X=====& ",
" &==========------#===@%=====&*=====*% o==========%------==========&*====*$ .&==========------%==========&*=====*$ &==========%------==========X=====*+ ",
" .&==========o------==========*X======% @======%====------==========*&=====% .&==========o-----#==========*&=====*% o===========------%=========**====*@ ",
" o==========%------===========X======&. $*=====%--==------%==========X=====o. &==========#------==========*&======o @===========------%=========*X=====& ",
" %===========------*==========X======&. .*======#---------#==========X=====*+ &==========*------===========X======&. $*==========#-----#==========X=====&. ",
" %===========------%==========X*=====*$ .&=======----------==========&*====*# &===========------%==========X======&. +*==========%------==========X=====*$ ",
" @*==========o-----#==========&*=====*@ .&========---------==========*&=====& o===========------%==========X*=====*$ .&===========------==========*&=====o ",
" $*==========#------==========*&======& &========%--------*==========X=====&. %===========#-----#==========&*=====*% .&===========------%=========*X=====X ",
" +*==========*------==========*X======& &=========%--------%=========X=====*+ @*==========%------==========*&======o &===========------%==========X=====*. ",
" +*===========------%==========X======&. %==========o---------%=======&*=====o $*===========------==========*X======&. &===========o------==========X=====*@ ",
" .&===========------o==========X======*+ @*==========-----------======*&=====& $*===========------%==========X======&. o===========@------==========*&=====o ",
" .&===========#-----#==========X*=====*@ +*===========----------%=====*X=====&. +*===========------#==========X======*$ @============------==========*X=====&. ",
" .&============------==========&*======o .&===========@--------========X=====*@ .&============------==========X*=====*@ @*===========%-----%==========X=====*+ ",
" &============%-----==========*X======& .&============%-----#=========&*=====& .&============%-----==========&&======Xoo%o%o*============%----#==========X*=====o........... . . ",
" X==============----%==========X======&. .&=============o---#==========*&=====& .&==============#---%=========*X======OOOOOOOX==============----==========&&=====XOOOOOOOOOOOOOOOOOO$",
" &===============%o-%==========X======*+ &==============%#%============X=====*+ &================%%==========*X======&o%oo%oX================*%==========*X=====&OOOOOOOOOOOOOOOOOOOX",
" %=============================X*=====*@ &=============================X======% X=============================X======*%++++$X=============================X=====*%++++++++++++++++$OO@",
" %*============================&*======% %*============================X*=====& . . ......... &=============================X*=====*o+++++X=============================X*=====X+++++++++++++$+++oOO ",
" %X&X&&&&&&&&&&&&&&&&&&&&&&&&&&X&======&+++++oX*&&&&&&&&&&X&X&&X&X&X&X&X&X&X&=====XOOOOOOOOOOOOOOOOOOOO %XXXX&XX&X&X&X&X&X&X&X&X&X&XX&X*======&+++++oXXXXXX&XX&XX&XX&XX&XX&X&X&XXXX&=====&$++++++++++++++++$OO+ ",
" %*============================X======XOOOOOOO****=*=*==*==================X=====*OOOOOOOOOOOOOOOOOOOOO+ %=============================&*=====X$+++++o=============================&=====&#++++++++++$++++++oOX ",
" &=============================X=====&OXOXOXXX=============================X=====X$$$$$+$+$+++++++++XOo %=============================&=====&$+++$++&=============================&*====o+++$+++++++++++++@OO. ",
" %=============================X====*o+$+++++&=============================X====X$+++++++++++++++++#OO. %=============================&*===*#+$+++++o=============================&====X$+++++++$+++++++++XO% ",
" &=============================X====o++++++++&=============================X===*@++++++++++++++++++OO@ %=============================&===*o++++++++&=============================&*==&$+++++++++++++++++#OO. ",
" %=============================X===X$++++++++&=============================X==*o+++$+++$++++++++++XOX @=============================&*==&+++++++++o=============================&==*%++++++++++++++++++OO# ",
" &=============================X==&$+++++++++X=============================X==X+++++++++++++$++++@OO. @=============================&*=X+$++++++++o=============================&*=&+++++$+++++++$++++oOX. ",
" %=============================X=&@++++++++++o=============================X=&$++++++++++++++++++OO% @*============================**&$++++++$+++%*============================&*X$++++++++++++++++++OO$ ",
" o=============================X*%+++++$+++++X=============================X*%++++++++++++++++++oOX. @=============================&X@+++++++++++o=============================*X@++++++++++$+++++++XOX ",
" o=*=*=*=*=*=*=*=*=*=*=*=*=*=*=XX++++++++++++&=*===*===*==*==*==*===*======XX++++++++++++$+++++$OO$ $X&&&&&&&&&&&&&&&&&&XXX&X&&&X&XX++++++++++++%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&XX++++$+++++++++++++$OO+ ",
" +$@@$@@$@$@$@$$o#$$$$$$$oOOo%%%$++++++++++++@oooooooooo%ooooooooooooooooooo$++++++++++++++++++XOo .+ .OO#++++++++++++$++++++++++$+$++++$++$+$+$+$+$+$+$+$+$+$++$+++++++++++++++++XOo ",
" .;; +OOo+++++++++++++++++$++++++++++$++++++++++++++++++++++++$+++$++++++++#OO. :;. XOX$++++$+++++++++++++$+++++++++$+++++++++++++++++++++++++++++++++$++++++++@OO. ",
" ;;;: .OOo$++++++++++++++++++++++++++++++++++++++++++$+++++++$+++++++++++++++OO$ $;;:oOO+++++++++++++++++++++++++$++++++++$++++++++++++++++++++++++++++++++++++++OO# ",
" #;;;;+ OOX++++++++++++++++$+++++$+++$++++++++++++++++++++++++++++++++++++++++XOX. .;;;;OO@+++++++++++++++++++++++++++++++++++++++++++++$++++++++++++++++++++++++++oOX. ",
" .;;;;;;. XOX$+++++++++++++++++++++++++++++++++$+++$++++++++++++++++++++++++++++#OO. :;;;;;:++++++++++$++++++++++++++++++++++++++++$++++++++++++++++++++++++++++++++$OO$ ",
" :;;;;;;:oOO$++++++++++++++++++++++++++++++++++++++++++$+++++++++++++++++++$+++$XOo +;;;;;;;++++++++++++++$++++++++++++++++++++++++++++$++++++$+++++++$+++$++++$+++$oOX ",
" #;;;;;;;;OO@+++++++++++++++++++++++++++++++$++++++++++++++++++++++++++$++++++++oOO .;;;;;;;;:+++++$+++++++++++$+++$+++++++$+++$++++++++++++++++++$+++++++++++++++++$OO+ ",
" .;;;;;;;;;;o+++++++++++++++++++++++$+++++++++++++++++++++++++++++++++++++++++++$OO$ :;;;;;;;;;#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XOo ",
" ;;;;;;;;;;;:++$+++#:#:o:o:o:#$++++++++++$+++++++++#o#+++++++++##:$+++++++++++++XOo $;;;;;;;;;;;+++++++#;;;;;;;;;;$++++$++++++++++++$+++++++$+++++++++++++++++++++++#OO. ",
" +#$:;;;;O:::++++++o;;;;;;;;;;+++++++++++++++++++++;;;+++++++++:;;$++$+++++++++#OO. +::;;;;;;;;;$$+++++$;;;;;;;;;;$+++++++++++++++++++++++++++++++++++++++++++++++++XO% ",
" $;;;;X$++++++++o;;;;;;;;;;+++++++++++++++++++++:;;+++++++++o;;$++++++++++++OO$ +O;;;;$++++++++++#::::o:;;;;$++++++++++++++++++++++++++++++++++++++++++++++++%OO ",
" $;;;;$++++++++++$$$$$$;;;:++++++++$++++++++++++;;;+++++++++:;;$+++++++++++XOX. OO;;;;$++++++++++++++++#;;;#++++++++$+++++++++++++++++++++++++++++$+++++++++$OO@ ",
" +;;;;++++$++++$++++++;;;:$+++++###$+++++++$##$+:;;+++++###+:;;$+++++$++++#OO. XOX;;;;$+++++++$+++++++$;;;:+++++::;:#+++:::$++++:::+++#:;::$+++$::$$:;::++++oOX ",
" o;;;:+++++++++++++++:;;;$++++#;;;;;:+++++#;;;;::;;+++$;;;;::;;$+++++++++$XOo @OO$;;;;$+++++++++++++++:;;:$++++;;;;;;:++#;;o+++#;;o++:;;;;;:$++#;;:;;;;;:++$OO+ ",
" +O;;;;++++++++++++++#;;;#++++$;;;;;;;;+++#;;;;;;;;;+++;;;;;;;;;$+$+++++++oOO +OO#+;;;;$+$++++++++++++:;;;$++++:;;:#:;;#+$;;:+++:;;$+#;;;#:;;:++$;;;:#:;;;++XOo ",
" .OO;;;:+++++++++++++$;;;:+++++;;;:$#:;;o++:;;:+$:;;;++o;;:$+o;;;$++++++++$OO$ XOX+$;;;;$+++++++++++++#;;;#++++$;;:+++;;:++:;;$+$;;:++:;;$++:;;$+#;;;+++:;;$@OO. ",
" .XO;;;;;+++++++$+++++:;;:+++++#;;:+++$;;;++;;:+++$;;;++:;;$+++;;;$++++++++XOo oOO+++;;;;$+++++$++++++$;;;:+++++#;;:+$$:;;++#;;#+#;;#++;;;+$$#;;#+#;;:+++:;;$OO# ",
" XOX#;;;;++$+++++++++:;;;$+++++#;;#++++:;;$$;;:++++;;;++;;;++++:;;$+++++++#OO. +OO@++$;;;;$++++++++++++:;;:++++++#;;;;;;;;;$++;;:+:;;++$;;;;;;;;;#+$;;:+++:;;oOO. ",
" oOO$#;;;:+++++++++++#;;;#++++++o;;#++++:;;$#;;:++++:;;++;;;++++:;;$+++++++OO@ .OOo++++;;;;$+++++++++++o;;;$++++++#;;:::::::$++:;;$;;:++$;;;::::::#+#;;#+++#;;OO$ ",
" #OO@+#;;;;++++++++++$;;;o+++++++#;;o++++:;;++;;;++++;;;++:;;++++:;;$++++++XOX XOX+++++;;;;$$+++++++++#;;;#+++++++#;;:+++++++++$;;:;;#+++;;;++++++++#;;:+++:;;OX ",
" $OO%++#;;;;++++++$+++:;;:++++++++$;;:+++$;;;++;;;+++#;;;++:;;#+++;;;$+$+++@OO+ #OO$+++$+;;;;$+++++++++$;;;:$$$$$$$++;;;+++;;o++++;;;;;++++:;;$++:;:$+$;;#+++o;;O+ ",
" .OOo+++#;;;;+++++++++#;;;::::::::$+:;;;##;;;#++o;;:$#;;;;++#;;;$#;;;;$+++++OOo .OO%++++++;;;;$++++$++++$;;;;;;;;;;;:+:;;;::;;:++++#;;;:++++#;;;::;;;++#;;:+++:;;X ",
" .OOX++++#;;;:+++++++++#;;;;;;;;;;;#+$;;;;;;;:+++$;;;;;;:;;+++:;;;;;:;;$++++oOO OOo+++++++;;;;$+++++++++$;;;;;;;;;;;#+$:;;;;;:+++++$;;;$++$++#;;;;;;$++#;;#+++:;;+ ",
" XOX+++++#;;;;+++++++++#;;;;;;;;;;;#++$:;;;;o+++++$:;;;$:;;+++$:;;;##;;$+++$OO$ oOX$+++++++;;;;$+++++++++$#:#:#:#:#:##+++#o::#++$++++#:#+++++++##::o$+++$#o#+++XO:. ",
" XOO++++++#;;;;+++++++++++++++++++++++++++$$+++$+++$+$$+$++++++++$$+++++++++XOo +OO@++++++++;;;;$++++++++$+++$++++++$+++$+++$++++++++$+++++++++++$+++++++$+++++%OO ",
" %OO$$+$+$$#;;;;$$$$$$++++++++++++++++++$+++++++++++++++++++++++++++++++++++#OO. .OOo+++++++++;;;;$+++++++++++++++$+++++++++++++++++++++++$++++++++++++++++++++++OO# ",
" @OO#+#;;;;;;;;;;;;;;;o++++++++++++++++++++++++++++++++++++++++++++++++++++++OO# XOX+++$:;:;:;;;;;;;;;;:++++++++++++++++++++++++++++++++++++++++++++++++++++++++oOX ",
" +OOo++o;;;;;;;;;;;;;;;#+++++++++++++++$+++++++++++++++++++++++++++++++$+++++XOX #OO$+++$;;;;;;;;;;;;;;;:++++++++++++++++++++++++++++$+++++++++++++++++++$++++++$OO+ ",
" .OOo+++#;;;;;;;;;;;;;;;o+++++++++++++++++++++$+++++++++++++++++$+++$++++++++@OO+ .OO%++++$;;;;;;;;;;;;;;;:$+++$++++++++++++++++++++++++++++++++$+++$+++++++++++++XOX ",
" OOX++++#;;;;;;;;;;;;;;;#+++$+++$+++$++++++++++++$+++$+++$+++++++++++++++++++OOo OOo+++++$;;;;;;;;;;;;;;;:++++++++++++$+++$+++$+++$+++++++++++++++++++++++++++++#OO. ",
" XOX$++++$$$$$+$+$+$++$+++$++++++++++++++++$++++++++++++++++++$++++++++++++++oOO oOX$++++++##########$##$#$+++++++++++++++++++++++++++++++++++++++++++++$++++++++XO% ",
" oOO$++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$OO$ +OO@+++++++++++++++++++++++++++++++$+++++++++++++++++++++$+++$++++++++++++++++++#OO. ",
" #OO@+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XOo .OOo++++++++++++++++++++++++++$++++++++++++++++++++++++++++++++++++++++++++++++++OO$ ",
" $OO%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#OO. XOX+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$+++$+++++++++oOO ",
" .OOo++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++OO@ #OO$++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$OO+ ",
" .OOo++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XOX +OO#+++++++++++++++++++++++++++++++++++++$+++++++++++++++++++++++++++++++++++++++XOX ",
".XOX$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@OO+ .XOo+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@OO. ",
"oOOooooooooooooooooooooooo%o%oo%oo%o%o%o%o%o%o%o%%o%%%o%%%%%%%%%%%%#%%%ooooXoXOOo oOX+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$XOo ",
"XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOXOOXOOXOXOXOXOXXOXXXXXXXXXXXXXXXXXXXXXXXXXXoXXoXXoXoXoXooXooXooOO ",
"+%%%%%%o%%o%%o%o%o%o%oo%oooooooooooooooooooooooooooooooooooXoooXooXooXoo%%#@@$$. XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@ ",
" ....................+..+.+.+.++.+++++++++++++++$+$+$+$$$$$$$$$$$$$@$@$@$@@@@@@#XX "
};
@@ -10,12 +10,15 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="120"
height="52"
width="240"
height="104"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="microstrip_zodd_zeven.svg">
sodipodi:docname="microstrip_zodd_zeven.svg"
inkscape:export-filename="E:\kicad-launchpad\testing\pcb_calculator\bitmaps\microstrip_zodd_zeven.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs4">
<linearGradient
@@ -41,9 +44,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.0963465"
inkscape:cx="55.447239"
inkscape:cy="12.507837"
inkscape:zoom="5.6083333"
inkscape:cx="120"
inkscape:cy="59.132244"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
@@ -51,7 +54,9 @@
inkscape:window-height="842"
inkscape:window-x="223"
inkscape:window-y="171"
inkscape:window-maximized="0" />
inkscape:window-maximized="0"
showborder="true"
inkscape:showpageshadow="false" />
<metadata
id="metadata7">
<rdf:RDF>
@@ -60,7 +65,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@@ -68,266 +73,272 @@
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1000.3622)">
<path
style="fill:#828282;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
d="m 0.51238178,1047.6176 c 39.84853122,0.2975 39.06036222,-0.099 39.06036222,-0.099 l -0.199288,0.1992 14.946567,-22.1209 -34.078173,0.4983 z"
id="path3012"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
transform="translate(0,-948.3622)">
<g
id="g5003"
transform="matrix(1,0,0,0.73291858,-8.4471144,278.0582)">
id="g3037"
transform="matrix(2.0058991,0,0,2.1735333,-0.01245482,-1227.6881)"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path3012"
d="m 0.51238178,1047.6176 c 39.84853122,0.2975 39.06036222,-0.099 39.06036222,-0.099 l -0.199288,0.1992 14.946567,-22.1209 -34.078173,0.4983 z"
style="fill:#828282;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
<g
transform="translate(0.35229396,-10.216525)"
id="g4999">
transform="matrix(1,0,0,0.73291858,-8.4471144,278.0582)"
id="g5003">
<g
id="g4999"
transform="translate(0.35229396,-10.216525)">
<path
style="fill:#0017aa;fill-opacity:1;stroke:#9b001b;stroke-width:2.35320044;stroke-linecap:square;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.619655,1051.261 -0.0379,-10.6898"
id="path4835-5-1" />
<path
style="fill:#9b001b;fill-opacity:1;stroke:#9b001b;stroke-width:0.50915164;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.650366,1036.3564 2.924609,5.3618 -5.646349,-0.079 z"
id="path4839-8-4" />
</g>
<path
id="path4835-5-1"
d="m 19.619655,1051.261 -0.0379,-10.6898"
id="path4835-5-1-9"
d="m 22.763027,1043.3097 -5.857755,0.068"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#9b001b;stroke-width:2.35320044;stroke-linecap:square;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path4839-8-4"
d="m 19.650366,1036.3564 2.924609,5.3618 -5.646349,-0.079 z"
inkscape:connector-curvature="0"
style="fill:#9b001b;fill-opacity:1;stroke:#9b001b;stroke-width:0.50915164;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#0017aa;fill-opacity:1;stroke:#9b001b;stroke-width:2.32358861;stroke-linecap:square;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
style="fill:#0017aa;fill-opacity:1;stroke:#9b001b;stroke-width:2.32358861;stroke-linecap:square;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 22.763027,1043.3097 -5.857755,0.068"
id="path4835-5-1-9" />
</g>
<g
id="g3840"
transform="translate(3.4824157,-1.8132564)">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805"
d="m 0.44700789,1027.4531 15.09099111,-0.1708 0.03477,4.4259 -15.0487657,0 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-3"
d="m 15.232526,1012.5609 13.47153,0.1239 -13.172244,14.7178 -15.04876558,0 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-1"
d="m 15.488268,1027.5787 13.215609,-14.9388 0.0093,3.927 -13.147894,15.0997 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g3840-4"
transform="translate(25.440502,-1.7884083)">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-6"
d="m 0.44700789,1027.4531 15.09099111,-0.1708 0.03477,4.4259 -15.0487657,0 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-3-0"
d="m 14.38702,1012.7018 13.260154,0.053 -12.115362,14.6473 -15.04876558,0 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-1-3"
d="m 15.488268,1027.5787 12.088268,-14.9388 -0.272535,3.9975 -11.738718,15.0292 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g4901"
transform="matrix(0.60201967,0.4999142,-0.5122192,0.60410661,561.21213,379.62342)">
<path
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:3;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.728362,1031.4702 v 16.639"
id="path4835" />
<path
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:0.63842267;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.693302,1050.4826 -3.608306,-6.6105 h 7.146014 z"
id="path4839" />
</g>
<g
id="g4901-4"
transform="matrix(-0.60201967,-0.4999142,0.5122192,-0.60410661,-502.34634,1656.1693)">
<path
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:3;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.728362,1031.4702 v 16.639"
id="path4835-5" />
<path
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:0.63842267;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.693302,1050.4826 -3.608306,-6.6105 h 7.146014 z"
id="path4839-8" />
</g>
<g
id="g3880">
<path
inkscape:connector-curvature="0"
id="path4929"
d="m 20.039629,1008.1212 5.495786,-0.071 0.07046,-5.3549 6.059456,-0.07"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<g
id="g3877">
<path
inkscape:connector-curvature="0"
id="path4929-1"
d="m 51.887894,1008.4162 -5.495786,-0.071 -0.07046,-5.3549 -6.059456,-0.07"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#9b001b;fill-opacity:1;stroke:none;font-family:Comic Sans MS;-inkscape-font-specification:Comic Sans MS"
x="17.34667"
y="1040.807"
id="text5009"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5011"
x="17.34667"
<g
transform="translate(3.4824157,-1.8132564)"
id="g3840">
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 0.44700789,1027.4531 15.09099111,-0.1708 0.03477,4.4259 -15.0487657,0 z"
id="path3805"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 15.232526,1012.5609 13.47153,0.1239 -13.172244,14.7178 -15.04876558,0 z"
id="path3805-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 15.488268,1027.5787 13.215609,-14.9388 0.0093,3.927 -13.147894,15.0997 z"
id="path3805-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
<g
transform="translate(25.440502,-1.7884083)"
id="g3840-4">
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 0.44700789,1027.4531 15.09099111,-0.1708 0.03477,4.4259 -15.0487657,0 z"
id="path3805-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 14.38702,1012.7018 13.260154,0.053 -12.115362,14.6473 -15.04876558,0 z"
id="path3805-3-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 15.488268,1027.5787 12.088268,-14.9388 -0.272535,3.9975 -11.738718,15.0292 z"
id="path3805-1-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
<g
transform="matrix(0.60201967,0.4999142,-0.5122192,0.60410661,561.21213,379.62342)"
id="g4901">
<path
id="path4835"
d="m 19.728362,1031.4702 v 16.639"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:3;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path4839"
d="m 19.693302,1050.4826 -3.608306,-6.6105 h 7.146014 z"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:0.63842267;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(-0.60201967,-0.4999142,0.5122192,-0.60410661,-502.34634,1656.1693)"
id="g4901-4">
<path
id="path4835-5"
d="m 19.728362,1031.4702 v 16.639"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:3;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path4839-8"
d="m 19.693302,1050.4826 -3.608306,-6.6105 h 7.146014 z"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:0.63842267;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g3880">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 20.039629,1008.1212 5.495786,-0.071 0.07046,-5.3549 6.059456,-0.07"
id="path4929"
inkscape:connector-curvature="0" />
</g>
<g
id="g3877">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 51.887894,1008.4162 -5.495786,-0.071 -0.07046,-5.3549 -6.059456,-0.07"
id="path4929-1"
inkscape:connector-curvature="0" />
</g>
<text
sodipodi:linespacing="125%"
id="text5009"
y="1040.807"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#9b001b;fill-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold">Zodd</tspan></text>
<path
style="fill:#828282;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
d="m 63.769085,1047.86 c 39.848525,0.2975 39.764945,0.1829 39.764945,0.1829 l 0.36438,0.3401 15.08749,-24.5165 -36.332852,-0.3472 z"
id="path3012-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<g
id="g5003-2"
transform="matrix(1,0,0,0.73291858,55.091424,278.15961)">
x="17.34667"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#9b001b;fill-opacity:1;stroke:none;font-family:Comic Sans MS;-inkscape-font-specification:Comic Sans MS"
xml:space="preserve"><tspan
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#9b001b;fill-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold"
y="1040.807"
x="17.34667"
id="tspan5011"
sodipodi:role="line">Zodd</tspan></text>
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path3012-1"
d="m 63.769085,1047.86 c 39.848525,0.2975 39.764945,0.1829 39.764945,0.1829 l 0.36438,0.3401 15.08749,-24.5165 -36.332852,-0.3472 z"
style="fill:#828282;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
<g
transform="translate(0.35229396,-10.216525)"
id="g4999-3">
transform="matrix(1,0,0,0.73291858,55.091424,278.15961)"
id="g5003-2">
<g
id="g4999-3"
transform="translate(0.35229396,-10.216525)">
<path
style="fill:#0017aa;fill-opacity:1;stroke:#9b001b;stroke-width:2.35320044;stroke-linecap:square;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.619655,1051.261 -0.0379,-10.6898"
id="path4835-5-1-2" />
<path
style="fill:#9b001b;fill-opacity:1;stroke:#9b001b;stroke-width:0.50915164;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.650366,1036.3564 2.924609,5.3618 -5.646349,-0.079 z"
id="path4839-8-4-2" />
</g>
<path
id="path4835-5-1-2"
d="m 19.619655,1051.261 -0.0379,-10.6898"
id="path4835-5-1-9-1"
d="m 22.763027,1043.3097 -5.857755,0.068"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#9b001b;stroke-width:2.35320044;stroke-linecap:square;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path4839-8-4-2"
d="m 19.650366,1036.3564 2.924609,5.3618 -5.646349,-0.079 z"
inkscape:connector-curvature="0"
style="fill:#9b001b;fill-opacity:1;stroke:#9b001b;stroke-width:0.50915164;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#0017aa;fill-opacity:1;stroke:#9b001b;stroke-width:2.32358861;stroke-linecap:square;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
style="fill:#0017aa;fill-opacity:1;stroke:#9b001b;stroke-width:2.32358861;stroke-linecap:square;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 22.763027,1043.3097 -5.857755,0.068"
id="path4835-5-1-9-1" />
</g>
<g
id="g3840-7"
transform="translate(67.443707,-1.9936944)">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-4"
d="m 0.44700789,1027.4531 15.09099111,-0.1708 0.03477,4.4259 -15.0487657,0 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-3-09"
d="m 15.232526,1012.5609 13.47153,0.1239 -13.172244,14.7178 -15.04876558,0 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-1-4"
d="m 15.488268,1027.5787 13.215609,-14.9388 0.0093,3.927 -13.147894,15.0997 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g3840-4-8"
transform="translate(89.401793,-1.9687944)">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-6-8"
d="m 0.44700789,1027.4531 15.09099111,-0.1708 0.03477,4.4259 -15.0487657,0 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-3-0-2"
d="m 14.38702,1012.7018 13.260154,0.053 -12.115362,14.6473 -15.04876558,0 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3805-1-3-4"
d="m 15.488268,1027.5787 12.088268,-14.9388 -0.272535,3.9975 -11.738718,15.0292 z"
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g4901-5"
transform="matrix(-0.60201967,-0.4999142,0.5122192,-0.60410661,-416.58059,1655.9424)">
<path
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:3;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.728362,1031.4702 v 16.639"
id="path4835-51" />
<path
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:0.63842267;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.693302,1050.4826 -3.608306,-6.6105 h 7.146014 z"
id="path4839-7" />
</g>
<g
id="g4901-4-1"
transform="matrix(-0.60201967,-0.4999142,0.5122192,-0.60410661,-438.38505,1655.989)">
<path
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:3;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.728362,1031.4702 v 16.639"
id="path4835-5-15" />
<path
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:0.63842267;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
d="m 19.693302,1050.4826 -3.608306,-6.6105 h 7.146014 z"
id="path4839-8-2" />
</g>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#9b001b;fill-opacity:1;stroke:none;font-family:Comic Sans MS;-inkscape-font-specification:Comic Sans MS"
x="81.307961"
y="1040.6267"
id="text5009-6"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5011-8"
x="81.307961"
<g
transform="translate(67.443707,-1.9936944)"
id="g3840-7">
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 0.44700789,1027.4531 15.09099111,-0.1708 0.03477,4.4259 -15.0487657,0 z"
id="path3805-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 15.232526,1012.5609 13.47153,0.1239 -13.172244,14.7178 -15.04876558,0 z"
id="path3805-3-09"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 15.488268,1027.5787 13.215609,-14.9388 0.0093,3.927 -13.147894,15.0997 z"
id="path3805-1-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
<g
transform="translate(89.401793,-1.9687944)"
id="g3840-4-8">
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 0.44700789,1027.4531 15.09099111,-0.1708 0.03477,4.4259 -15.0487657,0 z"
id="path3805-6-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 14.38702,1012.7018 13.260154,0.053 -12.115362,14.6473 -15.04876558,0 z"
id="path3805-3-0-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:0.25849029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none"
d="m 15.488268,1027.5787 12.088268,-14.9388 -0.272535,3.9975 -11.738718,15.0292 z"
id="path3805-1-3-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
<g
transform="matrix(-0.60201967,-0.4999142,0.5122192,-0.60410661,-416.58059,1655.9424)"
id="g4901-5">
<path
id="path4835-51"
d="m 19.728362,1031.4702 v 16.639"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:3;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path4839-7"
d="m 19.693302,1050.4826 -3.608306,-6.6105 h 7.146014 z"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:0.63842267;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(-0.60201967,-0.4999142,0.5122192,-0.60410661,-438.38505,1655.989)"
id="g4901-4-1">
<path
id="path4835-5-15"
d="m 19.728362,1031.4702 v 16.639"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:3;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path4839-8-2"
d="m 19.693302,1050.4826 -3.608306,-6.6105 h 7.146014 z"
inkscape:connector-curvature="0"
style="fill:#0017aa;fill-opacity:1;stroke:#0017aa;stroke-width:0.63842267;stroke-linecap:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none" />
</g>
<text
sodipodi:linespacing="125%"
id="text5009-6"
y="1040.6267"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#9b001b;fill-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold">Zeven</tspan></text>
<g
transform="translate(64.334774,-0.35935805)"
id="g3880-5">
<path
inkscape:connector-curvature="0"
id="path4929-7"
d="m 20.039629,1008.1212 5.495786,-0.071 0.07046,-5.3549 6.059456,-0.07"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(86.740669,0.20431232)"
id="g3880-6">
<path
inkscape:connector-curvature="0"
id="path4929-18"
d="m 20.039629,1008.1212 5.495786,-0.071 0.07046,-5.3549 6.059456,-0.07"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
x="81.307961"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#9b001b;fill-opacity:1;stroke:none;font-family:Comic Sans MS;-inkscape-font-specification:Comic Sans MS"
xml:space="preserve"><tspan
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#9b001b;fill-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold"
y="1040.6267"
x="81.307961"
id="tspan5011-8"
sodipodi:role="line">Zeven</tspan></text>
<g
id="g3880-5"
transform="translate(64.334774,-0.35935805)">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 20.039629,1008.1212 5.495786,-0.071 0.07046,-5.3549 6.059456,-0.07"
id="path4929-7"
inkscape:connector-curvature="0" />
</g>
<g
id="g3880-6"
transform="translate(86.740669,0.20431232)">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 20.039629,1008.1212 5.495786,-0.071 0.07046,-5.3549 6.059456,-0.07"
id="path4929-18"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

+5 -2
View File
@@ -1,8 +1,8 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2011 jean-pierre.charras
* Copyright (C) 2011 Kicad Developers, see change_log.txt for contributors.
* Copyright (C) 2015 jean-pierre.charras
* Copyright (C) 2015 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
@@ -137,5 +137,8 @@ void PCB_CALCULATOR_FRAME::BoardClassesUpdateData( double aUnitScale )
txt = NOVAL;
m_gridClassesValuesDisplay->SetCellValue(4, ii, txt );
}
m_gridClassesValuesDisplay->SetRowLabelSize( wxGRID_AUTOSIZE );
m_gridClassesValuesDisplay->AutoSize();
}
@@ -121,10 +121,13 @@ void PCB_CALCULATOR_FRAME::ElectricalSpacingUpdateData( double aUnitScale )
wxString txt;
double voltage = 500.0; // to calculate values at V > 500V
txt = m_ElectricalSpacingVoltage->GetValue();
if( ! txt.IsEmpty() )
voltage = DoubleFromString(txt);
if( voltage < 500.0 )
voltage = 500.0;
txt.Printf( wxT( "%g" ), voltage );
m_ElectricalSpacingVoltage->SetValue( txt );
@@ -145,4 +148,6 @@ void PCB_CALCULATOR_FRAME::ElectricalSpacingUpdateData( double aUnitScale )
txt.Printf( wxT( "%g" ), spacing / aUnitScale );
m_gridElectricalSpacingValues->SetCellValue( CLASS_COUNT-1, jj, txt );
}
m_gridElectricalSpacingValues->SetRowLabelSize( wxGRID_AUTOSIZE );
}
+2
View File
@@ -497,6 +497,8 @@ endif()
if( MINGW )
# PCBNEW_RESOURCES variable is set by the macro.
mingw_resource_compiler( pcbnew )
else()
set( PCBNEW_RESOURCES pcbnew.rc )
endif()
+3 -3
View File
@@ -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;
+3
View File
@@ -161,6 +161,9 @@ void DIMENSION::Rotate( const wxPoint& aRotCentre, double aAngle )
void DIMENSION::Flip( const wxPoint& aCentre )
{
Mirror( aCentre );
// DIMENSION items are not usually on copper layers, so
// copper layers count is not taken in accoun in Flip transform
SetLayer( FlipLayer( GetLayer() ) );
}
+2
View File
@@ -138,6 +138,8 @@ void DRAWSEGMENT::Flip( const wxPoint& aCentre )
if( m_Shape == S_ARC )
m_Angle = -m_Angle;
// DRAWSEGMENT items are not allowed on copper layers, so
// copper layers count is not taken in accoun in Flip transform
SetLayer( FlipLayer( GetLayer() ) );
}
+4
View File
@@ -318,6 +318,10 @@ void EDGE_MODULE::Flip( const wxPoint& aCentre )
MIRROR( m_PolyPoints[ii].y, 0 );
}
// DRAWSEGMENT items are not usually on copper layers, but
// it can happen in microwave apps.
// However, currently, only on Front or Back layers.
// So the copper layers count is not taken in account
SetLayer( FlipLayer( GetLayer() ) );
}
+33
View File
@@ -717,6 +717,39 @@ unsigned MODULE::GetPadCount( INCLUDE_NPTH_T aIncludeNPTH ) const
}
unsigned MODULE::GetUniquePadCount( INCLUDE_NPTH_T aIncludeNPTH ) const
{
std::set<wxUint32> usedNames;
// Create a set of used pad numbers
for( D_PAD* pad = Pads(); pad; pad = pad->Next() )
{
// Skip pads not on copper layers (used to build complex
// solder paste shapes for instance)
if( ( pad->GetLayerSet() & LSET::AllCuMask() ).none() )
continue;
// Skip pads with no name, because they are usually "mechanical"
// pads, not "electrical" pads
if( pad->GetPadName().IsEmpty() )
continue;
if( !aIncludeNPTH )
{
// skip NPTH
if( pad->GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED )
{
continue;
}
}
usedNames.insert( pad->GetPackedPadName() );
}
return usedNames.size();
}
void MODULE::Add3DModel( S3D_MASTER* a3DModel )
{
a3DModel->SetParent( this );
+14
View File
@@ -496,6 +496,20 @@ public:
*/
unsigned GetPadCount( INCLUDE_NPTH_T aIncludeNPTH = INCLUDE_NPTH_T( INCLUDE_NPTH ) ) const;
/**
* GetUniquePadCount
* returns the number of unique pads.
* A complex pad can be built with many pads having the same pad name
* to create a complex shape or fragmented solder paste areas.
*
* GetUniquePadCount calculate the count of not blank pad names
*
* @param aIncludeNPTH includes non-plated through holes when true. Does not include
* non-plated through holes when false.
* @return the number of unique pads according to \a aIncludeNPTH.
*/
unsigned GetUniquePadCount( INCLUDE_NPTH_T aIncludeNPTH = INCLUDE_NPTH_T( INCLUDE_NPTH ) ) const;
/**
* Function GetNextPadName
* returns the next available pad name in the module
+7 -25
View File
@@ -292,6 +292,9 @@ void D_PAD::Flip( const wxPoint& aCentre )
SetOrientation( -GetOrientation() );
// flip pads layers
// PADS items are currently on all copper layers, or
// currently, only on Front or Back layers.
// So the copper layers count is not taken in account
SetLayerSet( FlipLayerMask( m_layerMask ) );
// m_boundingRadius = -1; the shape has not been changed
@@ -335,16 +338,11 @@ const wxPoint D_PAD::ShapePos() const
if( m_Offset.x == 0 && m_Offset.y == 0 )
return m_Pos;
wxPoint shape_pos;
int dX, dY;
wxPoint loc_offset = m_Offset;
dX = m_Offset.x;
dY = m_Offset.y;
RotatePoint( &loc_offset, m_Orient );
RotatePoint( &dX, &dY, m_Orient );
shape_pos.x = m_Pos.x + dX;
shape_pos.y = m_Pos.y + dY;
wxPoint shape_pos = m_Pos + loc_offset;
return shape_pos;
}
@@ -352,26 +350,10 @@ const wxPoint D_PAD::ShapePos() const
const wxString D_PAD::GetPadName() const
{
#if 0 // m_Padname is not ASCII and not UTF8, it is LATIN1 basically, whatever
// 8 bit font is supported in KiCad plotting and drawing.
// Return pad name as wxString, assume it starts as a non-terminated
// utf8 character sequence
char temp[sizeof(m_Padname)+1]; // a place to terminate with '\0'
strncpy( temp, m_Padname, sizeof(m_Padname) );
temp[sizeof(m_Padname)] = 0;
return FROM_UTF8( temp );
#else
wxString name;
StringPadName( name );
return name;
#endif
}
@@ -988,7 +970,7 @@ unsigned int D_PAD::ViewGetLOD( int aLayer ) const
if( ( m_Size.x == 0 ) && ( m_Size.y == 0 ) )
return UINT_MAX;
return ( 100000000 / std::max( m_Size.x, m_Size.y ) );
return ( Millimeter2iu( 100 ) / std::max( m_Size.x, m_Size.y ) );
}
// Other layers are shown without any conditions
+18
View File
@@ -105,9 +105,27 @@ public:
MODULE* GetParent() const { return (MODULE*) m_Parent; }
/**
* Set the pad name (sometimes called pad number, although
* it can be an array ref like AA12
* the pad name is limited to 4 ASCII chars
*/
void SetPadName( const wxString& name ); // Change pad name
/**
* @return the pad name
* the pad name is limited to 4 ASCII chars
*/
const wxString GetPadName() const;
/**
* @return the pad name in a wxUint32 which is possible
* because the pad name is limited to 4 ASCII chars
* The packed pad name should be used only to compare 2
* pad names, not to try to print this name
*/
const wxUint32 GetPackedPadName() const { return m_NumPadName; }
/*!
* Function IncrementItemReference
* Implementation of the generic "reference" incrementing interface
+8
View File
@@ -480,6 +480,14 @@ void PCB_LAYER_WIDGET::OnLayerVisible( int aLayer, bool isVisible, bool isFinal
void PCB_LAYER_WIDGET::OnRenderColorChange( int aId, EDA_COLOR_T aColor )
{
myframe->GetBoard()->SetVisibleElementColor( aId, aColor );
if( myframe->GetGalCanvas() )
{
KIGFX::VIEW* view = myframe->GetGalCanvas()->GetView();
view->GetPainter()->GetSettings()->ImportLegacyColors( myframe->GetBoard()->GetColorsSettings() );
view->UpdateLayerColor( aId );
}
myframe->GetCanvas()->Refresh();
}
+2 -1
View File
@@ -179,7 +179,8 @@ void TEXTE_PCB::Rotate( const wxPoint& aRotCentre, double aAngle )
void TEXTE_PCB::Flip(const wxPoint& aCentre )
{
m_Pos.y = aCentre.y - ( m_Pos.y - aCentre.y );
SetLayer( FlipLayer( GetLayer() ) );
int copperLayerCount = GetBoard()->GetCopperLayerCount();
SetLayer( FlipLayer( GetLayer(), copperLayerCount ) );
m_Mirror = !m_Mirror;
}
+13 -1
View File
@@ -339,7 +339,8 @@ void TRACK::Flip( const wxPoint& aCentre )
{
m_Start.y = aCentre.y - (m_Start.y - aCentre.y);
m_End.y = aCentre.y - (m_End.y - aCentre.y);
SetLayer( FlipLayer( GetLayer() ) );
int copperLayerCount = GetBoard()->GetCopperLayerCount();
SetLayer( FlipLayer( GetLayer(), copperLayerCount ) );
}
@@ -347,6 +348,17 @@ void VIA::Flip( const wxPoint& aCentre )
{
m_Start.y = aCentre.y - (m_Start.y - aCentre.y);
m_End.y = aCentre.y - (m_End.y - aCentre.y);
if( GetViaType() != VIA_THROUGH )
{
int copperLayerCount = GetBoard()->GetCopperLayerCount();
LAYER_ID top_layer;
LAYER_ID bottom_layer;
LayerPair( &top_layer, &bottom_layer );
top_layer = FlipLayer( top_layer, copperLayerCount );
bottom_layer = FlipLayer( bottom_layer, copperLayerCount );
SetLayerPair( top_layer, bottom_layer );
}
}
+3 -2
View File
@@ -722,7 +722,8 @@ void ZONE_CONTAINER::Rotate( const wxPoint& centre, double angle )
void ZONE_CONTAINER::Flip( const wxPoint& aCentre )
{
Mirror( aCentre );
SetLayer( FlipLayer( GetLayer() ) );
int copperLayerCount = GetBoard()->GetCopperLayerCount();
SetLayer( FlipLayer( GetLayer(), copperLayerCount ) );
}
@@ -852,4 +853,4 @@ wxString ZONE_CONTAINER::GetSelectMenuText() const
GetChars( GetLayerName() ) );
return msg;
}
}
+15 -10
View File
@@ -38,14 +38,15 @@
*/
void PCB_EDIT_FRAME::ExecuteRemoteCommand( const char* cmdline )
{
char line[1024];
wxString msg;
wxString modName;
char* idcmd;
char* text;
MODULE* module = 0;
BOARD* pcb = GetBoard();
wxPoint pos;
char line[1024];
wxString msg;
wxString modName;
char* idcmd;
char* text;
MODULE* module = NULL;
D_PAD* pad = NULL;
BOARD* pcb = GetBoard();
wxPoint pos;
strncpy( line, cmdline, sizeof(line) - 1 );
line[sizeof(line) - 1] = 0;
@@ -75,7 +76,6 @@ void PCB_EDIT_FRAME::ExecuteRemoteCommand( const char* cmdline )
else if( strcmp( idcmd, "$PIN:" ) == 0 )
{
wxString pinName;
D_PAD* pad = NULL;
int netcode = -1;
pinName = FROM_UTF8( text );
@@ -132,7 +132,12 @@ void PCB_EDIT_FRAME::ExecuteRemoteCommand( const char* cmdline )
{
if( IsGalCanvasActive() )
{
GetToolManager()->RunAction( COMMON_ACTIONS::crossProbeSchToPcb, true, module );
GetToolManager()->RunAction( COMMON_ACTIONS::crossProbeSchToPcb,
true,
pad ?
static_cast<BOARD_ITEM*>( pad ) :
static_cast<BOARD_ITEM*>( module )
);
}
else
{
+3 -1
View File
@@ -452,7 +452,9 @@ bool DIALOG_COPPER_ZONE::AcceptOptions( bool aPromptForErrors, bool aUseExportab
(double) m_settings.m_ThermalReliefCopperBridge / IU_PER_MILS );
}
if( m_settings.m_ThermalReliefCopperBridge <= m_settings.m_ZoneMinThickness )
if( ( m_settings.GetPadConnection() == PAD_ZONE_CONN_THT_THERMAL
|| m_settings.GetPadConnection() == PAD_ZONE_CONN_THERMAL )
&& m_settings.m_ThermalReliefCopperBridge <= m_settings.m_ZoneMinThickness )
{
DisplayError( this,
_( "Thermal relief spoke must be greater than the minimum width." ) );
+35 -35
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Nov 6 2013)
// C++ code generated with wxFormBuilder (version Jun 17 2015)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -60,41 +60,41 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
wxStaticBoxSizer* m_NetSortOptSizer;
m_NetSortOptSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Net Filtering") ), wxVERTICAL );
m_staticText16 = new wxStaticText( this, wxID_ANY, _("Display:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText16 = new wxStaticText( m_NetSortOptSizer->GetStaticBox(), wxID_ANY, _("Display:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText16->Wrap( -1 );
m_NetSortOptSizer->Add( m_staticText16, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
wxString m_NetDisplayOptionChoices[] = { _("Show all (alphabetical)"), _("Show all (pad count)"), _("Filtered (alphabetical)"), _("Filtered (pad count)") };
int m_NetDisplayOptionNChoices = sizeof( m_NetDisplayOptionChoices ) / sizeof( wxString );
m_NetDisplayOption = new wxChoice( this, ID_M_NETDISPLAYOPTION, wxDefaultPosition, wxDefaultSize, m_NetDisplayOptionNChoices, m_NetDisplayOptionChoices, 0 );
m_NetDisplayOption = new wxChoice( m_NetSortOptSizer->GetStaticBox(), ID_M_NETDISPLAYOPTION, wxDefaultPosition, wxDefaultSize, m_NetDisplayOptionNChoices, m_NetDisplayOptionChoices, 0 );
m_NetDisplayOption->SetSelection( 0 );
m_NetSortOptSizer->Add( m_NetDisplayOption, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_staticText5 = new wxStaticText( this, wxID_ANY, _("Hidden net filter:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText5 = new wxStaticText( m_NetSortOptSizer->GetStaticBox(), wxID_ANY, _("Hidden net filter:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText5->Wrap( -1 );
m_NetSortOptSizer->Add( m_staticText5, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_DoNotShowNetNameFilter = new wxTextCtrl( this, ID_TEXTCTRL_NETNAMES_FILTER, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
m_DoNotShowNetNameFilter = new wxTextCtrl( m_NetSortOptSizer->GetStaticBox(), ID_TEXTCTRL_NETNAMES_FILTER, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
m_DoNotShowNetNameFilter->SetMaxLength( 0 );
m_DoNotShowNetNameFilter->SetToolTip( _("Pattern to filter net names in filtered list.\nNet names matching this pattern are not displayed.") );
m_NetSortOptSizer->Add( m_DoNotShowNetNameFilter, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_staticText51 = new wxStaticText( this, wxID_ANY, _("Visible net filter:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText51 = new wxStaticText( m_NetSortOptSizer->GetStaticBox(), wxID_ANY, _("Visible net filter:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText51->Wrap( -1 );
m_NetSortOptSizer->Add( m_staticText51, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_ShowNetNameFilter = new wxTextCtrl( this, ID_TEXTCTRL_NETNAMES_FILTER, _("*"), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
m_ShowNetNameFilter = new wxTextCtrl( m_NetSortOptSizer->GetStaticBox(), ID_TEXTCTRL_NETNAMES_FILTER, _("*"), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
m_ShowNetNameFilter->SetMaxLength( 0 );
m_ShowNetNameFilter->SetToolTip( _("Pattern to filter net names in filtered list.\nOnly net names matching this pattern are displayed.") );
m_NetSortOptSizer->Add( m_ShowNetNameFilter, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
m_buttonRunFilter = new wxButton( this, wxID_APPLY_FILTERS, _("Apply Filters"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonRunFilter = new wxButton( m_NetSortOptSizer->GetStaticBox(), wxID_APPLY_FILTERS, _("Apply Filters"), wxDefaultPosition, wxDefaultSize, 0 );
m_NetSortOptSizer->Add( m_buttonRunFilter, 0, wxALL|wxEXPAND, 5 );
m_OptionsBoxSizer->Add( m_NetSortOptSizer, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
m_OptionsBoxSizer->Add( m_NetSortOptSizer, 0, wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
m_MainBoxSizer->Add( m_OptionsBoxSizer, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
@@ -105,39 +105,39 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
wxBoxSizer* bSizerSettings;
bSizerSettings = new wxBoxSizer( wxVERTICAL );
m_ClearanceValueTitle = new wxStaticText( this, wxID_ANY, _("Clearance"), wxDefaultPosition, wxDefaultSize, 0 );
m_ClearanceValueTitle = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Clearance"), wxDefaultPosition, wxDefaultSize, 0 );
m_ClearanceValueTitle->Wrap( -1 );
bSizerSettings->Add( m_ClearanceValueTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_ZoneClearanceCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_ZoneClearanceCtrl = new wxTextCtrl( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_ZoneClearanceCtrl->SetMaxLength( 0 );
bSizerSettings->Add( m_ZoneClearanceCtrl, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_MinThicknessValueTitle = new wxStaticText( this, wxID_ANY, _("Minimum width"), wxDefaultPosition, wxDefaultSize, 0 );
m_MinThicknessValueTitle = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Minimum width"), wxDefaultPosition, wxDefaultSize, 0 );
m_MinThicknessValueTitle->Wrap( -1 );
m_MinThicknessValueTitle->SetToolTip( _("Minimun thickness of filled areas.") );
bSizerSettings->Add( m_MinThicknessValueTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerSettings->Add( m_MinThicknessValueTitle, 0, wxRIGHT|wxLEFT, 5 );
m_ZoneMinThicknessCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_ZoneMinThicknessCtrl = new wxTextCtrl( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_ZoneMinThicknessCtrl->SetMaxLength( 0 );
bSizerSettings->Add( m_ZoneMinThicknessCtrl, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_staticText151 = new wxStaticText( this, wxID_ANY, _("Corner smoothing:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText151 = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Corner smoothing:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText151->Wrap( -1 );
bSizerSettings->Add( m_staticText151, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
wxString m_cornerSmoothingChoiceChoices[] = { _("None"), _("Chamfer"), _("Fillet") };
int m_cornerSmoothingChoiceNChoices = sizeof( m_cornerSmoothingChoiceChoices ) / sizeof( wxString );
m_cornerSmoothingChoice = new wxChoice( this, ID_CORNER_SMOOTHING, wxDefaultPosition, wxDefaultSize, m_cornerSmoothingChoiceNChoices, m_cornerSmoothingChoiceChoices, 0 );
m_cornerSmoothingChoice = new wxChoice( m_ExportableSetupSizer->GetStaticBox(), ID_CORNER_SMOOTHING, wxDefaultPosition, wxDefaultSize, m_cornerSmoothingChoiceNChoices, m_cornerSmoothingChoiceChoices, 0 );
m_cornerSmoothingChoice->SetSelection( 0 );
bSizerSettings->Add( m_cornerSmoothingChoice, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_cornerSmoothingTitle = new wxStaticText( this, wxID_ANY, _("Chamfer distance (mm):"), wxDefaultPosition, wxDefaultSize, 0 );
m_cornerSmoothingTitle = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Chamfer distance (mm):"), wxDefaultPosition, wxDefaultSize, 0 );
m_cornerSmoothingTitle->Wrap( -1 );
bSizerSettings->Add( m_cornerSmoothingTitle, 0, wxRIGHT|wxLEFT, 5 );
m_cornerSmoothingCtrl = new wxTextCtrl( this, ID_M_CORNERSMOOTHINGCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_cornerSmoothingCtrl = new wxTextCtrl( m_ExportableSetupSizer->GetStaticBox(), ID_M_CORNERSMOOTHINGCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_cornerSmoothingCtrl->SetMaxLength( 0 );
bSizerSettings->Add( m_cornerSmoothingCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
@@ -147,34 +147,34 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
wxBoxSizer* bSizerPadsConnection;
bSizerPadsConnection = new wxBoxSizer( wxVERTICAL );
m_staticText13 = new wxStaticText( this, wxID_ANY, _("Pad connection:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText13 = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Pad connection:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText13->Wrap( -1 );
bSizerPadsConnection->Add( m_staticText13, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
wxString m_PadInZoneOptChoices[] = { _("Solid"), _("Thermal relief"), _("THT thermal"), _("None") };
int m_PadInZoneOptNChoices = sizeof( m_PadInZoneOptChoices ) / sizeof( wxString );
m_PadInZoneOpt = new wxChoice( this, ID_M_PADINZONEOPT, wxDefaultPosition, wxDefaultSize, m_PadInZoneOptNChoices, m_PadInZoneOptChoices, 0 );
m_PadInZoneOpt = new wxChoice( m_ExportableSetupSizer->GetStaticBox(), ID_M_PADINZONEOPT, wxDefaultPosition, wxDefaultSize, m_PadInZoneOptNChoices, m_PadInZoneOptChoices, 0 );
m_PadInZoneOpt->SetSelection( 0 );
bSizerPadsConnection->Add( m_PadInZoneOpt, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
wxStaticBoxSizer* m_ThermalShapesParamsSizer;
m_ThermalShapesParamsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Thermal Reliefs") ), wxVERTICAL );
m_ThermalShapesParamsSizer = new wxStaticBoxSizer( new wxStaticBox( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Thermal Reliefs") ), wxVERTICAL );
m_AntipadSizeText = new wxStaticText( this, wxID_ANY, _("Antipad clearance"), wxDefaultPosition, wxDefaultSize, 0 );
m_AntipadSizeText = new wxStaticText( m_ThermalShapesParamsSizer->GetStaticBox(), wxID_ANY, _("Antipad clearance"), wxDefaultPosition, wxDefaultSize, 0 );
m_AntipadSizeText->Wrap( -1 );
m_ThermalShapesParamsSizer->Add( m_AntipadSizeText, 0, wxTOP|wxRIGHT, 5 );
m_AntipadSizeValue = new wxTextCtrl( this, wxID_ANTIPAD_SIZE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_AntipadSizeValue = new wxTextCtrl( m_ThermalShapesParamsSizer->GetStaticBox(), wxID_ANTIPAD_SIZE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_AntipadSizeValue->SetMaxLength( 0 );
m_AntipadSizeValue->SetToolTip( _("Clearance between pads in the same net and filled areas.") );
m_ThermalShapesParamsSizer->Add( m_AntipadSizeValue, 0, wxEXPAND|wxBOTTOM, 5 );
m_CopperBridgeWidthText = new wxStaticText( this, wxID_ANY, _("Spoke width"), wxDefaultPosition, wxDefaultSize, 0 );
m_CopperBridgeWidthText = new wxStaticText( m_ThermalShapesParamsSizer->GetStaticBox(), wxID_ANY, _("Spoke width"), wxDefaultPosition, wxDefaultSize, 0 );
m_CopperBridgeWidthText->Wrap( -1 );
m_ThermalShapesParamsSizer->Add( m_CopperBridgeWidthText, 0, wxTOP|wxRIGHT, 5 );
m_CopperWidthValue = new wxTextCtrl( this, wxID_COPPER_BRIDGE_VALUE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_CopperWidthValue = new wxTextCtrl( m_ThermalShapesParamsSizer->GetStaticBox(), wxID_COPPER_BRIDGE_VALUE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_CopperWidthValue->SetMaxLength( 0 );
m_CopperWidthValue->SetToolTip( _("Width of copper in thermal reliefs.") );
@@ -189,32 +189,32 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
wxBoxSizer* m_MiddleBox;
m_MiddleBox = new wxBoxSizer( wxVERTICAL );
m_staticText171 = new wxStaticText( this, wxID_ANY, _("Priority level:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText171 = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Priority level:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText171->Wrap( -1 );
m_staticText171->SetToolTip( _("On each copper layer, zones are filled by priority order.\nSo when a zone is inside an other zone:\n* If its priority is highter: its outlines are removed from the other layer.\n* If its priority is equal: a DRC error is set.") );
m_MiddleBox->Add( m_staticText171, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_PriorityLevelCtrl = new wxSpinCtrl( this, ID_M_PRIORITYLEVELCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 0 );
m_PriorityLevelCtrl = new wxSpinCtrl( m_ExportableSetupSizer->GetStaticBox(), ID_M_PRIORITYLEVELCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 0 );
m_MiddleBox->Add( m_PriorityLevelCtrl, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_staticText11 = new wxStaticText( this, wxID_ANY, _("Fill mode:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText11 = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Fill mode:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText11->Wrap( -1 );
m_MiddleBox->Add( m_staticText11, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
wxString m_FillModeCtrlChoices[] = { _("Polygon"), _("Segment") };
int m_FillModeCtrlNChoices = sizeof( m_FillModeCtrlChoices ) / sizeof( wxString );
m_FillModeCtrl = new wxChoice( this, ID_M_FILLMODECTRL, wxDefaultPosition, wxDefaultSize, m_FillModeCtrlNChoices, m_FillModeCtrlChoices, 0 );
m_FillModeCtrl = new wxChoice( m_ExportableSetupSizer->GetStaticBox(), ID_M_FILLMODECTRL, wxDefaultPosition, wxDefaultSize, m_FillModeCtrlNChoices, m_FillModeCtrlChoices, 0 );
m_FillModeCtrl->SetSelection( 0 );
m_MiddleBox->Add( m_FillModeCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_staticText12 = new wxStaticText( this, wxID_ANY, _("Segments / 360 deg:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText12 = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Segments / 360 deg:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText12->Wrap( -1 );
m_MiddleBox->Add( m_staticText12, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
wxString m_ArcApproximationOptChoices[] = { _("16"), _("32") };
int m_ArcApproximationOptNChoices = sizeof( m_ArcApproximationOptChoices ) / sizeof( wxString );
m_ArcApproximationOpt = new wxChoice( this, ID_M_ARCAPPROXIMATIONOPT, wxDefaultPosition, wxDefaultSize, m_ArcApproximationOptNChoices, m_ArcApproximationOptChoices, 0 );
m_ArcApproximationOpt = new wxChoice( m_ExportableSetupSizer->GetStaticBox(), ID_M_ARCAPPROXIMATIONOPT, wxDefaultPosition, wxDefaultSize, m_ArcApproximationOptNChoices, m_ArcApproximationOptChoices, 0 );
m_ArcApproximationOpt->SetSelection( 0 );
m_MiddleBox->Add( m_ArcApproximationOpt, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
@@ -224,23 +224,23 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
wxBoxSizer* bSizerLowerRight;
bSizerLowerRight = new wxBoxSizer( wxVERTICAL );
m_staticText14 = new wxStaticText( this, wxID_ANY, _("Outline slope:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText14 = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Outline slope:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText14->Wrap( -1 );
bSizerLowerRight->Add( m_staticText14, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
wxString m_OrientEdgesOptChoices[] = { _("Arbitrary"), _("H, V, and 45 deg only") };
int m_OrientEdgesOptNChoices = sizeof( m_OrientEdgesOptChoices ) / sizeof( wxString );
m_OrientEdgesOpt = new wxChoice( this, ID_M_ORIENTEDGESOPT, wxDefaultPosition, wxDefaultSize, m_OrientEdgesOptNChoices, m_OrientEdgesOptChoices, 0 );
m_OrientEdgesOpt = new wxChoice( m_ExportableSetupSizer->GetStaticBox(), ID_M_ORIENTEDGESOPT, wxDefaultPosition, wxDefaultSize, m_OrientEdgesOptNChoices, m_OrientEdgesOptChoices, 0 );
m_OrientEdgesOpt->SetSelection( 0 );
bSizerLowerRight->Add( m_OrientEdgesOpt, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_staticText15 = new wxStaticText( this, wxID_ANY, _("Outline style:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText15 = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Outline style:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText15->Wrap( -1 );
bSizerLowerRight->Add( m_staticText15, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
wxString m_OutlineAppearanceCtrlChoices[] = { _("Line"), _("Hatched"), _("Fully hatched") };
int m_OutlineAppearanceCtrlNChoices = sizeof( m_OutlineAppearanceCtrlChoices ) / sizeof( wxString );
m_OutlineAppearanceCtrl = new wxChoice( this, ID_M_OUTLINEAPPEARANCECTRL, wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlNChoices, m_OutlineAppearanceCtrlChoices, 0 );
m_OutlineAppearanceCtrl = new wxChoice( m_ExportableSetupSizer->GetStaticBox(), ID_M_OUTLINEAPPEARANCECTRL, wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlNChoices, m_OutlineAppearanceCtrlChoices, 0 );
m_OutlineAppearanceCtrl->SetSelection( 0 );
bSizerLowerRight->Add( m_OutlineAppearanceCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
+5 -4
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="11" />
<FileVersion major="1" minor="13" />
<object class="Project" expanded="1">
<property name="class_decoration"></property>
<property name="code_generation">C++</property>
@@ -44,7 +44,7 @@
<property name="minimum_size"></property>
<property name="name">DIALOG_COPPER_ZONE_BASE</property>
<property name="pos"></property>
<property name="size">567,443</property>
<property name="size">567,507</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
<property name="title">Copper Zone Properties</property>
@@ -485,7 +485,7 @@
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxStaticBoxSizer" expanded="0">
<property name="id">wxID_ANY</property>
@@ -1303,7 +1303,7 @@
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="0">
<property name="BottomDockable">1</property>
@@ -2542,6 +2542,7 @@
<event name="OnSize"></event>
<event name="OnSpinCtrl"></event>
<event name="OnSpinCtrlText"></event>
<event name="OnTextEnter"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
+2 -2
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Nov 6 2013)
// C++ code generated with wxFormBuilder (version Jun 17 2015)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -127,7 +127,7 @@ class DIALOG_COPPER_ZONE_BASE : public DIALOG_SHIM
public:
DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID id = ID_DIALOG_COPPER_ZONE_BASE, const wxString& title = _("Copper Zone Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 567,443 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID id = ID_DIALOG_COPPER_ZONE_BASE, const wxString& title = _("Copper Zone Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 567,507 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_COPPER_ZONE_BASE();
};
+3 -3
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Mar 9 2015)
// C++ code generated with wxFormBuilder (version Jun 17 2015)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -167,7 +167,7 @@ DIALOG_CREATE_ARRAY_BASE::DIALOG_CREATE_ARRAY_BASE( wxWindow* parent, wxWindowID
m_gridPanel->SetSizer( bSizer2 );
m_gridPanel->Layout();
bSizer2->Fit( m_gridPanel );
m_gridTypeNotebook->AddPage( m_gridPanel, _("Grid"), true );
m_gridTypeNotebook->AddPage( m_gridPanel, _("Grid Array"), true );
m_circularPanel = new wxPanel( m_gridTypeNotebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer* bSizer4;
bSizer4 = new wxBoxSizer( wxHORIZONTAL );
@@ -278,7 +278,7 @@ DIALOG_CREATE_ARRAY_BASE::DIALOG_CREATE_ARRAY_BASE( wxWindow* parent, wxWindowID
m_circularPanel->SetSizer( bSizer4 );
m_circularPanel->Layout();
bSizer4->Fit( m_circularPanel );
m_gridTypeNotebook->AddPage( m_circularPanel, _("Circular"), false );
m_gridTypeNotebook->AddPage( m_circularPanel, _("Circular Array"), false );
bMainSizer->Add( m_gridTypeNotebook, 1, wxEXPAND | wxALL, 5 );
+2 -2
View File
@@ -177,7 +177,7 @@
<event name="OnUpdateUI"></event>
<object class="notebookpage" expanded="1">
<property name="bitmap">Load From File; </property>
<property name="label">Grid</property>
<property name="label">Grid Array</property>
<property name="select">1</property>
<object class="wxPanel" expanded="1">
<property name="BottomDockable">1</property>
@@ -2962,7 +2962,7 @@
</object>
<object class="notebookpage" expanded="1">
<property name="bitmap"></property>
<property name="label">Circular</property>
<property name="label">Circular Array</property>
<property name="select">0</property>
<object class="wxPanel" expanded="1">
<property name="BottomDockable">1</property>
+1 -1
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Mar 9 2015)
// C++ code generated with wxFormBuilder (version Jun 17 2015)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
+6 -1
View File
@@ -5,7 +5,7 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2004-2009 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2004-2009 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2009 Dick Hollenbeck, dick@softplc.com
* Copyright (C) 2009-2015 KiCad Developers, see change_log.txt for contributors.
*
@@ -276,12 +276,17 @@ void DIALOG_DESIGN_RULES::InitDimensionsLists()
m_gridViaSizeList->AutoSizeColumns( true );
m_gridTrackWidthList->SetColMinimalWidth( 0, 150 );
m_gridTrackWidthList->AutoSizeColumns( true );
m_gridViaSizeList->SetColMinimalWidth( 1, 150 );
// Fill cells with actual values:
m_gridViaSizeList->SetCellValue( 0, 0, wxEmptyString );
m_gridViaSizeList->SetCellValue( 0, 1, wxEmptyString );
m_gridTrackWidthList->SetCellValue( 0, 0, wxEmptyString );
// Give a correct size to row labels column
m_gridViaSizeList->SetRowLabelSize( wxGRID_AUTOSIZE );
m_gridTrackWidthList->SetRowLabelSize( wxGRID_AUTOSIZE );
for( unsigned ii = 0; ii < m_TracksWidthList.size(); ii++ )
{
msg = StringFromValue( g_UserUnit, m_TracksWidthList[ii], false );
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Mar 9 2015)
// C++ code generated with wxFormBuilder (version Jun 5 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -32,7 +32,7 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare
m_ReferenceCtrl = new wxTextCtrl( m_PanelProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
m_ReferenceCtrl->SetMaxLength( 0 );
bSizerRef->Add( m_ReferenceCtrl, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerRef->Add( m_ReferenceCtrl, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
m_button4 = new wxButton( m_PanelProperties, wxID_ANY, _("Edit"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
bSizerRef->Add( m_button4, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
@@ -49,7 +49,7 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare
m_ValueCtrl = new wxTextCtrl( m_PanelProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
m_ValueCtrl->SetMaxLength( 0 );
bSizerVal->Add( m_ValueCtrl, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerVal->Add( m_ValueCtrl, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
m_button5 = new wxButton( m_PanelProperties, wxID_ANY, _("Edit"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
bSizerVal->Add( m_button5, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
@@ -57,13 +57,13 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare
bSizerLeft->Add( bSizerVal, 0, wxEXPAND, 5 );
wxString m_LayerCtrlChoices[] = { _("Top side"), _("Bottom side") };
wxString m_LayerCtrlChoices[] = { _("Front"), _("Back") };
int m_LayerCtrlNChoices = sizeof( m_LayerCtrlChoices ) / sizeof( wxString );
m_LayerCtrl = new wxRadioBox( m_PanelProperties, wxID_ANY, _("Side"), wxDefaultPosition, wxDefaultSize, m_LayerCtrlNChoices, m_LayerCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_LayerCtrl = new wxRadioBox( m_PanelProperties, wxID_ANY, _("Board Side"), wxDefaultPosition, wxDefaultSize, m_LayerCtrlNChoices, m_LayerCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_LayerCtrl->SetSelection( 0 );
bSizerLeft->Add( m_LayerCtrl, 0, wxALL|wxEXPAND, 5 );
wxString m_OrientCtrlChoices[] = { _("0.0"), _("+90.0"), _("-90.0"), _("180.0"), _("Other rotation") };
wxString m_OrientCtrlChoices[] = { _("0.0"), _("+90.0"), _("-90.0"), _("180.0"), _("Other") };
int m_OrientCtrlNChoices = sizeof( m_OrientCtrlChoices ) / sizeof( wxString );
m_OrientCtrl = new wxRadioBox( m_PanelProperties, ID_LISTBOX_ORIENT_SELECT, _("Rotation"), wxDefaultPosition, wxDefaultSize, m_OrientCtrlNChoices, m_OrientCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_OrientCtrl->SetSelection( 0 );
@@ -143,10 +143,10 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare
m_AttributsCtrl->SetSelection( 0 );
bSizerAttrib->Add( m_AttributsCtrl, 1, wxALL|wxEXPAND, 5 );
wxString m_AutoPlaceCtrlChoices[] = { _("Free"), _("Lock pads"), _("Lock module") };
wxString m_AutoPlaceCtrlChoices[] = { _("Free"), _("Lock pads"), _("Lock footprint") };
int m_AutoPlaceCtrlNChoices = sizeof( m_AutoPlaceCtrlChoices ) / sizeof( wxString );
m_AutoPlaceCtrl = new wxRadioBox( m_PanelProperties, wxID_ANY, _("Move and Place"), wxDefaultPosition, wxDefaultSize, m_AutoPlaceCtrlNChoices, m_AutoPlaceCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_AutoPlaceCtrl->SetSelection( 1 );
m_AutoPlaceCtrl->SetSelection( 0 );
bSizerAttrib->Add( m_AutoPlaceCtrl, 1, wxALL|wxEXPAND, 5 );
@@ -158,7 +158,7 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare
wxBoxSizer* bSizerRotOpt;
bSizerRotOpt = new wxBoxSizer( wxVERTICAL );
m_staticText11 = new wxStaticText( m_PanelProperties, wxID_ANY, _("Rotation 90 degree"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText11 = new wxStaticText( m_PanelProperties, wxID_ANY, _("Rotate 90 degrees"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText11->Wrap( -1 );
bSizerRotOpt->Add( m_staticText11, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 );
@@ -171,7 +171,7 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare
wxBoxSizer* bSizerMoveOpt;
bSizerMoveOpt = new wxBoxSizer( wxVERTICAL );
m_staticText12 = new wxStaticText( m_PanelProperties, wxID_ANY, _("Rotation 180 degree"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText12 = new wxStaticText( m_PanelProperties, wxID_ANY, _("Rotate 180 degrees"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText12->Wrap( -1 );
bSizerMoveOpt->Add( m_staticText12, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 );
@@ -262,15 +262,15 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare
m_staticTextSolderPaste->Wrap( -1 );
m_staticTextSolderPaste->SetToolTip( _("This is the local clearance between pads and the solder paste\nfor this footprint.\nThis value can be superseded by a pad local values.\nThe final clearance value is the sum of this value and the clearance value ratio\nA negative value means a smaller mask size than pad size") );
fgSizerClearances->Add( m_staticTextSolderPaste, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 );
fgSizerClearances->Add( m_staticTextSolderPaste, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
m_SolderPasteMarginCtrl = new wxTextCtrl( m_PanelProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_SolderPasteMarginCtrl->SetMaxLength( 0 );
fgSizerClearances->Add( m_SolderPasteMarginCtrl, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
fgSizerClearances->Add( m_SolderPasteMarginCtrl, 1, wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_SolderPasteMarginUnits = new wxStaticText( m_PanelProperties, wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_SolderPasteMarginUnits->Wrap( -1 );
fgSizerClearances->Add( m_SolderPasteMarginUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
fgSizerClearances->Add( m_SolderPasteMarginUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
m_staticTextRatio = new wxStaticText( m_PanelProperties, wxID_ANY, _("Solder paste ratio clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextRatio->Wrap( -1 );
@@ -391,6 +391,7 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare
this->SetSizer( m_GeneralBoxSizer );
this->Layout();
m_GeneralBoxSizer->Fit( this );
// Connect Events
m_button4->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_BOARD_EDITOR_BASE::OnEditReference ), NULL, this );

Some files were not shown because too many files have changed in this diff Show More