Eeschema: replace dialog_bom_help.html by dialog_bom_help.md The .md files are smaller and translatable.

This commit is contained in:
jean-pierre charras 2019-12-29 09:53:39 +01:00
parent 5c0656d97f
commit 19e92c9d11
5 changed files with 160 additions and 300 deletions

2
.gitignore vendored
View File

@ -17,7 +17,7 @@ eeschema/cmp_library_lexer.h
eeschema/cmp_library_keywords.* eeschema/cmp_library_keywords.*
eeschema/dialogs/dialog_bom_cfg_keywords.cpp eeschema/dialogs/dialog_bom_cfg_keywords.cpp
eeschema/dialogs/dialog_bom_cfg_lexer.h eeschema/dialogs/dialog_bom_cfg_lexer.h
eeschema/dialogs/dialog_bom_help_html.h eeschema/dialogs/dialog_bom_help_md.h
eeschema/template_fieldnames_keywords.* eeschema/template_fieldnames_keywords.*
eeschema/template_fieldnames_lexer.h eeschema/template_fieldnames_lexer.h
pcbnew/pcb_plot_params_keywords.cpp pcbnew/pcb_plot_params_keywords.cpp

View File

@ -277,21 +277,21 @@ else()
set( EESCHEMA_RESOURCES eeschema.rc ) set( EESCHEMA_RESOURCES eeschema.rc )
endif() endif()
# Create a C++ compilable string initializer containing html text into a *.h file: # Create a C++ compilable string initializer containing markdown text into a *.h file:
add_custom_command( add_custom_command(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help_html.h OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help_md.h
COMMAND ${CMAKE_COMMAND} COMMAND ${CMAKE_COMMAND}
-DinputFile=${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help.html -DinputFile=${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help.md
-DoutputFile=${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help_html.h -DoutputFile=${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help_md.h
-P ${CMAKE_MODULE_PATH}/Html2C.cmake -P ${CMAKE_MODULE_PATH}/markdown2C.cmake
DEPENDS ${CMAKE_MODULE_PATH}/Html2C.cmake ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help.html DEPENDS ${CMAKE_MODULE_PATH}/markdown2C.cmake ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help.md
COMMENT "creating ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help_html.h COMMENT "creating ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help_md.h
from ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help.html" from ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help.md"
) )
set_source_files_properties( dialogs/dialog_bom.cpp set_source_files_properties( dialogs/dialog_bom.cpp
PROPERTIES PROPERTIES
OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help_html.h OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/dialog_bom_help_md.h
) )
if( APPLE ) if( APPLE )
@ -354,6 +354,7 @@ target_include_directories( eeschema_kiface PUBLIC
target_link_libraries( eeschema_kiface target_link_libraries( eeschema_kiface
common common
sexpr sexpr
markdown_lib
${wxWidgets_LIBRARIES} ${wxWidgets_LIBRARIES}
${GDI_PLUS_LIBRARIES} ${GDI_PLUS_LIBRARIES}
) )

View File

@ -42,6 +42,7 @@
#include <html_messagebox.h> #include <html_messagebox.h>
#include <reporter.h> #include <reporter.h>
#include <bom_plugins.h> #include <bom_plugins.h>
#include <i18n_utility.h> // for _HKI definition used in dialog_bom_help_md.h
#include <dialogs/dialog_bom_cfg_lexer.h> #include <dialogs/dialog_bom_cfg_lexer.h>
@ -50,8 +51,8 @@ static constexpr wxChar BOM_TRACE[] = wxT( "BOM_GENERATORS" );
static constexpr wxChar BOM_GENERATORS_KEY[] = wxT( "bom_plugins" ); static constexpr wxChar BOM_GENERATORS_KEY[] = wxT( "bom_plugins" );
static constexpr wxChar BOM_GENERATOR_SELECTED_KEY[] = wxT( "bom_plugin_selected" ); static constexpr wxChar BOM_GENERATOR_SELECTED_KEY[] = wxT( "bom_plugin_selected" );
static const char* s_bomHelpInfo = wxString s_bomHelpInfo =
#include <dialog_bom_help_html.h> #include <dialog_bom_help_md.h>
; ;
using namespace T_BOMCFG_T; // for the BOM_CFG_PARSER parser and its keywords using namespace T_BOMCFG_T; // for the BOM_CFG_PARSER parser and its keywords
@ -594,8 +595,9 @@ void DIALOG_BOM::OnHelp( wxCommandEvent& event )
HTML_MESSAGE_BOX help_Dlg( this, _( "Bill of Material Generation Help" ) ); HTML_MESSAGE_BOX help_Dlg( this, _( "Bill of Material Generation Help" ) );
help_Dlg.SetDialogSizeInDU( 500, 350 ); help_Dlg.SetDialogSizeInDU( 500, 350 );
wxString msg = FROM_UTF8( s_bomHelpInfo ); wxString html_txt;
help_Dlg.m_htmlWindow->AppendToPage( msg ); ConvertMarkdown2Html( wxGetTranslation( s_bomHelpInfo ), html_txt );
help_Dlg.m_htmlWindow->AppendToPage( html_txt );
help_Dlg.ShowModal(); help_Dlg.ShowModal();
} }

View File

@ -1,286 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252"/>
<title>kicad help</title>
<meta name="generator" content="LibreOffice 4.3.5.2 (Windows)"/>
<meta name="created" content="00:00:00"/>
<meta name="changed" content="2015-05-27T11:29:49.733000000"/>
<meta name="created" content="00:00:00">
<meta name="changed" content="2015-05-27T10:36:10.287000000">
<meta name="created" content="00:00:00">
<meta name="changed" content="2015-05-27T09:45:48.809000000">
<meta name="created" content="00:00:00">
<meta name="changed" content="2015-05-27T09:29:26.026000000">
<meta name="created" content="00:00:00">
<meta name="changed" content="2014-12-03T20:04:24.723000000">
<meta name="created" content="00:00:00">
<meta name="changed" content="2014-12-03T20:04:06.003000000">
<meta name="created" content="00:00:00">
<meta name="changed" content="2014-12-03T19:59:24.882000000">
<style type="text/css">
@page { margin: 2cm }
p { margin-bottom: 0.21cm; color: #000000; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto }
p.western { font-family: "Arial", sans-serif; font-size: 10pt; so-language: en-US }
h1 { color: #000000 }
h1.western { font-family: "Times New Roman", serif }
h2 { color: #000000 }
h2.western { font-family: "Times New Roman", serif; font-size: 20pt }
h2.cjk { font-family: "SimSun"; font-size: 14pt }
h2.ctl { font-family: "Mangal"; font-size: 14pt }
h3 { background: transparent; color: #000000 }
h3.western { font-family: "Times New Roman", serif; font-size: 16pt; font-style: italic }
h3.cjk { font-family: "SimSun" }
h3.ctl { font-family: "Mangal" }
a:link { color: #004586; text-decoration: none }
a.western:link { font-family: "Liberation Sans", sans-serif; so-language: zxx; font-style: italic }
a.sdfootnotesym-western { font-family: "DejaVu Serif", serif }
</style>
</head>
<body lang="en-AU" text="#000000" link="#004586" dir="ltr">
<h1 class="western"><a name="__RefHeading__2925_482973253"></a>1 -
Full documentation:</h1>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><span style="font-weight: normal">The
</span><i><b>Eeschema documentation</b></i> <span style="font-weight: normal">describes
this </span><b>intermediate netlist and gives examples<br></b><span style="font-weight: normal">See </span>
<i><b>http://docs.kicad-pcb.org/stable/en/eeschema.html#creating-customized-netlists-and-bom-files</b></i></font></font></p>
<h1 class="western"><i>2 - </i>The intermediate Netlist File</h1>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">BOM
files (and netlist files) can be created from an Intermediate netlist
file created by Eeschema.</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">This
file uses XML syntax and is called the intermediate netlist. The
intermediate netlist includes a large amount of data about your board
and because of this, it can be used with post-processing to create a
BOM or other reports.</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">Depending
on the output (BOM or netlist), different subsets of the complete
Intermediate Netlist file will be used in the post-processing.</font></font></p>
<h1 class="western">3 - Conversion to a new format</h1>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">By
applying a post-processing filter to the Intermediate netlist file
you can generate foreign netlist files as well as BOM files. Because
this conversion is a text to text transformation.</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">this
post-processing filter can be written using <b>Python</b>, <b>XSLT</b>,
or any other tool capable of taking XML as input.</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">XSLT
itself is a XML language very suitable for XML transformations. There
is a free program called </span></span></span><i><span style="font-weight: normal">xsltproc</span></i><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">that
you can download and install. The</span></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">xsltproc
program can be used to read the Intermediate XML netlist input file,
apply</span></span></span><span style="font-variant: normal"> </span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">a
style-sheet to transform the input, and save the results in an output
file. Use of xsltproc requires a style-sheet file using XSLT
conventions. The full conversion process is handled</span></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">by
Eeschema, after it is configured once to run xsltproc in a specific
way.</span></span></span></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; font-variant: normal; font-style: normal; font-weight: normal; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">A
Python script is somewhat more easy to create.</font></font></p>
<h1 class="western">4 - Initialization of the dialog window</h1>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">You
should add a new pluging (a script) in plugin list by clicking on the
Add Plugin button.</font></font></p>
<h2 class="western">4.1 - Plugin Configuration Parameters</h2>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">The
Eeschema plug-in configuration dialog requires the following
information:</font></font></p>
<ul>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">The
title: for instance, the name of the netlist format.</font></font></p>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">The
command line to launch the converter (usually a script).</font></font></p>
</ul>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><b><i>Note (Windows only):</i></b></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; margin-top: 0cm; margin-left: 1cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><i>By default, command line runs with hidden console window and output is redirected to "Plugin info" field. To show the window of the running command, set the checkbox "Show console window".</i></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">Once
you click on the generate button the following will happen:</font></font></p>
<ol>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">Eeschema
creates an intermediate netlist file *.xml, for instance <i>test.xml.</i></font></font></p>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">Eeschema
runs the script from the command line to create the final output
file.</font></font></p>
</ol>
<h2 class="western">4.2 - Generate netlist files with the command
line</h2>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">Assuming
we are using the program <i>xsltproc.exe</i><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal">to
apply the sheet style to the intermediate file, </span></span><i>xsltproc.exe</i><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal">is
executed with the following command.</span></span></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">xsltproc.exe
-o &lt; output filename &gt; &lt; style-sheet filename &gt; &lt;
input XML file to convert &gt;</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">On
Windows the command line is the following.<br><i>f:/kicad/bin/xsltproc.exe
-o &ldquo;%O&rdquo; f:/kicad/bin/plugins/myconverter.xsl &ldquo;%I&rdquo;</i></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">On
Linux the command becomes as following.<br><i>xsltproc -o &ldquo;%O&rdquo;
/usr/local/kicad/bin/plugins/myconverter .xsl &ldquo;%I&rdquo;<br>w</i><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">here
</span></span></span><span style="font-variant: normal"><i><span style="font-weight: normal">myconverter</span></i></span><i><span style="font-weight: normal">.xsl</span></i><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">is
the style-sheet that you are applying.</span></span></span></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">Do
not forget the double quotes</span></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">around
the file names, this allows them to have spaces after the
substitution by Eeschema.</span></span></span></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; font-variant: normal; font-style: normal; font-weight: normal; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">If
a Python script is used, the command line is something like
(depending on the Python script):</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><i>python</i>
<i>f:/kicad/bin/plugins/bom-in-python/myconverter.py</i>
&ldquo;<i>%I&rdquo;&ldquo;%O&rdquo;<br>or<br>python</i>
<i>/usr/local/kicad/bin/plugins/bom-in-python/myconverter .xsl &ldquo;%I&rdquo;
&ldquo;%O&rdquo; </i></font></font>
</p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">The
command line format accepts parameters for filenames:</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">The
supported formatting parameters are.</font></font></p>
<ul>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><b>%B</b>
=&gt; base filename of selected output file, minus path and extension.</font></font></p>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><b>%P</b>
=&gt; project directory, without name and without trailing '/'.</font></font></p>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><b>%I
</b>=&gt; complete filename and path of the temporary input file
(the intermediate net file).</font></font></p>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><b>%O</b>
=&gt; complete filename and path (but without extension) of the user
chosen output file.</font></font></p>
</ul>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><b>%I</b>
will be replaced by the actual intermediate file name<span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">(usually
the full root sheet filename with extension &ldquo;.xml&rdquo;)</span></span></span><br><span style="font-variant: normal"><span style="font-style: normal"><b>%O</b></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">will
be replaced by the actual output file name (the full root sheet
filename minus extension).<br></span></span></span><span style="font-variant: normal"><span style="font-style: normal"><b>%B</b></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">will
be replaced by the actual output short file name</span></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">(the
short root sheet filename minus extension).<br></span></span></span><span style="font-variant: normal"><span style="font-style: normal"><b>%P</b></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">will
be replaced by the actual current project path.</span></span></span></font></font></p>
<h2 class="western">4.3 - Command line format:</h2>
<h3 class="western">4.3.1 - Remark:</h3>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">Most
of time, the created file must have an extension, depending on its
type.<br>Therefore you have to add to the option <i><b>%O</b></i> the
right file extension.</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">For
instance:</font></font></p>
<ul>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><i><b>%O.csv</b></i>
to create a .csv file (comma separated value file).</font></font></p>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><i><b>%O.html</b></i>
to create a .html file.</font></font></p>
<li/>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><i><b>%O.bom</b></i>
to create a .bom file.</font></font></p>
</ul>
<h3 class="western">4.3.2 Example for<i> </i><span style="font-variant: normal"><i>xsltproc:</i></span></h3>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><span style="font-variant: normal"><span style="font-style: normal">The
command line format for xsltproc is the following:<br>&lt; path of
</span></span>xsltproc &gt; <span style="font-variant: normal"><span style="font-style: normal">xsltproc
&lt; </span></span>xsltproc parameters &gt;</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">On
Windows:<br><i><b>f:/kicad/bin/xsltproc.exe -o &ldquo;%O.bom</b></i>&rdquo;
<i><b>f:/kicad/bin/plugins/netlist_form_pads-pcb.xsl &ldquo;%I&rdquo;</b></i></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">On
Linux:<br><i><b>xsltproc -o &ldquo;%O.bom</b></i>&rdquo;
<i><b>/usr/local/kicad/bin/plugins/netlist_form_pads-pcb.xsl &ldquo;%I&rdquo;</b></i></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt"><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">The
above examples assume</span></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">xsltproc
is installed on your PC under Windows xsl</span></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">exe</span></span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">files
located in kicad/bin</span></span></span><span style="font-variant: normal"><i><b>plugins/</b></i></span><span style="font-variant: normal"><span style="font-style: normal"><span style="font-weight: normal">.</span></span></span></font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0">
<br/>
</p>
<h3 class="western">4.3.3 <i>Example fo</i><span style="font-variant: normal"><i>r
python scripts:</i></span></h3>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">The
command line format for python is something like:<br><span style="font-variant: normal"><span style="font-style: normal">python</span></span><span style="font-variant: normal">
</span><span style="font-variant: normal"><span style="font-style: normal">&lt;
script file name </span></span>&gt; &lt; input filename &gt; &lt;
output filename &gt;</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">On
Windows:<br><i><b>python.exe f:/kicad/bin/plugins
/bom-in-python/my_python_script.py</b></i> &ldquo;<i><b>%I&rdquo;
&ldquo;%O.html</b></i>&rdquo;</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">On
Linux:<br><i><b>python</b></i> <i><b>/usr/local/kicad/bin/plugins
/bom-in-python/my_python_script.py</b></i> &ldquo;<i><b>%I&rdquo;
&ldquo;%O.csv</b></i>&rdquo;</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<font face="Times New Roman, serif"><font size="3" style="font-size: 12pt">Assuming
python is installed on your PC, and python scripts are located in
<i><b>kicad/bin/plugins /bom-in-python/</b></i>.</font></font></p>
<p lang="en-US" class="western" style="margin-bottom: 0cm; widows: 0; orphans: 0; page-break-before: auto; page-break-after: auto">
<br/>
</p>
</body>
</html>

View File

@ -0,0 +1,143 @@
# 1 - Full documentation
The Eeschema documentation (*eeschema.html*) describes this intermediate netlist and gives examples(chapter ***creating customized netlists and bom files***).
# 2 - The intermediate Netlist File
BOM files (and netlist files) can be created from an *Intermediate netlist file* created by Eeschema.
This file uses XML syntax and is called the intermediate netlist. The intermediate netlist includes a large amount of data about your board and because of this, it can be used with post-processing to create a BOM or other reports.
Depending on the output (BOM or netlist), different subsets of the complete Intermediate Netlist file will be used in the post-processing.
# 3 - Conversion to a new format
By applying a post-processing filter to the Intermediate netlist file you can generate foreign netlist files as well as BOM files. Because this conversion is a text to text transformation, this post-processing filter can be written using *Python*, *XSLT*, or any other tool capable of taking XML as input.
XSLT itself is a XML language suitable for XML transformations. There is a free program called `xsltproc` that you can download and install. The `xsltproc` program can be used to read the Intermediate XML netlist input file, apply a style-sheet to transform the input, and save the results in an output file. Use of `xsltproc` requires a style-sheet file using XSLT conventions. The full conversion process is handled by Eeschema, after it is configured once to run `xsltproc` in a specific way.
A Python script is somewhat more easy to create.
# 4 - Initialization of the dialog window
You should add a new plugin (a script) in the plugin list by clicking on the Add Plugin button.
## 4.1 - Plugin Configuration Parameters
The Eeschema plug-in configuration dialog requires the following information:
* The title: for instance, the name of the netlist format.
* The command line to launch the converter (usually a script).
***Note (Windows only):***
*By default, the command line runs with hidden console window and output is redirected to "Plugin info" field. To show the window of the running command, set the checkbox "Show console window".*
Once you click on the generate button the following will happen:
1. Eeschema creates an intermediate netlist file \*.xml, for instance `test.xml`.
2. Eeschema runs the script from the command line to create the final output file.
## 4.2 - Generate netlist files with the command line
Assuming we are using the program `xsltproc.exe` to apply the sheet style to the intermediate file, `xsltproc.exe` is executed with the following command.
```
xsltproc.exe -o <output filename> <style-sheet filename> <input XML file to convert>
```
On Windows the command line is the following.
```
f:/kicad/bin/xsltproc.exe -o "%O" f:/kicad/bin/plugins/myconverter.xsl "%I"
```
On Linux the command becomes as following.
```
xsltproc -o "%O" /usr/local/kicad/bin/plugins/myconverter .xsl "%I"
```
where `myconverter.xsl` is the style-sheet that you are applying.
Do not forget the double quotes around the file names, this allows them to have spaces after the substitution by Eeschema.
If a Python script is used, the command line is something like (depending on the Python script):
```
python f:/kicad/bin/plugins/bom-in-python/myconverter.py "%I" "%O"
```
or
```
python /usr/local/kicad/bin/plugins/bom-in-python/myconverter .xsl "%I" "%O"
```
The command line format accepts parameters for filenames. The supported formatting parameters are:
* `%B`: base filename of selected output file, minus path and extension.
* `%P`: project directory, without name and without trailing '/'.
* `%I`: complete filename and path of the temporary input file
(the intermediate net file).
* `%O`: complete filename and path (but without extension) of the user
chosen output file.
`%I` will be replaced by the actual intermediate file name (usually the full root sheet filename with extension ".xml").
`%O` will be replaced by the actual output file name (the full root sheet filename minus extension).
`%B` will be replaced by the actual output short file name (the short root sheet filename minus extension).
`%P` will be replaced by the actual current project path.
## 4.3 - Command line format:
### 4.3.1 - Remark:
Most of time, the created file must have an extension, depending on its type.
Therefore you have to add to the option ***%O*** the right file extension.
For instance:
* **%O.csv** to create a .csv file (comma separated value file).
* **%O.htm** to create a .html file.
* **%O.bom** to create a .bom file.
### 4.3.2 Example for xsltproc:
The command line format for xsltproc is the following:
```
<path of xsltproc> xsltproc <xsltproc parameters>
```
On Windows:
```
f:/kicad/bin/xsltproc.exe -o "%O.bom" f:/kicad/bin/plugins/netlist_form_pads-pcb.xsl "%I"
```
On Linux:
```
xsltproc -o "%O.bom" /usr/local/kicad/bin/plugins/netlist_form_pads-pcb.xsl "%I"
```
The above examples assume `xsltproc` is installed on your PC under Windows and xsl files located in `<path_to_kicad>/kicad/bin/plugins/`.
### 4.3.3 Example for Python scripts:
Assuming python is installed on your PC, and python scripts are located in
`<path_to_kicad>/kicad/bin/plugins/bom-in-python/`,
the command line format for python is something like:
```
python <script file name> <input filename> <output filename>
```
On Windows:
```
python.exe f:/kicad/bin/plugins/bom-in-python/my_python_script.py "%I" "%O.html"
```
On Linux:
```
python /usr/local/kicad/bin/plugins/bom-in-python/my_python_script.py "%I" "%O.csv"
```