Merge lp:~kicad-gost-committers/kicad/kicad into lp:kicad/product

Proposed by Alexander Lunev
Status: Rejected
Rejected by: Chris Pavlina
Proposed branch: lp:~kicad-gost-committers/kicad/kicad
Merge into: lp:kicad/product
Diff against target: 176611 lines (+37823/-68720)
140 files modified
.bzrignore (+1/-0)
CMakeLists.txt (+44/-1)
CMakeModules/CreateBzrVersionHeader.cmake (+5/-1)
CMakeModules/FindOpenOffice.cmake (+192/-0)
common/build_version.cpp (+4/-0)
common/class_plotter.cpp (+5/-0)
common/dialog_about/AboutDialog_main.cpp (+3/-0)
common/gr_basic.cpp (+8/-0)
common/kiway.cpp (+8/-0)
cvpcb/cvframe.cpp (+8/-0)
cvpcb/cvpcb_mainframe.h (+3/-0)
cvpcb/readwrite_dlgs.cpp (+37/-1)
demos/CMakeLists.txt (+1/-0)
demos/GOST/multivibrator-comp-idx-kicad_uno_iface.log (+103/-0)
demos/GOST/multivibrator-spec-kicad_uno_iface.log (+180/-0)
demos/GOST/multivibrator.sch (+250/-0)
eeschema/BOM/BOM_lister.h (+190/-0)
eeschema/BOM/build_BOM.cpp (+736/-0)
eeschema/BOM/dialogs/dialog_build_BOM.cpp (+592/-0)
eeschema/BOM/dialogs/dialog_build_BOM.h (+93/-0)
eeschema/BOM/dialogs/dialog_build_BOM_base.cpp (+157/-0)
eeschema/BOM/dialogs/dialog_build_BOM_base.fbp (+2060/-0)
eeschema/BOM/dialogs/dialog_build_BOM_base.h (+83/-0)
eeschema/CMakeLists.txt (+54/-0)
eeschema/GOST-doc-gen/CMakeLists.txt (+129/-0)
eeschema/GOST-doc-gen/GOST_comp_manager.cpp (+1051/-0)
eeschema/GOST-doc-gen/GOST_comp_manager.h (+96/-0)
eeschema/GOST-doc-gen/common_doc_iface.h (+55/-0)
eeschema/GOST-doc-gen/common_funcs.cpp (+493/-0)
eeschema/GOST-doc-gen/common_funcs.h (+60/-0)
eeschema/GOST-doc-gen/component.cpp (+435/-0)
eeschema/GOST-doc-gen/component.h (+103/-0)
eeschema/GOST-doc-gen/component_db.cpp (+913/-0)
eeschema/GOST-doc-gen/component_db.h (+134/-0)
eeschema/GOST-doc-gen/dialogs/frame_GOST_doc_gen_base.cpp (+234/-0)
eeschema/GOST-doc-gen/dialogs/frame_GOST_doc_gen_base.fbp (+1642/-0)
eeschema/GOST-doc-gen/dialogs/frame_GOST_doc_gen_base.h (+106/-0)
eeschema/GOST-doc-gen/dictionaries.cpp (+135/-0)
eeschema/GOST-doc-gen/dictionaries.h (+58/-0)
eeschema/GOST-doc-gen/doc_common.cpp (+1349/-0)
eeschema/GOST-doc-gen/doc_common.h (+218/-0)
eeschema/GOST-doc-gen/doc_common.py (+244/-0)
eeschema/GOST-doc-gen/doc_component_index.cpp (+229/-0)
eeschema/GOST-doc-gen/doc_component_index.h (+45/-0)
eeschema/GOST-doc-gen/doc_specification.cpp (+649/-0)
eeschema/GOST-doc-gen/doc_specification.h (+57/-0)
eeschema/GOST-doc-gen/oo_iface.cxx (+320/-0)
eeschema/GOST-doc-gen/oo_iface.hxx (+118/-0)
eeschema/GOST-doc-gen/oo_python_uno_iface.cpp (+212/-0)
eeschema/GOST-doc-gen/oo_python_uno_iface.h (+57/-0)
eeschema/GOST-doc-gen/rpc_doc_iface.cpp (+286/-0)
eeschema/GOST-doc-gen/rpc_doc_iface.h (+66/-0)
eeschema/GOST-doc-gen/uno_iface.py (+207/-0)
eeschema/component_references_lister.cpp (+221/-0)
eeschema/general.h (+16/-0)
eeschema/help_common_strings.h (+6/-0)
eeschema/libedit.cpp (+4/-0)
eeschema/menubar.cpp (+25/-0)
eeschema/pinedit.cpp (+9/-1)
eeschema/sch_junction.cpp (+1/-1)
eeschema/sch_reference_list.h (+71/-0)
eeschema/schframe.cpp (+32/-0)
eeschema/schframe.h (+12/-0)
eeschema/tool_viewlib.cpp (+4/-0)
extra/pcad2kicadsch/CMakeLists.txt (+117/-0)
extra/pcad2kicadsch/Info.plist (+52/-0)
extra/pcad2kicadsch/README.txt (+62/-0)
extra/pcad2kicadsch/dialogs/pcad2kicad_frame_base.cpp (+64/-0)
extra/pcad2kicadsch/dialogs/pcad2kicad_frame_base.fbp (+475/-0)
extra/pcad2kicadsch/dialogs/pcad2kicad_frame_base.h (+61/-0)
extra/pcad2kicadsch/pcad2kicad.cpp (+134/-0)
extra/pcad2kicadsch/pcad2kicad.h (+56/-0)
extra/pcad2kicadsch/pcad2kicad_frame.cpp (+207/-0)
extra/pcad2kicadsch/pcad2kicadsch.rc (+1/-0)
extra/pcad2kicadsch/sch.cpp (+244/-0)
extra/pcad2kicadsch/sch.h (+66/-0)
extra/pcad2kicadsch/sch_arc.cpp (+142/-0)
extra/pcad2kicadsch/sch_arc.h (+62/-0)
extra/pcad2kicadsch/sch_bus.cpp (+97/-0)
extra/pcad2kicadsch/sch_bus.h (+51/-0)
extra/pcad2kicadsch/sch_component.cpp (+64/-0)
extra/pcad2kicadsch/sch_component.h (+63/-0)
extra/pcad2kicadsch/sch_junction.cpp (+83/-0)
extra/pcad2kicadsch/sch_junction.h (+57/-0)
extra/pcad2kicadsch/sch_line.cpp (+240/-0)
extra/pcad2kicadsch/sch_line.h (+63/-0)
extra/pcad2kicadsch/sch_module.cpp (+419/-0)
extra/pcad2kicadsch/sch_module.h (+79/-0)
extra/pcad2kicadsch/sch_pin.cpp (+259/-0)
extra/pcad2kicadsch/sch_pin.h (+69/-0)
extra/pcad2kicadsch/sch_port.cpp (+94/-0)
extra/pcad2kicadsch/sch_port.h (+56/-0)
extra/pcad2kicadsch/sch_sheet.cpp (+423/-0)
extra/pcad2kicadsch/sch_sheet.h (+67/-0)
extra/pcad2kicadsch/sch_symbol.cpp (+446/-0)
extra/pcad2kicadsch/sch_symbol.h (+75/-0)
extra/pcad2kicadsch/sch_text.cpp (+108/-0)
extra/pcad2kicadsch/sch_text.h (+55/-0)
include/common.h (+20/-0)
include/frame_type.h (+4/-0)
include/id.h (+5/-0)
include/kiway.h (+3/-1)
pcbnew/hotkeys.cpp (+7/-4)
pcbnew/hotkeys.h (+1/-0)
pcbnew/hotkeys_board_editor.cpp (+7/-0)
pcbnew/kicad_netlist_reader.cpp (+42/-0)
pcbnew/legacy_netlist_reader.cpp (+5/-1)
pcbnew/onrightclick.cpp (+5/-2)
pcbnew/pcad2kicadpcb_plugin/examples/CK1202_V1.kicad_pcb (+18172/-0)
pcbnew/pcad2kicadpcb_plugin/examples/CK1202_V1.pcb (+0/-66655)
pcbnew/pcad2kicadpcb_plugin/examples/files.txt (+0/-6)
pcbnew/pcad2kicadpcb_plugin/pcad2kicad_common.h (+0/-88)
pcbnew/pcad2kicadpcb_plugin/pcb_arc.h (+0/-61)
pcbnew/pcad2kicadpcb_plugin/pcb_copper_pour.cpp (+0/-112)
pcbnew/pcad2kicadpcb_plugin/pcb_copper_pour.h (+0/-54)
pcbnew/pcad2kicadpcb_plugin/pcb_cutout.cpp (+0/-74)
pcbnew/pcad2kicadpcb_plugin/pcb_cutout.h (+0/-53)
pcbnew/pcad2kicadpcb_plugin/pcb_keepout.cpp (+0/-76)
pcbnew/pcad2kicadpcb_plugin/pcb_keepout.h (+0/-52)
pcbnew/pcad2kicadpcb_plugin/pcb_line.h (+0/-62)
pcbnew/pcad2kicadpcb_plugin/pcb_module.h (+0/-75)
pcbnew/pcad2kicadpcb_plugin/pcb_net.cpp (+0/-104)
pcbnew/pcad2kicadpcb_plugin/pcb_net.h (+0/-68)
pcbnew/pcad2kicadpcb_plugin/pcb_pad.h (+0/-64)
pcbnew/pcad2kicadpcb_plugin/pcb_pad_shape.cpp (+0/-142)
pcbnew/pcad2kicadpcb_plugin/pcb_pad_shape.h (+0/-61)
pcbnew/pcad2kicadpcb_plugin/pcb_plane.cpp (+0/-95)
pcbnew/pcad2kicadpcb_plugin/pcb_plane.h (+0/-53)
pcbnew/pcad2kicadpcb_plugin/pcb_polygon.h (+0/-75)
pcbnew/pcad2kicadpcb_plugin/pcb_text.cpp (+0/-133)
pcbnew/pcad2kicadpcb_plugin/pcb_text.h (+0/-59)
pcbnew/pcad2kicadpcb_plugin/pcb_via.cpp (+0/-139)
pcbnew/pcad2kicadpcb_plugin/pcb_via.h (+0/-54)
pcbnew/pcad2kicadpcb_plugin/pcb_via_shape.cpp (+0/-88)
pcbnew/pcad2kicadpcb_plugin/pcb_via_shape.h (+0/-52)
pcbnew/pcad2kicadpcb_plugin/s_expr_loader.cpp (+0/-115)
pcbnew/pcad2kicadpcb_plugin/s_expr_loader.h (+0/-37)
pcbnew/pcb_netlist.h (+13/-0)
scripting/python_scripting.cpp (+3/-0)
template/kicad.pro (+6/-0)
To merge this branch: bzr merge lp:~kicad-gost-committers/kicad/kicad
Reviewer Review Type Date Requested Status
Wayne Stambaugh Disapprove
jean-pierre charras Needs Information
Review via email: mp+163239@code.launchpad.net

Description of the change

1) implemented document generator conforming to Russian standards (the root regulating document is "GOST 2.001-93"). The generator forms component index and specification documents by means of OpenOffice or LibreOffice

2) implemented component manager (contains only English words and could be used by any KiCad user for general purpose). Features:
   - listing all components and displaying the full component string in the form how it would be printed in the resultant documents
   - adding new circuit variants
   - viewing and working with components in various planes (full list, constant part, variable part for given variant)
   - assigning components to variants
   - possibility to assign a component "not installed" status. This status will be displayed in the component index document and as a result such components will not be printed in the specification document
   - editing component attributes (Title, Value, Type, Precision and so on)
   - components with reference description like "A1C1" are formed into sets and appropriately printed in the resultant documents
   - possibility to edit components as a group by means of multiple selection in the main table of the component manager
   - all changes made in both the eeshema and the component manager are mutually reflected to each other (invisibly to a user)
   - initiating immediate generation of GOST documents from the component manager

To post a comment you must log in.
4111. By Alexander Lunev

merge with lp:kicad branch

Revision history for this message
jean-pierre charras (jp-charras) wrote :

Alexander,
This is a very large patch (6400 lines), without any explanation, and not comments in sources.

What is the purpose of this patch?

Many strings are not in English, which could be internationalized.
When not in English, most of developpers cannot understand them (Note there is not French strings in Kicad, and I am a French guy).

review: Needs Information
Revision history for this message
Alexander Lunev (al-lunev) wrote :

The explanation was provided: "Implemented document generator conforming to Russian standards."
The root regulating document of these standards is "ГОСТ 2.001-93" (http://www.gostedu.ru/5588.html).

There are comments in sources but not in all places.
Some of the places do not need to be documented in the code because the code is written according to the standards. The standards are the main source of comments. If some code does not conform to the standards then it is buggy and should be corrected according to the standards.

The purpose of this new feature is to automatically generate component index and specification documents by means of OpenOffice or LibreOffice and according to Russian standards.

As you can see, all this code is put into KICAD_GOST conditional compilation section. This section is intended for Russian speaking people only and only for countries where the mentioned above standards are valid. Such countries are Russia, Belarus, Ukraine, Moldova, Kazakhstan, Azerbaijan, Armenia, Kyrgyzstan, Uzbekistan, Tajikistan, Georgia, and Turkmenistan (http://en.wikipedia.org/wiki/GOST).

Thus the strings which are in Russian are put into the resulting forms. The format of these forms is dictated by Russian standards and it must be as it is.

4112. By Alexander Lunev

uno_iface.py: supported Python 3

Revision history for this message
jean-pierre charras (jp-charras) wrote :

"Implemented document generator" has not a lot of meaning, it covers many things.
And your main link is a russian doc. I am still not able to know what is doing your patch.
Is something a like a Bill of Material ?

If yes, now the right approach is to use the generic xml netlist to extract the schematic info, and external tools (scripts, or other tools) to parse this netlist and create the doc, not to add code inside the existing kicad code.
This is fully transparent for the user.
See Eeschema, chapter 14 for more info.
There are also few examples in python in sources.

I do not agree with the sentence:
"This section is intended for Russian speaking people only and only for countries where the mentioned above standards are valid"
I am talking about Kicad code. It should be readable by all developpers.
You can use English sentences, and internationalization to see them in Russian form or other languages.
When they should be in a given language, at least they can be defined under an English #define keyword

4113. By Alexander Lunev

fixed an issue with UTF8 encoding

Revision history for this message
Alexander Lunev (al-lunev) wrote :

""Implemented document generator" has not a lot of meaning, it covers many things."

Instead I wrote "Implemented document generator conforming to Russian standards". This means that the generator forms documents according to the set of Russian standards.
In this specific sphere (electronic circuit diagrams and accompanying documentation) we have only one valid standard in Russia. Its name, if translate it to English, is "Unified system for design documentation". The root regulating document of the standard is "ГОСТ 2.001-93". "ГОСТ" can be transliterated to English as "GOST". That is why there is cmake KICAD_GOST option in KiCad.
This new feature (generator) is intended only for Russia users and users of other countries which use the same standard (the standard is in Russian).

"Is something a like a Bill of Material ?
If yes, now the right approach is to use the generic xml netlist to extract the schematic info, and external tools (scripts, or other tools) to parse this netlist and create the doc, not to add code inside the existing kicad code.
This is fully transparent for the user."

Yes, it is like a BOM.
Using an intermediate file is NOT the right approach. It is only possible approach and can be considered as a minimum goal.
And it is not transparent to an ordinary user.

It is transparent to an ordinary user if a user clicks one button and everything works, the user immediately takes the generated documents. It is a more elaborate and difficult task. Moreover, this task has been already completed.

Among cons of using an intermediate file are:
1) e-mails like this: "[kicad-users] Python library script "pcbnew" - where is it?"
2) choosing correct settings by a user in KiCad to generate the right form of an intermediate file
3) synchronizing the source code of GOST-doc-gen and rebuilding it every time when the format of an intermediate file is changed

And I do not understand you. In case of pcad2kicad, standalone executable and an intermediate xml file are bad. But here all these "devils" are good!?

"You can use English sentences, and internationalization to see them in Russian form or other languages."

What for?
Languages other than Russian are not used for these literals.

Revision history for this message
jean-pierre charras (jp-charras) wrote :

The intermediate file is not an intermediate file:
it is *the* new netlist format, which exists under 2 format:
a S-expression format (easy to parse with the s-expr internal parser)
a xml format: the same file, easy to parse with external xml parsers.
This netlist contains all data to create BOM and boards ...
Many post processings uses a netlist, so I do not understand why is NOT the right approach.

And yes, using this approach is fully transparent to the user, once the comand line is initialized (see the netlist dialog). Only one click to generate the file. And the user does not know there is an intermediate file (kicad already uses intermediate files).

Yours cons are irrelevant:
1 - the guy has not even had a look to files in kicad (kicad/python)
2 - there is no setting (just a command line which could be predefined)
3 - intermediate file does not change as fast as the kicad internal code.

For kicad2pcad, you forgot what I said you:
1 - Pcbnew includes a plugin mechanism to import files, use it.
2 - the file to convert was a S-expr files, and pcbnew has a very good S-expr parser. Why to write your S-expr code parser to create an inttermediate file with a new parser, this was duplicate and/or useless code.

This is very different from the BOM generation

About Russian literals, one time more, I am saying I am talking about internal Kicad code.
Your patch come with not comments, and many sentences not readable for non Russian contributors
It means this work cannot be modified and used by some other contributor which want mo modify the BOM to make their own BOM format.
Each company has its BOM format, therefore GOST format is only one of multiple existing formats.
Creating code which cannot be understood by contributors is not the spirit of free open source software.

Besides, the patch creates a heavy dependance of Kicad sources with openoffice/libreoffice sdk.
This is a *major drawback*.
This can be easily avoided by a fully external script.

If it is only for Russian users, no problem with Russian literals.
But if it is only for Russian users, there is no room for this patch inside Kicad code.
Code inside Kicad is made for everybody.

Therefore I cannot accept your patch.

Revision history for this message
Alexander Lunev (al-lunev) wrote :
Download full text (6.8 KiB)

Now I generated netlist file and there are not at least the following fields:
TITLE_BLOCK.GetTitle()
TITLE_BLOCK.GetComment1()
TITLE_BLOCK.GetComment2()
TITLE_BLOCK.GetComment3()
TITLE_BLOCK.GetComment4()
and so on.
These fields and many other are necessary for GOST-doc-gen. All the necessary fields are easily accessible inside of KiCad eeschema.

"And yes, using this approach is fully transparent to the user, once the comand line is initialized (see the netlist dialog). Only one click to generate the file. And the user does not know there is an intermediate file"

And what is next?
1) A user clicked 2) the user does not know there is an intermediate file 3) and what is next? Where are the resultant GOST documents?

"Yours cons are irrelevant:
1 - the guy has not even had a look to files in kicad (kicad/python)
2 - there is no setting (just a command line which could be predefined)
3 - intermediate file does not change as fast as the kicad internal code."

1,2 - explain, please, the whole picture in detail (from the click up to getting the resultant GOST documents).
3 - file formats of KiCad change quite often. In case of embedding GOST-doc-gen inside of eeschema sources, any changes in eeschema will be synchronously made in both the eeschema and GOST-doc-gen part. And it is transparent to a user because a user does not need to search for compatible GOST-doc-gen executible if such even exists. Taking the same benefit for pcad2kicad into a account I agreed with Wayne to transform standalone executable into pcad2kicad Pcbnew plugin.

And I do not understand why you are so insisting on separating everything from KiCad.
According to your logic, may be let us remove Gerber or VRML generation from Pcbnew? Because it is enough to have the external kicad_pcb file format? May be let us have external tools to generate Gerber and so on?

By the way, where is pcad2kicadsch in the KiCad source tree?
The whole year has already passed however pcad2kicadsch still lives as a separate project. And all this despite all your and the rest of KiCad admin caprices were satisfied!

"About Russian literals, one time more, I am saying I am talking about internal Kicad code.
Your patch come with not comments, and many sentences not readable for non Russian contributors
It means this work cannot be modified and used by some other contributor which want mo modify the BOM to make their own BOM format.
Each company has its BOM format, therefore GOST format is only one of multiple existing formats."

Once more again, "Your patch come with not comments" is not the truth. There are comments but in not all places. I am going to add more comments.
I doubt that adopting my work by other non Russian speaking contributors for countries which do not use the GOST makes sense. I mean the specific part of code which implements GOST requirements and contains Russian literals.

I suggest you to compile KICAD_GOST version and take a look at generated forms (no source dependencies, only OpenOffice or LibreOffice needs to be installed). There is a sample circuit in demos (demos/GOST/multivibrator.sch).
If you really thinks that such forms of documents can be adopted then no problem, I, of...

Read more...

4114. By Alexander Lunev

added GOST component manager

4115. By Alexander Lunev

fixed an issue with processing the first line of the main table (listCtrl);
fixed an issue with eeschema not asking to save project if component attributes actually changed;
supported floating window of component manager (from now on the component manager can lose focus without the need to close its windows)

Revision history for this message
Konstantin Baranovskiy (baranovskiykonstantin) wrote :

@jean-pierre charras, function GOST_doc_gen really a very important tool in the design of electronic circuits and implemented it qualitatively (thanks to Alexander Lunev). I see no reason to give up the proposed functionality. All the more so implemented interfaces can be used by other developers to implement new features.

Revision history for this message
Wayne Stambaugh (stambaughw) wrote :

This merge request is a highly domain specific (GOST) solution that's only purpose it to create a BOM in the GOST format. Given the support issues with our current BOM output (not the generic netlist support), the last thing we need is yet another BOM generator that users will complain about. Check the users mailing list on Yahoo if you don't believe this is an issue. It also pulls in the OpenOffice API and RPC as optional build dependencies which I have no interest in supporting. It increases the number of #ifdef GOST/#endif conditional code which the project has been working at reducing. The eventual goal is to add user definable borders and title blocks which would eliminate all of the GOST code except the reference designators used in component sub-parts which could probably be replace with some type of user definable string substitution. If this was implemented as script called by the new netlist post processing support I would be more inclined to include it as a good example of how to export a BOM into an OpenOffice file. Adding the title block information to information to the XML netlist probably would be that objectionable and then you would have all of the information you need to generate your OpenOffice file using ptyhon-uno. I recommend that this be kept as a user specific branch.

review: Disapprove
Revision history for this message
Alexander Lunev (al-lunev) wrote :

Wayne, you disappointed me once again.
The first time was with pcad2kicad standalone executable.

The situation has repeated. When a hard work is already completed and ready to use by many users around the world, you suggest to throw it away not concerning the users and me of course.

You also said nothing about the component manager:

"implemented component manager (contains only English words and could be used by any KiCad user for general purpose). Features:
   - listing all components and displaying the full component string in the form how it would be printed in the resultant documents
   - adding new circuit variants
   - viewing and working with components in various planes (full list, constant part, variable part for given variant)
   - assigning components to variants
   - possibility to assign a component "not installed" status. This status will be displayed in the component index document and as a result such components will not be printed in the specification document
   - editing component attributes (Title, Value, Type, Precision and so on)
   - components with reference description like "A1C1" are formed into sets and appropriately printed in the resultant documents
   - possibility to edit components as a group by means of multiple selection in the main table of the component manager
   - all changes made in both the eeshema and the component manager are mutually reflected to each other (invisibly to a user)
   - initiating immediate generation of GOST documents from the component manager"

Revision history for this message
Wayne Stambaugh (stambaughw) wrote :

On 5/13/2013 6:43 PM, Alexander Lunev wrote:
> Wayne, you disappointed me once again.
> The first time was with pcad2kicad standalone executable.
>
> The situation has repeated. When a hard work is already completed and ready to use by many users around the world, you suggest to throw it away not concerning the users and me of course.
>
> You also said nothing about the component manager:
>
> "implemented component manager (contains only English words and could be used by any KiCad user for general purpose). Features:
> - listing all components and displaying the full component string in the form how it would be printed in the resultant documents
> - adding new circuit variants
> - viewing and working with components in various planes (full list, constant part, variable part for given variant)
> - assigning components to variants
> - possibility to assign a component "not installed" status. This status will be displayed in the component index document and as a result such components will not be printed in the specification document
> - editing component attributes (Title, Value, Type, Precision and so on)
> - components with reference description like "A1C1" are formed into sets and appropriately printed in the resultant documents
> - possibility to edit components as a group by means of multiple selection in the main table of the component manager
> - all changes made in both the eeshema and the component manager are mutually reflected to each other (invisibly to a user)
> - initiating immediate generation of GOST documents from the component manager"
>

Alexander,

Please let me make it clear that this will be my last response to this
merge request. I made my decision based on what I feel is best for the
project. I expect at times my decisions will disappoint but that is not
the goal.

At no point did I ever tell you to throw away any of your code. That
doesn't even sound like something I would say. Regarding pcad2kicad, I
suggested that it be refactored as a plug-in which was accepted in KiCad
so I fail to see any issue there. I also did not tell you to throw away
this merge request. I only suggested that it maintained in a separate
branch. I am not sure how this hurts users as long as your branch is
available to the public. The choice to throw away this code would be yours.

As a lead developer, even I would not have started on a project like
this without consulting the other lead developers at a minimum for
input. The decision to take on this project was yours alone and you
gave no consideration to the fact that it could get rejected.

I looks to me as though your "component manager" is spreadsheet view of
component properties similar to OrCad which is useful. I'm not sure why
you chose to implement it with the OpenOffice SDK and RPC instead of
wxGrid which would have been a better fit for the project. This single
decision alone probably would have made this merge request worth
considering. This most certainly would have been suggest if you would
have let other developers know what your intentions were before you started.

Best Regards,

Wayne

4116. By Konstantin Baranovskiy

in GOST part was fixed numbering of parts elements (numbers instead of letters) in library viewer and in message's panels;
small fix in GOST_doc_gen.

4117. By Alexander Lunev

temporarily discarded using a floating (independent) window of the component manager because of crashing issues

4118. By Alexander Lunev

merge with revision 4153 of lp:kicad branch

4119. By Alexander Lunev

supported OpenOffice/LibreOffice installations distributed with Python as a bundle in case of Linux OS

4120. By Alexander Lunev

merge with revision 4155 of lp:kicad branch

4121. By Alexander Lunev

merge with lp:~kicad-gost-committers/kicad/pcad2kicad branch

4122. By Alexander Lunev

added "eeschema->Tools->Run pcad2kicadsch converter" menu item;
added a link to the KiCad about dialog referencing the Internet forum dedicated to KiCad Russian support, including GOST support

4123. By Alexander Lunev

fixed compilation warnings

4124. By Alexander Lunev

improved odt file loading diagnostics

4125. By Alexander Lunev

added optional uno_iface.py logging to a file

4126. By Alexander Lunev

merge with revision 4157 of lp:kicad branch

4127. By Alexander Lunev

added Info.plist file for pcad2kicadsch Mac OS support;
copied eeschema/eeschema.icns to extra/pcad2kicadsch/pcad2kicadsch.icns;
copied eeschema/eeschema_doc.icns to extra/pcad2kicadsch/pcad2kicadsch_doc.icns

4128. By Alexander Lunev

merge with revision 4168 of lp:kicad branch

4129. By Alexander Lunev

GOST-doc-gen: generating documents in hidden mode to prevent a user from closing office before the document is formed;
added progress dialog

4130. By Alexander Lunev

GOST-doc-gen: supported Company field

4131. By Alexander Lunev

merge with revision 4171 of lp:kicad branch

4132. By Alexander Lunev

recovered "eeschema->Tools->Generate Bill of Materials" menu item due to user requests to do this

4133. By Alexander Lunev

GOST-doc-gen: fixed an issue with long strings w/o tokens;
supported parentheses to make line feeds if necessary;
added workaround for eeschema bug (Value field is assigned to Chip Name field by default on the component adding from a library)

4134. By Alexander Lunev

merge with revision 4182 of lp:kicad branch

4135. By Alexander Lunev

merge with revision 4184 of lp:kicad branch

4136. By Alexander Lunev

merge with revision 4192 of lp:kicad branch

4137. By Alexander Lunev

merge with revision 4199 of lp:kicad branch

4138. By Alexander Lunev

added CK1202_V1.kicad_pcb file as an output reference to test pcad2kicadpcb converter.
The file was converted from the original CK1202_V1.pcb P-Cad pcb file by pcad2kicadpcb

4139. By Alexander Lunev

fixed an issue in s_expr_loader.cpp which resulted in not working of the following features:
1) text fields (graphic elements) of pcad2kicad sch library conversion (supported in rev. 3671 of pcad2kicad branch)
2) stand-alone texts of pcad2kicadpcb (supported in rev. 3658 of pcad2kicad branch)

The bug was introduced in rev. 3681 of pcad2kicad branch (applied S-expressions DSNLEXER to load P-Cad ASCII files)

4140. By Alexander Lunev

supported stand-alone text and lines for pcad2kicad schematic conversion;
updated CK1202_V1.kicad_pcb file corresponding to the previous commit

4141. By Alexander Lunev

fixed compile error in case of wxWidgets version < 2.9.0

4142. By Alexander Lunev

fixed an issue with scaling added in rev. 3677 of pcad2kicad branch (added scaling metric coordinates to fit inch grid for sch pcad2kicad conversion because kicad schematic does not support metric grid).
The scaling was broken in rev. 3696 of pcad2kicad branch (applied BIU conversion).

4143. By Alexander Lunev

changed build version postfix from GOST to GOST-COMMITTERS meaning that the build is based on lp:~kicad-gost-committers/kicad/kicad branch

4144. By Alexander Lunev

moved all BOM related stuff ("eeschema->Tools->Generate Bill of Materials" menu item) to eeschema/BOM directory

4145. By Alexander Lunev

merge with revision 4200 of lp:kicad branch

4146. By Alexander Lunev

merge with revision 4209 of lp:kicad branch

4147. By Alexander Lunev

started bilingual support in GOST-doc-gen and component manager

4148. By Alexander Lunev

supported grammar rule for russian letter after soft consonant in the end of a word

4149. By Alexander Lunev

merge with revision 4212 of lp:kicad branch

4150. By Alexander Lunev

wrapped all functions of doc_common, doc_component_index and doc_specification c++ modules into classes

4151. By Alexander Lunev

merge with revision 4145 of lp:~kicad-gost-committers/kicad/GOST-doc-gen-new-templates branch

4152. By Alexander Lunev

GOST-doc-gen: further adaptation to the new templates in order to fit a text into fields

4153. By Alexander Lunev

merge with revision 4214 of lp:kicad branch;
recovered sortByValueOnly(), splitRefStr() and engStrToDouble() methods needed by eeschema/BOM/build_BOM.cpp;
from now on there are two Generate BOM items in the eeschema/Tools menu (both the old and new implementations)

4154. By Alexander Lunev

merge with revision 4215 of lp:kicad branch

4155. By Alexander Lunev

GOST-doc-gen: fixed an issue with Python 3

4156. By Alexander Lunev

pcad2kicadpcb: fixed an issue with setting the Reference and Value of a module

4157. By Alexander Lunev

merge with revision 4217 of lp:kicad branch

4158. By Alexander Lunev

experimental support for ChipName, Value and Type fields in cvpcb compatible with GOST-doc-gen

4159. By Alexander Lunev

GOST-doc-gen: supported additional measure units

4160. By Alexander Lunev

pcad2kicad: added check for file format

4161. By Alexander Lunev

pcad2kicadsch: added space replacement with underscore in Chip Names;
fixed an issue with stand-alone text of pcad2kicad schematic library conversion

4162. By Alexander Lunev

GOST component manager: implemented unconditional saving Value and Type attributes even if they contain an empty string

4163. By Alexander Lunev

GOST-doc-gen: supported auto-splitting the string of collumn "Name" printed in the component index document;
centered the text of a group name in the component index document

4164. By Alexander Lunev

merge with revision 4223 of lp:kicad branch

4165. By Alexander Lunev

GOST-doc-gen: fixed an issue with centering/underlining printed text

4166. By Alexander Lunev

GOST-doc-gen: supported capacitor values w/o specifying pF unit in them

4167. By Alexander Lunev

enhanced support for ChipName, Value and Type fields in cvpcb compatible with GOST-doc-gen

4168. By Alexander Lunev

merge with revision 4231 of lp:kicad branch

4169. By Alexander Lunev

Component manager: warn once while editing a field of selected components if the components have different parameters

4170. By Alexander Lunev

GOST-doc-gen: fixed an issue with sorting component values depending on locale

4171. By Alexander Lunev

GOST component manager: added initial setting Type attribute by the content of Chip Name field if the Type attribute contain an empty string

4172. By Alexander Lunev

Component manager: corrected NPO to NP0 in Subtype combobox

4173. By Alexander Lunev

merge with revision 4236 of lp:kicad branch

4174. By Alexander Lunev

Component manager: added exclusion of subcomponents

4175. By Alexander Lunev

merge with revision 4237 of lp:kicad branch

4176. By Alexander Lunev

decoupled Component manager window from EESchema one.

4177. By Alexander Lunev

implemented autopointing the cursor in both EESchema and Pcbnew according to the selected component in Component manager

4178. By Alexander Lunev

pcad2kicadsch: supported conversion of attributes

4179. By Alexander Lunev

merge with revision 4241 of lp:kicad branch

4180. By Alexander Lunev

merge with revision 4242 of lp:kicad branch

4181. By Konstantin Baranovskiy

Started porting GOST-doc-gen to the python.
DOC_COMMON::ChangeWordForm(...) and dictionaries was done.

4182. By Alexander Lunev

added kicad_uno_iface log files in case of generation of component index and specification documents based on Multivibrator demo circuit. These log files are for unit testing

4183. By Alexander Lunev

added USE_PYTHON_GOSTDOCGEN compilation option;
implemented common ImportPyModule() function;
added importing doc_common.py module to start replacement of GOST-doc-gen c++ implementation with Python one

4184. By Alexander Lunev

corrected setting a field position by Component Manager

4185. By Alexander Lunev

Component Manager: from now on the processing of Value attribute is transparent;
added component attribute validation on Component Manager opening: if it detects that some components have equal Chip Name and Value attributes then it warns that Value attributes will be copied to Type ones including their position, orientation and visibility. After that Value attributes will be cleared. If some of components do not have Type attribute then such attributes will be created.

4186. By Alexander Lunev

fixed some issues with Component Manager. Some of the issues took place only under Ubuntu 10.04 (wxWidgets 2.8.10)

4187. By Alexander Lunev

merge with revision 4243 of lp:kicad branch

4188. By Alexander Lunev

merge with revision 4245 of lp:kicad branch

4189. By Alexander Lunev

merge with revision 4248 of lp:kicad branch

4190. By Alexander Lunev

merge with revision 4251 of lp:kicad branch

4191. By Alexander Lunev

merge with revision 4252 of lp:kicad branch

4192. By Alexander Lunev

merge with revision 4254 of lp:kicad branch

4193. By Alexander Lunev

merge with revision 4255 of lp:kicad branch

4194. By Alexander Lunev

merge with revision 4256 of lp:kicad branch

4195. By Alexander Lunev

merge with revision 4261 of lp:kicad branch

4196. By Alexander Lunev

merge with revision 4262 of lp:kicad branch

4197. By Alexander Lunev

merge with revision 4264 of lp:kicad branch

4198. By Alexander Lunev

merge with revision 4267 of lp:kicad branch

4199. By mmcx

fixed an issue with Component Manager hang-up on fast or multiple component selection

4200. By Alexander Lunev

merge with revision 4268 of lp:kicad branch

4201. By Alexander Lunev

merge with revision 4272 of lp:kicad branch

4202. By Alexander Lunev

merge with revision 4276 of lp:kicad branch

4203. By Alexander Lunev

merge with revision 4279 of lp:kicad branch

4204. By Alexander Lunev

merge with revision 4282 of lp:kicad branch

4205. By Alexander Lunev

merge with revision 4283 of lp:kicad branch

4206. By Alexander Lunev

merge with revision 4285 of lp:kicad branch

4207. By Alexander Lunev

merge with revision 4293 of lp:kicad branch

4208. By Alexander Lunev

merge with revision 4294 of lp:kicad branch

4209. By Alexander Lunev

merge with revision 4309 of lp:kicad branch

4210. By Alexander Lunev

merge with revision 4311 of lp:kicad branch

4211. By Alexander Lunev

merge with revision 4312 of lp:kicad branch

4212. By Alexander Lunev

merge with revision 4313 of lp:kicad branch

4213. By Alexander Lunev

merge with revision 4316 of lp:kicad branch

4214. By Konstantin Baranovskiy

Porting GOST-doc-gen to python:
doc_common.cpp
  SortStringArray()
  ExtractAbsoluteValue()
done.

4215. By Andrey Fedorushkov

add my commit

4216. By Andrey Fedorushkov

merge from bzr4357 lp:kicad

4217. By Andrey Fedorushkov

merge from bzr4357 lp:kicad :: add picad2kicadpcb bzr version control

4218. By Andrey Fedorushkov

fix pcad2kicadpcb: load function

4219. By Andrey Fedorushkov

fix build version

4220. By Andrey Fedorushkov

fix conflicts

4221. By Andrey Fedorushkov

merge to kicad-testing bzr 4415

4222. By Andrey Fedorushkov

fix CMakeLists.txt

4223. By Andrey Fedorushkov

fix build-version

4224. By Andrey Fedorushkov

merge from bzr4431 kicad-testing

4225. By Andrey Fedorushkov

merge from bzr4453-testing

4226. By Andrey Fedorushkov

merge from bzr4476 testing kicad-committers

4227. By Andrey Fedorushkov

merge from bzr4995 kicad-testing

4228. By Andrey Fedorushkov

add new template file

4229. By Andrey Fedorushkov

fix merge from bzr4495 kicad-testing

4230. By Andrey Fedorushkov

merge from bzr4496 kicad-testing, fix typos in template dir

4231. By Andrey Fedorushkov

merge from bzr4497 kicad-testing

4232. By Andrey Fedorushkov

fix error build autoplace.cpp

4233. By Andrey Fedorushkov

merge from bzr4499 kicad-testing

4234. By Andrey Fedorushkov

fix parts range

4235. By Andrey Fedorushkov

merge from bzr4503 kicad-testing

4236. By Andrey Fedorushkov

merge from bzr4505 kicad-testing

4237. By Andrey Fedorushkov

merge from bzr4509 kicad-testing

4238. By Andrey Fedorushkov

merge from bzr4512 kicad-testing

4239. By Andrey Fedorushkov

merge from bzr4513 kicad-testing, rem internal translate in main CMakeLists.txt

4240. By Andrey Fedorushkov

merge from bzr4520, pcbnew: libedit - fix create new module

4241. By Andrey Fedorushkov

add internat

4242. By Andrey Fedorushkov

fix segfault pcbnew

4243. By Andrey Fedorushkov

fix bzr rev

4244. By Andrey Fedorushkov

merge from bzr4558

4245. By Andrey Fedorushkov

merge from bzr4577

4246. By Andrey Fedorushkov

merge from bzr4619 kicad-testing

4247. By Alexander Lunev

added INTERNAT CMake option to prevent "add_subdirectory given source "internat" which is not an existing" error

4248. By Alexander Lunev

merge with revision 4623 of lp:kicad branch

4249. By Alexander Lunev

merge with revision 4624 of lp:kicad branch

4250. By Alexander Lunev

merge with revision 4628 of lp:kicad branch

4251. By Alexander Lunev

merge with revision 4633 of lp:kicad branch

4252. By Alexander Lunev

merge with revision 4635 of lp:kicad branch

4253. By Alexander Lunev

merge with revision 4655 of lp:kicad branch

4254. By Alexander Lunev

merge with revision 4669 of lp:kicad branch

4255. By Alexander Lunev

merge with revision 4701 of lp:kicad branch

4256. By Alexander Lunev

merge with revision 4708 of lp:kicad branch

4257. By Alexander Lunev

merge with revision 4741 of lp:kicad branch

4258. By Alexander Lunev

updated CK1202_V1.kicad_pcb file as an output reference to test pcad2kicadpcb converter

4259. By Alexander Lunev

temporary workaround for static initialization order fiasco

4260. By Alexander Lunev

merge with revision 4742 of lp:kicad branch

4261. By Alexander Lunev

merge with revision 4756 of lp:kicad branch

4262. By Alexander Lunev

merge with revision 4757 of lp:kicad branch

4263. By Alexander Lunev

KICAD_GOST adaptation to KIWAY

4264. By Alexander Lunev

added changes missed in my previous commit

4265. By Alexander Lunev

merge with revision 4809 of lp:kicad branch and further KICAD_GOST adaptation to KIWAY

4266. By Alexander Lunev

removed temporary workaround for static initialization order fiasco due to the issue fixed in revision 4799 of lp:kicad branch

4267. By Alexander Lunev

merge with revision 4810 of lp:kicad branch

4268. By Alexander Lunev

merge with revision 4813 of lp:kicad branch

4269. By Alexander Lunev

merge with revision 4817 of lp:kicad branch

4270. By Alexander Lunev

merge with revision 4825 of lp:kicad branch

4271. By Alexander Lunev

merge with revision 4841 of lp:kicad branch

4272. By Alexander Lunev

merge with revision 4842 of lp:kicad branch

4273. By Alexander Lunev

merge with revision 4845 of lp:kicad branch

4274. By Alexander Lunev

merge with revision 4859 of lp:kicad branch

4275. By Alexander Lunev

merge with revision 4864 of lp:kicad branch

4276. By Alexander Lunev

merge with revision 4866 of lp:kicad branch

4277. By Alexander Lunev

GOST-doc-gen: support for LibreOffice 4.0 - 4.5 on Windows

4278. By Alexander Lunev

merge with revision 4952 of lp:kicad branch

4279. By Alexander Lunev

merge with revision 4955 of lp:kicad branch

4280. By Alexander Lunev

corrected a typo in FindOOInstallationPath() (MinGW compilation case)

4281. By Alexander Lunev

fixed bug #1335547: pcad2kicadsch does not start

4282. By Alexander Lunev

merge with revision 4965 of lp:kicad branch

4283. By Alexander Lunev

merge with revision 4969 of lp:kicad branch

4284. By Alexander Lunev

merge with revision 4973 of lp:kicad branch

4285. By Alexander Lunev

merge with revision 4977 of lp:kicad branch

4286. By Alexander Lunev

merge with revision 4985 of lp:kicad branch

4287. By Alexander Lunev

merge with revision 4989 of lp:kicad branch

4288. By Alexander Lunev

fixed bug #1335435: kicad segment fault when use GOST Tools

4289. By Alexander Lunev

GOST-doc-gen: added check for unspecified component reference

4290. By Alexander Lunev

merge with revision 5005 of lp:kicad branch

4291. By Alexander Lunev

merge with revision 5023 of lp:kicad branch

4292. By Alexander Lunev

merge with revision 5060 of lp:kicad branch

4293. By Alexander Lunev

merge with revision 5070 of lp:kicad branch

4294. By Konstantin Baranovskiy

merge with revision 5113 of lp:kicad branch

4295. By Eldar Khayrullin

Fix compile error after merging with lp:kicad #5113

4296. By Eldar Khayrullin

Improvement in generating GOST documents:
* automatical correction of decimal number (adds letter "П" before "Э3" if present, else adds "ПЭ3");
* removing extra information from name of schematic if present ("Схема электрическая...").

4297. By Konstantin Baranovskiy

Fixed automatic correction of the decimal number. Now does nothing if this field is empty.

4298. By Konstantin Baranovskiy

For component list to design name appends "Перечень элементов" according to GOST 2.701-2008 page 9 item 5.7.4.

4299. By Konstantin Baranovskiy

Changed frame of the sheet of the registration the changes from form 2 to 2a (GOST 2.104).
Improved automatic correction of the suffixes of the decimal numbers in specification.

4300. By Konstantin Baranovskiy

Added automatic definition the type of the schematic for specification generation (see GOST 2.701-2008 page 3, table 2).

4301. By Konstantin Baranovskiy

Corrected filling the designation's (decimal number) field on second and next pages of the specification and the component list documents.

4302. By Konstantin Baranovskiy

merge with revision 5207 of lp:kicad branch

4303. By Konstantin Baranovskiy

Fixed compilation without KICAD_GOST option.

4304. By Konstantin Baranovskiy

merge with revision 5210 of lp:kicad branch

4305. By Konstantin Baranovskiy

merge with revision 5215 of lp:kicad branch

4306. By Konstantin Baranovskiy

merge with revision 5223 of lp:kicad branch

4307. By Konstantin Baranovskiy

merge with revision 5224 of lp:kicad branch

4308. By Alexander Lunev

merge with revision 4309 of lp:~quasiyoke/kicad/kicad branch

4309. By Alexander Lunev

merge with revision 5307 of lp:kicad branch

4310. By Alexander Lunev

recovered BOM_LABEL class which has been removed in lp:kicad branch (it is necessary for eeschema BOM generation in GOST KiCad branch

4311. By Alexander Lunev

adapted pcad2kicadsch to removed old build configuration since kiway is now the only way to build kicad;
eliminated a warning during pcad2kicadsch compilation

4312. By Alexander Lunev

merge with revision 5319 of lp:kicad branch

4313. By Eldar Khayrullin

default use GOST part id notation ".1" (see GOST 2.702-75 and GOST 2.710-81)

4314. By Eldar Khayrullin

default use GOST minimal recomended line width - 0.3 mm (see GOST 2.701-2008 p.5.5) and thickened (see GOST 2.751-73) width for bus - 0.6 mm

4315. By Eldar Khayrullin

default use minimal recomended GOST text size 2,5 mm (see GOST 2.304-81) and for library editor pin name/num text size 1,8 mm

4316. By Eldar Khayrullin

on some Linux distrs (e.g. Ubuntu) Kicad GOST Tools not find Office embedded Python. If so, use environment var KIGOSTPYTHON path, otherwise use the system Python. Also fix compile warning

4317. By Eldar Khayrullin

For plotting used minimal recomended GOST dashed line mark length - 2 mm and space - 1 mm (see GOST 2.303-68). Added plotting dashed lines at SVG format

4318. By Eldar Khayrullin

Returned deleted code in rev. 4314, 4315. Instead used check KICAD_GOST definition

4319. By Eldar Khayrullin

Used correction radius (proportional line width) for plotting dashed lines

4320. By Eldar Khayrullin

Used the separator "-" for group refdes (see published in ИУС №2, 2012 correction to GOST 2.701-2008 ).
Added a transistor in list of component index. Fixed some typos

4321. By Eldar Khayrullin

merge with revision 5444 of lp:kicad branch

4322. By Eldar Khayrullin

merge with revision 5484 of lp:kicad branch

4323. By Eldar Khayrullin

Use in eeschema graphic lines with long dashes instead short for getting more better image lines

4324. By Eldar Khayrullin

merge with revision 5511 of lp:kicad branch

4325. By Alexander Lunev

merge with revision 5524 of lp:kicad

4326. By Eldar Khayrullin

merge with revision 5543 of lp:kicad branch

4327. By Eldar Khayrullin

Fix overlapping Quit hotkey in pcbnew

4328. By Alexander Lunev

merge with revision 5569 of lp:kicad branch

4329. By Alexander Lunev

pcad2kicadsch: supported conversion of wires to bus entries

4330. By Eldar Khayrullin

merge with revision 5573 of lp:kicad branch

4331. By Eldar Khayrullin

merge with revision 5593 of lp:kicad branch

4332. By Eldar Khayrullin

merge with revision 5609 of lp:kicad branch

4333. By Eldar Khayrullin <email address hidden>

merge with revision 5622 of lp:kicad branch

4334. By Eldar Khayrullin

merge with revision 5635 of lp:kicad branch

4335. By Eldar Khayrullin

merge with revision 5648 of lp:kicad branch

4336. By Eldar Khayrullin

merge with revision 5654 of lp:kicad branch

4337. By Eldar Khayrullin

Fix compile error after merge with branch lp:kicad

4338. By Eldar Khayrullin

Merge with revision 5678 of lp:kicad branch

4339. By Eldar Khayrullin

Merge with rev. 5690 of lp:kicad

4340. By Eldar Khayrullin

Merge with rev. 5717 of lp:kicad

4341. By Eldar Khayrullin

Merge with lp:kicad(BZR5743)

4342. By Eldar Khayrullin

Make some strings are to translatable for pcad2kicad utility

4343. By Eldar Khayrullin

Make some strings are to translatable for GOST tools

4344. By Eldar Khayrullin

Make translatable GOST-doc-gen messages

4345. By Eldar Khayrullin

Translate pcad2kicad

4346. By Eldar Khayrullin

Merge with lp:kicad (BZR5795)

Unmerged revisions

4496. By Eldar Khayrullin

PCAD to sch use for metric grid convenient conversion: 0.25mm to 0.254mm

4495. By Eldar Khayrullin

pcad2kicadsch: merge import font properties from master branch

4494. By Eldar Khayrullin

pcad2kicadsch: import IEEE symbols

4493. By Eldar Khayrullin

pcad2kicadsch: replace slashes to '_' in symbols and footprint names

4492. By Eldar Khayrullin

pcad2kicadsch: use fp-lib-table (Note: Archive Footprints from imported pcb to {prj_name}.pretty)

4491. By Eldar Khayrullin

pcad2kicadsch: use new sym-lib-table

4490. By Eldar Khayrullin

pcad2kicadsch: fix not connected Wire Labels

4489. By Eldar Khayrullin

pcad2kicadsch: set Footprint field in library

4488. By Eldar Khayrullin

pcad2kicadsch: set Footprint field in sch symbols

4487. By Eldar Khayrullin

pcad2kicadsch: individual for each pin a visibility name/number

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2015-04-30 08:46:03 +0000
3+++ .bzrignore 2015-06-20 07:42:20 +0000
4@@ -48,3 +48,4 @@
5 bitmaps_png/tmp
6 common/pcb_keywords.cpp
7 include/pcb_lexer.h
8+include/openoffice
9
10=== modified file 'CMakeLists.txt'
11--- CMakeLists.txt 2015-06-11 20:42:48 +0000
12+++ CMakeLists.txt 2015-06-20 07:42:20 +0000
13@@ -23,6 +23,20 @@
14 # reports.
15 #
16
17+# Russian GOST patch
18+option( wxUSE_UNICODE "enable/disable building unicode (default OFF)" )
19+option( KICAD_GOST "enable/disable building using GOST notation for multiple gates per package (default OFF)" )
20+option( USE_INTERNAT "this option needs to be clarified (default OFF)" )
21+option( USE_RPC_DOC_SERVER "enable/disable building GOST document generator using RPC document server (default ON)" ON )
22+option( USE_OPENOFFICE_SDK "enable/disable building GOST document generator with use of OpenOffice/LibreOffice SDK (default OFF)" )
23+option( USE_PYTHON_GOSTDOCGEN "enable/disable building Python based GOST document generator (default OFF)" )
24+# USE_RPC_DOC_SERVER and USE_OPENOFFICE_SDK are suboptions of KICAD_GOST option.
25+# These suboptions select an approach how to interact with OpenOffice / LibreOffice.
26+# It is recommended to set the suboptions as follows: USE_RPC_DOC_SERVER=ON and USE_OPENOFFICE_SDK=OFF.
27+# Other suboption combinations suffer from building and incompatibility issues. They are kept as spare approaches.
28+
29+option( USE_PCAD2KICAD "PCad to Kicad converter (default ON). Warning, this is experimental" ON )
30+
31 # The desire is to migrate designs *away from* case independence, and to create designs which use
32 # literally (case specific) interpreted component names. But for backwards compatibility,
33 # you may turn OFF this option if you really must. (Remember that with KiCad using text
34@@ -270,6 +284,26 @@
35
36 endif( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
37
38+if( wxUSE_UNICODE )
39+ add_definitions( -DwxUSE_UNICODE )
40+endif()
41+
42+if( KICAD_GOST )
43+ add_definitions( -DKICAD_GOST )
44+endif()
45+
46+if( USE_RPC_DOC_SERVER )
47+ add_definitions( -DUSE_RPC_DOC_SERVER )
48+endif()
49+
50+if( USE_OPENOFFICE_SDK )
51+ add_definitions( -DUSE_OPENOFFICE_SDK )
52+endif()
53+
54+if(USE_PCAD2KICAD)
55+ add_definitions(-DUSE_PCAD2KICAD)
56+endif(USE_PCAD2KICAD)
57+
58 if( KICAD_KEEPCASE )
59 add_definitions( -DKICAD_KEEPCASE )
60 endif()
61@@ -398,6 +432,7 @@
62 KICAD_PLUGINS
63 KICAD_DATA
64 KICAD_DOCS
65+ KICAD_INTERNAT
66 KICAD_DEMOS
67 KICAD_TEMPLATE )
68
69@@ -596,7 +631,8 @@
70
71
72 # Find Python and other scripting resources
73-if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES )
74+if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES OR USE_PYTHON_GOSTDOCGEN OR
75+ ( KICAD_GOST AND NOT USE_RPC_DOC_SERVER AND NOT USE_OPENOFFICE_SDK ) )
76 # force a python version < 3.0
77 set( PythonInterp_FIND_VERSION 2.6 )
78 set( PythonLibs_FIND_VERSION 2.6 )
79@@ -746,6 +782,9 @@
80
81 #add_subdirectory( new )
82
83+if( KICAD_GOST )
84+add_subdirectory( extra/pcad2kicadsch )
85+endif( KICAD_GOST )
86
87 # Make all libs and executables depend on ExternalProject_Add( boost ),
88 # except perhaps bitmap lib. This allows a multi-threaded build to succeed.
89@@ -781,6 +820,10 @@
90 #############
91 # Resources #
92 #############
93+if( USE_INTERNAT )
94+add_subdirectory( internat )
95+endif( USE_INTERNAT )
96+
97 add_subdirectory( demos )
98 add_subdirectory( template )
99
100
101=== modified file 'CMakeModules/CreateBzrVersionHeader.cmake'
102--- CMakeModules/CreateBzrVersionHeader.cmake 2013-12-28 11:29:20 +0000
103+++ CMakeModules/CreateBzrVersionHeader.cmake 2015-06-20 07:42:20 +0000
104@@ -63,7 +63,11 @@
105 if( Kicad_REPO_LAST_CHANGED_DATE )
106 string( REGEX REPLACE "^([0-9]+)\\-([0-9]+)\\-([0-9]+)" "\\1-\\2-\\3"
107 _kicad_bzr_date ${Kicad_REPO_LAST_CHANGED_DATE} )
108- set( KICAD_BUILD_VERSION "(${_kicad_bzr_date} BZR ${Kicad_REPO_REVISION})" )
109+ if( KICAD_GOST )
110+ set( KICAD_BUILD_VERSION "(${_kicad_bzr_date} BZR ${Kicad_REPO_REVISION} GOST-COMMITTERS)" )
111+ else( KICAD_GOST )
112+ set( KICAD_BUILD_VERSION "(${_kicad_bzr_date} BZR ${Kicad_REPO_REVISION})" )
113+ endif( KICAD_GOST )
114
115 # Definition to conditionally use date and revision returned from the
116 # Bazaar log command instead of hand coded date and revision in
117
118=== added file 'CMakeModules/FindOpenOffice.cmake'
119--- CMakeModules/FindOpenOffice.cmake 1970-01-01 00:00:00 +0000
120+++ CMakeModules/FindOpenOffice.cmake 2015-06-20 07:42:20 +0000
121@@ -0,0 +1,192 @@
122+# - Try to find OpenOffice.org SDK, installed from repositories or from "vanilla" distribution
123+# Once done this will define
124+#
125+# OpenOffice_FOUND - System has OpenOffice.org with SDK
126+# OpenOffice_VERSION - Version of OpenOffice.org with SDK
127+# OOO_PREFIX - Prefix of OpenOffice.org installation
128+# OOO_BASIS_DIR - "basis" directory of OpenOffice.org
129+# OOO_PROGRAM_DIR - "program" directory of OpenOffice.org
130+# OOO_URE_DIR - "ure" directory of OpenOffice.org
131+# OOO_SDK_DIR - "sdk" directory of OpenOffice.org
132+# OOO_INCLUDE_DIR - include directory of OpenOffice.org
133+# UNOPKG_EXECUTABLE - Absolute path of unopkg tool
134+#
135+# Copyright (c) 2010 Konstantin Tokarev <annulen@gmail.com>
136+# Copyright (c) 2013 Alexander Lunev <al.lunev@yahoo.com>
137+#
138+# Redistribution and use is allowed according to the terms of the New
139+# BSD license.
140+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
141+
142+# TODO: Find Go-oo from Novell
143+
144+unset(OOO_PREFIX CACHE)
145+unset(OOO_BASIS_DIR CACHE)
146+unset(OOO_SDK_DIR CACHE)
147+unset(OOO_PROGRAM_DIR CACHE)
148+unset(UNOPKG_EXECUTABLE CACHE)
149+unset(OOO_URE_DIR CACHE)
150+unset(OOO_INCLUDE_DIR CACHE)
151+
152+if(UNIX)
153+ set(OOO_PATH_HINTS
154+ /usr/lib/openoffice/*
155+ /usr/lib/ooo/*
156+ /usr/lib64/openoffice/*
157+ /usr/lib64/ooo/*
158+ /usr/local/openoffice/*
159+ /opt/openoffice.org3/*
160+ /opt/ooo-dev3/*
161+ /usr/lib/libreoffice
162+ /usr/lib64/libreoffice
163+ )
164+elseif(WIN32)
165+ set(OOO_PATH_HINTS
166+ "C:\\Program Files (x86)\\OpenOffice.org 3"
167+ "C:\\Program Files\\OpenOffice.org 3"
168+ "C:\\Program Files (x86)\\LibreOffice*"
169+ "C:\\Program Files\\LibreOffice*"
170+ )
171+
172+ set(OOO_SDK_PATH_HINTS
173+ "C:\\Program Files\\OpenOffice*SDK\\sdk"
174+ "C:\\Program Files (x86)\\OpenOffice*SDK\\sdk"
175+ "C:\\Program Files\\OpenOffice.org 3\\Basis\\sdk"
176+ "C:\\Program Files (x86)\\OpenOffice.org 3\\Basis\\sdk"
177+ "C:\\Program Files\\LibreOffice*SDK\\sdk"
178+ "C:\\Program Files (x86)\\LibreOffice*SDK\\sdk"
179+ )
180+
181+ set(EXE_EXT ".exe")
182+endif(UNIX)
183+
184+if(OOO_PREFIX)
185+ set(OOO_PATH_HINTS
186+ "${OOO_PREFIX}/*"
187+ ${OOO_PATH_HINTS}
188+)
189+endif(OOO_PREFIX)
190+
191+if(WIN32)
192+ find_path(OOO_BASIS_DIR
193+ NAMES
194+ Basis/program/offapi.rdb
195+ HINTS
196+ ${OOO_PATH_HINTS}
197+)
198+else(WIN32)
199+ find_path(OOO_BASIS_DIR
200+ NAMES
201+ sdk/bin/idlc
202+ HINTS
203+ ${OOO_PATH_HINTS}
204+)
205+endif(WIN32)
206+mark_as_advanced(OOO_BASIS_DIR)
207+
208+if(NOT OOO_BASIS_DIR)
209+ if(OpenOffice_FIND_REQUIRED)
210+ message(FATAL_ERROR "Could not find OpenOffice.org SDK")
211+ endif(OpenOffice_FIND_REQUIRED)
212+else(NOT OOO_BASIS_DIR)
213+ set(OOO_PREFIX "${OOO_BASIS_DIR}" CACHE STRING "OpenOffice.org root directory")
214+
215+ if(WIN32)
216+ find_path(OOO_SDK_DIR
217+ NAMES
218+ bin/idlc.exe
219+ HINTS
220+ ${OOO_SDK_PATH_HINTS}
221+ )
222+ mark_as_advanced(OOO_SDK_DIR)
223+ else(WIN32)
224+ set(OOO_SDK_DIR "${OOO_BASIS_DIR}/sdk" CACHE STRING "OpenOffice.org SDK root directory")
225+ endif(WIN32)
226+
227+ message(STATUS "Found OpenOffice.org SDK: ${OOO_SDK_DIR}")
228+endif(NOT OOO_BASIS_DIR)
229+
230+find_path(OOO_PROGRAM_DIR
231+ NAMES
232+ soffice${EXE_EXT}
233+ HINTS
234+ "${OOO_PREFIX}/program"
235+ "${OOO_PREFIX}/../program"
236+)
237+mark_as_advanced(OOO_PROGRAM_DIR)
238+
239+if(NOT OOO_PROGRAM_DIR)
240+ if(OpenOffice_FIND_REQUIRED)
241+ message(FATAL_ERROR "Could not find OpenOffice.org program directory")
242+ endif(OpenOffice_FIND_REQUIRED)
243+else(NOT OOO_PROGRAM_DIR)
244+ message(STATUS "Found OpenOffice.org program directory: ${OOO_PROGRAM_DIR}")
245+endif(NOT OOO_PROGRAM_DIR)
246+
247+find_file(UNOPKG_EXECUTABLE
248+ NAMES
249+ unopkg${EXE_EXT}
250+ HINTS
251+ "${OOO_PREFIX}/program"
252+ "${OOO_PREFIX}/../program"
253+ NO_DEFAULT_PATH
254+)
255+mark_as_advanced(UNOPKG_EXECUTABLE)
256+
257+if(NOT UNOPKG_EXECUTABLE)
258+ if(OpenOffice_FIND_REQUIRED)
259+ message(FATAL_ERROR "Could not find unopkg executable")
260+ endif(OpenOffice_FIND_REQUIRED)
261+else(NOT UNOPKG_EXECUTABLE)
262+ message(STATUS "Found unopkg executable: ${UNOPKG_EXECUTABLE}")
263+endif(NOT UNOPKG_EXECUTABLE)
264+
265+
266+find_path(OOO_URE_DIR
267+ NAMES
268+ share/java/java_uno.jar
269+ java/java_uno.jar
270+ HINTS
271+ "${OOO_BASIS_DIR}/*"
272+)
273+mark_as_advanced(OOO_URE_DIR)
274+
275+if(NOT OOO_URE_DIR)
276+ if(OpenOffice_FIND_REQUIRED)
277+ message(FATAL_ERROR "Could not find OpenOffice ure directory")
278+ endif(OpenOffice_FIND_REQUIRED)
279+else(NOT OOO_URE_DIR)
280+ set(OOO_URE_JAVA_DIR "${OOO_URE_DIR}/share/java")
281+ message(STATUS "Found URE Java path: ${OOO_URE_JAVA_DIR}")
282+endif(NOT OOO_URE_DIR)
283+
284+find_path(OOO_INCLUDE_DIR
285+ NAMES
286+ com/sun/star/uno/Any.h
287+ HINTS
288+ "${OOO_SDK_DIR}/include"
289+ /usr/include/openoffice
290+)
291+mark_as_advanced(OOO_INCLUDE_DIR)
292+
293+if(NOT OOO_INCLUDE_DIR)
294+ if(OpenOffice_FIND_REQUIRED)
295+ message(FATAL_ERROR "Could not find OpenOffice.org SDK include directory")
296+ endif(OpenOffice_FIND_REQUIRED)
297+else(NOT OOO_INCLUDE_DIR)
298+ message(STATUS "Found OpenOffice.org SDK include directory: ${OOO_INCLUDE_DIR}")
299+endif(NOT OOO_INCLUDE_DIR)
300+
301+if(OOO_PROGRAM_DIR AND OOO_SDK_DIR AND OOO_URE_DIR AND UNOPKG_EXECUTABLE AND OOO_INCLUDE_DIR)
302+ set(OpenOffice_FOUND 1)
303+
304+ if(WIN32)
305+ file(READ "${OOO_PROGRAM_DIR}/version.ini" _VERSION_RC_CONTENTS)
306+ else(WIN32)
307+ file(READ "${OOO_PROGRAM_DIR}/versionrc" _VERSION_RC_CONTENTS)
308+ endif(WIN32)
309+
310+ string(REGEX REPLACE ".*ProductMajor=([0-9]+).*" "\\1" OpenOffice_VERSION "${_VERSION_RC_CONTENTS}")
311+else(OOO_PROGRAM_DIR AND OOO_SDK_DIR AND OOO_URE_DIR AND UNOPKG_EXECUTABLE AND OOO_INCLUDE_DIR)
312+ set(OpenOffice_FOUND 0)
313+endif(OOO_PROGRAM_DIR AND OOO_SDK_DIR AND OOO_URE_DIR AND UNOPKG_EXECUTABLE AND OOO_INCLUDE_DIR)
314
315=== modified file 'common/build_version.cpp'
316--- common/build_version.cpp 2015-05-26 06:18:50 +0000
317+++ common/build_version.cpp 2015-06-20 07:42:20 +0000
318@@ -30,8 +30,12 @@
319 #endif
320
321 #ifndef KICAD_BUILD_VERSION
322+#if defined KICAD_GOST
323+# define KICAD_BUILD_VERSION "(after 2015-may-25 BZR ???? GOST (bzr????-testing))"
324+#else
325 # define KICAD_BUILD_VERSION "(after 2015-may-25 BZR unknown)"
326 #endif
327+#endif
328
329 /**
330 * Function GetBuildVersion
331
332=== modified file 'common/class_plotter.cpp'
333--- common/class_plotter.cpp 2015-03-10 20:00:50 +0000
334+++ common/class_plotter.cpp 2015-06-20 07:42:20 +0000
335@@ -63,8 +63,13 @@
336 // Temporary init to avoid not initialized vars, will be set later
337 m_IUsPerDecimil = 1; // will be set later to the actual value
338 iuPerDeviceUnit = 1; // will be set later to the actual value
339+#if defined(KICAD_GOST)
340+ m_dashMarkLength_mm = 2.0; // Dashed line parameter in mm: segment
341+ m_dashGapLength_mm = 1.0; // Dashed line parameter in mm: gap
342+#else
343 m_dashMarkLength_mm = 0.5; // Dashed line parameter in mm: segment
344 m_dashGapLength_mm = 0.25; // Dashed line parameter in mm: gap
345+#endif
346 }
347
348 PLOTTER::~PLOTTER()
349
350=== modified file 'common/dialog_about/AboutDialog_main.cpp'
351--- common/dialog_about/AboutDialog_main.cpp 2015-05-11 16:25:33 +0000
352+++ common/dialog_about/AboutDialog_main.cpp 2015-06-20 07:42:20 +0000
353@@ -155,6 +155,9 @@
354 description << wxT( "<li>" ) <<
355 HtmlHyperlink( wxT( "http://www.kicadlib.org" ),
356 _( "Repository with additional component libraries" ) ) << wxT( "</li>" );
357+ description << wxT( "<li>" ) <<
358+ HtmlHyperlink( wxT( "http://electronix.ru/forum/index.php?showforum=210" ),
359+ _( "The Internet forum dedicated to KiCad Russian support, including GOST support" ) ) << wxT( "</li>" );
360 description << wxT( "</ul>" );
361
362 description << wxT( "</p>" );
363
364=== modified file 'common/gr_basic.cpp'
365--- common/gr_basic.cpp 2015-03-25 17:27:17 +0000
366+++ common/gr_basic.cpp 2015-06-20 07:42:20 +0000
367@@ -384,7 +384,11 @@
368 void GRDashedLineTo( EDA_RECT* ClipBox, wxDC* DC, int x2, int y2, int width, EDA_COLOR_T Color )
369 {
370 s_DC_lastcolor = UNSPECIFIED_COLOR;
371+#if defined(KICAD_GOST)
372+ GRSetColorPen( DC, Color, width, wxPENSTYLE_LONG_DASH );
373+#else
374 GRSetColorPen( DC, Color, width, wxPENSTYLE_SHORT_DASH );
375+#endif
376 WinClipAndDrawLine( ClipBox, DC, GRLastMoveToX, GRLastMoveToY, x2, y2, width );
377 s_DC_lastcolor = UNSPECIFIED_COLOR;
378 GRSetColorPen( DC, Color, width );
379@@ -405,7 +409,11 @@
380 GRLastMoveToX = x2;
381 GRLastMoveToY = y2;
382 s_DC_lastcolor = UNSPECIFIED_COLOR;
383+#if defined(KICAD_GOST)
384+ GRSetColorPen( DC, Color, width, wxPENSTYLE_LONG_DASH );
385+#else
386 GRSetColorPen( DC, Color, width, wxPENSTYLE_SHORT_DASH );
387+#endif
388 WinClipAndDrawLine( ClipBox, DC, x1, y1, x2, y2, width );
389 s_DC_lastcolor = UNSPECIFIED_COLOR;
390 GRSetColorPen( DC, Color, width );
391
392=== modified file 'common/kiway.cpp'
393--- common/kiway.cpp 2015-03-26 17:27:13 +0000
394+++ common/kiway.cpp 2015-06-20 07:42:20 +0000
395@@ -105,6 +105,9 @@
396 case FACE_CVPCB: name = KIFACE_PREFIX wxT( "cvpcb" ); break;
397 case FACE_GERBVIEW: name = KIFACE_PREFIX wxT( "gerbview" ); break;
398 case FACE_PL_EDITOR: name = KIFACE_PREFIX wxT( "pl_editor" ); break;
399+#if defined( KICAD_GOST )
400+ case FACE_PCAD2KICADSCH: name = KIFACE_PREFIX wxT( "pcad2kicadsch" ); break;
401+#endif
402 case FACE_PCB_CALCULATOR: name = KIFACE_PREFIX wxT( "pcb_calculator" ); break;
403 case FACE_BMP2CMP: name = KIFACE_PREFIX wxT( "bitmap2component" ); break;
404
405@@ -257,6 +260,11 @@
406 case FRAME_PL_EDITOR:
407 return FACE_PL_EDITOR;
408
409+#if defined( KICAD_GOST )
410+ case FRAME_PCAD2KICADSCH:
411+ return FACE_PCAD2KICADSCH;
412+#endif
413+
414 case FRAME_CALC:
415 return FACE_PCB_CALCULATOR;
416
417
418=== modified file 'cvpcb/cvframe.cpp'
419--- cvpcb/cvframe.cpp 2015-06-07 18:18:45 +0000
420+++ cvpcb/cvframe.cpp 2015-06-20 07:42:20 +0000
421@@ -835,10 +835,18 @@
422 {
423 component = m_netlist.GetComponent( i );
424
425+#if defined(KICAD_GOST)
426+ msg.Printf( CMP_FORMAT, m_compListBox->GetCount() + 1,
427+ GetChars( component->GetReference() ),
428+ GetChars( FormFullString( component ) ),
429+ GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) );
430+#else
431 msg.Printf( CMP_FORMAT, m_compListBox->GetCount() + 1,
432 GetChars( component->GetReference() ),
433 GetChars( component->GetValue() ),
434 GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) );
435+#endif
436+
437 m_compListBox->m_ComponentList.Add( msg );
438 }
439
440
441=== modified file 'cvpcb/cvpcb_mainframe.h'
442--- cvpcb/cvpcb_mainframe.h 2015-06-07 18:18:45 +0000
443+++ cvpcb/cvpcb_mainframe.h 2015-06-20 07:42:20 +0000
444@@ -174,6 +174,9 @@
445
446 void OnUpdateKeepOpenOnSave( wxUpdateUIEvent& event );
447
448+#if defined(KICAD_GOST)
449+ wxString FormFullString( COMPONENT* aComponent );
450+#endif
451 /**
452 * Function SetNewPkg
453 * links the footprint to the current selected component
454
455=== modified file 'cvpcb/readwrite_dlgs.cpp'
456--- cvpcb/readwrite_dlgs.cpp 2015-06-07 18:18:45 +0000
457+++ cvpcb/readwrite_dlgs.cpp 2015-06-20 07:42:20 +0000
458@@ -45,6 +45,28 @@
459 #include <fp_conflict_assignment_selector.h>
460
461
462+#if defined(KICAD_GOST)
463+wxString CVPCB_MAINFRAME::FormFullString( COMPONENT* aComponent )
464+{
465+ wxString full_str;
466+
467+ if( aComponent->GetType() == wxEmptyString )
468+ full_str = aComponent->GetName();
469+ else
470+ full_str = aComponent->GetType();
471+
472+ if( aComponent->GetValue() != wxT( "~" )
473+ && aComponent->GetValue() != aComponent->GetName() )
474+ // workaround for eeschema bug (Value field is assigned to Chip Name field by default
475+ // on the component adding from a library)
476+ {
477+ full_str += wxT( " " ) + aComponent->GetValue();
478+ }
479+
480+ return full_str;
481+}
482+#endif
483+
484 void CVPCB_MAINFRAME::SetNewPkg( const wxString& aFootprintName )
485 {
486 COMPONENT* component;
487@@ -86,10 +108,18 @@
488 component->SetFPID( fpid );
489
490 // create the new component description
491+
492+#if defined(KICAD_GOST)
493+ wxString description = wxString::Format( CMP_FORMAT, componentIndex + 1,
494+ GetChars( component->GetReference() ),
495+ GetChars( FormFullString( component ) ),
496+ GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) );
497+#else
498 wxString description = wxString::Format( CMP_FORMAT, componentIndex + 1,
499 GetChars( component->GetReference() ),
500 GetChars( component->GetValue() ),
501 GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) );
502+#endif
503
504 // If the component hasn't had a footprint associated with it
505 // it now has, so we decrement the count of components without
506@@ -115,7 +145,6 @@
507 DisplayStatus();
508 }
509
510-
511 /// Return true if the resultant FPID has a certain nickname. The guess
512 /// is only made if this footprint resides in only one library.
513 /// @return int - 0 on success, 1 on not found, 2 on ambiguous i.e. multiple matches
514@@ -344,10 +373,17 @@
515 {
516 COMPONENT* component = m_netlist.GetComponent( i );
517
518+#if defined(KICAD_GOST)
519+ msg.Printf( CMP_FORMAT, m_compListBox->GetCount() + 1,
520+ GetChars( component->GetReference() ),
521+ GetChars( FormFullString( component ) ),
522+ GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) );
523+#else
524 msg.Printf( CMP_FORMAT, m_compListBox->GetCount() + 1,
525 GetChars( component->GetReference() ),
526 GetChars( component->GetValue() ),
527 GetChars( FROM_UTF8( component->GetFPID().Format().c_str() ) ) );
528+#endif
529
530 m_compListBox->AppendLine( msg );
531
532
533=== modified file 'demos/CMakeLists.txt'
534--- demos/CMakeLists.txt 2015-04-27 18:02:27 +0000
535+++ demos/CMakeLists.txt 2015-06-20 07:42:20 +0000
536@@ -1,4 +1,5 @@
537 install( DIRECTORY
538+ GOST
539 complex_hierarchy
540 ecc83 electric
541 flat_hierarchy
542
543=== added directory 'demos/GOST'
544=== added file 'demos/GOST/multivibrator-comp-idx-kicad_uno_iface.log'
545--- demos/GOST/multivibrator-comp-idx-kicad_uno_iface.log 1970-01-01 00:00:00 +0000
546+++ demos/GOST/multivibrator-comp-idx-kicad_uno_iface.log 2015-06-20 07:42:20 +0000
547@@ -0,0 +1,103 @@
548+('Python version:', (2, 6, 6, 'final', 0))
549+Connect
550+LoadDocument {file:///usr/local/share/kicad/GOST-doc-gen/templates/CompIndexFirstSheet_template.odt}
551+SelectTable {0}
552+PutCell {3:E4} {Мультивибратор} {0}
553+PutCell {3:F1} {АБВГ.000000.001ПЭ3} {0}
554+PutCell {0:B1} {АБВГ.000000.001} {0}
555+PutCell {3:B4} {Лунев} {0}
556+PutCell {3:B5} {Барановский} {0}
557+PutCell {3:B8} {Викулов} {0}
558+PutCell {3:F6} {ООО "XXXXX"} {0}
559+SelectTable {0}
560+PutCell {1:A4} {} {0}
561+SelectTable {0}
562+PutCell {1:A5} {C4} {0}
563+PutCell {1:C5} {1} {0}
564+PutCell {1:D5} {Не устанавливается} {0}
565+SelectTable {0}
566+PutCell {1:A6} {} {0}
567+SelectTable {0}
568+PutCell {1:A7} {} {0}
569+PutCell {1:B7} {Резисторы 0805} {2}
570+SelectTable {0}
571+PutCell {1:A8} {R1} {0}
572+PutCell {1:B8} {0805 1 кОм ±5 %} {0}
573+PutCell {1:C8} {1} {0}
574+PutCell {1:D8} { "Yageo"} {0}
575+SelectTable {0}
576+PutCell {1:A9} {R2,R3} {0}
577+PutCell {1:B9} {0805 100 кОм ±5 %} {0}
578+PutCell {1:C9} {2} {0}
579+PutCell {1:D9} { "Yageo"} {0}
580+SelectTable {0}
581+PutCell {1:A10} {R4} {0}
582+PutCell {1:B10} {0805 1 кОм ±5 %} {0}
583+PutCell {1:C10} {1} {0}
584+PutCell {1:D10} { "Yageo"} {0}
585+SelectTable {0}
586+PutCell {1:A11} {} {0}
587+SelectTable {0}
588+PutCell {1:A12} {VT1,VT2} {0}
589+PutCell {1:B12} {Транзистор PN2222A} {0}
590+PutCell {1:C12} {2} {0}
591+PutCell {1:D12} {допускается замена} {0}
592+PutCell {1:D13} {на MMBT2222A} {0}
593+PutCell {1:D14} {"Fairchild"} {0}
594+SelectTable {0}
595+PutCell {1:A15} {} {0}
596+SelectTable {0}
597+PutCell {1:A16} {} {0}
598+PutCell {1:B16} {Переменные данные для исполнений} {3}
599+SelectTable {0}
600+PutCell {1:A17} {} {0}
601+SelectTable {0}
602+PutCell {1:A18} {} {0}
603+PutCell {1:B18} {АБВГ.000000.001} {3}
604+SelectTable {0}
605+PutCell {1:A19} {} {0}
606+PutCell {1:B19} {Мультивибратор} {3}
607+SelectTable {0}
608+PutCell {1:A20} {} {0}
609+SelectTable {0}
610+PutCell {1:A21} {C1,C2} {0}
611+PutCell {1:B21} {Конденсатор 0805-X7R-50 В- 0,1 мкФ ±20 %} {0}
612+PutCell {1:C21} {2} {0}
613+PutCell {1:D21} { "AVX"} {0}
614+SelectTable {0}
615+PutCell {1:A22} {} {0}
616+SelectTable {0}
617+PutCell {1:A23} {} {0}
618+PutCell {1:B23} {АБВГ.000000.001-01} {3}
619+SelectTable {0}
620+PutCell {1:A24} {} {0}
621+PutCell {1:B24} {Мультивибратор - 01} {3}
622+SelectTable {0}
623+PutCell {1:A25} {} {0}
624+SelectTable {0}
625+PutCell {1:A26} {} {0}
626+PutCell {1:B26} {Конденсаторы 0805} {2}
627+AppendDocument {file:///usr/local/share/kicad/GOST-doc-gen/templates/CompIndexMiddleSheet_template.odt}
628+SelectTable {1}
629+PutCell {3:G3} {2} {0}
630+PutCell {3:F1} {АБВГ.000000.001ПЭ3} {0}
631+SelectTable {1}
632+PutCell {1:A2} {} {0}
633+PutCell {1:B2} {Конденсаторы танталовые тип B} {2}
634+SelectTable {1}
635+PutCell {1:A3} {C1,C2} {0}
636+PutCell {1:B3} {0805-X7R-50 В- 0,22 мкФ ±20 %} {0}
637+PutCell {1:C3} {2} {0}
638+PutCell {1:D3} { "AVX"} {0}
639+SelectTable {1}
640+PutCell {1:A4} {C3} {0}
641+PutCell {1:B4} {танталовый тип B-16 В- 10 мкФ ±20 %} {0}
642+PutCell {1:C4} {1} {0}
643+PutCell {1:D4} { "Panasonic"} {0}
644+AppendDocument {file:///usr/local/share/kicad/GOST-doc-gen/templates/CompIndexLastSheet_template.odt}
645+SelectTable {2}
646+PutCell {3:I5} {3} {0}
647+PutCell {3:F1} {АБВГ.000000.001ПЭ3} {0}
648+SelectTable {0}
649+PutCell {3:J5} {3} {0}
650+Exit
651
652=== added file 'demos/GOST/multivibrator-spec-kicad_uno_iface.log'
653--- demos/GOST/multivibrator-spec-kicad_uno_iface.log 1970-01-01 00:00:00 +0000
654+++ demos/GOST/multivibrator-spec-kicad_uno_iface.log 2015-06-20 07:42:20 +0000
655@@ -0,0 +1,180 @@
656+('Python version:', (2, 6, 6, 'final', 0))
657+Connect
658+LoadDocument {file:///usr/local/share/kicad/GOST-doc-gen/templates/SpecificationFirstSheet_template.odt}
659+SelectTable {0}
660+PutCell {3:E4} {Мультивибратор} {0}
661+PutCell {3:F1} {АБВГ.000000.001} {0}
662+PutCell {0:B1} {} {0}
663+PutCell {3:B4} {Лунев} {0}
664+PutCell {3:B5} {Барановский} {0}
665+PutCell {3:B8} {Викулов} {0}
666+PutCell {3:F6} {ООО "XXXXX"} {0}
667+SelectTable {0}
668+PutCell {1:A4} {} {0}
669+PutCell {1:D4} {} {0}
670+SelectTable {0}
671+PutCell {1:A5} {} {0}
672+PutCell {1:D5} {} {0}
673+PutCell {1:E5} {Документация} {3}
674+SelectTable {0}
675+PutCell {1:A6} {} {0}
676+PutCell {1:D6} {} {0}
677+SelectTable {0}
678+PutCell {1:A7} {} {0}
679+PutCell {1:D7} {АБВГ.000000.001 СБ} {0}
680+PutCell {1:E7} {Сборочный чертеж} {0}
681+SelectTable {0}
682+PutCell {1:A8} {} {0}
683+PutCell {1:D8} {} {0}
684+SelectTable {0}
685+PutCell {1:A9} {} {0}
686+PutCell {1:D9} {АБВГ.000000.001 Э3} {0}
687+PutCell {1:E9} {Схема электрическая} {0}
688+PutCell {1:E10} {принципиальная} {0}
689+SelectTable {0}
690+PutCell {1:A11} {} {0}
691+PutCell {1:D11} {} {0}
692+SelectTable {0}
693+PutCell {1:A12} {A4} {0}
694+PutCell {1:D12} {АБВГ.000000.001 ПЭ3} {0}
695+PutCell {1:E12} {Перечень элементов} {0}
696+SelectTable {0}
697+PutCell {1:A13} {} {0}
698+PutCell {1:D13} {} {0}
699+SelectTable {0}
700+PutCell {1:A14} {} {0}
701+PutCell {1:D14} {} {0}
702+PutCell {1:E14} {Детали} {3}
703+SelectTable {0}
704+PutCell {1:A15} {} {0}
705+PutCell {1:D15} {} {0}
706+SelectTable {0}
707+PutCell {1:A16} {} {0}
708+PutCell {1:C16} {1} {0}
709+PutCell {1:D16} {} {0}
710+PutCell {1:E16} {Плата печатная} {0}
711+PutCell {1:F16} {1} {0}
712+SelectTable {0}
713+PutCell {1:A17} {} {0}
714+PutCell {1:D17} {} {0}
715+SelectTable {0}
716+PutCell {1:A18} {} {0}
717+PutCell {1:D18} {} {0}
718+SelectTable {0}
719+PutCell {1:A19} {} {0}
720+PutCell {1:D19} {} {0}
721+PutCell {1:E19} {Прочие изделия} {3}
722+SelectTable {0}
723+PutCell {1:A20} {} {0}
724+PutCell {1:D20} {} {0}
725+SelectTable {0}
726+PutCell {1:A21} {} {0}
727+PutCell {1:D21} {} {0}
728+PutCell {1:E21} {Резисторы 0805} {0}
729+SelectTable {0}
730+PutCell {1:A22} {} {0}
731+PutCell {1:C22} {5} {0}
732+PutCell {1:D22} {} {0}
733+PutCell {1:E22} {0805 1 кОм ±5 %} {0}
734+PutCell {1:E23} {Фирма "Yageo"} {0}
735+PutCell {1:F22} {2} {0}
736+PutCell {1:G22} {R1,R4} {0}
737+SelectTable {0}
738+PutCell {1:A24} {} {0}
739+PutCell {1:C24} {6} {0}
740+PutCell {1:D24} {} {0}
741+PutCell {1:E24} {0805 100 кОм ±5 %} {0}
742+PutCell {1:E25} {Фирма "Yageo"} {0}
743+PutCell {1:F24} {2} {0}
744+PutCell {1:G24} {R2,R3} {0}
745+SelectTable {0}
746+PutCell {1:A26} {} {0}
747+PutCell {1:D26} {} {0}
748+AppendDocument {file:///usr/local/share/kicad/GOST-doc-gen/templates/SpecificationMiddleSheet_template.odt}
749+SelectTable {1}
750+PutCell {3:G3} {2} {0}
751+PutCell {3:F1} {АБВГ.000000.001} {0}
752+SelectTable {1}
753+PutCell {1:A2} {} {0}
754+PutCell {1:C2} {7} {0}
755+PutCell {1:D2} {} {0}
756+PutCell {1:E2} {Транзистор PN2222A} {0}
757+PutCell {1:E3} {Фирма "Fairchild"} {0}
758+PutCell {1:E4} {допускается замена на} {0}
759+PutCell {1:E5} {MMBT2222A} {0}
760+PutCell {1:F2} {2} {0}
761+PutCell {1:G2} {VT1,VT2} {0}
762+SelectTable {1}
763+PutCell {1:A6} {} {0}
764+PutCell {1:D6} {} {0}
765+SelectTable {1}
766+PutCell {1:A7} {} {0}
767+PutCell {1:D7} {} {0}
768+PutCell {1:E7} {Переменные данные} {3}
769+PutCell {1:E8} {для исполнений} {3}
770+SelectTable {1}
771+PutCell {1:A9} {} {0}
772+PutCell {1:D9} {} {0}
773+SelectTable {1}
774+PutCell {1:A10} {} {0}
775+PutCell {1:D10} {} {0}
776+PutCell {1:E10} {АБВГ.000000.001} {3}
777+SelectTable {1}
778+PutCell {1:A11} {} {0}
779+PutCell {1:D11} {} {0}
780+PutCell {1:E11} {Мультивибратор} {3}
781+SelectTable {1}
782+PutCell {1:A12} {} {0}
783+PutCell {1:D12} {} {0}
784+SelectTable {1}
785+PutCell {1:A13} {} {0}
786+PutCell {1:C13} {2} {0}
787+PutCell {1:D13} {} {0}
788+PutCell {1:E13} {Конденсатор 0805-X7R-50 В-} {0}
789+PutCell {1:E14} {0,1 мкФ ±20 %} {0}
790+PutCell {1:E15} {Фирма "AVX"} {0}
791+PutCell {1:F13} {2} {0}
792+PutCell {1:G13} {C1,C2} {0}
793+SelectTable {1}
794+PutCell {1:A16} {} {0}
795+PutCell {1:D16} {} {0}
796+SelectTable {1}
797+PutCell {1:A17} {} {0}
798+PutCell {1:D17} {} {0}
799+PutCell {1:E17} {АБВГ.000000.001-01} {3}
800+SelectTable {1}
801+PutCell {1:A18} {} {0}
802+PutCell {1:D18} {} {0}
803+PutCell {1:E18} {Мультивибратор - 01} {3}
804+SelectTable {1}
805+PutCell {1:A19} {} {0}
806+PutCell {1:D19} {} {0}
807+SelectTable {1}
808+PutCell {1:A20} {} {0}
809+PutCell {1:C20} {3} {0}
810+PutCell {1:D20} {} {0}
811+PutCell {1:E20} {Конденсатор 0805-X7R-50 В-} {0}
812+PutCell {1:E21} {0,22 мкФ ±20 %} {0}
813+PutCell {1:E22} {Фирма "AVX"} {0}
814+PutCell {1:F20} {2} {0}
815+PutCell {1:G20} {C1,C2} {0}
816+SelectTable {1}
817+PutCell {1:A23} {} {0}
818+PutCell {1:D23} {} {0}
819+SelectTable {1}
820+PutCell {1:A24} {} {0}
821+PutCell {1:C24} {4} {0}
822+PutCell {1:D24} {} {0}
823+PutCell {1:E24} {Конденсатор} {0}
824+PutCell {1:E25} {танталовый тип B-16 В-} {0}
825+PutCell {1:E26} {10 мкФ ±20 %} {0}
826+PutCell {1:E27} {Фирма "Panasonic"} {0}
827+PutCell {1:F24} {1} {0}
828+PutCell {1:G24} {C3} {0}
829+AppendDocument {file:///usr/local/share/kicad/GOST-doc-gen/templates/CompIndexLastSheet_template.odt}
830+SelectTable {2}
831+PutCell {3:I5} {3} {0}
832+PutCell {3:F1} {АБВГ.000000.001} {0}
833+SelectTable {0}
834+PutCell {3:J5} {3} {0}
835+Exit
836
837=== added file 'demos/GOST/multivibrator.sch'
838--- demos/GOST/multivibrator.sch 1970-01-01 00:00:00 +0000
839+++ demos/GOST/multivibrator.sch 2015-06-20 07:42:20 +0000
840@@ -0,0 +1,250 @@
841+EESchema Schematic File Version 2
842+LIBS:power
843+LIBS:device
844+LIBS:transistors
845+LIBS:conn
846+LIBS:linear
847+LIBS:regul
848+LIBS:74xx
849+LIBS:cmos4000
850+LIBS:adc-dac
851+LIBS:memory
852+LIBS:xilinx
853+LIBS:special
854+LIBS:microcontrollers
855+LIBS:dsp
856+LIBS:microchip
857+LIBS:analog_switches
858+LIBS:motorola
859+LIBS:texas
860+LIBS:intel
861+LIBS:audio
862+LIBS:interface
863+LIBS:digital-audio
864+LIBS:philips
865+LIBS:display
866+LIBS:cypress
867+LIBS:siliconi
868+LIBS:opto
869+LIBS:atmel
870+LIBS:contrib
871+LIBS:valves
872+EELAYER 24 0
873+EELAYER END
874+$Descr A4 8268 11693 portrait
875+encoding utf-8
876+Sheet 1 1
877+Title "Мультивибратор"
878+Date "21 apr 2013"
879+Rev ""
880+Comp "ООО \"XXXXX\""
881+Comment1 "АБВГ.000000.001"
882+Comment2 "Лунев"
883+Comment3 "Барановский"
884+Comment4 "Викулов"
885+$EndDescr
886+$Comp
887+L PN2222A VT1
888+U 1 1 5173A466
889+P 3300 5300
890+F 0 "VT1" H 3300 5152 40 0000 R CNN
891+F 1 "~" H 3300 5450 40 0001 R CNN
892+F 2 "TO92" H 3200 5402 29 0001 C CNN
893+F 3 "~" H 3300 5300 60 0000 C CNN
894+F 4 "Транзистор" H 3300 5300 60 0001 C CNN "Title"
895+F 5 "Fairchild" H 3300 5300 60 0001 C CNN "Manufacturer"
896+F 6 "допускается замена на MMBT2222A" H 3300 5300 60 0001 C CNN "Note"
897+F 7 "PN2222A" H 3300 5300 60 0001 C CNN "Type"
898+ 1 3300 5300
899+ -1 0 0 -1
900+$EndComp
901+$Comp
902+L C C1
903+U 1 1 5173A497
904+P 3900 5300
905+F 0 "C1" H 3900 5400 40 0000 L CNN
906+F 1 "<00>0,1 мкФ</00><01>0,22 мкФ</01>" H 3906 5215 40 0001 L CNN
907+F 2 "~" H 3938 5150 30 0000 C CNN
908+F 3 "~" H 3900 5300 60 0000 C CNN
909+F 4 "0805" H 3900 5300 60 0001 C CNN "Type"
910+F 5 "-X7R-50 В-" H 3900 5300 60 0001 C CNN "SType"
911+F 6 "20%" H 3900 5300 60 0001 C CNN "Precision"
912+F 7 "AVX" H 3900 5300 60 0001 C CNN "Manufacturer"
913+F 8 "<00>Конденсатор</00><01>Конденсатор</01>" H 3900 5300 60 0001 C CNN "Title"
914+ 1 3900 5300
915+ 0 1 1 0
916+$EndComp
917+$Comp
918+L R R1
919+U 1 1 5173A4D3
920+P 3200 4650
921+F 0 "R1" V 3280 4650 40 0000 C CNN
922+F 1 "1 кОм" V 3207 4651 40 0001 C CNN
923+F 2 "~" V 3130 4650 30 0000 C CNN
924+F 3 "~" H 3200 4650 30 0000 C CNN
925+F 4 "Резистор" V 3200 4650 60 0001 C CNN "Title"
926+F 5 "0805" V 3200 4650 60 0001 C CNN "Type"
927+F 6 "5%" V 3200 4650 60 0001 C CNN "Precision"
928+F 7 "Yageo" V 3200 4650 60 0001 C CNN "Manufacturer"
929+ 1 3200 4650
930+ 1 0 0 -1
931+$EndComp
932+Wire Wire Line
933+ 3200 5500 3200 5700
934+Wire Wire Line
935+ 3200 5700 5700 5700
936+Wire Wire Line
937+ 5300 5700 5300 5500
938+Wire Wire Line
939+ 3200 4900 3200 5100
940+Wire Wire Line
941+ 3700 4900 3700 5300
942+Wire Wire Line
943+ 3700 5300 3500 5300
944+Wire Wire Line
945+ 4800 5300 5000 5300
946+Wire Wire Line
947+ 4800 4900 4800 5300
948+Wire Wire Line
949+ 5300 4900 5300 5100
950+Wire Wire Line
951+ 3200 4400 3200 4200
952+Wire Wire Line
953+ 3200 4200 5700 4200
954+Wire Wire Line
955+ 5300 4200 5300 4400
956+Wire Wire Line
957+ 4800 4200 4800 4400
958+Connection ~ 4800 4200
959+Wire Wire Line
960+ 3700 4200 3700 4400
961+Connection ~ 3700 4200
962+Wire Wire Line
963+ 5300 5000 4100 5000
964+Wire Wire Line
965+ 4100 5000 4100 5300
966+Connection ~ 5300 5000
967+Wire Wire Line
968+ 4400 5300 4400 5100
969+Wire Wire Line
970+ 4400 5100 3200 5100
971+Wire Wire Line
972+ 5700 5700 5700 4800
973+Connection ~ 5300 5700
974+Wire Wire Line
975+ 5700 4200 5700 4400
976+Connection ~ 5300 4200
977+$Comp
978+L R R2
979+U 1 1 5173A7AC
980+P 3700 4650
981+F 0 "R2" V 3780 4650 40 0000 C CNN
982+F 1 "100 кОм" V 3707 4651 40 0001 C CNN
983+F 2 "~" V 3630 4650 30 0000 C CNN
984+F 3 "~" H 3700 4650 30 0000 C CNN
985+F 4 "Резистор" V 3700 4650 60 0001 C CNN "Title"
986+F 5 "0805" V 3700 4650 60 0001 C CNN "Type"
987+F 6 "5%" V 3700 4650 60 0001 C CNN "Precision"
988+F 7 "Yageo" V 3700 4650 60 0001 C CNN "Manufacturer"
989+ 1 3700 4650
990+ 1 0 0 -1
991+$EndComp
992+$Comp
993+L C C2
994+U 1 1 5173A8F6
995+P 4600 5300
996+F 0 "C2" H 4600 5400 40 0000 L CNN
997+F 1 "<00>0,1 мкФ</00><01>0,22 мкФ</01>" H 4606 5215 40 0001 L CNN
998+F 2 "~" H 4638 5150 30 0000 C CNN
999+F 3 "~" H 4600 5300 60 0000 C CNN
1000+F 4 "0805" H 4600 5300 60 0001 C CNN "Type"
1001+F 5 "-X7R-50 В-" H 4600 5300 60 0001 C CNN "SType"
1002+F 6 "20%" H 4600 5300 60 0001 C CNN "Precision"
1003+F 7 "AVX" H 4600 5300 60 0001 C CNN "Manufacturer"
1004+F 8 "<00>Конденсатор</00><01>Конденсатор</01>" H 4600 5300 60 0001 C CNN "Title"
1005+ 1 4600 5300
1006+ 0 1 1 0
1007+$EndComp
1008+$Comp
1009+L R R3
1010+U 1 1 5173A96B
1011+P 4800 4650
1012+F 0 "R3" V 4880 4650 40 0000 C CNN
1013+F 1 "100 кОм" V 4807 4651 40 0001 C CNN
1014+F 2 "~" V 4730 4650 30 0000 C CNN
1015+F 3 "~" H 4800 4650 30 0000 C CNN
1016+F 4 "Резистор" V 4800 4650 60 0001 C CNN "Title"
1017+F 5 "0805" V 4800 4650 60 0001 C CNN "Type"
1018+F 6 "5%" V 4800 4650 60 0001 C CNN "Precision"
1019+F 7 "Yageo" V 4800 4650 60 0001 C CNN "Manufacturer"
1020+ 1 4800 4650
1021+ 1 0 0 -1
1022+$EndComp
1023+$Comp
1024+L R R4
1025+U 1 1 5173A975
1026+P 5300 4650
1027+F 0 "R4" V 5380 4650 40 0000 C CNN
1028+F 1 "1 кОм" V 5307 4651 40 0001 C CNN
1029+F 2 "~" V 5230 4650 30 0000 C CNN
1030+F 3 "~" H 5300 4650 30 0000 C CNN
1031+F 4 "Резистор" V 5300 4650 60 0001 C CNN "Title"
1032+F 5 "0805" V 5300 4650 60 0001 C CNN "Type"
1033+F 6 "5%" V 5300 4650 60 0001 C CNN "Precision"
1034+F 7 "Yageo" V 5300 4650 60 0001 C CNN "Manufacturer"
1035+ 1 5300 4650
1036+ 1 0 0 -1
1037+$EndComp
1038+$Comp
1039+L C C3
1040+U 1 1 5173A4B5
1041+P 5700 4600
1042+F 0 "C3" H 5700 4700 40 0000 L CNN
1043+F 1 "10 мкФ" H 5706 4515 40 0001 L CNN
1044+F 2 "~" H 5738 4450 30 0000 C CNN
1045+F 3 "~" H 5700 4600 60 0000 C CNN
1046+F 4 "<01>Конденсатор</01>" H 5700 4600 60 0001 C CNN "Title"
1047+F 5 "танталовый тип B" H 5700 4600 60 0001 C CNN "Type"
1048+F 6 "-16 В-" H 5700 4600 60 0001 C CNN "SType"
1049+F 7 "20%" H 5700 4600 60 0001 C CNN "Precision"
1050+F 8 "Panasonic" H 5700 4600 60 0001 C CNN "Manufacturer"
1051+ 1 5700 4600
1052+ 1 0 0 -1
1053+$EndComp
1054+$Comp
1055+L PN2222A VT2
1056+U 1 1 5173AAC5
1057+P 5200 5300
1058+F 0 "VT2" H 5200 5152 40 0000 R CNN
1059+F 1 "~" H 5200 5450 40 0001 R CNN
1060+F 2 "TO92" H 5100 5402 29 0001 C CNN
1061+F 3 "~" H 5200 5300 60 0000 C CNN
1062+F 4 "Транзистор" H 5200 5300 60 0001 C CNN "Title"
1063+F 5 "Fairchild" H 5200 5300 60 0001 C CNN "Manufacturer"
1064+F 6 "допускается замена на MMBT2222A" H 5200 5300 60 0001 C CNN "Note"
1065+F 7 "PN2222A" H 5200 5300 60 0001 C CNN "Type"
1066+ 1 5200 5300
1067+ 1 0 0 -1
1068+$EndComp
1069+$Comp
1070+L C C4
1071+U 1 1 5173B0FE
1072+P 6100 4600
1073+F 0 "C4" H 6100 4700 40 0000 L CNN
1074+F 1 "10 мкФ" H 6106 4515 40 0001 L CNN
1075+F 2 "~" H 6138 4450 30 0000 C CNN
1076+F 3 "~" H 6100 4600 60 0000 C CNN
1077+F 4 "Конденсатор" H 6100 4600 60 0001 C CNN "Title"
1078+F 5 "танталовый тип B" H 6100 4600 60 0001 C CNN "Type"
1079+F 6 "-16 В-" H 6100 4600 60 0001 C CNN "SType"
1080+F 7 "20%" H 6100 4600 60 0001 C CNN "Precision"
1081+F 8 "Panasonic" H 6100 4600 60 0001 C CNN "Manufacturer"
1082+F 9 "Не устанавливается" H 6100 4600 60 0001 C CNN "Note"
1083+ 1 6100 4600
1084+ 1 0 0 -1
1085+$EndComp
1086+Wire Wire Line
1087+ 5700 4800 6100 4800
1088+Wire Wire Line
1089+ 5700 4400 6100 4400
1090+$EndSCHEMATC
1091
1092=== added directory 'eeschema/BOM'
1093=== added file 'eeschema/BOM/BOM_lister.h'
1094--- eeschema/BOM/BOM_lister.h 1970-01-01 00:00:00 +0000
1095+++ eeschema/BOM/BOM_lister.h 2015-06-20 07:42:20 +0000
1096@@ -0,0 +1,190 @@
1097+/**
1098+ * @file BOM_lister.h
1099+ */
1100+
1101+/* This program source code file is part of KiCad, a free EDA CAD application.
1102+ *
1103+ * Copyright (C) 2012 Jean-Pierre Charras jp.charras at wanadoo.fr
1104+ * Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors.
1105+ *
1106+ * This program is free software; you can redistribute it and/or
1107+ * modify it under the terms of the GNU General Public License
1108+ * as published by the Free Software Foundation; either version 2
1109+ * of the License, or (at your option) any later version.
1110+ *
1111+ * This program is distributed in the hope that it will be useful,
1112+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1113+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1114+ * GNU General Public License for more details.
1115+ *
1116+ * You should have received a copy of the GNU General Public License
1117+ * along with this program; if not, you may find one here:
1118+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
1119+ * or you may search the http://www.gnu.org website for the version 2 license,
1120+ * or you may write to the Free Software Foundation, Inc.,
1121+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
1122+ */
1123+
1124+#ifndef _BOM_LISTER_H_
1125+#define _BOM_LISTER_H_
1126+
1127+#include <sch_reference_list.h>
1128+
1129+
1130+// A helper class to build item lists for BOM,
1131+// and write lists on files
1132+class BOM_LISTER
1133+{
1134+private:
1135+ BOM_LABEL_LIST m_labelList; // a list of global and hierarchical labels
1136+ PART_LIBS* m_libs;
1137+ SCH_REFERENCE_LIST m_cmplist; // a flat list of components in the full hierarchy
1138+ FILE* m_outFile; // the output file for BOM generation
1139+ char m_separatorSymbol; // the separator used for csv files ( usually \t ; or , )
1140+ bool m_outputFmtCsv; // true to create Csv files, false to create text lists
1141+ bool m_includeSubComponents; // true to list each part
1142+ // of a multiple part per package component
1143+ // false to list only once this kind of component
1144+ bool m_csvForm; // true to print less verbose component list
1145+ // false to print more verbose component list
1146+ bool m_groupReferences; // true to group in list by reference (when possible,
1147+ // i.e. when other fields have the same value
1148+ // false to list one reference per line
1149+ bool m_printLocation; // true to print component location in list by reference
1150+ std::vector <int> m_fieldIDactive; // list of field IDs to print
1151+
1152+public:
1153+ BOM_LISTER( PART_LIBS* aLibs )
1154+ {
1155+ m_outFile = NULL;
1156+ m_separatorSymbol = '\t';
1157+ m_outputFmtCsv = false;
1158+ m_includeSubComponents = false;
1159+ m_csvForm = true;
1160+ m_printLocation = false;
1161+ m_groupReferences = false;
1162+ m_libs = aLibs;
1163+ }
1164+
1165+ // Accessors:
1166+ void SetGroupReferences( bool aGroupRef )
1167+ {
1168+ m_groupReferences = aGroupRef;
1169+ }
1170+
1171+ void SetPrintLocation( bool aPrintLoc )
1172+ {
1173+ m_printLocation = aPrintLoc;
1174+ }
1175+
1176+ void SetIncludeSubCmp( bool aIncludeSubCmp )
1177+ {
1178+ m_includeSubComponents = aIncludeSubCmp;
1179+ }
1180+
1181+ /**
1182+ * Function SetCvsFormOn
1183+ * prepare parameters to create a BOM list in comma separated value (cvs)
1184+ * @param aSeparator = the character used as "csv" separator
1185+ */
1186+ void SetCvsFormOn( char aSeparator )
1187+ {
1188+ m_csvForm = true;
1189+ m_separatorSymbol = aSeparator;
1190+ }
1191+
1192+ /**
1193+ * Function SetCvsFormOff
1194+ * prepare parameters to create a BOM list in full text readable mode
1195+ * (not csv format)
1196+ */
1197+ void SetCvsFormOff()
1198+ {
1199+ m_csvForm = false;
1200+ }
1201+
1202+ void AddFieldIdToPrintList( int aFieldId );
1203+
1204+ void ClearFieldIdPrintList() { m_fieldIDactive.clear(); }
1205+
1206+ /**
1207+ * Function CreateCsvBOMListByValues
1208+ * print the list of components, grouped by values:
1209+ * One line by value. The format is something like:
1210+ * value;quantity;references;other fields
1211+ * 18pF;2;"C404 C405";SM0402
1212+ * 22nF/25V;4;"C128 C168 C228 C268";SM0402
1213+ * @param aFile = the file to write to (will be closed)
1214+ */
1215+ void CreateCsvBOMListByValues( FILE* aFile );
1216+
1217+ /**
1218+ * Function PrintGlobalAndHierarchicalLabelsList
1219+ * print the list of global and hierarchical labels by sheet or by name
1220+ * @param aSortBySheet = true to print by sheet name order
1221+ * false to print by label name order
1222+ * @param aFile = the file to write to (will be NOT closed)
1223+ */
1224+ void PrintGlobalAndHierarchicalLabelsList( FILE* aFile, bool aSortBySheet );
1225+
1226+ /**
1227+ * Function PrintComponentsListByReferenceHumanReadable
1228+ * print a BOM list in human readable form
1229+ * @param aFile = the file to write to (will be NOT closed)
1230+ */
1231+ bool PrintComponentsListByReferenceHumanReadable( FILE* aFile );
1232+
1233+ /**
1234+ * Function PrintComponentsListByReferenceCsvForm
1235+ * print the list of components ordered by references. Generate 2 formats:
1236+ * - full component list in csv form
1237+ * - "short" component list in csv form, grouped by common fields values
1238+ * (mainly component value)
1239+ * @param aFile = the file to write to (will be NOT closed)
1240+ */
1241+ bool PrintComponentsListByReferenceCsvForm( FILE* aFile );
1242+
1243+ /**
1244+ * Function PrintComponentsListByValue
1245+ * print the list of components, sorted by value, one line per component
1246+ * not useable for csv format (use CreateCsvBOMListByValues instead)
1247+ * @param aFile = the file to write to (will be NOT closed)
1248+ */
1249+ int PrintComponentsListByValue( FILE* aFile );
1250+
1251+private:
1252+
1253+ /**
1254+ * Helper function isFieldPrintable
1255+ * @return true if the field aFieldId should be printed.
1256+ * @param aFieldId = the field Id (FOOTPRIN, FIELD4 ...)
1257+ */
1258+ bool isFieldPrintable( int aFieldId );
1259+
1260+ /**
1261+ * Helper function buildGlobalAndHierarchicalLabelsList
1262+ * Populate m_labelList with global and hierarchical labels
1263+ * and sheet pins labels
1264+ */
1265+ void buildGlobalAndHierarchicalLabelsList();
1266+
1267+ /**
1268+ * Helper function returnFieldsString
1269+ * @return a string containing all selected fields texts,
1270+ * @param aComponent = the schematic component
1271+ * separated by the csv separator symbol
1272+ */
1273+ const wxString returnFieldsString( SCH_COMPONENT* aComponent );
1274+
1275+ /**
1276+ * Helper function returnURLItemLocation
1277+ * @param aPathName = the full sheet name of item
1278+ * @param aPosition = a position (in internal units) to print
1279+ * @return a formated string to print the full location:
1280+ * /sheet name/( X Y position)
1281+ */
1282+ const wxString returnURLItemLocation( const wxString& aPathName,
1283+ wxPoint aPosition );
1284+};
1285+
1286+#endif // _BOM_LISTER_H_
1287
1288=== added file 'eeschema/BOM/build_BOM.cpp'
1289--- eeschema/BOM/build_BOM.cpp 1970-01-01 00:00:00 +0000
1290+++ eeschema/BOM/build_BOM.cpp 2015-06-20 07:42:20 +0000
1291@@ -0,0 +1,736 @@
1292+/*
1293+ * This program source code file is part of KiCad, a free EDA CAD application.
1294+ *
1295+ * Copyright (C) 2012 Jean-Pierre Charras, jp.charras at wanadoo.fr
1296+ * Copyright (C) 2012 Wayne Stambaugh <stambaughw@verizon.net>
1297+ * Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors.
1298+ *
1299+ * This program is free software; you can redistribute it and/or
1300+ * modify it under the terms of the GNU General Public License
1301+ * as published by the Free Software Foundation; either version 2
1302+ * of the License, or (at your option) any later version.
1303+ *
1304+ * This program is distributed in the hope that it will be useful,
1305+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1306+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1307+ * GNU General Public License for more details.
1308+ *
1309+ * You should have received a copy of the GNU General Public License
1310+ * along with this program; if not, you may find one here:
1311+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
1312+ * or you may search the http://www.gnu.org website for the version 2 license,
1313+ * or you may write to the Free Software Foundation, Inc.,
1314+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
1315+ */
1316+
1317+/**
1318+ * @file build_BOM.cpp
1319+ * @brief Code used to generate bill of materials.
1320+ */
1321+
1322+#include <algorithm> // to use sort vector
1323+#include <vector>
1324+
1325+#include <fctsys.h>
1326+#include <sch_sheet.h>
1327+#include <sch_component.h>
1328+#include <template_fieldnames.h>
1329+#include <class_library.h>
1330+#include <base_units.h>
1331+
1332+#include <BOM_lister.h>
1333+
1334+/* Creates the list of components, grouped by values:
1335+ * One line by value. The format is something like:
1336+ * value;quantity;references;other fields
1337+ * 18pF;2;"C404 C405";SM0402
1338+ * 22nF/25V;4;"C128 C168 C228 C268";SM0402
1339+ * param aFile = the file to write to (will be closed)
1340+ */
1341+void BOM_LISTER::CreateCsvBOMListByValues( FILE* aFile )
1342+{
1343+ m_outFile = aFile;
1344+
1345+ SCH_SHEET_LIST sheetList;
1346+
1347+ sheetList.GetComponents( m_libs, m_cmplist, false );
1348+
1349+ // sort component list by ref and remove sub components
1350+ m_cmplist.RemoveSubComponentsFromList();
1351+
1352+ // sort component list by value
1353+ m_cmplist.SortByValueOnly();
1354+
1355+ unsigned int index = 0;
1356+
1357+ while( index < m_cmplist.GetCount() )
1358+ {
1359+ SCH_COMPONENT* component = m_cmplist[index].GetComp();
1360+ wxString referenceListStr;
1361+ int qty = 1;
1362+ referenceListStr.append( m_cmplist[index].GetRef() );
1363+
1364+ for( unsigned int ii = index + 1; ii < m_cmplist.GetCount(); )
1365+ {
1366+ if( *( m_cmplist[ii].GetComp() ) == *component )
1367+ {
1368+ referenceListStr.append( wxT( " " ) + m_cmplist[ii].GetRef() );
1369+ m_cmplist.RemoveItem( ii );
1370+ qty++;
1371+ }
1372+ else
1373+ ii++; // Increment index only when current item is not removed from the list
1374+ }
1375+
1376+ // Write value, quantity and list of references
1377+ fprintf( m_outFile, "%s%c%d%c\"%s\"",
1378+ TO_UTF8( component->GetField( VALUE )->GetText() ),
1379+ m_separatorSymbol, qty,
1380+ m_separatorSymbol, TO_UTF8( referenceListStr ) );
1381+
1382+ for( int ii = FOOTPRINT; ii < component->GetFieldCount(); ii++ )
1383+ {
1384+ if( isFieldPrintable( ii ) )
1385+ fprintf( m_outFile, "%c%s", m_separatorSymbol,
1386+ TO_UTF8( component->GetField( ii )->GetText() ) );
1387+ }
1388+
1389+ fprintf( m_outFile, "\n" );
1390+ index++;
1391+ }
1392+
1393+ fclose( m_outFile );
1394+ m_outFile = NULL;
1395+}
1396+
1397+
1398+bool BOM_LISTER::isFieldPrintable( int aFieldId )
1399+{
1400+ for( unsigned ii = 0; ii < m_fieldIDactive.size(); ii++ )
1401+ if( m_fieldIDactive[ii] == aFieldId )
1402+ return true;
1403+
1404+
1405+
1406+
1407+ return false;
1408+}
1409+
1410+
1411+void BOM_LISTER::AddFieldIdToPrintList( int aFieldId )
1412+{
1413+ for( unsigned ii = 0; ii < m_fieldIDactive.size(); ii++ )
1414+ if( m_fieldIDactive[ii] == aFieldId )
1415+ return;
1416+
1417+
1418+
1419+
1420+ m_fieldIDactive.push_back( aFieldId );
1421+}
1422+
1423+
1424+/* compare function for sorting labels by value, then by sheet
1425+ */
1426+static bool SortLabelsByValue( const BOM_LABEL& obj1, const BOM_LABEL& obj2 )
1427+{
1428+ int ii = obj1.GetText().CmpNoCase( obj2.GetText() );
1429+
1430+ if( ii == 0 )
1431+ ii = obj1.GetSheetPath().Cmp( obj2.GetSheetPath() );
1432+
1433+ return ii < 0;
1434+}
1435+
1436+
1437+/* compare function for sorting labels by sheet, then by alphabetic order
1438+ */
1439+static bool SortLabelsBySheet( const BOM_LABEL& obj1, const BOM_LABEL& obj2 )
1440+{
1441+ int ii = obj1.GetSheetPath().Cmp( obj2.GetSheetPath() );
1442+
1443+ if( ii == 0 )
1444+ ii = obj1.GetText().CmpNoCase( obj2.GetText() );
1445+
1446+ return ii < 0;
1447+}
1448+
1449+
1450+// Creates the flat list of global, hierachycal labels and pin sheets
1451+// and populate m_labelList
1452+void BOM_LISTER::buildGlobalAndHierarchicalLabelsList()
1453+{
1454+ m_labelList.clear();
1455+
1456+ // Explore the flat sheet list
1457+ SCH_SHEET_LIST sheetList;
1458+
1459+ for( SCH_SHEET_PATH* path = sheetList.GetFirst(); path; path = sheetList.GetNext() )
1460+ {
1461+ SCH_ITEM* schItem = (SCH_ITEM*) path->LastDrawList();
1462+
1463+ for( ; schItem; schItem = schItem->Next() )
1464+ {
1465+ switch( schItem->Type() )
1466+ {
1467+ case SCH_HIERARCHICAL_LABEL_T:
1468+ case SCH_GLOBAL_LABEL_T:
1469+ m_labelList.push_back( BOM_LABEL( schItem->Type(), schItem, *path ) );
1470+ break;
1471+
1472+ case SCH_SHEET_T:
1473+ {
1474+ SCH_SHEET* sheet = (SCH_SHEET*) schItem;
1475+
1476+ BOOST_FOREACH( SCH_SHEET_PIN & sheetPin, sheet->GetPins() ) {
1477+ m_labelList.push_back( BOM_LABEL( SCH_SHEET_PIN_T,
1478+ &sheetPin, *path ) );
1479+ }
1480+ }
1481+ break;
1482+
1483+ default:
1484+ break;
1485+ }
1486+ }
1487+ }
1488+}
1489+
1490+
1491+// Print the flat list of global, hierachycal labels and pin sheets
1492+// contained by m_labelList
1493+void BOM_LISTER::PrintGlobalAndHierarchicalLabelsList( FILE* aFile, bool aSortBySheet )
1494+{
1495+ m_outFile = aFile;
1496+
1497+ buildGlobalAndHierarchicalLabelsList();
1498+
1499+ wxString msg;
1500+
1501+ if( aSortBySheet )
1502+ {
1503+ sort( m_labelList.begin(), m_labelList.end(), SortLabelsBySheet );
1504+ msg.Printf( _(
1505+ "\n#Global, Hierarchical Labels and PinSheets \
1506+( order = Sheet Number ) count = %d\n" ),
1507+ m_labelList.size() );
1508+ }
1509+ else
1510+ {
1511+ sort( m_labelList.begin(), m_labelList.end(), SortLabelsByValue );
1512+ msg.Printf( _(
1513+ "\n#Global, Hierarchical Labels and PinSheets ( \
1514+order = Alphab. ) count = %d\n\n" ),
1515+ m_labelList.size() );
1516+ }
1517+
1518+ fprintf( m_outFile, "%s", TO_UTF8( msg ) );
1519+
1520+ SCH_LABEL* label;
1521+ SCH_SHEET_PIN* pinsheet;
1522+ wxString sheetpath;
1523+ wxString labeltype;
1524+
1525+ for( unsigned ii = 0; ii < m_labelList.size(); ii++ )
1526+ {
1527+ switch( m_labelList[ii].GetType() )
1528+ {
1529+ case SCH_HIERARCHICAL_LABEL_T:
1530+ case SCH_GLOBAL_LABEL_T:
1531+ label = (SCH_LABEL*) ( m_labelList[ii].GetLabel() );
1532+
1533+ if( m_labelList[ii].GetType() == SCH_HIERARCHICAL_LABEL_T )
1534+ labeltype = wxT( "Hierarchical" );
1535+ else
1536+ labeltype = wxT( "Global " );
1537+
1538+ sheetpath = m_labelList[ii].GetSheetPath().PathHumanReadable();
1539+ msg.Printf( wxT( "> %-28.28s %s %s\n" ),
1540+ GetChars( label->GetText() ),
1541+ GetChars( labeltype ),
1542+ GetChars( returnURLItemLocation( sheetpath, label->GetPosition() ) ) );
1543+
1544+ fputs( TO_UTF8( msg ), m_outFile );
1545+ break;
1546+
1547+ case SCH_SHEET_PIN_T:
1548+ pinsheet = (SCH_SHEET_PIN*) m_labelList[ii].GetLabel();
1549+ labeltype = FROM_UTF8( SheetLabelType[pinsheet->GetShape()] );
1550+
1551+ msg.Printf( _( "> %-28.28s PinSheet %-7.7s %s\n" ),
1552+ GetChars( pinsheet->GetText() ),
1553+ GetChars( labeltype ),
1554+ GetChars( returnURLItemLocation( m_labelList[ii].GetSheetPath().
1555+ PathHumanReadable(),
1556+ pinsheet->GetPosition() ) ) );
1557+
1558+ fputs( TO_UTF8( msg ), m_outFile );
1559+ break;
1560+
1561+ default:
1562+ break;
1563+ }
1564+ }
1565+
1566+ msg = _( "#End labels\n" );
1567+ fputs( TO_UTF8( msg ), m_outFile );
1568+}
1569+
1570+
1571+/*
1572+ * Helper function
1573+ * returns a string containing all selected fields texts,
1574+ * separated by the csv separator symbol (csv form) or a ;
1575+ */
1576+const wxString BOM_LISTER::returnFieldsString( SCH_COMPONENT* aComponent )
1577+{
1578+ wxString outStr;
1579+ wxString tmpStr;
1580+ wxString text;
1581+
1582+ for( int ii = FOOTPRINT; ii <= FIELD8; ii++ )
1583+ {
1584+ if( !isFieldPrintable( ii ) )
1585+ continue;
1586+
1587+ if( aComponent->GetFieldCount() > ii )
1588+ text = aComponent->GetField( ii )->GetText();
1589+ else
1590+ text = wxEmptyString;
1591+
1592+ if( m_csvForm )
1593+ tmpStr.Printf( wxT( "%c%s" ), m_separatorSymbol, GetChars( text ) );
1594+ else
1595+ tmpStr.Printf( wxT( "; %-12s" ), GetChars( text ) );
1596+
1597+ outStr += tmpStr;
1598+ }
1599+
1600+ return outStr;
1601+}
1602+
1603+
1604+/* print the list of components ordered by references,
1605+ * full component list in human readable form
1606+ * param aFile = the file to write to (will be NOT closed)
1607+ */
1608+
1609+/* full list in human readable form sample:
1610+ * #Cmp ( order = Reference )with sub-composants
1611+ * | C101 47pF Loc /(X=344,170 mm, Y=116,840 mm); C1 ; field1 ;
1612+ * | C102 47pF Loc /(X=364,490 mm, Y=116,840 mm); C1 ; ;
1613+ * | C103 47uF Loc /(X=66,040 mm, Y=231,140 mm); CP6 ; ;
1614+ */
1615+
1616+bool BOM_LISTER::PrintComponentsListByReferenceHumanReadable( FILE* aFile )
1617+{
1618+ m_outFile = aFile;
1619+ bool addDatasheet = isFieldPrintable( DATASHEET );
1620+
1621+ // Print component location if needed, but only when
1622+ // include sub component option is enabled, because for multiple
1623+ // parts per package there are more than one location per reference
1624+ bool printLocCmp = m_printLocation && m_includeSubComponents;
1625+
1626+ wxString msg;
1627+
1628+ if( m_cmplist.GetCount() == 0 ) // Build component list
1629+ {
1630+ SCH_SHEET_LIST sheetList;
1631+ sheetList.GetComponents( m_libs, m_cmplist, false );
1632+
1633+ // sort component list
1634+ m_cmplist.SortByReferenceOnly();
1635+
1636+ if( !m_includeSubComponents )
1637+ m_cmplist.RemoveSubComponentsFromList();
1638+ }
1639+ else
1640+ m_cmplist.SortByReferenceOnly();
1641+
1642+ // Print comment line:
1643+ msg = _( "#Cmp ( order = Reference )" );
1644+
1645+ if( m_includeSubComponents )
1646+ msg << _( " (with SubCmp)" );
1647+
1648+ fprintf( m_outFile, "%s\n", TO_UTF8( msg ) );
1649+
1650+ wxString subReference; // Unit ident, for mutiple parts per package
1651+ std::string CmpName;
1652+
1653+ // Print list of items
1654+ for( unsigned ii = 0; ii < m_cmplist.GetCount(); ii++ )
1655+ {
1656+ EDA_ITEM* item = m_cmplist[ii].GetComp();
1657+
1658+ if( item == NULL )
1659+ continue;
1660+
1661+ if( item->Type() != SCH_COMPONENT_T )
1662+ continue;
1663+
1664+ SCH_COMPONENT* comp = (SCH_COMPONENT*) item;
1665+
1666+ bool isMulti = false;
1667+
1668+ LIB_PART* entry = m_libs->FindLibPart( comp->GetPartName() );
1669+
1670+ if( entry )
1671+ isMulti = entry->IsMulti();
1672+
1673+ CmpName = m_cmplist[ii].GetRefStr();
1674+
1675+ if( isMulti && m_includeSubComponents )
1676+ {
1677+ subReference = LIB_PART::SubReference( m_cmplist[ii].GetUnit() );
1678+ CmpName += TO_UTF8( subReference );
1679+ }
1680+
1681+ fprintf( m_outFile, "| %-10s %-12s", CmpName.c_str(),
1682+ TO_UTF8( comp->GetField( VALUE )->GetText() ) );
1683+
1684+ if( addDatasheet )
1685+ fprintf( m_outFile, "%-20s",
1686+ TO_UTF8( comp->GetField( DATASHEET )->GetText() ) );
1687+
1688+ if( m_includeSubComponents )
1689+ {
1690+ if( printLocCmp )
1691+ {
1692+ msg = returnURLItemLocation( m_cmplist[ii].GetSheetPath().PathHumanReadable(),
1693+ comp->GetPosition() );
1694+ fprintf( m_outFile, "%s", TO_UTF8( msg ) );
1695+ }
1696+ }
1697+
1698+ wxString tmpStr = returnFieldsString( comp );
1699+ fprintf( m_outFile, "%s\n", TO_UTF8( tmpStr ) );
1700+ }
1701+
1702+ // Print the last line:
1703+ fputs( "#End Cmp\n", m_outFile );
1704+
1705+ return true;
1706+}
1707+
1708+
1709+/* print the list of components ordered by references. Generate 2 formats:
1710+ * - full component list in csv form
1711+ * - "short" component list in csv form, grouped by common fields values
1712+ * (mainly component value)
1713+ * param aFile = the file to write to (will be NOT closed)
1714+ */
1715+
1716+/* full csv format sample:
1717+ * ref;value;sheet path(location);footprint;field1;field2
1718+ * C101;47pF;Loc /(X=57,150 mm, Y=74,930 mm);Loc /(X=344,170 mm, Y=116,840 mm));C1;field1;
1719+ * C102;47pF;Loc /(X=344,170 mm, Y=116,840 mm);Loc /(X=364,490 mm, Y=116,840 mm));C1;;
1720+ * C103;47uF;Loc /(X=364,490 mm, Y=116,840 mm);Loc /(X=66,040 mm, Y=231,140 mm));CP6;;
1721+ * C104;47uF;Loc /(X=66,040 mm, Y=231,140 mm);Loc /(X=82,550 mm, Y=231,140 mm));CP6;;
1722+ */
1723+/* short csv format sample:
1724+ * ref;value;footprint;Champ1;Champ2
1725+ * C101;47pF;C1;field1;;1
1726+ * C102;47pF;C1;;;1
1727+ * C103..C106;47uF;CP6;;;4
1728+ */
1729+
1730+bool BOM_LISTER::PrintComponentsListByReferenceCsvForm( FILE* aFile )
1731+{
1732+ m_outFile = aFile;
1733+ bool addDatasheet = isFieldPrintable( DATASHEET );
1734+
1735+ // Set option group references, for components having same field values
1736+ // (same value, same footprint ...)
1737+ // obviously, this is possible only when print location
1738+ // and include Sub Components are not enabled.
1739+ bool groupRefs = m_groupReferences;
1740+ bool includeSubComponents = m_includeSubComponents && !groupRefs;
1741+
1742+ // Print component location if needed, but only when
1743+ // include sub component option is enabled, because for multiple
1744+ // parts per package there are more than one location per reference
1745+ bool printLocCmp = m_printLocation && !groupRefs && m_includeSubComponents;
1746+
1747+ wxString msg;
1748+
1749+ if( m_cmplist.GetCount() == 0 ) // Build component list
1750+ {
1751+ SCH_SHEET_LIST sheetList;
1752+ sheetList.GetComponents( m_libs, m_cmplist, false );
1753+
1754+ // sort component list
1755+ m_cmplist.SortByReferenceOnly();
1756+
1757+ if( !includeSubComponents )
1758+ m_cmplist.RemoveSubComponentsFromList();
1759+ }
1760+ else
1761+ m_cmplist.SortByReferenceOnly();
1762+
1763+ // Print comment line:
1764+ msg = wxT( "ref" );
1765+ msg << (wxChar)m_separatorSymbol << wxT( "value" );
1766+
1767+ if( addDatasheet )
1768+ msg << (wxChar)m_separatorSymbol << wxT( "datasheet" );
1769+
1770+ if( printLocCmp )
1771+ msg << (wxChar)m_separatorSymbol << wxT( "sheet path(location)" );
1772+
1773+ if( isFieldPrintable( FOOTPRINT ) )
1774+ msg << (wxChar)m_separatorSymbol << wxT( "footprint" );
1775+
1776+ for( int ii = FIELD1; ii <= FIELD8; ii++ )
1777+ {
1778+ if( isFieldPrintable( ii ) )
1779+ msg << (wxChar)m_separatorSymbol << _( "Field" ) << ii - FIELD1 + 1;
1780+ }
1781+
1782+ if( groupRefs )
1783+ msg << (wxChar)m_separatorSymbol << _( "Item count" );
1784+
1785+ fprintf( m_outFile, "%s\n", TO_UTF8( msg ) );
1786+
1787+ // Print BOM list
1788+ wxString strCur;
1789+ wxString strPred;
1790+ int amount = 0; // number of items, on the same line
1791+ wxString cmpName;
1792+ wxString cmpNameFirst;
1793+ wxString cmpNameLast;
1794+
1795+ // Print list of items, by reference
1796+ for( unsigned ii = 0; ii < m_cmplist.GetCount(); ii++ )
1797+ {
1798+ EDA_ITEM* item = m_cmplist[ii].GetComp();
1799+
1800+ if( item == NULL )
1801+ continue;
1802+
1803+ if( item->Type() != SCH_COMPONENT_T )
1804+ continue;
1805+
1806+ SCH_COMPONENT* comp = (SCH_COMPONENT*) item;
1807+
1808+ LIB_PART* entry = m_libs->FindLibPart( comp->GetPartName() );
1809+
1810+ bool isMulti = false;
1811+
1812+ if( entry )
1813+ isMulti = entry->IsMulti();
1814+
1815+ cmpName = m_cmplist[ii].GetRef();
1816+
1817+ if( isMulti && includeSubComponents )
1818+ // Add unit ident, for mutiple parts per package
1819+ cmpName += LIB_PART::SubReference( m_cmplist[ii].GetUnit() );
1820+
1821+ if( groupRefs )
1822+ {
1823+ // Store value and datasheet (will be printed later)
1824+ strCur.Empty();
1825+ strCur << (wxChar)m_separatorSymbol << comp->GetField( VALUE )->GetText();
1826+
1827+ if( addDatasheet )
1828+ strCur << (wxChar)m_separatorSymbol << comp->GetField( DATASHEET )->GetText();
1829+ }
1830+ else
1831+ {
1832+ // Print the current component reference, value and datasheet
1833+ msg = cmpName;
1834+ msg << (wxChar)m_separatorSymbol << comp->GetField( VALUE )->GetText();
1835+
1836+ if( addDatasheet )
1837+ msg << (wxChar)m_separatorSymbol << comp->GetField( DATASHEET )->GetText();
1838+
1839+ fprintf( m_outFile, "%s", TO_UTF8( msg ) );
1840+ }
1841+
1842+ if( printLocCmp ) // Is allowed only for full list (not grouped)
1843+ {
1844+ msg = returnURLItemLocation(
1845+ m_cmplist[ii].GetSheetPath().PathHumanReadable(),
1846+ comp->GetPosition() );
1847+
1848+ fprintf( m_outFile, "%c%s", m_separatorSymbol, TO_UTF8( msg ) );
1849+ }
1850+
1851+ if( groupRefs )
1852+ {
1853+ wxString tmpStr = returnFieldsString( comp );
1854+ strCur += tmpStr;
1855+
1856+ if( strPred.Len() == 0 )
1857+ cmpNameFirst = cmpName;
1858+ else
1859+ {
1860+ // print a BOM line
1861+ msg.Empty();
1862+ if( !strCur.IsSameAs( strPred ) )
1863+ {
1864+ switch( amount )
1865+ {
1866+ case 1: // One reference to print
1867+ // format C103;47uF;CP6;;;1
1868+ msg << cmpNameFirst <<strPred << (wxChar)m_separatorSymbol << amount;
1869+ break;
1870+
1871+ case 2: // 2 references to print
1872+ // format C103,C104;47uF;CP6;;;2
1873+ msg << cmpNameFirst << wxT(",") << cmpNameLast
1874+ << strPred << (wxChar)m_separatorSymbol << amount;
1875+ break;
1876+
1877+ default: // Many references to print :
1878+ // format: C103..C106;47uF;CP6;;;4
1879+ msg << cmpNameFirst << wxT("..") << cmpNameLast
1880+ << strPred << (wxChar)m_separatorSymbol << amount;
1881+ break;
1882+ }
1883+ fprintf( m_outFile, "%s\n", TO_UTF8( msg ) );
1884+
1885+ cmpNameFirst = cmpName;
1886+ amount = 0;
1887+ }
1888+ }
1889+
1890+ strPred = strCur;
1891+ cmpNameLast = cmpName;
1892+ amount++;
1893+ }
1894+ else
1895+ {
1896+ msg = returnFieldsString( comp );
1897+ fprintf( m_outFile, "%s\n", TO_UTF8( msg ) );
1898+ }
1899+ }
1900+
1901+ // Print the last line:
1902+ if( groupRefs )
1903+ {
1904+ msg.Empty();
1905+ switch( amount )
1906+ {
1907+ case 1:
1908+ msg << cmpNameFirst << strPred << (wxChar)m_separatorSymbol << amount;
1909+ break;
1910+
1911+ case 2:
1912+ msg << cmpNameFirst << wxT(",") << cmpNameLast
1913+ << strPred << (wxChar)m_separatorSymbol << amount;
1914+ break;
1915+
1916+ default:
1917+ msg << cmpNameFirst << wxT("..") << cmpNameFirst << cmpNameLast
1918+ << strPred << (wxChar)m_separatorSymbol << amount;
1919+ break;
1920+ }
1921+ fprintf( m_outFile, "%s\n", TO_UTF8( msg ) );
1922+ }
1923+
1924+ return true;
1925+}
1926+
1927+
1928+/* PrintComponentsListByValue
1929+ * print the list of components, sorted by value, one line per component
1930+ * param aFile = the file to write to (will be NOT closed)
1931+ * not useable for csv format (use CreateCsvBOMListByValues instead)
1932+ * format:
1933+ * | 10pF C15 Loc /controle/(X=48,260 mm, Y=83,820 mm); <fields>
1934+ * | 10pF C16 Loc /controle/(X=68,580 mm, Y=83,820 mm); <fields>
1935+ */
1936+int BOM_LISTER::PrintComponentsListByValue( FILE* aFile )
1937+{
1938+ m_outFile = aFile;
1939+
1940+ if( m_cmplist.GetCount() == 0 ) // Build component list
1941+ {
1942+ SCH_SHEET_LIST sheetList;
1943+ sheetList.GetComponents( m_libs, m_cmplist, false );
1944+
1945+ if( !m_includeSubComponents )
1946+ {
1947+ // sort component list
1948+ m_cmplist.SortByReferenceOnly();
1949+ m_cmplist.RemoveSubComponentsFromList();
1950+ }
1951+ }
1952+
1953+ m_cmplist.SortByValueOnly();
1954+
1955+ wxString msg;
1956+
1957+ msg = _( "\n#Cmp ( order = Value )" );
1958+
1959+ if( m_includeSubComponents )
1960+ msg << _( " (with SubCmp)" );
1961+
1962+ msg << wxT( "\n" );
1963+
1964+ fputs( TO_UTF8( msg ), m_outFile );
1965+
1966+ std::string cmpName;
1967+ for( unsigned ii = 0; ii < m_cmplist.GetCount(); ii++ )
1968+ {
1969+ EDA_ITEM* schItem = m_cmplist[ii].GetComp();
1970+
1971+ if( schItem == NULL )
1972+ continue;
1973+
1974+ if( schItem->Type() != SCH_COMPONENT_T )
1975+ continue;
1976+
1977+ SCH_COMPONENT* drawLibItem = (SCH_COMPONENT*) schItem;
1978+
1979+ bool isMulti = false;
1980+ LIB_PART* entry = m_libs->FindLibPart( drawLibItem->GetPartName() );
1981+
1982+ if( entry )
1983+ isMulti = entry->IsMulti();
1984+
1985+ cmpName = m_cmplist[ii].GetRefStr();
1986+
1987+ if( isMulti && m_includeSubComponents )
1988+ // Add unit ident, for mutiple parts per package
1989+ cmpName += TO_UTF8( LIB_PART::SubReference( m_cmplist[ii].GetUnit() ) );
1990+
1991+ fprintf( m_outFile, "| %-12s %-10s",
1992+ TO_UTF8( drawLibItem->GetField( VALUE )->GetText() ),
1993+ cmpName.c_str() );
1994+
1995+ // print the sheet path and location
1996+ if( m_includeSubComponents )
1997+ {
1998+ msg = returnURLItemLocation( m_cmplist[ii].GetSheetPath().PathHumanReadable(),
1999+ drawLibItem->GetPosition() );
2000+ fprintf( m_outFile, "%s", TO_UTF8( msg ) );
2001+ }
2002+
2003+ fprintf( m_outFile, "%s\n", TO_UTF8( returnFieldsString( drawLibItem ) ) );
2004+ }
2005+
2006+ msg = _( "#End Cmp\n" );
2007+ fputs( TO_UTF8( msg ), m_outFile );
2008+ return 0;
2009+}
2010+
2011+
2012+/* returnURLItemLocation
2013+ * return a formated string to print the full location:
2014+ * <sheet name>/( X Y position)
2015+ * param aPathName = the full sheet name of item
2016+ * param aPosition = a position (in internal units) to print
2017+ */
2018+const wxString BOM_LISTER::returnURLItemLocation( const wxString& aPathName,
2019+ wxPoint aPosition )
2020+{
2021+ wxString text;
2022+
2023+ text.Printf( wxT( "Loc %s(X=%s, Y=%s)" ), GetChars( aPathName ),
2024+ GetChars( StringFromValue( g_UserUnit, aPosition.x, true ) ),
2025+ GetChars( StringFromValue( g_UserUnit, aPosition.y, true ) ) );
2026+ return text;
2027+}
2028
2029=== added directory 'eeschema/BOM/dialogs'
2030=== added file 'eeschema/BOM/dialogs/dialog_build_BOM.cpp'
2031--- eeschema/BOM/dialogs/dialog_build_BOM.cpp 1970-01-01 00:00:00 +0000
2032+++ eeschema/BOM/dialogs/dialog_build_BOM.cpp 2015-06-20 07:42:20 +0000
2033@@ -0,0 +1,592 @@
2034+/*
2035+ * This program source code file is part of KiCad, a free EDA CAD application.
2036+ *
2037+ * Copyright (C) 2012 Jean-Pierre Charras, jp.charras at wanadoo.fr
2038+ * Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
2039+ *
2040+ * This program is free software; you can redistribute it and/or
2041+ * modify it under the terms of the GNU General Public License
2042+ * as published by the Free Software Foundation; either version 2
2043+ * of the License, or (at your option) any later version.
2044+ *
2045+ * This program is distributed in the hope that it will be useful,
2046+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2047+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2048+ * GNU General Public License for more details.
2049+ *
2050+ * You should have received a copy of the GNU General Public License
2051+ * along with this program; if not, you may find one here:
2052+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
2053+ * or you may search the http://www.gnu.org website for the version 2 license,
2054+ * or you may write to the Free Software Foundation, Inc.,
2055+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
2056+ */
2057+
2058+/**
2059+ * @file dialog_build_BOM.cpp
2060+ */
2061+
2062+#include <fctsys.h>
2063+#include <kiface_i.h>
2064+#include <pgm_base.h>
2065+#include <confirm.h>
2066+#include <gestfich.h>
2067+#include <kicad_string.h>
2068+#include <class_sch_screen.h>
2069+#include <wxstruct.h>
2070+#include <build_version.h>
2071+
2072+#include <netlist.h>
2073+#include <template_fieldnames.h>
2074+#include <sch_component.h>
2075+#include <sch_sheet.h>
2076+#include <class_library.h>
2077+
2078+#include <wx/valgen.h>
2079+
2080+#include <dialog_build_BOM.h>
2081+#include <BOM_lister.h>
2082+
2083+
2084+/* Local variables */
2085+static bool s_ListByRef = true;
2086+static bool s_ListByValue = true;
2087+static bool s_ListWithSubCmponents;
2088+static bool s_ListHierarchicalPinByName;
2089+static bool s_ListHierarchicalPinBySheet;
2090+static bool s_BrowseCreatedList;
2091+static int s_OutputFormOpt;
2092+static int s_OutputSeparatorOpt;
2093+static bool s_Add_Location = false;
2094+static bool s_Add_FpField_state = true;
2095+static bool s_Add_DatasheetField_state;
2096+static bool s_Add_F1_state;
2097+static bool s_Add_F2_state;
2098+static bool s_Add_F3_state;
2099+static bool s_Add_F4_state;
2100+static bool s_Add_F5_state;
2101+static bool s_Add_F6_state;
2102+static bool s_Add_F7_state;
2103+static bool s_Add_F8_state;
2104+static bool s_Add_Alls_state;
2105+static char s_ExportSeparatorSymbol;
2106+
2107+
2108+static bool* s_AddFieldList[] =
2109+{
2110+ &s_Add_FpField_state,
2111+ &s_Add_F1_state,
2112+ &s_Add_F2_state,
2113+ &s_Add_F3_state,
2114+ &s_Add_F4_state,
2115+ &s_Add_F5_state,
2116+ &s_Add_F6_state,
2117+ &s_Add_F7_state,
2118+ &s_Add_F8_state,
2119+ &s_Add_Alls_state,
2120+ &s_Add_DatasheetField_state,
2121+ NULL
2122+};
2123+
2124+
2125+const wxString OPTION_BOM_LIST_REF( wxT("BomListPerRef") );
2126+const wxString OPTION_BOM_LIST_VALUE( wxT("BomListPerValue") );
2127+const wxString OPTION_BOM_LIST_HPINS( wxT("BomListPerHPins") );
2128+const wxString OPTION_BOM_LIST_HPINS_BY_SHEET( wxT("BomListHPinsPerSheet") );
2129+const wxString OPTION_BOM_LIST_HPINS_BY_NAME_( wxT("BomListHPinsPerName") );
2130+const wxString OPTION_BOM_LIST_SUB_CMP( wxT("BomListSubCmps") );
2131+
2132+const wxString OPTION_BOM_FORMAT( wxT("BomFormat") );
2133+const wxString OPTION_BOM_LAUNCH_BROWSER( wxT("BomLaunchBrowser") );
2134+const wxString OPTION_BOM_SEPARATOR( wxT("BomExportSeparator") );
2135+const wxString OPTION_BOM_ADD_FIELD ( wxT("BomAddField") );
2136+const wxString OPTION_BOM_ADD_LOCATION ( wxT("BomAddLocation") );
2137+
2138+/* list of separators used in bom export to spreadsheet
2139+ * (selected by s_OutputSeparatorOpt, and s_OutputSeparatorOpt radiobox)
2140+ */
2141+static char s_ExportSeparator[] = ("\t;,.");
2142+
2143+/*!
2144+ * DIALOG_BUILD_BOM dialog type definition
2145+ */
2146+
2147+
2148+DIALOG_BUILD_BOM::DIALOG_BUILD_BOM( SCH_EDIT_FRAME* parent ) :
2149+ DIALOG_BUILD_BOM_BASE( parent )
2150+{
2151+ m_config = Kiface().KifaceSettings();
2152+ wxASSERT( m_config != NULL );
2153+
2154+ m_parent = parent;
2155+
2156+ Init();
2157+
2158+ if( GetSizer() )
2159+ {
2160+ GetSizer()->SetSizeHints( this );
2161+ }
2162+ Centre();
2163+}
2164+
2165+
2166+/*!
2167+ * Init Controls for DIALOG_BUILD_BOM
2168+ */
2169+
2170+void DIALOG_BUILD_BOM::Init()
2171+{
2172+ SetFocus();
2173+
2174+ /* Get options */
2175+ m_config->Read( OPTION_BOM_LIST_REF, &s_ListByRef );
2176+ m_config->Read( OPTION_BOM_LIST_VALUE , &s_ListByValue );
2177+ m_config->Read( OPTION_BOM_LIST_HPINS, &s_ListHierarchicalPinByName );
2178+ m_config->Read( OPTION_BOM_LIST_HPINS_BY_SHEET, &s_ListWithSubCmponents );
2179+ m_config->Read( OPTION_BOM_LIST_HPINS_BY_NAME_, &s_ListWithSubCmponents );
2180+ m_config->Read( OPTION_BOM_LIST_SUB_CMP, &s_ListWithSubCmponents );
2181+ m_config->Read( OPTION_BOM_LIST_HPINS_BY_SHEET, &s_ListHierarchicalPinBySheet );
2182+ m_config->Read( OPTION_BOM_LIST_HPINS_BY_NAME_, &s_ListHierarchicalPinByName );
2183+ s_OutputFormOpt = m_config->Read( OPTION_BOM_FORMAT, 0l );
2184+ m_config->Read( OPTION_BOM_LAUNCH_BROWSER, &s_BrowseCreatedList );
2185+ s_OutputSeparatorOpt = m_config->Read( OPTION_BOM_SEPARATOR, 0l );
2186+ m_config->Read( OPTION_BOM_ADD_LOCATION, &s_Add_Location );
2187+
2188+ long addfields = m_config->Read( OPTION_BOM_ADD_FIELD, 0l );
2189+ for( int ii = 0, bitmask = 1; s_AddFieldList[ii] != NULL; ii++ )
2190+ {
2191+ if( (addfields & bitmask) )
2192+ *s_AddFieldList[ii] = true;
2193+ else
2194+ *s_AddFieldList[ii] = false;
2195+
2196+ bitmask <<= 1;
2197+ }
2198+
2199+ // Set validators
2200+ m_ListCmpbyRefItems->SetValidator( wxGenericValidator( &s_ListByRef ) );
2201+ m_ListSubCmpItems->SetValidator( wxGenericValidator( &s_ListWithSubCmponents ) );
2202+ m_ListCmpbyValItems->SetValidator( wxGenericValidator( &s_ListByValue ) );
2203+ m_GenListLabelsbyVal->SetValidator( wxGenericValidator( &s_ListHierarchicalPinByName ) );
2204+ m_GenListLabelsbySheet->SetValidator( wxGenericValidator( &s_ListHierarchicalPinBySheet ) );
2205+ m_OutputFormCtrl->SetValidator( wxGenericValidator( &s_OutputFormOpt ) );
2206+ m_OutputSeparatorCtrl->SetValidator( wxGenericValidator( &s_OutputSeparatorOpt ) );
2207+ m_GetListBrowser->SetValidator( wxGenericValidator( &s_BrowseCreatedList ) );
2208+
2209+ m_AddLocationField->SetValidator( wxGenericValidator( &s_Add_Location ) );
2210+ m_AddFootprintField->SetValidator( wxGenericValidator( &s_Add_FpField_state ) );
2211+ m_AddDatasheetField->SetValidator( wxGenericValidator( &s_Add_DatasheetField_state ) );
2212+ m_AddField1->SetValidator( wxGenericValidator( &s_Add_F1_state ) );
2213+ m_AddField2->SetValidator( wxGenericValidator( &s_Add_F2_state ) );
2214+ m_AddField3->SetValidator( wxGenericValidator( &s_Add_F3_state ) );
2215+ m_AddField4->SetValidator( wxGenericValidator( &s_Add_F4_state ) );
2216+ m_AddField5->SetValidator( wxGenericValidator( &s_Add_F5_state ) );
2217+ m_AddField6->SetValidator( wxGenericValidator( &s_Add_F6_state ) );
2218+ m_AddField7->SetValidator( wxGenericValidator( &s_Add_F7_state ) );
2219+ m_AddField8->SetValidator( wxGenericValidator( &s_Add_F8_state ) );
2220+ m_AddAllFields->SetValidator( wxGenericValidator( &s_Add_Alls_state ) );
2221+
2222+ m_OutputFormCtrl->SetSelection( s_OutputFormOpt );
2223+ m_OutputSeparatorCtrl->SetSelection( s_OutputSeparatorOpt );
2224+
2225+ // Enable/disable options:
2226+ wxCommandEvent dummy;
2227+ OnRadioboxSelectFormatSelected( dummy );
2228+}
2229+
2230+
2231+/*
2232+ * Called on BOM format selection:
2233+ * Enable/disable options in dialog
2234+ */
2235+void DIALOG_BUILD_BOM::OnRadioboxSelectFormatSelected( wxCommandEvent& event )
2236+{
2237+ switch( m_OutputFormCtrl->GetSelection() )
2238+ {
2239+ case 0: // Human readable text full report
2240+ m_OutputSeparatorCtrl->Enable( false );
2241+ m_ListCmpbyRefItems->Enable( true );
2242+ m_ListCmpbyValItems->Enable( true );
2243+ m_GenListLabelsbyVal->Enable( true );
2244+ m_GenListLabelsbySheet->Enable( true );
2245+ m_ListSubCmpItems->Enable( true );
2246+ m_AddLocationField->Enable( true );
2247+ break;
2248+
2249+ case 1: // Csv format, full list by reference
2250+ m_OutputSeparatorCtrl->Enable( true );
2251+ m_ListCmpbyRefItems->Enable( false );
2252+ m_ListCmpbyValItems->Enable( false );
2253+ m_GenListLabelsbyVal->Enable( false );
2254+ m_GenListLabelsbySheet->Enable( false );
2255+ m_ListSubCmpItems->Enable( true );
2256+ m_AddLocationField->Enable( true );
2257+ break;
2258+
2259+ case 2: // Csv format, grouped list by reference
2260+ m_OutputSeparatorCtrl->Enable( true );
2261+ m_ListCmpbyRefItems->Enable( false );
2262+ m_ListCmpbyValItems->Enable( false );
2263+ m_GenListLabelsbyVal->Enable( false );
2264+ m_GenListLabelsbySheet->Enable( false );
2265+ m_ListSubCmpItems->Enable( false );
2266+ m_AddLocationField->Enable( false );
2267+ break;
2268+
2269+ case 3: // Csv format, short list by values
2270+ m_OutputSeparatorCtrl->Enable( true );
2271+ m_ListCmpbyRefItems->Enable( false );
2272+ m_ListCmpbyValItems->Enable( false );
2273+ m_GenListLabelsbyVal->Enable( false );
2274+ m_GenListLabelsbySheet->Enable( false );
2275+ m_ListSubCmpItems->Enable( false );
2276+ m_AddLocationField->Enable( false );
2277+ break;
2278+ }
2279+}
2280+
2281+
2282+/*!
2283+ * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
2284+ */
2285+
2286+void DIALOG_BUILD_BOM::OnOkClick( wxCommandEvent& event )
2287+{
2288+ char ExportSeparatorSymbol = s_ExportSeparator[0];
2289+
2290+ if( m_OutputSeparatorCtrl->GetSelection() > 0 )
2291+ ExportSeparatorSymbol = s_ExportSeparator[m_OutputSeparatorCtrl->GetSelection()];
2292+
2293+ int ExportFileType = m_OutputFormCtrl->GetSelection();
2294+
2295+ SavePreferences();
2296+
2297+ Create_BOM_Lists( ExportFileType, m_ListSubCmpItems->GetValue(),
2298+ ExportSeparatorSymbol, m_GetListBrowser->GetValue() );
2299+}
2300+
2301+
2302+/*!
2303+ * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
2304+ */
2305+
2306+void DIALOG_BUILD_BOM::OnCancelClick( wxCommandEvent& event )
2307+{
2308+ EndModal( -1 );
2309+}
2310+
2311+
2312+void DIALOG_BUILD_BOM::SavePreferences()
2313+{
2314+ // Determine current settings of "List items" and "Options" checkboxes
2315+ s_ListByRef = m_ListCmpbyRefItems->GetValue();
2316+ s_ListWithSubCmponents = m_ListSubCmpItems->GetValue();
2317+ s_ListByValue = m_ListCmpbyValItems->GetValue();
2318+ s_ListHierarchicalPinByName = m_GenListLabelsbyVal->GetValue();
2319+ s_ListHierarchicalPinBySheet = m_GenListLabelsbySheet->GetValue();
2320+ s_BrowseCreatedList = m_GetListBrowser->GetValue();
2321+
2322+ // (saved in config ):
2323+
2324+ // Determine current settings of both radiobutton groups
2325+ s_OutputFormOpt = m_OutputFormCtrl->GetSelection();
2326+ s_OutputSeparatorOpt = m_OutputSeparatorCtrl->GetSelection();
2327+
2328+ if( s_OutputSeparatorOpt < 0 )
2329+ s_OutputSeparatorOpt = 0;
2330+
2331+ // Determine current settings of all "Fields to add" checkboxes
2332+ s_Add_Location = m_AddLocationField->GetValue();
2333+ s_Add_FpField_state = m_AddFootprintField->GetValue();
2334+ s_Add_DatasheetField_state = m_AddDatasheetField->GetValue();
2335+ s_Add_F1_state = m_AddField1->GetValue();
2336+ s_Add_F2_state = m_AddField2->GetValue();
2337+ s_Add_F3_state = m_AddField3->GetValue();
2338+ s_Add_F4_state = m_AddField4->GetValue();
2339+ s_Add_F5_state = m_AddField5->GetValue();
2340+ s_Add_F6_state = m_AddField6->GetValue();
2341+ s_Add_F7_state = m_AddField7->GetValue();
2342+ s_Add_F8_state = m_AddField8->GetValue();
2343+ s_Add_Alls_state = m_AddAllFields->GetValue();
2344+
2345+ // Now save current settings of both radiobutton groups
2346+ m_config->Write( OPTION_BOM_LIST_REF, s_ListByRef );
2347+ m_config->Write( OPTION_BOM_LIST_VALUE , s_ListByValue );
2348+ m_config->Write( OPTION_BOM_LIST_HPINS, s_ListHierarchicalPinByName );
2349+ m_config->Write( OPTION_BOM_LIST_HPINS_BY_SHEET, s_ListHierarchicalPinBySheet );
2350+ m_config->Write( OPTION_BOM_LIST_HPINS_BY_NAME_, s_ListHierarchicalPinByName );
2351+ m_config->Write( OPTION_BOM_LIST_SUB_CMP, s_ListWithSubCmponents );
2352+
2353+ m_config->Write( OPTION_BOM_FORMAT, (long) s_OutputFormOpt );
2354+ m_config->Write( OPTION_BOM_SEPARATOR, (long) s_OutputSeparatorOpt );
2355+ m_config->Write( OPTION_BOM_LAUNCH_BROWSER, (long) s_BrowseCreatedList );
2356+
2357+ // Now save current settings of all "Fields to add" checkboxes
2358+ m_config->Write( OPTION_BOM_ADD_LOCATION, s_Add_Location );
2359+
2360+ long addfields = 0;
2361+ for( int ii = 0, bitmask = 1; s_AddFieldList[ii] != NULL; ii++ )
2362+ {
2363+ if( *s_AddFieldList[ii] )
2364+ addfields |= bitmask;
2365+
2366+ bitmask <<= 1;
2367+ }
2368+
2369+ m_config->Write( OPTION_BOM_ADD_FIELD, addfields );
2370+}
2371+
2372+
2373+void DIALOG_BUILD_BOM::Create_BOM_Lists( int aTypeFile,
2374+ bool aIncludeSubComponents,
2375+ char aExportSeparatorSymbol,
2376+ bool aRunBrowser )
2377+{
2378+ wxString wildcard;
2379+
2380+ static wxFileName fn;
2381+
2382+ wxFileName current = g_RootSheet->GetScreen()->GetFileName();
2383+
2384+ s_ExportSeparatorSymbol = aExportSeparatorSymbol;
2385+
2386+ if( !fn.HasName() || fn.GetName()==NAMELESS_PROJECT )
2387+ {
2388+ fn.SetName( current.GetName() );
2389+ }
2390+ // else use a previous run's name, because fn was set before and user
2391+ // is probably just iteratively refining the BOM.
2392+
2393+ if( fn.GetPath().IsEmpty() )
2394+ {
2395+ fn.SetPath( current.GetPath() );
2396+ }
2397+ // else use a previous run's path, because fn was set before and user
2398+ // is probably just iteratively refining the BOM.
2399+
2400+ wxString bomDesc = _( "Bill of Materials" ); // translate once, use twice.
2401+
2402+ if( aTypeFile == 0 )
2403+ {
2404+ fn.SetExt( wxT( "lst" ) );
2405+ wildcard = bomDesc + wxT( " (*.lst)|*.lst" );
2406+ }
2407+ else
2408+ {
2409+ fn.SetExt( wxT( "csv" ) );
2410+ wildcard = bomDesc + wxT( " (*.csv)|*.csv" );
2411+ }
2412+
2413+ wxFileDialog dlg( this, bomDesc, fn.GetPath(),
2414+ fn.GetFullName(), wildcard, wxFD_SAVE );
2415+
2416+ if( dlg.ShowModal() == wxID_CANCEL )
2417+ return;
2418+
2419+ fn = dlg.GetPath(); // remember path+filename+ext for subsequent runs.
2420+
2421+ m_listFileName = dlg.GetPath();
2422+
2423+ // Close dialog, then show the list (if so requested)
2424+
2425+ switch( aTypeFile )
2426+ {
2427+ case 0: // list
2428+ CreatePartsAndLabelsFullList( aIncludeSubComponents );
2429+ break;
2430+
2431+ case 1: // spreadsheet, Single Part per line
2432+ CreateSpreadSheetPartsFullList( aIncludeSubComponents, s_Add_Location, false );
2433+ break;
2434+
2435+ case 2: // spreadsheet, group Part with same fields per line
2436+ CreateSpreadSheetPartsFullList( aIncludeSubComponents, s_Add_Location, true );
2437+ break;
2438+
2439+ case 3: // spreadsheet, one value per line and no sub-component
2440+ CreateSpreadSheetPartsShortList();
2441+ break;
2442+ }
2443+
2444+ EndModal( 1 );
2445+
2446+ if( aRunBrowser )
2447+ {
2448+ wxString editorname = Pgm().GetEditorName();
2449+ wxString filename = m_listFileName;
2450+ AddDelimiterString( filename );
2451+ ExecuteFile( this, editorname, filename );
2452+ }
2453+}
2454+
2455+/** Helper function IsFieldChecked
2456+ * return the state of the wxCheckbox corresponding to the
2457+ * field aFieldId (FOOTPRINT, DATASHEET and FIELD1 to FIELD8
2458+ * if the option "All user fields" is checked, return always true
2459+ * for fileds ids >= FIELD1
2460+ * @param aFieldId = the field id : FOOTPRINT to FIELD8
2461+ */
2462+bool DIALOG_BUILD_BOM::IsFieldChecked(int aFieldId)
2463+{
2464+ if( m_AddAllFields->IsChecked() && (aFieldId>= FIELD1) )
2465+ return true;
2466+
2467+ switch ( aFieldId )
2468+ {
2469+ case FIELD1:
2470+ return m_AddField1->IsChecked();
2471+ case FIELD2:
2472+ return m_AddField2->IsChecked();
2473+ case FIELD3:
2474+ return m_AddField3->IsChecked();
2475+ case FIELD4:
2476+ return m_AddField4->IsChecked();
2477+ case FIELD5:
2478+ return m_AddField5->IsChecked();
2479+ case FIELD6:
2480+ return m_AddField6->IsChecked();
2481+ case FIELD7:
2482+ return m_AddField7->IsChecked();
2483+ case FIELD8:
2484+ return m_AddField8->IsChecked();
2485+ case FOOTPRINT:
2486+ return m_AddFootprintField->IsChecked();
2487+ case DATASHEET:
2488+ return m_AddDatasheetField->IsChecked();
2489+ }
2490+
2491+ return false;
2492+}
2493+
2494+
2495+/* Prints a list of components, in a form which can be imported by a spreadsheet.
2496+ * components having the same value and the same footprint
2497+ * are grouped on the same line
2498+ * Form is:
2499+ * value; number of components; list of references; <footprint>; <field1>; ...;
2500+ * list is sorted by values
2501+ */
2502+void DIALOG_BUILD_BOM::CreateSpreadSheetPartsShortList( )
2503+{
2504+ FILE* f;
2505+
2506+ if( ( f = wxFopen( m_listFileName, wxT( "wt" ) ) ) == NULL )
2507+ {
2508+ wxString msg;
2509+ msg.Printf( _( "Failed to open file <%s>" ), GetChars(m_listFileName) );
2510+ DisplayError( this, msg );
2511+ return;
2512+ }
2513+
2514+ BOM_LISTER bom_lister( Prj().SchLibs() );
2515+ bom_lister.SetCvsFormOn( s_ExportSeparatorSymbol );
2516+
2517+ // Set the list of fields to add to list
2518+ for( int ii = FOOTPRINT; ii <= FIELD8; ii++ )
2519+ if( IsFieldChecked( ii ) )
2520+ bom_lister.AddFieldIdToPrintList( ii );
2521+ // Write the list of components grouped by values:
2522+ bom_lister.CreateCsvBOMListByValues( f );
2523+}
2524+
2525+
2526+/*
2527+ * Print a list of components, in a form which can be imported by a spreadsheet
2528+ * form is:
2529+ * cmp ref; cmp val; fields;
2530+ * Components are sorted by reference
2531+ * param aIncludeSubComponents = true to print sub components
2532+ * param aPrintLocation = true to print components location
2533+ * (only possible when aIncludeSubComponents == true)
2534+ * param aGroupRefs = true to group components references, when other fieds
2535+ * have the same value
2536+ */
2537+void DIALOG_BUILD_BOM::CreateSpreadSheetPartsFullList( bool aIncludeSubComponents,
2538+ bool aPrintLocation,
2539+ bool aGroupRefs )
2540+{
2541+ FILE* f;
2542+ wxString msg;
2543+
2544+ if( ( f = wxFopen( m_listFileName, wxT( "wt" ) ) ) == NULL )
2545+ {
2546+ msg.Printf( _( "Failed to open file <%s>" ), GetChars( m_listFileName ) );
2547+ DisplayError( this, msg );
2548+ return;
2549+ }
2550+
2551+ BOM_LISTER bom_lister( Prj().SchLibs() );
2552+ bom_lister.SetCvsFormOn( s_ExportSeparatorSymbol );
2553+
2554+ // Set group refs option (hight priority):
2555+ // Obvioulsy only useful when not including sub-components
2556+ bom_lister.SetGroupReferences( aGroupRefs );
2557+ bom_lister.SetIncludeSubCmp( aIncludeSubComponents && !aGroupRefs );
2558+
2559+ // Set print location option:
2560+ // Obvioulsy only possible when including sub components
2561+ // and not grouping references
2562+ bom_lister.SetPrintLocation( aPrintLocation && !aGroupRefs &&
2563+ aIncludeSubComponents );
2564+
2565+ // Set the list of fields to add to list
2566+ for( int ii = FOOTPRINT; ii <= FIELD8; ii++ )
2567+ if( IsFieldChecked( ii ) )
2568+ bom_lister.AddFieldIdToPrintList( ii );
2569+
2570+ // create the file
2571+ bom_lister.PrintComponentsListByReferenceCsvForm( f );
2572+
2573+ fclose( f );
2574+}
2575+
2576+
2577+/*
2578+ * CreatePartsAndLabelsFullList()
2579+ * Main function to create the list of components and/or labels
2580+ * (global labels, hierarchical labels and pin sheets )
2581+ */
2582+void DIALOG_BUILD_BOM::CreatePartsAndLabelsFullList( bool aIncludeSubComponents )
2583+{
2584+ FILE* f;
2585+ wxString msg;
2586+
2587+ if( ( f = wxFopen( m_listFileName, wxT( "wt" ) ) ) == NULL )
2588+ {
2589+ msg.Printf( _( "Failed to open file <%s>" ), GetChars( m_listFileName ) );
2590+ DisplayError( this, msg );
2591+ return;
2592+ }
2593+
2594+ BOM_LISTER bom_lister( Prj().SchLibs() );
2595+ bom_lister.SetIncludeSubCmp( aIncludeSubComponents );
2596+ bom_lister.SetCvsFormOff();
2597+ bom_lister.SetPrintLocation( s_Add_Location );
2598+ // Set the list of fields to add to list
2599+ for( int ii = FOOTPRINT; ii <= FIELD8; ii++ )
2600+ if( IsFieldChecked( ii ) )
2601+ bom_lister.AddFieldIdToPrintList( ii );
2602+
2603+ // creates the list file
2604+ wxString Title = Pgm().App().GetAppName() + wxT( " " ) + GetBuildVersion();
2605+
2606+ fprintf( f, "%s >> Creation date: %s\n", TO_UTF8( Title ), TO_UTF8( DateAndTime() ) );
2607+
2608+ if( m_ListCmpbyRefItems->GetValue() )
2609+ bom_lister.PrintComponentsListByReferenceHumanReadable( f );
2610+
2611+ if( m_ListCmpbyValItems->GetValue() )
2612+ bom_lister.PrintComponentsListByValue( f );
2613+
2614+ // Create list of global labels, hierachical labels and pins sheets
2615+
2616+ if( m_GenListLabelsbySheet->GetValue() )
2617+ bom_lister.PrintGlobalAndHierarchicalLabelsList( f, true );
2618+
2619+ if( m_GenListLabelsbyVal->GetValue() )
2620+ bom_lister.PrintGlobalAndHierarchicalLabelsList( f, false );
2621+
2622+ msg = _( "\n#End List\n" );
2623+ fprintf( f, "%s", TO_UTF8( msg ) );
2624+ fclose( f );
2625+}
2626
2627=== added file 'eeschema/BOM/dialogs/dialog_build_BOM.h'
2628--- eeschema/BOM/dialogs/dialog_build_BOM.h 1970-01-01 00:00:00 +0000
2629+++ eeschema/BOM/dialogs/dialog_build_BOM.h 2015-06-20 07:42:20 +0000
2630@@ -0,0 +1,93 @@
2631+/**
2632+ * @file dialog_build_BOM.h
2633+ */
2634+
2635+/* This program source code file is part of KiCad, a free EDA CAD application.
2636+ *
2637+ * Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors.
2638+ *
2639+ * This program is free software; you can redistribute it and/or
2640+ * modify it under the terms of the GNU General Public License
2641+ * as published by the Free Software Foundation; either version 2
2642+ * of the License, or (at your option) any later version.
2643+ *
2644+ * This program is distributed in the hope that it will be useful,
2645+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2646+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2647+ * GNU General Public License for more details.
2648+ *
2649+ * You should have received a copy of the GNU General Public License
2650+ * along with this program; if not, you may find one here:
2651+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
2652+ * or you may search the http://www.gnu.org website for the version 2 license,
2653+ * or you may write to the Free Software Foundation, Inc.,
2654+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
2655+ */
2656+
2657+
2658+#ifndef _DIALOG_BUILD_BOM_H_
2659+#define _DIALOG_BUILD_BOM_H_
2660+
2661+#include <dialog_build_BOM_base.h>
2662+#include <schframe.h>
2663+
2664+class SCH_COMPONENT;
2665+class wxConfig;
2666+
2667+class DIALOG_BUILD_BOM : public DIALOG_BUILD_BOM_BASE
2668+{
2669+private:
2670+ SCH_EDIT_FRAME* m_parent;
2671+ wxConfigBase* m_config;
2672+ wxString m_listFileName; // The full filename of the file report.
2673+
2674+private:
2675+ void OnRadioboxSelectFormatSelected( wxCommandEvent& event );
2676+ void OnOkClick( wxCommandEvent& event );
2677+ void OnCancelClick( wxCommandEvent& event );
2678+
2679+ void SavePreferences();
2680+ void Init();
2681+ void Create_BOM_Lists( int aTypeFile,
2682+ bool aIncludeSubComponents,
2683+ char aExportSeparatorSymbol,
2684+ bool aRunBrowser );
2685+
2686+ void CreatePartsAndLabelsFullList( bool aIncludeSubComponents );
2687+
2688+ /**
2689+ * Function CreateSpreadSheetPartsFullList
2690+ * prints a list of components, in a form which can be imported by a
2691+ * spreadsheet. Form is:
2692+ * reference; cmp value; \<footprint\>; \<field1\>; ...;
2693+ * Components are sorted by reference
2694+ * @param aIncludeSubComponents = true to print sub components
2695+ * @param aPrintLocation = true to print components location
2696+ * (only possible when aIncludeSubComponents == true)
2697+ * @param aGroupRefs = true to group components references, when other fieds
2698+ * have the same value
2699+ */
2700+ void CreateSpreadSheetPartsFullList( bool aIncludeSubComponents,
2701+ bool aPrintLocation,
2702+ bool aGroupRefs );
2703+
2704+ /**
2705+ * Function CreateSpreadSheetPartsShortList
2706+ * prints a list of components, in a form which can be imported by a spreadsheet.
2707+ * components having the same value and the same footprint
2708+ * are grouped on the same line
2709+ * Form is:
2710+ * value; number of components; list of references; \<footprint\>; \<field1\>; ...;
2711+ * list is sorted by values
2712+ */
2713+ void CreateSpreadSheetPartsShortList();
2714+
2715+ bool IsFieldChecked( int aFieldId );
2716+
2717+public:
2718+ DIALOG_BUILD_BOM( SCH_EDIT_FRAME* parent );
2719+
2720+ // ~DIALOG_BUILD_BOM() {};
2721+};
2722+
2723+#endif // _DIALOG_BUILD_BOM_H_
2724
2725=== added file 'eeschema/BOM/dialogs/dialog_build_BOM_base.cpp'
2726--- eeschema/BOM/dialogs/dialog_build_BOM_base.cpp 1970-01-01 00:00:00 +0000
2727+++ eeschema/BOM/dialogs/dialog_build_BOM_base.cpp 2015-06-20 07:42:20 +0000
2728@@ -0,0 +1,157 @@
2729+///////////////////////////////////////////////////////////////////////////
2730+// C++ code generated with wxFormBuilder (version Oct 8 2012)
2731+// http://www.wxformbuilder.org/
2732+//
2733+// PLEASE DO "NOT" EDIT THIS FILE!
2734+///////////////////////////////////////////////////////////////////////////
2735+
2736+#include "dialog_build_BOM_base.h"
2737+
2738+///////////////////////////////////////////////////////////////////////////
2739+
2740+DIALOG_BUILD_BOM_BASE::DIALOG_BUILD_BOM_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
2741+{
2742+ this->SetSizeHints( wxDefaultSize, wxDefaultSize );
2743+
2744+ wxBoxSizer* bMainSizer;
2745+ bMainSizer = new wxBoxSizer( wxVERTICAL );
2746+
2747+ wxBoxSizer* bSizerUpper;
2748+ bSizerUpper = new wxBoxSizer( wxHORIZONTAL );
2749+
2750+ wxStaticBoxSizer* sbOptionsSizer;
2751+ sbOptionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options:") ), wxVERTICAL );
2752+
2753+ wxStaticBoxSizer* sbListOptionsSizer;
2754+ sbListOptionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("List items:") ), wxVERTICAL );
2755+
2756+ m_ListCmpbyRefItems = new wxCheckBox( this, wxID_ANY, _("Components by reference"), wxDefaultPosition, wxDefaultSize, 0 );
2757+ sbListOptionsSizer->Add( m_ListCmpbyRefItems, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
2758+
2759+ m_ListSubCmpItems = new wxCheckBox( this, wxID_ANY, _("Sub components (i.e. U2A, U2B ...)"), wxDefaultPosition, wxDefaultSize, 0 );
2760+ sbListOptionsSizer->Add( m_ListSubCmpItems, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
2761+
2762+ m_ListCmpbyValItems = new wxCheckBox( this, wxID_ANY, _("Components by value"), wxDefaultPosition, wxDefaultSize, 0 );
2763+ sbListOptionsSizer->Add( m_ListCmpbyValItems, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
2764+
2765+ m_GenListLabelsbyVal = new wxCheckBox( this, wxID_ANY, _("Hierarchical pins by name"), wxDefaultPosition, wxDefaultSize, 0 );
2766+ sbListOptionsSizer->Add( m_GenListLabelsbyVal, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
2767+
2768+ m_GenListLabelsbySheet = new wxCheckBox( this, wxID_ANY, _("Hierarchical pins by sheet"), wxDefaultPosition, wxDefaultSize, 0 );
2769+ sbListOptionsSizer->Add( m_GenListLabelsbySheet, 0, wxALL, 5 );
2770+
2771+
2772+ sbOptionsSizer->Add( sbListOptionsSizer, 0, wxEXPAND, 5 );
2773+
2774+ wxString m_OutputFormCtrlChoices[] = { _("List"), _("List for spreadsheet import (by ref)"), _("List for spreadsheet import (by grouped ref)"), _("List for spreadsheet import (by value)") };
2775+ int m_OutputFormCtrlNChoices = sizeof( m_OutputFormCtrlChoices ) / sizeof( wxString );
2776+ m_OutputFormCtrl = new wxRadioBox( this, ID_RADIOBOX_SELECT_FORMAT, _("Output format:"), wxDefaultPosition, wxDefaultSize, m_OutputFormCtrlNChoices, m_OutputFormCtrlChoices, 1, wxRA_SPECIFY_COLS );
2777+ m_OutputFormCtrl->SetSelection( 1 );
2778+ sbOptionsSizer->Add( m_OutputFormCtrl, 0, wxEXPAND|wxTOP, 5 );
2779+
2780+ wxString m_OutputSeparatorCtrlChoices[] = { _("Tab"), _(";"), _(",") };
2781+ int m_OutputSeparatorCtrlNChoices = sizeof( m_OutputSeparatorCtrlChoices ) / sizeof( wxString );
2782+ m_OutputSeparatorCtrl = new wxRadioBox( this, wxID_ANY, _("Field separator for spreadsheet import:"), wxDefaultPosition, wxDefaultSize, m_OutputSeparatorCtrlNChoices, m_OutputSeparatorCtrlChoices, 1, wxRA_SPECIFY_ROWS );
2783+ m_OutputSeparatorCtrl->SetSelection( 0 );
2784+ sbOptionsSizer->Add( m_OutputSeparatorCtrl, 0, wxEXPAND|wxTOP, 5 );
2785+
2786+ m_GetListBrowser = new wxCheckBox( this, wxID_ANY, _("Launch list browser"), wxDefaultPosition, wxDefaultSize, 0 );
2787+ sbOptionsSizer->Add( m_GetListBrowser, 0, wxALL|wxEXPAND, 5 );
2788+
2789+
2790+ bSizerUpper->Add( sbOptionsSizer, 3, wxALL|wxEXPAND, 5 );
2791+
2792+ wxBoxSizer* bRightSizer;
2793+ bRightSizer = new wxBoxSizer( wxVERTICAL );
2794+
2795+ wxStaticBoxSizer* sbAddToListSelectionSizer;
2796+ sbAddToListSelectionSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Add to list:") ), wxVERTICAL );
2797+
2798+ m_AddLocationField = new wxCheckBox( this, wxID_ANY, _("Component location"), wxDefaultPosition, wxDefaultSize, 0 );
2799+ sbAddToListSelectionSizer->Add( m_AddLocationField, 0, wxALL, 5 );
2800+
2801+ wxStaticBoxSizer* sbFixedFieldsSizer;
2802+ sbFixedFieldsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("System Fields:") ), wxVERTICAL );
2803+
2804+ m_AddDatasheetField = new wxCheckBox( this, wxID_ANY, _("Datasheet"), wxDefaultPosition, wxDefaultSize, 0 );
2805+ sbFixedFieldsSizer->Add( m_AddDatasheetField, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
2806+
2807+ m_AddFootprintField = new wxCheckBox( this, wxID_ANY, _("Footprint"), wxDefaultPosition, wxDefaultSize, 0 );
2808+ sbFixedFieldsSizer->Add( m_AddFootprintField, 0, wxALL|wxEXPAND, 5 );
2809+
2810+
2811+ sbAddToListSelectionSizer->Add( sbFixedFieldsSizer, 0, wxEXPAND, 5 );
2812+
2813+ wxStaticBoxSizer* sbUsersFiledsSizer;
2814+ sbUsersFiledsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Users fields:") ), wxVERTICAL );
2815+
2816+ m_AddField1 = new wxCheckBox( this, wxID_ANY, _("Field 1"), wxDefaultPosition, wxDefaultSize, 0 );
2817+ sbUsersFiledsSizer->Add( m_AddField1, 0, wxEXPAND|wxALL, 5 );
2818+
2819+ m_AddField2 = new wxCheckBox( this, wxID_ANY, _("Field 2"), wxDefaultPosition, wxDefaultSize, 0 );
2820+ sbUsersFiledsSizer->Add( m_AddField2, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
2821+
2822+ m_AddField3 = new wxCheckBox( this, wxID_ANY, _("Field 3"), wxDefaultPosition, wxDefaultSize, 0 );
2823+ sbUsersFiledsSizer->Add( m_AddField3, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
2824+
2825+ m_AddField4 = new wxCheckBox( this, wxID_ANY, _("Field 4"), wxDefaultPosition, wxDefaultSize, 0 );
2826+ sbUsersFiledsSizer->Add( m_AddField4, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
2827+
2828+ m_AddField5 = new wxCheckBox( this, wxID_ANY, _("Field 5"), wxDefaultPosition, wxDefaultSize, 0 );
2829+ sbUsersFiledsSizer->Add( m_AddField5, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
2830+
2831+ m_AddField6 = new wxCheckBox( this, wxID_ANY, _("Field 6"), wxDefaultPosition, wxDefaultSize, 0 );
2832+ sbUsersFiledsSizer->Add( m_AddField6, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
2833+
2834+ m_AddField7 = new wxCheckBox( this, wxID_ANY, _("Field 7"), wxDefaultPosition, wxDefaultSize, 0 );
2835+ sbUsersFiledsSizer->Add( m_AddField7, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
2836+
2837+ m_AddField8 = new wxCheckBox( this, wxID_ANY, _("Field 8"), wxDefaultPosition, wxDefaultSize, 0 );
2838+ sbUsersFiledsSizer->Add( m_AddField8, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
2839+
2840+
2841+ sbAddToListSelectionSizer->Add( sbUsersFiledsSizer, 0, wxEXPAND|wxTOP, 5 );
2842+
2843+ m_AddAllFields = new wxCheckBox( this, wxID_ANY, _("All existing user fields"), wxDefaultPosition, wxDefaultSize, 0 );
2844+ sbAddToListSelectionSizer->Add( m_AddAllFields, 0, wxALL, 5 );
2845+
2846+
2847+ bRightSizer->Add( sbAddToListSelectionSizer, 1, wxEXPAND, 5 );
2848+
2849+
2850+ bSizerUpper->Add( bRightSizer, 2, wxALL|wxEXPAND, 5 );
2851+
2852+
2853+ bMainSizer->Add( bSizerUpper, 1, wxEXPAND, 5 );
2854+
2855+ m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
2856+ bMainSizer->Add( m_staticline1, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
2857+
2858+ m_sdbSizer = new wxStdDialogButtonSizer();
2859+ m_sdbSizerOK = new wxButton( this, wxID_OK );
2860+ m_sdbSizer->AddButton( m_sdbSizerOK );
2861+ m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
2862+ m_sdbSizer->AddButton( m_sdbSizerCancel );
2863+ m_sdbSizer->Realize();
2864+
2865+ bMainSizer->Add( m_sdbSizer, 0, wxALL|wxEXPAND, 5 );
2866+
2867+
2868+ this->SetSizer( bMainSizer );
2869+ this->Layout();
2870+ bMainSizer->Fit( this );
2871+
2872+ // Connect Events
2873+ m_OutputFormCtrl->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_BUILD_BOM_BASE::OnRadioboxSelectFormatSelected ), NULL, this );
2874+ m_sdbSizerCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BUILD_BOM_BASE::OnCancelClick ), NULL, this );
2875+ m_sdbSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BUILD_BOM_BASE::OnOkClick ), NULL, this );
2876+}
2877+
2878+DIALOG_BUILD_BOM_BASE::~DIALOG_BUILD_BOM_BASE()
2879+{
2880+ // Disconnect Events
2881+ m_OutputFormCtrl->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_BUILD_BOM_BASE::OnRadioboxSelectFormatSelected ), NULL, this );
2882+ m_sdbSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BUILD_BOM_BASE::OnCancelClick ), NULL, this );
2883+ m_sdbSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BUILD_BOM_BASE::OnOkClick ), NULL, this );
2884+
2885+}
2886
2887=== added file 'eeschema/BOM/dialogs/dialog_build_BOM_base.fbp'
2888--- eeschema/BOM/dialogs/dialog_build_BOM_base.fbp 1970-01-01 00:00:00 +0000
2889+++ eeschema/BOM/dialogs/dialog_build_BOM_base.fbp 2015-06-20 07:42:20 +0000
2890@@ -0,0 +1,2060 @@
2891+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
2892+<wxFormBuilder_Project>
2893+ <FileVersion major="1" minor="11" />
2894+ <object class="Project" expanded="1">
2895+ <property name="class_decoration"></property>
2896+ <property name="code_generation">C++</property>
2897+ <property name="disconnect_events">1</property>
2898+ <property name="disconnect_mode">source_name</property>
2899+ <property name="disconnect_php_events">0</property>
2900+ <property name="disconnect_python_events">0</property>
2901+ <property name="embedded_files_path">res</property>
2902+ <property name="encoding">UTF-8</property>
2903+ <property name="event_generation">connect</property>
2904+ <property name="file">dialog_build_BOM_base</property>
2905+ <property name="first_id">1000</property>
2906+ <property name="help_provider">none</property>
2907+ <property name="internationalize">1</property>
2908+ <property name="name">dialog_build_BOM_base</property>
2909+ <property name="namespace"></property>
2910+ <property name="path">.</property>
2911+ <property name="precompiled_header"></property>
2912+ <property name="relative_path">1</property>
2913+ <property name="skip_php_events">1</property>
2914+ <property name="skip_python_events">1</property>
2915+ <property name="use_enum">1</property>
2916+ <property name="use_microsoft_bom">0</property>
2917+ <object class="Dialog" expanded="1">
2918+ <property name="aui_managed">0</property>
2919+ <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
2920+ <property name="bg"></property>
2921+ <property name="center"></property>
2922+ <property name="context_help"></property>
2923+ <property name="context_menu">1</property>
2924+ <property name="enabled">1</property>
2925+ <property name="event_handler">impl_virtual</property>
2926+ <property name="extra_style"></property>
2927+ <property name="fg"></property>
2928+ <property name="font"></property>
2929+ <property name="hidden">0</property>
2930+ <property name="id">wxID_ANY</property>
2931+ <property name="maximum_size"></property>
2932+ <property name="minimum_size"></property>
2933+ <property name="name">DIALOG_BUILD_BOM_BASE</property>
2934+ <property name="pos"></property>
2935+ <property name="size">-1,-1</property>
2936+ <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
2937+ <property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
2938+ <property name="title">List of Materials</property>
2939+ <property name="tooltip"></property>
2940+ <property name="window_extra_style"></property>
2941+ <property name="window_name"></property>
2942+ <property name="window_style"></property>
2943+ <event name="OnActivate"></event>
2944+ <event name="OnActivateApp"></event>
2945+ <event name="OnAuiFindManager"></event>
2946+ <event name="OnAuiPaneButton"></event>
2947+ <event name="OnAuiPaneClose"></event>
2948+ <event name="OnAuiPaneMaximize"></event>
2949+ <event name="OnAuiPaneRestore"></event>
2950+ <event name="OnAuiRender"></event>
2951+ <event name="OnChar"></event>
2952+ <event name="OnClose"></event>
2953+ <event name="OnEnterWindow"></event>
2954+ <event name="OnEraseBackground"></event>
2955+ <event name="OnHibernate"></event>
2956+ <event name="OnIconize"></event>
2957+ <event name="OnIdle"></event>
2958+ <event name="OnInitDialog"></event>
2959+ <event name="OnKeyDown"></event>
2960+ <event name="OnKeyUp"></event>
2961+ <event name="OnKillFocus"></event>
2962+ <event name="OnLeaveWindow"></event>
2963+ <event name="OnLeftDClick"></event>
2964+ <event name="OnLeftDown"></event>
2965+ <event name="OnLeftUp"></event>
2966+ <event name="OnMiddleDClick"></event>
2967+ <event name="OnMiddleDown"></event>
2968+ <event name="OnMiddleUp"></event>
2969+ <event name="OnMotion"></event>
2970+ <event name="OnMouseEvents"></event>
2971+ <event name="OnMouseWheel"></event>
2972+ <event name="OnPaint"></event>
2973+ <event name="OnRightDClick"></event>
2974+ <event name="OnRightDown"></event>
2975+ <event name="OnRightUp"></event>
2976+ <event name="OnSetFocus"></event>
2977+ <event name="OnSize"></event>
2978+ <event name="OnUpdateUI"></event>
2979+ <object class="wxBoxSizer" expanded="1">
2980+ <property name="minimum_size"></property>
2981+ <property name="name">bMainSizer</property>
2982+ <property name="orient">wxVERTICAL</property>
2983+ <property name="permission">none</property>
2984+ <object class="sizeritem" expanded="1">
2985+ <property name="border">5</property>
2986+ <property name="flag">wxEXPAND</property>
2987+ <property name="proportion">1</property>
2988+ <object class="wxBoxSizer" expanded="1">
2989+ <property name="minimum_size"></property>
2990+ <property name="name">bSizerUpper</property>
2991+ <property name="orient">wxHORIZONTAL</property>
2992+ <property name="permission">none</property>
2993+ <object class="sizeritem" expanded="1">
2994+ <property name="border">5</property>
2995+ <property name="flag">wxALL|wxEXPAND</property>
2996+ <property name="proportion">3</property>
2997+ <object class="wxStaticBoxSizer" expanded="1">
2998+ <property name="id">wxID_ANY</property>
2999+ <property name="label">Options:</property>
3000+ <property name="minimum_size"></property>
3001+ <property name="name">sbOptionsSizer</property>
3002+ <property name="orient">wxVERTICAL</property>
3003+ <property name="permission">none</property>
3004+ <event name="OnUpdateUI"></event>
3005+ <object class="sizeritem" expanded="1">
3006+ <property name="border">5</property>
3007+ <property name="flag">wxEXPAND</property>
3008+ <property name="proportion">0</property>
3009+ <object class="wxStaticBoxSizer" expanded="0">
3010+ <property name="id">wxID_ANY</property>
3011+ <property name="label">List items:</property>
3012+ <property name="minimum_size"></property>
3013+ <property name="name">sbListOptionsSizer</property>
3014+ <property name="orient">wxVERTICAL</property>
3015+ <property name="permission">none</property>
3016+ <event name="OnUpdateUI"></event>
3017+ <object class="sizeritem" expanded="1">
3018+ <property name="border">5</property>
3019+ <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
3020+ <property name="proportion">0</property>
3021+ <object class="wxCheckBox" expanded="1">
3022+ <property name="BottomDockable">1</property>
3023+ <property name="LeftDockable">1</property>
3024+ <property name="RightDockable">1</property>
3025+ <property name="TopDockable">1</property>
3026+ <property name="aui_layer"></property>
3027+ <property name="aui_name"></property>
3028+ <property name="aui_position"></property>
3029+ <property name="aui_row"></property>
3030+ <property name="best_size"></property>
3031+ <property name="bg"></property>
3032+ <property name="caption"></property>
3033+ <property name="caption_visible">1</property>
3034+ <property name="center_pane">0</property>
3035+ <property name="checked">0</property>
3036+ <property name="close_button">1</property>
3037+ <property name="context_help"></property>
3038+ <property name="context_menu">1</property>
3039+ <property name="default_pane">0</property>
3040+ <property name="dock">Dock</property>
3041+ <property name="dock_fixed">0</property>
3042+ <property name="docking">Left</property>
3043+ <property name="enabled">1</property>
3044+ <property name="fg"></property>
3045+ <property name="floatable">1</property>
3046+ <property name="font"></property>
3047+ <property name="gripper">0</property>
3048+ <property name="hidden">0</property>
3049+ <property name="id">wxID_ANY</property>
3050+ <property name="label">Components by reference</property>
3051+ <property name="max_size"></property>
3052+ <property name="maximize_button">0</property>
3053+ <property name="maximum_size"></property>
3054+ <property name="min_size"></property>
3055+ <property name="minimize_button">0</property>
3056+ <property name="minimum_size"></property>
3057+ <property name="moveable">1</property>
3058+ <property name="name">m_ListCmpbyRefItems</property>
3059+ <property name="pane_border">1</property>
3060+ <property name="pane_position"></property>
3061+ <property name="pane_size"></property>
3062+ <property name="permission">protected</property>
3063+ <property name="pin_button">1</property>
3064+ <property name="pos"></property>
3065+ <property name="resize">Resizable</property>
3066+ <property name="show">1</property>
3067+ <property name="size"></property>
3068+ <property name="style"></property>
3069+ <property name="subclass"></property>
3070+ <property name="toolbar_pane">0</property>
3071+ <property name="tooltip"></property>
3072+ <property name="validator_data_type"></property>
3073+ <property name="validator_style">wxFILTER_NONE</property>
3074+ <property name="validator_type">wxDefaultValidator</property>
3075+ <property name="validator_variable"></property>
3076+ <property name="window_extra_style"></property>
3077+ <property name="window_name"></property>
3078+ <property name="window_style"></property>
3079+ <event name="OnChar"></event>
3080+ <event name="OnCheckBox"></event>
3081+ <event name="OnEnterWindow"></event>
3082+ <event name="OnEraseBackground"></event>
3083+ <event name="OnKeyDown"></event>
3084+ <event name="OnKeyUp"></event>
3085+ <event name="OnKillFocus"></event>
3086+ <event name="OnLeaveWindow"></event>
3087+ <event name="OnLeftDClick"></event>
3088+ <event name="OnLeftDown"></event>
3089+ <event name="OnLeftUp"></event>
3090+ <event name="OnMiddleDClick"></event>
3091+ <event name="OnMiddleDown"></event>
3092+ <event name="OnMiddleUp"></event>
3093+ <event name="OnMotion"></event>
3094+ <event name="OnMouseEvents"></event>
3095+ <event name="OnMouseWheel"></event>
3096+ <event name="OnPaint"></event>
3097+ <event name="OnRightDClick"></event>
3098+ <event name="OnRightDown"></event>
3099+ <event name="OnRightUp"></event>
3100+ <event name="OnSetFocus"></event>
3101+ <event name="OnSize"></event>
3102+ <event name="OnUpdateUI"></event>
3103+ </object>
3104+ </object>
3105+ <object class="sizeritem" expanded="1">
3106+ <property name="border">5</property>
3107+ <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
3108+ <property name="proportion">0</property>
3109+ <object class="wxCheckBox" expanded="1">
3110+ <property name="BottomDockable">1</property>
3111+ <property name="LeftDockable">1</property>
3112+ <property name="RightDockable">1</property>
3113+ <property name="TopDockable">1</property>
3114+ <property name="aui_layer"></property>
3115+ <property name="aui_name"></property>
3116+ <property name="aui_position"></property>
3117+ <property name="aui_row"></property>
3118+ <property name="best_size"></property>
3119+ <property name="bg"></property>
3120+ <property name="caption"></property>
3121+ <property name="caption_visible">1</property>
3122+ <property name="center_pane">0</property>
3123+ <property name="checked">0</property>
3124+ <property name="close_button">1</property>
3125+ <property name="context_help"></property>
3126+ <property name="context_menu">1</property>
3127+ <property name="default_pane">0</property>
3128+ <property name="dock">Dock</property>
3129+ <property name="dock_fixed">0</property>
3130+ <property name="docking">Left</property>
3131+ <property name="enabled">1</property>
3132+ <property name="fg"></property>
3133+ <property name="floatable">1</property>
3134+ <property name="font"></property>
3135+ <property name="gripper">0</property>
3136+ <property name="hidden">0</property>
3137+ <property name="id">wxID_ANY</property>
3138+ <property name="label">Sub components (i.e. U2A, U2B ...)</property>
3139+ <property name="max_size"></property>
3140+ <property name="maximize_button">0</property>
3141+ <property name="maximum_size"></property>
3142+ <property name="min_size"></property>
3143+ <property name="minimize_button">0</property>
3144+ <property name="minimum_size"></property>
3145+ <property name="moveable">1</property>
3146+ <property name="name">m_ListSubCmpItems</property>
3147+ <property name="pane_border">1</property>
3148+ <property name="pane_position"></property>
3149+ <property name="pane_size"></property>
3150+ <property name="permission">protected</property>
3151+ <property name="pin_button">1</property>
3152+ <property name="pos"></property>
3153+ <property name="resize">Resizable</property>
3154+ <property name="show">1</property>
3155+ <property name="size"></property>
3156+ <property name="style"></property>
3157+ <property name="subclass"></property>
3158+ <property name="toolbar_pane">0</property>
3159+ <property name="tooltip"></property>
3160+ <property name="validator_data_type"></property>
3161+ <property name="validator_style">wxFILTER_NONE</property>
3162+ <property name="validator_type">wxDefaultValidator</property>
3163+ <property name="validator_variable"></property>
3164+ <property name="window_extra_style"></property>
3165+ <property name="window_name"></property>
3166+ <property name="window_style"></property>
3167+ <event name="OnChar"></event>
3168+ <event name="OnCheckBox"></event>
3169+ <event name="OnEnterWindow"></event>
3170+ <event name="OnEraseBackground"></event>
3171+ <event name="OnKeyDown"></event>
3172+ <event name="OnKeyUp"></event>
3173+ <event name="OnKillFocus"></event>
3174+ <event name="OnLeaveWindow"></event>
3175+ <event name="OnLeftDClick"></event>
3176+ <event name="OnLeftDown"></event>
3177+ <event name="OnLeftUp"></event>
3178+ <event name="OnMiddleDClick"></event>
3179+ <event name="OnMiddleDown"></event>
3180+ <event name="OnMiddleUp"></event>
3181+ <event name="OnMotion"></event>
3182+ <event name="OnMouseEvents"></event>
3183+ <event name="OnMouseWheel"></event>
3184+ <event name="OnPaint"></event>
3185+ <event name="OnRightDClick"></event>
3186+ <event name="OnRightDown"></event>
3187+ <event name="OnRightUp"></event>
3188+ <event name="OnSetFocus"></event>
3189+ <event name="OnSize"></event>
3190+ <event name="OnUpdateUI"></event>
3191+ </object>
3192+ </object>
3193+ <object class="sizeritem" expanded="1">
3194+ <property name="border">5</property>
3195+ <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
3196+ <property name="proportion">0</property>
3197+ <object class="wxCheckBox" expanded="1">
3198+ <property name="BottomDockable">1</property>
3199+ <property name="LeftDockable">1</property>
3200+ <property name="RightDockable">1</property>
3201+ <property name="TopDockable">1</property>
3202+ <property name="aui_layer"></property>
3203+ <property name="aui_name"></property>
3204+ <property name="aui_position"></property>
3205+ <property name="aui_row"></property>
3206+ <property name="best_size"></property>
3207+ <property name="bg"></property>
3208+ <property name="caption"></property>
3209+ <property name="caption_visible">1</property>
3210+ <property name="center_pane">0</property>
3211+ <property name="checked">0</property>
3212+ <property name="close_button">1</property>
3213+ <property name="context_help"></property>
3214+ <property name="context_menu">1</property>
3215+ <property name="default_pane">0</property>
3216+ <property name="dock">Dock</property>
3217+ <property name="dock_fixed">0</property>
3218+ <property name="docking">Left</property>
3219+ <property name="enabled">1</property>
3220+ <property name="fg"></property>
3221+ <property name="floatable">1</property>
3222+ <property name="font"></property>
3223+ <property name="gripper">0</property>
3224+ <property name="hidden">0</property>
3225+ <property name="id">wxID_ANY</property>
3226+ <property name="label">Components by value</property>
3227+ <property name="max_size"></property>
3228+ <property name="maximize_button">0</property>
3229+ <property name="maximum_size"></property>
3230+ <property name="min_size"></property>
3231+ <property name="minimize_button">0</property>
3232+ <property name="minimum_size"></property>
3233+ <property name="moveable">1</property>
3234+ <property name="name">m_ListCmpbyValItems</property>
3235+ <property name="pane_border">1</property>
3236+ <property name="pane_position"></property>
3237+ <property name="pane_size"></property>
3238+ <property name="permission">protected</property>
3239+ <property name="pin_button">1</property>
3240+ <property name="pos"></property>
3241+ <property name="resize">Resizable</property>
3242+ <property name="show">1</property>
3243+ <property name="size"></property>
3244+ <property name="style"></property>
3245+ <property name="subclass"></property>
3246+ <property name="toolbar_pane">0</property>
3247+ <property name="tooltip"></property>
3248+ <property name="validator_data_type"></property>
3249+ <property name="validator_style">wxFILTER_NONE</property>
3250+ <property name="validator_type">wxDefaultValidator</property>
3251+ <property name="validator_variable"></property>
3252+ <property name="window_extra_style"></property>
3253+ <property name="window_name"></property>
3254+ <property name="window_style"></property>
3255+ <event name="OnChar"></event>
3256+ <event name="OnCheckBox"></event>
3257+ <event name="OnEnterWindow"></event>
3258+ <event name="OnEraseBackground"></event>
3259+ <event name="OnKeyDown"></event>
3260+ <event name="OnKeyUp"></event>
3261+ <event name="OnKillFocus"></event>
3262+ <event name="OnLeaveWindow"></event>
3263+ <event name="OnLeftDClick"></event>
3264+ <event name="OnLeftDown"></event>
3265+ <event name="OnLeftUp"></event>
3266+ <event name="OnMiddleDClick"></event>
3267+ <event name="OnMiddleDown"></event>
3268+ <event name="OnMiddleUp"></event>
3269+ <event name="OnMotion"></event>
3270+ <event name="OnMouseEvents"></event>
3271+ <event name="OnMouseWheel"></event>
3272+ <event name="OnPaint"></event>
3273+ <event name="OnRightDClick"></event>
3274+ <event name="OnRightDown"></event>
3275+ <event name="OnRightUp"></event>
3276+ <event name="OnSetFocus"></event>
3277+ <event name="OnSize"></event>
3278+ <event name="OnUpdateUI"></event>
3279+ </object>
3280+ </object>
3281+ <object class="sizeritem" expanded="1">
3282+ <property name="border">5</property>
3283+ <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
3284+ <property name="proportion">0</property>
3285+ <object class="wxCheckBox" expanded="1">
3286+ <property name="BottomDockable">1</property>
3287+ <property name="LeftDockable">1</property>
3288+ <property name="RightDockable">1</property>
3289+ <property name="TopDockable">1</property>
3290+ <property name="aui_layer"></property>
3291+ <property name="aui_name"></property>
3292+ <property name="aui_position"></property>
3293+ <property name="aui_row"></property>
3294+ <property name="best_size"></property>
3295+ <property name="bg"></property>
3296+ <property name="caption"></property>
3297+ <property name="caption_visible">1</property>
3298+ <property name="center_pane">0</property>
3299+ <property name="checked">0</property>
3300+ <property name="close_button">1</property>
3301+ <property name="context_help"></property>
3302+ <property name="context_menu">1</property>
3303+ <property name="default_pane">0</property>
3304+ <property name="dock">Dock</property>
3305+ <property name="dock_fixed">0</property>
3306+ <property name="docking">Left</property>
3307+ <property name="enabled">1</property>
3308+ <property name="fg"></property>
3309+ <property name="floatable">1</property>
3310+ <property name="font"></property>
3311+ <property name="gripper">0</property>
3312+ <property name="hidden">0</property>
3313+ <property name="id">wxID_ANY</property>
3314+ <property name="label">Hierarchical pins by name</property>
3315+ <property name="max_size"></property>
3316+ <property name="maximize_button">0</property>
3317+ <property name="maximum_size"></property>
3318+ <property name="min_size"></property>
3319+ <property name="minimize_button">0</property>
3320+ <property name="minimum_size"></property>
3321+ <property name="moveable">1</property>
3322+ <property name="name">m_GenListLabelsbyVal</property>
3323+ <property name="pane_border">1</property>
3324+ <property name="pane_position"></property>
3325+ <property name="pane_size"></property>
3326+ <property name="permission">protected</property>
3327+ <property name="pin_button">1</property>
3328+ <property name="pos"></property>
3329+ <property name="resize">Resizable</property>
3330+ <property name="show">1</property>
3331+ <property name="size"></property>
3332+ <property name="style"></property>
3333+ <property name="subclass"></property>
3334+ <property name="toolbar_pane">0</property>
3335+ <property name="tooltip"></property>
3336+ <property name="validator_data_type"></property>
3337+ <property name="validator_style">wxFILTER_NONE</property>
3338+ <property name="validator_type">wxDefaultValidator</property>
3339+ <property name="validator_variable"></property>
3340+ <property name="window_extra_style"></property>
3341+ <property name="window_name"></property>
3342+ <property name="window_style"></property>
3343+ <event name="OnChar"></event>
3344+ <event name="OnCheckBox"></event>
3345+ <event name="OnEnterWindow"></event>
3346+ <event name="OnEraseBackground"></event>
3347+ <event name="OnKeyDown"></event>
3348+ <event name="OnKeyUp"></event>
3349+ <event name="OnKillFocus"></event>
3350+ <event name="OnLeaveWindow"></event>
3351+ <event name="OnLeftDClick"></event>
3352+ <event name="OnLeftDown"></event>
3353+ <event name="OnLeftUp"></event>
3354+ <event name="OnMiddleDClick"></event>
3355+ <event name="OnMiddleDown"></event>
3356+ <event name="OnMiddleUp"></event>
3357+ <event name="OnMotion"></event>
3358+ <event name="OnMouseEvents"></event>
3359+ <event name="OnMouseWheel"></event>
3360+ <event name="OnPaint"></event>
3361+ <event name="OnRightDClick"></event>
3362+ <event name="OnRightDown"></event>
3363+ <event name="OnRightUp"></event>
3364+ <event name="OnSetFocus"></event>
3365+ <event name="OnSize"></event>
3366+ <event name="OnUpdateUI"></event>
3367+ </object>
3368+ </object>
3369+ <object class="sizeritem" expanded="1">
3370+ <property name="border">5</property>
3371+ <property name="flag">wxALL</property>
3372+ <property name="proportion">0</property>
3373+ <object class="wxCheckBox" expanded="1">
3374+ <property name="BottomDockable">1</property>
3375+ <property name="LeftDockable">1</property>
3376+ <property name="RightDockable">1</property>
3377+ <property name="TopDockable">1</property>
3378+ <property name="aui_layer"></property>
3379+ <property name="aui_name"></property>
3380+ <property name="aui_position"></property>
3381+ <property name="aui_row"></property>
3382+ <property name="best_size"></property>
3383+ <property name="bg"></property>
3384+ <property name="caption"></property>
3385+ <property name="caption_visible">1</property>
3386+ <property name="center_pane">0</property>
3387+ <property name="checked">0</property>
3388+ <property name="close_button">1</property>
3389+ <property name="context_help"></property>
3390+ <property name="context_menu">1</property>
3391+ <property name="default_pane">0</property>
3392+ <property name="dock">Dock</property>
3393+ <property name="dock_fixed">0</property>
3394+ <property name="docking">Left</property>
3395+ <property name="enabled">1</property>
3396+ <property name="fg"></property>
3397+ <property name="floatable">1</property>
3398+ <property name="font"></property>
3399+ <property name="gripper">0</property>
3400+ <property name="hidden">0</property>
3401+ <property name="id">wxID_ANY</property>
3402+ <property name="label">Hierarchical pins by sheet</property>
3403+ <property name="max_size"></property>
3404+ <property name="maximize_button">0</property>
3405+ <property name="maximum_size"></property>
3406+ <property name="min_size"></property>
3407+ <property name="minimize_button">0</property>
3408+ <property name="minimum_size"></property>
3409+ <property name="moveable">1</property>
3410+ <property name="name">m_GenListLabelsbySheet</property>
3411+ <property name="pane_border">1</property>
3412+ <property name="pane_position"></property>
3413+ <property name="pane_size"></property>
3414+ <property name="permission">protected</property>
3415+ <property name="pin_button">1</property>
3416+ <property name="pos"></property>
3417+ <property name="resize">Resizable</property>
3418+ <property name="show">1</property>
3419+ <property name="size"></property>
3420+ <property name="style"></property>
3421+ <property name="subclass"></property>
3422+ <property name="toolbar_pane">0</property>
3423+ <property name="tooltip"></property>
3424+ <property name="validator_data_type"></property>
3425+ <property name="validator_style">wxFILTER_NONE</property>
3426+ <property name="validator_type">wxDefaultValidator</property>
3427+ <property name="validator_variable"></property>
3428+ <property name="window_extra_style"></property>
3429+ <property name="window_name"></property>
3430+ <property name="window_style"></property>
3431+ <event name="OnChar"></event>
3432+ <event name="OnCheckBox"></event>
3433+ <event name="OnEnterWindow"></event>
3434+ <event name="OnEraseBackground"></event>
3435+ <event name="OnKeyDown"></event>
3436+ <event name="OnKeyUp"></event>
3437+ <event name="OnKillFocus"></event>
3438+ <event name="OnLeaveWindow"></event>
3439+ <event name="OnLeftDClick"></event>
3440+ <event name="OnLeftDown"></event>
3441+ <event name="OnLeftUp"></event>
3442+ <event name="OnMiddleDClick"></event>
3443+ <event name="OnMiddleDown"></event>
3444+ <event name="OnMiddleUp"></event>
3445+ <event name="OnMotion"></event>
3446+ <event name="OnMouseEvents"></event>
3447+ <event name="OnMouseWheel"></event>
3448+ <event name="OnPaint"></event>
3449+ <event name="OnRightDClick"></event>
3450+ <event name="OnRightDown"></event>
3451+ <event name="OnRightUp"></event>
3452+ <event name="OnSetFocus"></event>
3453+ <event name="OnSize"></event>
3454+ <event name="OnUpdateUI"></event>
3455+ </object>
3456+ </object>
3457+ </object>
3458+ </object>
3459+ <object class="sizeritem" expanded="1">
3460+ <property name="border">5</property>
3461+ <property name="flag">wxEXPAND|wxTOP</property>
3462+ <property name="proportion">0</property>
3463+ <object class="wxRadioBox" expanded="1">
3464+ <property name="BottomDockable">1</property>
3465+ <property name="LeftDockable">1</property>
3466+ <property name="RightDockable">1</property>
3467+ <property name="TopDockable">1</property>
3468+ <property name="aui_layer"></property>
3469+ <property name="aui_name"></property>
3470+ <property name="aui_position"></property>
3471+ <property name="aui_row"></property>
3472+ <property name="best_size"></property>
3473+ <property name="bg"></property>
3474+ <property name="caption"></property>
3475+ <property name="caption_visible">1</property>
3476+ <property name="center_pane">0</property>
3477+ <property name="choices">&quot;List&quot; &quot;List for spreadsheet import (by ref)&quot; &quot;List for spreadsheet import (by grouped ref)&quot; &quot;List for spreadsheet import (by value)&quot;</property>
3478+ <property name="close_button">1</property>
3479+ <property name="context_help"></property>
3480+ <property name="context_menu">1</property>
3481+ <property name="default_pane">0</property>
3482+ <property name="dock">Dock</property>
3483+ <property name="dock_fixed">0</property>
3484+ <property name="docking">Left</property>
3485+ <property name="enabled">1</property>
3486+ <property name="fg"></property>
3487+ <property name="floatable">1</property>
3488+ <property name="font"></property>
3489+ <property name="gripper">0</property>
3490+ <property name="hidden">0</property>
3491+ <property name="id">ID_RADIOBOX_SELECT_FORMAT</property>
3492+ <property name="label">Output format:</property>
3493+ <property name="majorDimension">1</property>
3494+ <property name="max_size"></property>
3495+ <property name="maximize_button">0</property>
3496+ <property name="maximum_size"></property>
3497+ <property name="min_size"></property>
3498+ <property name="minimize_button">0</property>
3499+ <property name="minimum_size"></property>
3500+ <property name="moveable">1</property>
3501+ <property name="name">m_OutputFormCtrl</property>
3502+ <property name="pane_border">1</property>
3503+ <property name="pane_position"></property>
3504+ <property name="pane_size"></property>
3505+ <property name="permission">protected</property>
3506+ <property name="pin_button">1</property>
3507+ <property name="pos"></property>
3508+ <property name="resize">Resizable</property>
3509+ <property name="selection">1</property>
3510+ <property name="show">1</property>
3511+ <property name="size"></property>
3512+ <property name="style">wxRA_SPECIFY_COLS</property>
3513+ <property name="subclass"></property>
3514+ <property name="toolbar_pane">0</property>
3515+ <property name="tooltip"></property>
3516+ <property name="validator_data_type"></property>
3517+ <property name="validator_style">wxFILTER_NONE</property>
3518+ <property name="validator_type">wxDefaultValidator</property>
3519+ <property name="validator_variable"></property>
3520+ <property name="window_extra_style"></property>
3521+ <property name="window_name"></property>
3522+ <property name="window_style"></property>
3523+ <event name="OnChar"></event>
3524+ <event name="OnEnterWindow"></event>
3525+ <event name="OnEraseBackground"></event>
3526+ <event name="OnKeyDown"></event>
3527+ <event name="OnKeyUp"></event>
3528+ <event name="OnKillFocus"></event>
3529+ <event name="OnLeaveWindow"></event>
3530+ <event name="OnLeftDClick"></event>
3531+ <event name="OnLeftDown"></event>
3532+ <event name="OnLeftUp"></event>
3533+ <event name="OnMiddleDClick"></event>
3534+ <event name="OnMiddleDown"></event>
3535+ <event name="OnMiddleUp"></event>
3536+ <event name="OnMotion"></event>
3537+ <event name="OnMouseEvents"></event>
3538+ <event name="OnMouseWheel"></event>
3539+ <event name="OnPaint"></event>
3540+ <event name="OnRadioBox">OnRadioboxSelectFormatSelected</event>
3541+ <event name="OnRightDClick"></event>
3542+ <event name="OnRightDown"></event>
3543+ <event name="OnRightUp"></event>
3544+ <event name="OnSetFocus"></event>
3545+ <event name="OnSize"></event>
3546+ <event name="OnUpdateUI"></event>
3547+ </object>
3548+ </object>
3549+ <object class="sizeritem" expanded="1">
3550+ <property name="border">5</property>
3551+ <property name="flag">wxEXPAND|wxTOP</property>
3552+ <property name="proportion">0</property>
3553+ <object class="wxRadioBox" expanded="1">
3554+ <property name="BottomDockable">1</property>
3555+ <property name="LeftDockable">1</property>
3556+ <property name="RightDockable">1</property>
3557+ <property name="TopDockable">1</property>
3558+ <property name="aui_layer"></property>
3559+ <property name="aui_name"></property>
3560+ <property name="aui_position"></property>
3561+ <property name="aui_row"></property>
3562+ <property name="best_size"></property>
3563+ <property name="bg"></property>
3564+ <property name="caption"></property>
3565+ <property name="caption_visible">1</property>
3566+ <property name="center_pane">0</property>
3567+ <property name="choices">&quot;Tab&quot; &quot;;&quot; &quot;,&quot;</property>
3568+ <property name="close_button">1</property>
3569+ <property name="context_help"></property>
3570+ <property name="context_menu">1</property>
3571+ <property name="default_pane">0</property>
3572+ <property name="dock">Dock</property>
3573+ <property name="dock_fixed">0</property>
3574+ <property name="docking">Left</property>
3575+ <property name="enabled">1</property>
3576+ <property name="fg"></property>
3577+ <property name="floatable">1</property>
3578+ <property name="font"></property>
3579+ <property name="gripper">0</property>
3580+ <property name="hidden">0</property>
3581+ <property name="id">wxID_ANY</property>
3582+ <property name="label">Field separator for spreadsheet import:</property>
3583+ <property name="majorDimension">1</property>
3584+ <property name="max_size"></property>
3585+ <property name="maximize_button">0</property>
3586+ <property name="maximum_size"></property>
3587+ <property name="min_size"></property>
3588+ <property name="minimize_button">0</property>
3589+ <property name="minimum_size"></property>
3590+ <property name="moveable">1</property>
3591+ <property name="name">m_OutputSeparatorCtrl</property>
3592+ <property name="pane_border">1</property>
3593+ <property name="pane_position"></property>
3594+ <property name="pane_size"></property>
3595+ <property name="permission">protected</property>
3596+ <property name="pin_button">1</property>
3597+ <property name="pos"></property>
3598+ <property name="resize">Resizable</property>
3599+ <property name="selection">0</property>
3600+ <property name="show">1</property>
3601+ <property name="size"></property>
3602+ <property name="style">wxRA_SPECIFY_ROWS</property>
3603+ <property name="subclass"></property>
3604+ <property name="toolbar_pane">0</property>
3605+ <property name="tooltip"></property>
3606+ <property name="validator_data_type"></property>
3607+ <property name="validator_style">wxFILTER_NONE</property>
3608+ <property name="validator_type">wxDefaultValidator</property>
3609+ <property name="validator_variable"></property>
3610+ <property name="window_extra_style"></property>
3611+ <property name="window_name"></property>
3612+ <property name="window_style"></property>
3613+ <event name="OnChar"></event>
3614+ <event name="OnEnterWindow"></event>
3615+ <event name="OnEraseBackground"></event>
3616+ <event name="OnKeyDown"></event>
3617+ <event name="OnKeyUp"></event>
3618+ <event name="OnKillFocus"></event>
3619+ <event name="OnLeaveWindow"></event>
3620+ <event name="OnLeftDClick"></event>
3621+ <event name="OnLeftDown"></event>
3622+ <event name="OnLeftUp"></event>
3623+ <event name="OnMiddleDClick"></event>
3624+ <event name="OnMiddleDown"></event>
3625+ <event name="OnMiddleUp"></event>
3626+ <event name="OnMotion"></event>
3627+ <event name="OnMouseEvents"></event>
3628+ <event name="OnMouseWheel"></event>
3629+ <event name="OnPaint"></event>
3630+ <event name="OnRadioBox"></event>
3631+ <event name="OnRightDClick"></event>
3632+ <event name="OnRightDown"></event>
3633+ <event name="OnRightUp"></event>
3634+ <event name="OnSetFocus"></event>
3635+ <event name="OnSize"></event>
3636+ <event name="OnUpdateUI"></event>
3637+ </object>
3638+ </object>
3639+ <object class="sizeritem" expanded="1">
3640+ <property name="border">5</property>
3641+ <property name="flag">wxALL|wxEXPAND</property>
3642+ <property name="proportion">0</property>
3643+ <object class="wxCheckBox" expanded="1">
3644+ <property name="BottomDockable">1</property>
3645+ <property name="LeftDockable">1</property>
3646+ <property name="RightDockable">1</property>
3647+ <property name="TopDockable">1</property>
3648+ <property name="aui_layer"></property>
3649+ <property name="aui_name"></property>
3650+ <property name="aui_position"></property>
3651+ <property name="aui_row"></property>
3652+ <property name="best_size"></property>
3653+ <property name="bg"></property>
3654+ <property name="caption"></property>
3655+ <property name="caption_visible">1</property>
3656+ <property name="center_pane">0</property>
3657+ <property name="checked">0</property>
3658+ <property name="close_button">1</property>
3659+ <property name="context_help"></property>
3660+ <property name="context_menu">1</property>
3661+ <property name="default_pane">0</property>
3662+ <property name="dock">Dock</property>
3663+ <property name="dock_fixed">0</property>
3664+ <property name="docking">Left</property>
3665+ <property name="enabled">1</property>
3666+ <property name="fg"></property>
3667+ <property name="floatable">1</property>
3668+ <property name="font"></property>
3669+ <property name="gripper">0</property>
3670+ <property name="hidden">0</property>
3671+ <property name="id">wxID_ANY</property>
3672+ <property name="label">Launch list browser</property>
3673+ <property name="max_size"></property>
3674+ <property name="maximize_button">0</property>
3675+ <property name="maximum_size"></property>
3676+ <property name="min_size"></property>
3677+ <property name="minimize_button">0</property>
3678+ <property name="minimum_size"></property>
3679+ <property name="moveable">1</property>
3680+ <property name="name">m_GetListBrowser</property>
3681+ <property name="pane_border">1</property>
3682+ <property name="pane_position"></property>
3683+ <property name="pane_size"></property>
3684+ <property name="permission">protected</property>
3685+ <property name="pin_button">1</property>
3686+ <property name="pos"></property>
3687+ <property name="resize">Resizable</property>
3688+ <property name="show">1</property>
3689+ <property name="size"></property>
3690+ <property name="style"></property>
3691+ <property name="subclass"></property>
3692+ <property name="toolbar_pane">0</property>
3693+ <property name="tooltip"></property>
3694+ <property name="validator_data_type"></property>
3695+ <property name="validator_style">wxFILTER_NONE</property>
3696+ <property name="validator_type">wxDefaultValidator</property>
3697+ <property name="validator_variable"></property>
3698+ <property name="window_extra_style"></property>
3699+ <property name="window_name"></property>
3700+ <property name="window_style"></property>
3701+ <event name="OnChar"></event>
3702+ <event name="OnCheckBox"></event>
3703+ <event name="OnEnterWindow"></event>
3704+ <event name="OnEraseBackground"></event>
3705+ <event name="OnKeyDown"></event>
3706+ <event name="OnKeyUp"></event>
3707+ <event name="OnKillFocus"></event>
3708+ <event name="OnLeaveWindow"></event>
3709+ <event name="OnLeftDClick"></event>
3710+ <event name="OnLeftDown"></event>
3711+ <event name="OnLeftUp"></event>
3712+ <event name="OnMiddleDClick"></event>
3713+ <event name="OnMiddleDown"></event>
3714+ <event name="OnMiddleUp"></event>
3715+ <event name="OnMotion"></event>
3716+ <event name="OnMouseEvents"></event>
3717+ <event name="OnMouseWheel"></event>
3718+ <event name="OnPaint"></event>
3719+ <event name="OnRightDClick"></event>
3720+ <event name="OnRightDown"></event>
3721+ <event name="OnRightUp"></event>
3722+ <event name="OnSetFocus"></event>
3723+ <event name="OnSize"></event>
3724+ <event name="OnUpdateUI"></event>
3725+ </object>
3726+ </object>
3727+ </object>
3728+ </object>
3729+ <object class="sizeritem" expanded="1">
3730+ <property name="border">5</property>
3731+ <property name="flag">wxALL|wxEXPAND</property>
3732+ <property name="proportion">2</property>
3733+ <object class="wxBoxSizer" expanded="1">
3734+ <property name="minimum_size"></property>
3735+ <property name="name">bRightSizer</property>
3736+ <property name="orient">wxVERTICAL</property>
3737+ <property name="permission">none</property>
3738+ <object class="sizeritem" expanded="1">
3739+ <property name="border">5</property>
3740+ <property name="flag">wxEXPAND</property>
3741+ <property name="proportion">1</property>
3742+ <object class="wxStaticBoxSizer" expanded="1">
3743+ <property name="id">wxID_ANY</property>
3744+ <property name="label">Add to list:</property>
3745+ <property name="minimum_size"></property>
3746+ <property name="name">sbAddToListSelectionSizer</property>
3747+ <property name="orient">wxVERTICAL</property>
3748+ <property name="permission">none</property>
3749+ <event name="OnUpdateUI"></event>
3750+ <object class="sizeritem" expanded="1">
3751+ <property name="border">5</property>
3752+ <property name="flag">wxALL</property>
3753+ <property name="proportion">0</property>
3754+ <object class="wxCheckBox" expanded="1">
3755+ <property name="BottomDockable">1</property>
3756+ <property name="LeftDockable">1</property>
3757+ <property name="RightDockable">1</property>
3758+ <property name="TopDockable">1</property>
3759+ <property name="aui_layer"></property>
3760+ <property name="aui_name"></property>
3761+ <property name="aui_position"></property>
3762+ <property name="aui_row"></property>
3763+ <property name="best_size"></property>
3764+ <property name="bg"></property>
3765+ <property name="caption"></property>
3766+ <property name="caption_visible">1</property>
3767+ <property name="center_pane">0</property>
3768+ <property name="checked">0</property>
3769+ <property name="close_button">1</property>
3770+ <property name="context_help"></property>
3771+ <property name="context_menu">1</property>
3772+ <property name="default_pane">0</property>
3773+ <property name="dock">Dock</property>
3774+ <property name="dock_fixed">0</property>
3775+ <property name="docking">Left</property>
3776+ <property name="enabled">1</property>
3777+ <property name="fg"></property>
3778+ <property name="floatable">1</property>
3779+ <property name="font"></property>
3780+ <property name="gripper">0</property>
3781+ <property name="hidden">0</property>
3782+ <property name="id">wxID_ANY</property>
3783+ <property name="label">Component location</property>
3784+ <property name="max_size"></property>
3785+ <property name="maximize_button">0</property>
3786+ <property name="maximum_size"></property>
3787+ <property name="min_size"></property>
3788+ <property name="minimize_button">0</property>
3789+ <property name="minimum_size"></property>
3790+ <property name="moveable">1</property>
3791+ <property name="name">m_AddLocationField</property>
3792+ <property name="pane_border">1</property>
3793+ <property name="pane_position"></property>
3794+ <property name="pane_size"></property>
3795+ <property name="permission">protected</property>
3796+ <property name="pin_button">1</property>
3797+ <property name="pos"></property>
3798+ <property name="resize">Resizable</property>
3799+ <property name="show">1</property>
3800+ <property name="size"></property>
3801+ <property name="style"></property>
3802+ <property name="subclass"></property>
3803+ <property name="toolbar_pane">0</property>
3804+ <property name="tooltip"></property>
3805+ <property name="validator_data_type"></property>
3806+ <property name="validator_style">wxFILTER_NONE</property>
3807+ <property name="validator_type">wxDefaultValidator</property>
3808+ <property name="validator_variable"></property>
3809+ <property name="window_extra_style"></property>
3810+ <property name="window_name"></property>
3811+ <property name="window_style"></property>
3812+ <event name="OnChar"></event>
3813+ <event name="OnCheckBox"></event>
3814+ <event name="OnEnterWindow"></event>
3815+ <event name="OnEraseBackground"></event>
3816+ <event name="OnKeyDown"></event>
3817+ <event name="OnKeyUp"></event>
3818+ <event name="OnKillFocus"></event>
3819+ <event name="OnLeaveWindow"></event>
3820+ <event name="OnLeftDClick"></event>
3821+ <event name="OnLeftDown"></event>
3822+ <event name="OnLeftUp"></event>
3823+ <event name="OnMiddleDClick"></event>
3824+ <event name="OnMiddleDown"></event>
3825+ <event name="OnMiddleUp"></event>
3826+ <event name="OnMotion"></event>
3827+ <event name="OnMouseEvents"></event>
3828+ <event name="OnMouseWheel"></event>
3829+ <event name="OnPaint"></event>
3830+ <event name="OnRightDClick"></event>
3831+ <event name="OnRightDown"></event>
3832+ <event name="OnRightUp"></event>
3833+ <event name="OnSetFocus"></event>
3834+ <event name="OnSize"></event>
3835+ <event name="OnUpdateUI"></event>
3836+ </object>
3837+ </object>
3838+ <object class="sizeritem" expanded="1">
3839+ <property name="border">5</property>
3840+ <property name="flag">wxEXPAND</property>
3841+ <property name="proportion">0</property>
3842+ <object class="wxStaticBoxSizer" expanded="1">
3843+ <property name="id">wxID_ANY</property>
3844+ <property name="label">System Fields:</property>
3845+ <property name="minimum_size"></property>
3846+ <property name="name">sbFixedFieldsSizer</property>
3847+ <property name="orient">wxVERTICAL</property>
3848+ <property name="permission">none</property>
3849+ <event name="OnUpdateUI"></event>
3850+ <object class="sizeritem" expanded="1">
3851+ <property name="border">5</property>
3852+ <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
3853+ <property name="proportion">0</property>
3854+ <object class="wxCheckBox" expanded="1">
3855+ <property name="BottomDockable">1</property>
3856+ <property name="LeftDockable">1</property>
3857+ <property name="RightDockable">1</property>
3858+ <property name="TopDockable">1</property>
3859+ <property name="aui_layer"></property>
3860+ <property name="aui_name"></property>
3861+ <property name="aui_position"></property>
3862+ <property name="aui_row"></property>
3863+ <property name="best_size"></property>
3864+ <property name="bg"></property>
3865+ <property name="caption"></property>
3866+ <property name="caption_visible">1</property>
3867+ <property name="center_pane">0</property>
3868+ <property name="checked">0</property>
3869+ <property name="close_button">1</property>
3870+ <property name="context_help"></property>
3871+ <property name="context_menu">1</property>
3872+ <property name="default_pane">0</property>
3873+ <property name="dock">Dock</property>
3874+ <property name="dock_fixed">0</property>
3875+ <property name="docking">Left</property>
3876+ <property name="enabled">1</property>
3877+ <property name="fg"></property>
3878+ <property name="floatable">1</property>
3879+ <property name="font"></property>
3880+ <property name="gripper">0</property>
3881+ <property name="hidden">0</property>
3882+ <property name="id">wxID_ANY</property>
3883+ <property name="label">Datasheet</property>
3884+ <property name="max_size"></property>
3885+ <property name="maximize_button">0</property>
3886+ <property name="maximum_size"></property>
3887+ <property name="min_size"></property>
3888+ <property name="minimize_button">0</property>
3889+ <property name="minimum_size"></property>
3890+ <property name="moveable">1</property>
3891+ <property name="name">m_AddDatasheetField</property>
3892+ <property name="pane_border">1</property>
3893+ <property name="pane_position"></property>
3894+ <property name="pane_size"></property>
3895+ <property name="permission">protected</property>
3896+ <property name="pin_button">1</property>
3897+ <property name="pos"></property>
3898+ <property name="resize">Resizable</property>
3899+ <property name="show">1</property>
3900+ <property name="size"></property>
3901+ <property name="style"></property>
3902+ <property name="subclass"></property>
3903+ <property name="toolbar_pane">0</property>
3904+ <property name="tooltip"></property>
3905+ <property name="validator_data_type"></property>
3906+ <property name="validator_style">wxFILTER_NONE</property>
3907+ <property name="validator_type">wxDefaultValidator</property>
3908+ <property name="validator_variable"></property>
3909+ <property name="window_extra_style"></property>
3910+ <property name="window_name"></property>
3911+ <property name="window_style"></property>
3912+ <event name="OnChar"></event>
3913+ <event name="OnCheckBox"></event>
3914+ <event name="OnEnterWindow"></event>
3915+ <event name="OnEraseBackground"></event>
3916+ <event name="OnKeyDown"></event>
3917+ <event name="OnKeyUp"></event>
3918+ <event name="OnKillFocus"></event>
3919+ <event name="OnLeaveWindow"></event>
3920+ <event name="OnLeftDClick"></event>
3921+ <event name="OnLeftDown"></event>
3922+ <event name="OnLeftUp"></event>
3923+ <event name="OnMiddleDClick"></event>
3924+ <event name="OnMiddleDown"></event>
3925+ <event name="OnMiddleUp"></event>
3926+ <event name="OnMotion"></event>
3927+ <event name="OnMouseEvents"></event>
3928+ <event name="OnMouseWheel"></event>
3929+ <event name="OnPaint"></event>
3930+ <event name="OnRightDClick"></event>
3931+ <event name="OnRightDown"></event>
3932+ <event name="OnRightUp"></event>
3933+ <event name="OnSetFocus"></event>
3934+ <event name="OnSize"></event>
3935+ <event name="OnUpdateUI"></event>
3936+ </object>
3937+ </object>
3938+ <object class="sizeritem" expanded="1">
3939+ <property name="border">5</property>
3940+ <property name="flag">wxALL|wxEXPAND</property>
3941+ <property name="proportion">0</property>
3942+ <object class="wxCheckBox" expanded="1">
3943+ <property name="BottomDockable">1</property>
3944+ <property name="LeftDockable">1</property>
3945+ <property name="RightDockable">1</property>
3946+ <property name="TopDockable">1</property>
3947+ <property name="aui_layer"></property>
3948+ <property name="aui_name"></property>
3949+ <property name="aui_position"></property>
3950+ <property name="aui_row"></property>
3951+ <property name="best_size"></property>
3952+ <property name="bg"></property>
3953+ <property name="caption"></property>
3954+ <property name="caption_visible">1</property>
3955+ <property name="center_pane">0</property>
3956+ <property name="checked">0</property>
3957+ <property name="close_button">1</property>
3958+ <property name="context_help"></property>
3959+ <property name="context_menu">1</property>
3960+ <property name="default_pane">0</property>
3961+ <property name="dock">Dock</property>
3962+ <property name="dock_fixed">0</property>
3963+ <property name="docking">Left</property>
3964+ <property name="enabled">1</property>
3965+ <property name="fg"></property>
3966+ <property name="floatable">1</property>
3967+ <property name="font"></property>
3968+ <property name="gripper">0</property>
3969+ <property name="hidden">0</property>
3970+ <property name="id">wxID_ANY</property>
3971+ <property name="label">Footprint</property>
3972+ <property name="max_size"></property>
3973+ <property name="maximize_button">0</property>
3974+ <property name="maximum_size"></property>
3975+ <property name="min_size"></property>
3976+ <property name="minimize_button">0</property>
3977+ <property name="minimum_size"></property>
3978+ <property name="moveable">1</property>
3979+ <property name="name">m_AddFootprintField</property>
3980+ <property name="pane_border">1</property>
3981+ <property name="pane_position"></property>
3982+ <property name="pane_size"></property>
3983+ <property name="permission">protected</property>
3984+ <property name="pin_button">1</property>
3985+ <property name="pos"></property>
3986+ <property name="resize">Resizable</property>
3987+ <property name="show">1</property>
3988+ <property name="size"></property>
3989+ <property name="style"></property>
3990+ <property name="subclass"></property>
3991+ <property name="toolbar_pane">0</property>
3992+ <property name="tooltip"></property>
3993+ <property name="validator_data_type"></property>
3994+ <property name="validator_style">wxFILTER_NONE</property>
3995+ <property name="validator_type">wxDefaultValidator</property>
3996+ <property name="validator_variable"></property>
3997+ <property name="window_extra_style"></property>
3998+ <property name="window_name"></property>
3999+ <property name="window_style"></property>
4000+ <event name="OnChar"></event>
4001+ <event name="OnCheckBox"></event>
4002+ <event name="OnEnterWindow"></event>
4003+ <event name="OnEraseBackground"></event>
4004+ <event name="OnKeyDown"></event>
4005+ <event name="OnKeyUp"></event>
4006+ <event name="OnKillFocus"></event>
4007+ <event name="OnLeaveWindow"></event>
4008+ <event name="OnLeftDClick"></event>
4009+ <event name="OnLeftDown"></event>
4010+ <event name="OnLeftUp"></event>
4011+ <event name="OnMiddleDClick"></event>
4012+ <event name="OnMiddleDown"></event>
4013+ <event name="OnMiddleUp"></event>
4014+ <event name="OnMotion"></event>
4015+ <event name="OnMouseEvents"></event>
4016+ <event name="OnMouseWheel"></event>
4017+ <event name="OnPaint"></event>
4018+ <event name="OnRightDClick"></event>
4019+ <event name="OnRightDown"></event>
4020+ <event name="OnRightUp"></event>
4021+ <event name="OnSetFocus"></event>
4022+ <event name="OnSize"></event>
4023+ <event name="OnUpdateUI"></event>
4024+ </object>
4025+ </object>
4026+ </object>
4027+ </object>
4028+ <object class="sizeritem" expanded="1">
4029+ <property name="border">5</property>
4030+ <property name="flag">wxEXPAND|wxTOP</property>
4031+ <property name="proportion">0</property>
4032+ <object class="wxStaticBoxSizer" expanded="1">
4033+ <property name="id">wxID_ANY</property>
4034+ <property name="label">Users fields:</property>
4035+ <property name="minimum_size"></property>
4036+ <property name="name">sbUsersFiledsSizer</property>
4037+ <property name="orient">wxVERTICAL</property>
4038+ <property name="permission">none</property>
4039+ <event name="OnUpdateUI"></event>
4040+ <object class="sizeritem" expanded="1">
4041+ <property name="border">5</property>
4042+ <property name="flag">wxEXPAND|wxALL</property>
4043+ <property name="proportion">0</property>
4044+ <object class="wxCheckBox" expanded="1">
4045+ <property name="BottomDockable">1</property>
4046+ <property name="LeftDockable">1</property>
4047+ <property name="RightDockable">1</property>
4048+ <property name="TopDockable">1</property>
4049+ <property name="aui_layer"></property>
4050+ <property name="aui_name"></property>
4051+ <property name="aui_position"></property>
4052+ <property name="aui_row"></property>
4053+ <property name="best_size"></property>
4054+ <property name="bg"></property>
4055+ <property name="caption"></property>
4056+ <property name="caption_visible">1</property>
4057+ <property name="center_pane">0</property>
4058+ <property name="checked">0</property>
4059+ <property name="close_button">1</property>
4060+ <property name="context_help"></property>
4061+ <property name="context_menu">1</property>
4062+ <property name="default_pane">0</property>
4063+ <property name="dock">Dock</property>
4064+ <property name="dock_fixed">0</property>
4065+ <property name="docking">Left</property>
4066+ <property name="enabled">1</property>
4067+ <property name="fg"></property>
4068+ <property name="floatable">1</property>
4069+ <property name="font"></property>
4070+ <property name="gripper">0</property>
4071+ <property name="hidden">0</property>
4072+ <property name="id">wxID_ANY</property>
4073+ <property name="label">Field 1</property>
4074+ <property name="max_size"></property>
4075+ <property name="maximize_button">0</property>
4076+ <property name="maximum_size"></property>
4077+ <property name="min_size"></property>
4078+ <property name="minimize_button">0</property>
4079+ <property name="minimum_size"></property>
4080+ <property name="moveable">1</property>
4081+ <property name="name">m_AddField1</property>
4082+ <property name="pane_border">1</property>
4083+ <property name="pane_position"></property>
4084+ <property name="pane_size"></property>
4085+ <property name="permission">protected</property>
4086+ <property name="pin_button">1</property>
4087+ <property name="pos"></property>
4088+ <property name="resize">Resizable</property>
4089+ <property name="show">1</property>
4090+ <property name="size"></property>
4091+ <property name="style"></property>
4092+ <property name="subclass"></property>
4093+ <property name="toolbar_pane">0</property>
4094+ <property name="tooltip"></property>
4095+ <property name="validator_data_type"></property>
4096+ <property name="validator_style">wxFILTER_NONE</property>
4097+ <property name="validator_type">wxDefaultValidator</property>
4098+ <property name="validator_variable"></property>
4099+ <property name="window_extra_style"></property>
4100+ <property name="window_name"></property>
4101+ <property name="window_style"></property>
4102+ <event name="OnChar"></event>
4103+ <event name="OnCheckBox"></event>
4104+ <event name="OnEnterWindow"></event>
4105+ <event name="OnEraseBackground"></event>
4106+ <event name="OnKeyDown"></event>
4107+ <event name="OnKeyUp"></event>
4108+ <event name="OnKillFocus"></event>
4109+ <event name="OnLeaveWindow"></event>
4110+ <event name="OnLeftDClick"></event>
4111+ <event name="OnLeftDown"></event>
4112+ <event name="OnLeftUp"></event>
4113+ <event name="OnMiddleDClick"></event>
4114+ <event name="OnMiddleDown"></event>
4115+ <event name="OnMiddleUp"></event>
4116+ <event name="OnMotion"></event>
4117+ <event name="OnMouseEvents"></event>
4118+ <event name="OnMouseWheel"></event>
4119+ <event name="OnPaint"></event>
4120+ <event name="OnRightDClick"></event>
4121+ <event name="OnRightDown"></event>
4122+ <event name="OnRightUp"></event>
4123+ <event name="OnSetFocus"></event>
4124+ <event name="OnSize"></event>
4125+ <event name="OnUpdateUI"></event>
4126+ </object>
4127+ </object>
4128+ <object class="sizeritem" expanded="1">
4129+ <property name="border">5</property>
4130+ <property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
4131+ <property name="proportion">0</property>
4132+ <object class="wxCheckBox" expanded="1">
4133+ <property name="BottomDockable">1</property>
4134+ <property name="LeftDockable">1</property>
4135+ <property name="RightDockable">1</property>
4136+ <property name="TopDockable">1</property>
4137+ <property name="aui_layer"></property>
4138+ <property name="aui_name"></property>
4139+ <property name="aui_position"></property>
4140+ <property name="aui_row"></property>
4141+ <property name="best_size"></property>
4142+ <property name="bg"></property>
4143+ <property name="caption"></property>
4144+ <property name="caption_visible">1</property>
4145+ <property name="center_pane">0</property>
4146+ <property name="checked">0</property>
4147+ <property name="close_button">1</property>
4148+ <property name="context_help"></property>
4149+ <property name="context_menu">1</property>
4150+ <property name="default_pane">0</property>
4151+ <property name="dock">Dock</property>
4152+ <property name="dock_fixed">0</property>
4153+ <property name="docking">Left</property>
4154+ <property name="enabled">1</property>
4155+ <property name="fg"></property>
4156+ <property name="floatable">1</property>
4157+ <property name="font"></property>
4158+ <property name="gripper">0</property>
4159+ <property name="hidden">0</property>
4160+ <property name="id">wxID_ANY</property>
4161+ <property name="label">Field 2</property>
4162+ <property name="max_size"></property>
4163+ <property name="maximize_button">0</property>
4164+ <property name="maximum_size"></property>
4165+ <property name="min_size"></property>
4166+ <property name="minimize_button">0</property>
4167+ <property name="minimum_size"></property>
4168+ <property name="moveable">1</property>
4169+ <property name="name">m_AddField2</property>
4170+ <property name="pane_border">1</property>
4171+ <property name="pane_position"></property>
4172+ <property name="pane_size"></property>
4173+ <property name="permission">protected</property>
4174+ <property name="pin_button">1</property>
4175+ <property name="pos"></property>
4176+ <property name="resize">Resizable</property>
4177+ <property name="show">1</property>
4178+ <property name="size"></property>
4179+ <property name="style"></property>
4180+ <property name="subclass"></property>
4181+ <property name="toolbar_pane">0</property>
4182+ <property name="tooltip"></property>
4183+ <property name="validator_data_type"></property>
4184+ <property name="validator_style">wxFILTER_NONE</property>
4185+ <property name="validator_type">wxDefaultValidator</property>
4186+ <property name="validator_variable"></property>
4187+ <property name="window_extra_style"></property>
4188+ <property name="window_name"></property>
4189+ <property name="window_style"></property>
4190+ <event name="OnChar"></event>
4191+ <event name="OnCheckBox"></event>
4192+ <event name="OnEnterWindow"></event>
4193+ <event name="OnEraseBackground"></event>
4194+ <event name="OnKeyDown"></event>
4195+ <event name="OnKeyUp"></event>
4196+ <event name="OnKillFocus"></event>
4197+ <event name="OnLeaveWindow"></event>
4198+ <event name="OnLeftDClick"></event>
4199+ <event name="OnLeftDown"></event>
4200+ <event name="OnLeftUp"></event>
4201+ <event name="OnMiddleDClick"></event>
4202+ <event name="OnMiddleDown"></event>
4203+ <event name="OnMiddleUp"></event>
4204+ <event name="OnMotion"></event>
4205+ <event name="OnMouseEvents"></event>
4206+ <event name="OnMouseWheel"></event>
4207+ <event name="OnPaint"></event>
4208+ <event name="OnRightDClick"></event>
4209+ <event name="OnRightDown"></event>
4210+ <event name="OnRightUp"></event>
4211+ <event name="OnSetFocus"></event>
4212+ <event name="OnSize"></event>
4213+ <event name="OnUpdateUI"></event>
4214+ </object>
4215+ </object>
4216+ <object class="sizeritem" expanded="1">
4217+ <property name="border">5</property>
4218+ <property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
4219+ <property name="proportion">0</property>
4220+ <object class="wxCheckBox" expanded="1">
4221+ <property name="BottomDockable">1</property>
4222+ <property name="LeftDockable">1</property>
4223+ <property name="RightDockable">1</property>
4224+ <property name="TopDockable">1</property>
4225+ <property name="aui_layer"></property>
4226+ <property name="aui_name"></property>
4227+ <property name="aui_position"></property>
4228+ <property name="aui_row"></property>
4229+ <property name="best_size"></property>
4230+ <property name="bg"></property>
4231+ <property name="caption"></property>
4232+ <property name="caption_visible">1</property>
4233+ <property name="center_pane">0</property>
4234+ <property name="checked">0</property>
4235+ <property name="close_button">1</property>
4236+ <property name="context_help"></property>
4237+ <property name="context_menu">1</property>
4238+ <property name="default_pane">0</property>
4239+ <property name="dock">Dock</property>
4240+ <property name="dock_fixed">0</property>
4241+ <property name="docking">Left</property>
4242+ <property name="enabled">1</property>
4243+ <property name="fg"></property>
4244+ <property name="floatable">1</property>
4245+ <property name="font"></property>
4246+ <property name="gripper">0</property>
4247+ <property name="hidden">0</property>
4248+ <property name="id">wxID_ANY</property>
4249+ <property name="label">Field 3</property>
4250+ <property name="max_size"></property>
4251+ <property name="maximize_button">0</property>
4252+ <property name="maximum_size"></property>
4253+ <property name="min_size"></property>
4254+ <property name="minimize_button">0</property>
4255+ <property name="minimum_size"></property>
4256+ <property name="moveable">1</property>
4257+ <property name="name">m_AddField3</property>
4258+ <property name="pane_border">1</property>
4259+ <property name="pane_position"></property>
4260+ <property name="pane_size"></property>
4261+ <property name="permission">protected</property>
4262+ <property name="pin_button">1</property>
4263+ <property name="pos"></property>
4264+ <property name="resize">Resizable</property>
4265+ <property name="show">1</property>
4266+ <property name="size"></property>
4267+ <property name="style"></property>
4268+ <property name="subclass"></property>
4269+ <property name="toolbar_pane">0</property>
4270+ <property name="tooltip"></property>
4271+ <property name="validator_data_type"></property>
4272+ <property name="validator_style">wxFILTER_NONE</property>
4273+ <property name="validator_type">wxDefaultValidator</property>
4274+ <property name="validator_variable"></property>
4275+ <property name="window_extra_style"></property>
4276+ <property name="window_name"></property>
4277+ <property name="window_style"></property>
4278+ <event name="OnChar"></event>
4279+ <event name="OnCheckBox"></event>
4280+ <event name="OnEnterWindow"></event>
4281+ <event name="OnEraseBackground"></event>
4282+ <event name="OnKeyDown"></event>
4283+ <event name="OnKeyUp"></event>
4284+ <event name="OnKillFocus"></event>
4285+ <event name="OnLeaveWindow"></event>
4286+ <event name="OnLeftDClick"></event>
4287+ <event name="OnLeftDown"></event>
4288+ <event name="OnLeftUp"></event>
4289+ <event name="OnMiddleDClick"></event>
4290+ <event name="OnMiddleDown"></event>
4291+ <event name="OnMiddleUp"></event>
4292+ <event name="OnMotion"></event>
4293+ <event name="OnMouseEvents"></event>
4294+ <event name="OnMouseWheel"></event>
4295+ <event name="OnPaint"></event>
4296+ <event name="OnRightDClick"></event>
4297+ <event name="OnRightDown"></event>
4298+ <event name="OnRightUp"></event>
4299+ <event name="OnSetFocus"></event>
4300+ <event name="OnSize"></event>
4301+ <event name="OnUpdateUI"></event>
4302+ </object>
4303+ </object>
4304+ <object class="sizeritem" expanded="1">
4305+ <property name="border">5</property>
4306+ <property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
4307+ <property name="proportion">0</property>
4308+ <object class="wxCheckBox" expanded="1">
4309+ <property name="BottomDockable">1</property>
4310+ <property name="LeftDockable">1</property>
4311+ <property name="RightDockable">1</property>
4312+ <property name="TopDockable">1</property>
4313+ <property name="aui_layer"></property>
4314+ <property name="aui_name"></property>
4315+ <property name="aui_position"></property>
4316+ <property name="aui_row"></property>
4317+ <property name="best_size"></property>
4318+ <property name="bg"></property>
4319+ <property name="caption"></property>
4320+ <property name="caption_visible">1</property>
4321+ <property name="center_pane">0</property>
4322+ <property name="checked">0</property>
4323+ <property name="close_button">1</property>
4324+ <property name="context_help"></property>
4325+ <property name="context_menu">1</property>
4326+ <property name="default_pane">0</property>
4327+ <property name="dock">Dock</property>
4328+ <property name="dock_fixed">0</property>
4329+ <property name="docking">Left</property>
4330+ <property name="enabled">1</property>
4331+ <property name="fg"></property>
4332+ <property name="floatable">1</property>
4333+ <property name="font"></property>
4334+ <property name="gripper">0</property>
4335+ <property name="hidden">0</property>
4336+ <property name="id">wxID_ANY</property>
4337+ <property name="label">Field 4</property>
4338+ <property name="max_size"></property>
4339+ <property name="maximize_button">0</property>
4340+ <property name="maximum_size"></property>
4341+ <property name="min_size"></property>
4342+ <property name="minimize_button">0</property>
4343+ <property name="minimum_size"></property>
4344+ <property name="moveable">1</property>
4345+ <property name="name">m_AddField4</property>
4346+ <property name="pane_border">1</property>
4347+ <property name="pane_position"></property>
4348+ <property name="pane_size"></property>
4349+ <property name="permission">protected</property>
4350+ <property name="pin_button">1</property>
4351+ <property name="pos"></property>
4352+ <property name="resize">Resizable</property>
4353+ <property name="show">1</property>
4354+ <property name="size"></property>
4355+ <property name="style"></property>
4356+ <property name="subclass"></property>
4357+ <property name="toolbar_pane">0</property>
4358+ <property name="tooltip"></property>
4359+ <property name="validator_data_type"></property>
4360+ <property name="validator_style">wxFILTER_NONE</property>
4361+ <property name="validator_type">wxDefaultValidator</property>
4362+ <property name="validator_variable"></property>
4363+ <property name="window_extra_style"></property>
4364+ <property name="window_name"></property>
4365+ <property name="window_style"></property>
4366+ <event name="OnChar"></event>
4367+ <event name="OnCheckBox"></event>
4368+ <event name="OnEnterWindow"></event>
4369+ <event name="OnEraseBackground"></event>
4370+ <event name="OnKeyDown"></event>
4371+ <event name="OnKeyUp"></event>
4372+ <event name="OnKillFocus"></event>
4373+ <event name="OnLeaveWindow"></event>
4374+ <event name="OnLeftDClick"></event>
4375+ <event name="OnLeftDown"></event>
4376+ <event name="OnLeftUp"></event>
4377+ <event name="OnMiddleDClick"></event>
4378+ <event name="OnMiddleDown"></event>
4379+ <event name="OnMiddleUp"></event>
4380+ <event name="OnMotion"></event>
4381+ <event name="OnMouseEvents"></event>
4382+ <event name="OnMouseWheel"></event>
4383+ <event name="OnPaint"></event>
4384+ <event name="OnRightDClick"></event>
4385+ <event name="OnRightDown"></event>
4386+ <event name="OnRightUp"></event>
4387+ <event name="OnSetFocus"></event>
4388+ <event name="OnSize"></event>
4389+ <event name="OnUpdateUI"></event>
4390+ </object>
4391+ </object>
4392+ <object class="sizeritem" expanded="1">
4393+ <property name="border">5</property>
4394+ <property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
4395+ <property name="proportion">0</property>
4396+ <object class="wxCheckBox" expanded="1">
4397+ <property name="BottomDockable">1</property>
4398+ <property name="LeftDockable">1</property>
4399+ <property name="RightDockable">1</property>
4400+ <property name="TopDockable">1</property>
4401+ <property name="aui_layer"></property>
4402+ <property name="aui_name"></property>
4403+ <property name="aui_position"></property>
4404+ <property name="aui_row"></property>
4405+ <property name="best_size"></property>
4406+ <property name="bg"></property>
4407+ <property name="caption"></property>
4408+ <property name="caption_visible">1</property>
4409+ <property name="center_pane">0</property>
4410+ <property name="checked">0</property>
4411+ <property name="close_button">1</property>
4412+ <property name="context_help"></property>
4413+ <property name="context_menu">1</property>
4414+ <property name="default_pane">0</property>
4415+ <property name="dock">Dock</property>
4416+ <property name="dock_fixed">0</property>
4417+ <property name="docking">Left</property>
4418+ <property name="enabled">1</property>
4419+ <property name="fg"></property>
4420+ <property name="floatable">1</property>
4421+ <property name="font"></property>
4422+ <property name="gripper">0</property>
4423+ <property name="hidden">0</property>
4424+ <property name="id">wxID_ANY</property>
4425+ <property name="label">Field 5</property>
4426+ <property name="max_size"></property>
4427+ <property name="maximize_button">0</property>
4428+ <property name="maximum_size"></property>
4429+ <property name="min_size"></property>
4430+ <property name="minimize_button">0</property>
4431+ <property name="minimum_size"></property>
4432+ <property name="moveable">1</property>
4433+ <property name="name">m_AddField5</property>
4434+ <property name="pane_border">1</property>
4435+ <property name="pane_position"></property>
4436+ <property name="pane_size"></property>
4437+ <property name="permission">protected</property>
4438+ <property name="pin_button">1</property>
4439+ <property name="pos"></property>
4440+ <property name="resize">Resizable</property>
4441+ <property name="show">1</property>
4442+ <property name="size"></property>
4443+ <property name="style"></property>
4444+ <property name="subclass"></property>
4445+ <property name="toolbar_pane">0</property>
4446+ <property name="tooltip"></property>
4447+ <property name="validator_data_type"></property>
4448+ <property name="validator_style">wxFILTER_NONE</property>
4449+ <property name="validator_type">wxDefaultValidator</property>
4450+ <property name="validator_variable"></property>
4451+ <property name="window_extra_style"></property>
4452+ <property name="window_name"></property>
4453+ <property name="window_style"></property>
4454+ <event name="OnChar"></event>
4455+ <event name="OnCheckBox"></event>
4456+ <event name="OnEnterWindow"></event>
4457+ <event name="OnEraseBackground"></event>
4458+ <event name="OnKeyDown"></event>
4459+ <event name="OnKeyUp"></event>
4460+ <event name="OnKillFocus"></event>
4461+ <event name="OnLeaveWindow"></event>
4462+ <event name="OnLeftDClick"></event>
4463+ <event name="OnLeftDown"></event>
4464+ <event name="OnLeftUp"></event>
4465+ <event name="OnMiddleDClick"></event>
4466+ <event name="OnMiddleDown"></event>
4467+ <event name="OnMiddleUp"></event>
4468+ <event name="OnMotion"></event>
4469+ <event name="OnMouseEvents"></event>
4470+ <event name="OnMouseWheel"></event>
4471+ <event name="OnPaint"></event>
4472+ <event name="OnRightDClick"></event>
4473+ <event name="OnRightDown"></event>
4474+ <event name="OnRightUp"></event>
4475+ <event name="OnSetFocus"></event>
4476+ <event name="OnSize"></event>
4477+ <event name="OnUpdateUI"></event>
4478+ </object>
4479+ </object>
4480+ <object class="sizeritem" expanded="1">
4481+ <property name="border">5</property>
4482+ <property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
4483+ <property name="proportion">0</property>
4484+ <object class="wxCheckBox" expanded="1">
4485+ <property name="BottomDockable">1</property>
4486+ <property name="LeftDockable">1</property>
4487+ <property name="RightDockable">1</property>
4488+ <property name="TopDockable">1</property>
4489+ <property name="aui_layer"></property>
4490+ <property name="aui_name"></property>
4491+ <property name="aui_position"></property>
4492+ <property name="aui_row"></property>
4493+ <property name="best_size"></property>
4494+ <property name="bg"></property>
4495+ <property name="caption"></property>
4496+ <property name="caption_visible">1</property>
4497+ <property name="center_pane">0</property>
4498+ <property name="checked">0</property>
4499+ <property name="close_button">1</property>
4500+ <property name="context_help"></property>
4501+ <property name="context_menu">1</property>
4502+ <property name="default_pane">0</property>
4503+ <property name="dock">Dock</property>
4504+ <property name="dock_fixed">0</property>
4505+ <property name="docking">Left</property>
4506+ <property name="enabled">1</property>
4507+ <property name="fg"></property>
4508+ <property name="floatable">1</property>
4509+ <property name="font"></property>
4510+ <property name="gripper">0</property>
4511+ <property name="hidden">0</property>
4512+ <property name="id">wxID_ANY</property>
4513+ <property name="label">Field 6</property>
4514+ <property name="max_size"></property>
4515+ <property name="maximize_button">0</property>
4516+ <property name="maximum_size"></property>
4517+ <property name="min_size"></property>
4518+ <property name="minimize_button">0</property>
4519+ <property name="minimum_size"></property>
4520+ <property name="moveable">1</property>
4521+ <property name="name">m_AddField6</property>
4522+ <property name="pane_border">1</property>
4523+ <property name="pane_position"></property>
4524+ <property name="pane_size"></property>
4525+ <property name="permission">protected</property>
4526+ <property name="pin_button">1</property>
4527+ <property name="pos"></property>
4528+ <property name="resize">Resizable</property>
4529+ <property name="show">1</property>
4530+ <property name="size"></property>
4531+ <property name="style"></property>
4532+ <property name="subclass"></property>
4533+ <property name="toolbar_pane">0</property>
4534+ <property name="tooltip"></property>
4535+ <property name="validator_data_type"></property>
4536+ <property name="validator_style">wxFILTER_NONE</property>
4537+ <property name="validator_type">wxDefaultValidator</property>
4538+ <property name="validator_variable"></property>
4539+ <property name="window_extra_style"></property>
4540+ <property name="window_name"></property>
4541+ <property name="window_style"></property>
4542+ <event name="OnChar"></event>
4543+ <event name="OnCheckBox"></event>
4544+ <event name="OnEnterWindow"></event>
4545+ <event name="OnEraseBackground"></event>
4546+ <event name="OnKeyDown"></event>
4547+ <event name="OnKeyUp"></event>
4548+ <event name="OnKillFocus"></event>
4549+ <event name="OnLeaveWindow"></event>
4550+ <event name="OnLeftDClick"></event>
4551+ <event name="OnLeftDown"></event>
4552+ <event name="OnLeftUp"></event>
4553+ <event name="OnMiddleDClick"></event>
4554+ <event name="OnMiddleDown"></event>
4555+ <event name="OnMiddleUp"></event>
4556+ <event name="OnMotion"></event>
4557+ <event name="OnMouseEvents"></event>
4558+ <event name="OnMouseWheel"></event>
4559+ <event name="OnPaint"></event>
4560+ <event name="OnRightDClick"></event>
4561+ <event name="OnRightDown"></event>
4562+ <event name="OnRightUp"></event>
4563+ <event name="OnSetFocus"></event>
4564+ <event name="OnSize"></event>
4565+ <event name="OnUpdateUI"></event>
4566+ </object>
4567+ </object>
4568+ <object class="sizeritem" expanded="1">
4569+ <property name="border">5</property>
4570+ <property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
4571+ <property name="proportion">0</property>
4572+ <object class="wxCheckBox" expanded="1">
4573+ <property name="BottomDockable">1</property>
4574+ <property name="LeftDockable">1</property>
4575+ <property name="RightDockable">1</property>
4576+ <property name="TopDockable">1</property>
4577+ <property name="aui_layer"></property>
4578+ <property name="aui_name"></property>
4579+ <property name="aui_position"></property>
4580+ <property name="aui_row"></property>
4581+ <property name="best_size"></property>
4582+ <property name="bg"></property>
4583+ <property name="caption"></property>
4584+ <property name="caption_visible">1</property>
4585+ <property name="center_pane">0</property>
4586+ <property name="checked">0</property>
4587+ <property name="close_button">1</property>
4588+ <property name="context_help"></property>
4589+ <property name="context_menu">1</property>
4590+ <property name="default_pane">0</property>
4591+ <property name="dock">Dock</property>
4592+ <property name="dock_fixed">0</property>
4593+ <property name="docking">Left</property>
4594+ <property name="enabled">1</property>
4595+ <property name="fg"></property>
4596+ <property name="floatable">1</property>
4597+ <property name="font"></property>
4598+ <property name="gripper">0</property>
4599+ <property name="hidden">0</property>
4600+ <property name="id">wxID_ANY</property>
4601+ <property name="label">Field 7</property>
4602+ <property name="max_size"></property>
4603+ <property name="maximize_button">0</property>
4604+ <property name="maximum_size"></property>
4605+ <property name="min_size"></property>
4606+ <property name="minimize_button">0</property>
4607+ <property name="minimum_size"></property>
4608+ <property name="moveable">1</property>
4609+ <property name="name">m_AddField7</property>
4610+ <property name="pane_border">1</property>
4611+ <property name="pane_position"></property>
4612+ <property name="pane_size"></property>
4613+ <property name="permission">protected</property>
4614+ <property name="pin_button">1</property>
4615+ <property name="pos"></property>
4616+ <property name="resize">Resizable</property>
4617+ <property name="show">1</property>
4618+ <property name="size"></property>
4619+ <property name="style"></property>
4620+ <property name="subclass"></property>
4621+ <property name="toolbar_pane">0</property>
4622+ <property name="tooltip"></property>
4623+ <property name="validator_data_type"></property>
4624+ <property name="validator_style">wxFILTER_NONE</property>
4625+ <property name="validator_type">wxDefaultValidator</property>
4626+ <property name="validator_variable"></property>
4627+ <property name="window_extra_style"></property>
4628+ <property name="window_name"></property>
4629+ <property name="window_style"></property>
4630+ <event name="OnChar"></event>
4631+ <event name="OnCheckBox"></event>
4632+ <event name="OnEnterWindow"></event>
4633+ <event name="OnEraseBackground"></event>
4634+ <event name="OnKeyDown"></event>
4635+ <event name="OnKeyUp"></event>
4636+ <event name="OnKillFocus"></event>
4637+ <event name="OnLeaveWindow"></event>
4638+ <event name="OnLeftDClick"></event>
4639+ <event name="OnLeftDown"></event>
4640+ <event name="OnLeftUp"></event>
4641+ <event name="OnMiddleDClick"></event>
4642+ <event name="OnMiddleDown"></event>
4643+ <event name="OnMiddleUp"></event>
4644+ <event name="OnMotion"></event>
4645+ <event name="OnMouseEvents"></event>
4646+ <event name="OnMouseWheel"></event>
4647+ <event name="OnPaint"></event>
4648+ <event name="OnRightDClick"></event>
4649+ <event name="OnRightDown"></event>
4650+ <event name="OnRightUp"></event>
4651+ <event name="OnSetFocus"></event>
4652+ <event name="OnSize"></event>
4653+ <event name="OnUpdateUI"></event>
4654+ </object>
4655+ </object>
4656+ <object class="sizeritem" expanded="1">
4657+ <property name="border">5</property>
4658+ <property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
4659+ <property name="proportion">0</property>
4660+ <object class="wxCheckBox" expanded="1">
4661+ <property name="BottomDockable">1</property>
4662+ <property name="LeftDockable">1</property>
4663+ <property name="RightDockable">1</property>
4664+ <property name="TopDockable">1</property>
4665+ <property name="aui_layer"></property>
4666+ <property name="aui_name"></property>
4667+ <property name="aui_position"></property>
4668+ <property name="aui_row"></property>
4669+ <property name="best_size"></property>
4670+ <property name="bg"></property>
4671+ <property name="caption"></property>
4672+ <property name="caption_visible">1</property>
4673+ <property name="center_pane">0</property>
4674+ <property name="checked">0</property>
4675+ <property name="close_button">1</property>
4676+ <property name="context_help"></property>
4677+ <property name="context_menu">1</property>
4678+ <property name="default_pane">0</property>
4679+ <property name="dock">Dock</property>
4680+ <property name="dock_fixed">0</property>
4681+ <property name="docking">Left</property>
4682+ <property name="enabled">1</property>
4683+ <property name="fg"></property>
4684+ <property name="floatable">1</property>
4685+ <property name="font"></property>
4686+ <property name="gripper">0</property>
4687+ <property name="hidden">0</property>
4688+ <property name="id">wxID_ANY</property>
4689+ <property name="label">Field 8</property>
4690+ <property name="max_size"></property>
4691+ <property name="maximize_button">0</property>
4692+ <property name="maximum_size"></property>
4693+ <property name="min_size"></property>
4694+ <property name="minimize_button">0</property>
4695+ <property name="minimum_size"></property>
4696+ <property name="moveable">1</property>
4697+ <property name="name">m_AddField8</property>
4698+ <property name="pane_border">1</property>
4699+ <property name="pane_position"></property>
4700+ <property name="pane_size"></property>
4701+ <property name="permission">protected</property>
4702+ <property name="pin_button">1</property>
4703+ <property name="pos"></property>
4704+ <property name="resize">Resizable</property>
4705+ <property name="show">1</property>
4706+ <property name="size"></property>
4707+ <property name="style"></property>
4708+ <property name="subclass"></property>
4709+ <property name="toolbar_pane">0</property>
4710+ <property name="tooltip"></property>
4711+ <property name="validator_data_type"></property>
4712+ <property name="validator_style">wxFILTER_NONE</property>
4713+ <property name="validator_type">wxDefaultValidator</property>
4714+ <property name="validator_variable"></property>
4715+ <property name="window_extra_style"></property>
4716+ <property name="window_name"></property>
4717+ <property name="window_style"></property>
4718+ <event name="OnChar"></event>
4719+ <event name="OnCheckBox"></event>
4720+ <event name="OnEnterWindow"></event>
4721+ <event name="OnEraseBackground"></event>
4722+ <event name="OnKeyDown"></event>
4723+ <event name="OnKeyUp"></event>
4724+ <event name="OnKillFocus"></event>
4725+ <event name="OnLeaveWindow"></event>
4726+ <event name="OnLeftDClick"></event>
4727+ <event name="OnLeftDown"></event>
4728+ <event name="OnLeftUp"></event>
4729+ <event name="OnMiddleDClick"></event>
4730+ <event name="OnMiddleDown"></event>
4731+ <event name="OnMiddleUp"></event>
4732+ <event name="OnMotion"></event>
4733+ <event name="OnMouseEvents"></event>
4734+ <event name="OnMouseWheel"></event>
4735+ <event name="OnPaint"></event>
4736+ <event name="OnRightDClick"></event>
4737+ <event name="OnRightDown"></event>
4738+ <event name="OnRightUp"></event>
4739+ <event name="OnSetFocus"></event>
4740+ <event name="OnSize"></event>
4741+ <event name="OnUpdateUI"></event>
4742+ </object>
4743+ </object>
4744+ </object>
4745+ </object>
4746+ <object class="sizeritem" expanded="1">
4747+ <property name="border">5</property>
4748+ <property name="flag">wxALL</property>
4749+ <property name="proportion">0</property>
4750+ <object class="wxCheckBox" expanded="1">
4751+ <property name="BottomDockable">1</property>
4752+ <property name="LeftDockable">1</property>
4753+ <property name="RightDockable">1</property>
4754+ <property name="TopDockable">1</property>
4755+ <property name="aui_layer"></property>
4756+ <property name="aui_name"></property>
4757+ <property name="aui_position"></property>
4758+ <property name="aui_row"></property>
4759+ <property name="best_size"></property>
4760+ <property name="bg"></property>
4761+ <property name="caption"></property>
4762+ <property name="caption_visible">1</property>
4763+ <property name="center_pane">0</property>
4764+ <property name="checked">0</property>
4765+ <property name="close_button">1</property>
4766+ <property name="context_help"></property>
4767+ <property name="context_menu">1</property>
4768+ <property name="default_pane">0</property>
4769+ <property name="dock">Dock</property>
4770+ <property name="dock_fixed">0</property>
4771+ <property name="docking">Left</property>
4772+ <property name="enabled">1</property>
4773+ <property name="fg"></property>
4774+ <property name="floatable">1</property>
4775+ <property name="font"></property>
4776+ <property name="gripper">0</property>
4777+ <property name="hidden">0</property>
4778+ <property name="id">wxID_ANY</property>
4779+ <property name="label">All existing user fields</property>
4780+ <property name="max_size"></property>
4781+ <property name="maximize_button">0</property>
4782+ <property name="maximum_size"></property>
4783+ <property name="min_size"></property>
4784+ <property name="minimize_button">0</property>
4785+ <property name="minimum_size"></property>
4786+ <property name="moveable">1</property>
4787+ <property name="name">m_AddAllFields</property>
4788+ <property name="pane_border">1</property>
4789+ <property name="pane_position"></property>
4790+ <property name="pane_size"></property>
4791+ <property name="permission">protected</property>
4792+ <property name="pin_button">1</property>
4793+ <property name="pos"></property>
4794+ <property name="resize">Resizable</property>
4795+ <property name="show">1</property>
4796+ <property name="size"></property>
4797+ <property name="style"></property>
4798+ <property name="subclass"></property>
4799+ <property name="toolbar_pane">0</property>
4800+ <property name="tooltip"></property>
4801+ <property name="validator_data_type"></property>
4802+ <property name="validator_style">wxFILTER_NONE</property>
4803+ <property name="validator_type">wxDefaultValidator</property>
4804+ <property name="validator_variable"></property>
4805+ <property name="window_extra_style"></property>
4806+ <property name="window_name"></property>
4807+ <property name="window_style"></property>
4808+ <event name="OnChar"></event>
4809+ <event name="OnCheckBox"></event>
4810+ <event name="OnEnterWindow"></event>
4811+ <event name="OnEraseBackground"></event>
4812+ <event name="OnKeyDown"></event>
4813+ <event name="OnKeyUp"></event>
4814+ <event name="OnKillFocus"></event>
4815+ <event name="OnLeaveWindow"></event>
4816+ <event name="OnLeftDClick"></event>
4817+ <event name="OnLeftDown"></event>
4818+ <event name="OnLeftUp"></event>
4819+ <event name="OnMiddleDClick"></event>
4820+ <event name="OnMiddleDown"></event>
4821+ <event name="OnMiddleUp"></event>
4822+ <event name="OnMotion"></event>
4823+ <event name="OnMouseEvents"></event>
4824+ <event name="OnMouseWheel"></event>
4825+ <event name="OnPaint"></event>
4826+ <event name="OnRightDClick"></event>
4827+ <event name="OnRightDown"></event>
4828+ <event name="OnRightUp"></event>
4829+ <event name="OnSetFocus"></event>
4830+ <event name="OnSize"></event>
4831+ <event name="OnUpdateUI"></event>
4832+ </object>
4833+ </object>
4834+ </object>
4835+ </object>
4836+ </object>
4837+ </object>
4838+ </object>
4839+ </object>
4840+ <object class="sizeritem" expanded="1">
4841+ <property name="border">5</property>
4842+ <property name="flag">wxEXPAND|wxLEFT|wxRIGHT</property>
4843+ <property name="proportion">0</property>
4844+ <object class="wxStaticLine" expanded="1">
4845+ <property name="BottomDockable">1</property>
4846+ <property name="LeftDockable">1</property>
4847+ <property name="RightDockable">1</property>
4848+ <property name="TopDockable">1</property>
4849+ <property name="aui_layer"></property>
4850+ <property name="aui_name"></property>
4851+ <property name="aui_position"></property>
4852+ <property name="aui_row"></property>
4853+ <property name="best_size"></property>
4854+ <property name="bg"></property>
4855+ <property name="caption"></property>
4856+ <property name="caption_visible">1</property>
4857+ <property name="center_pane">0</property>
4858+ <property name="close_button">1</property>
4859+ <property name="context_help"></property>
4860+ <property name="context_menu">1</property>
4861+ <property name="default_pane">0</property>
4862+ <property name="dock">Dock</property>
4863+ <property name="dock_fixed">0</property>
4864+ <property name="docking">Left</property>
4865+ <property name="enabled">1</property>
4866+ <property name="fg"></property>
4867+ <property name="floatable">1</property>
4868+ <property name="font"></property>
4869+ <property name="gripper">0</property>
4870+ <property name="hidden">0</property>
4871+ <property name="id">wxID_ANY</property>
4872+ <property name="max_size"></property>
4873+ <property name="maximize_button">0</property>
4874+ <property name="maximum_size"></property>
4875+ <property name="min_size"></property>
4876+ <property name="minimize_button">0</property>
4877+ <property name="minimum_size"></property>
4878+ <property name="moveable">1</property>
4879+ <property name="name">m_staticline1</property>
4880+ <property name="pane_border">1</property>
4881+ <property name="pane_position"></property>
4882+ <property name="pane_size"></property>
4883+ <property name="permission">protected</property>
4884+ <property name="pin_button">1</property>
4885+ <property name="pos"></property>
4886+ <property name="resize">Resizable</property>
4887+ <property name="show">1</property>
4888+ <property name="size"></property>
4889+ <property name="style">wxLI_HORIZONTAL</property>
4890+ <property name="subclass"></property>
4891+ <property name="toolbar_pane">0</property>
4892+ <property name="tooltip"></property>
4893+ <property name="window_extra_style"></property>
4894+ <property name="window_name"></property>
4895+ <property name="window_style"></property>
4896+ <event name="OnChar"></event>
4897+ <event name="OnEnterWindow"></event>
4898+ <event name="OnEraseBackground"></event>
4899+ <event name="OnKeyDown"></event>
4900+ <event name="OnKeyUp"></event>
4901+ <event name="OnKillFocus"></event>
4902+ <event name="OnLeaveWindow"></event>
4903+ <event name="OnLeftDClick"></event>
4904+ <event name="OnLeftDown"></event>
4905+ <event name="OnLeftUp"></event>
4906+ <event name="OnMiddleDClick"></event>
4907+ <event name="OnMiddleDown"></event>
4908+ <event name="OnMiddleUp"></event>
4909+ <event name="OnMotion"></event>
4910+ <event name="OnMouseEvents"></event>
4911+ <event name="OnMouseWheel"></event>
4912+ <event name="OnPaint"></event>
4913+ <event name="OnRightDClick"></event>
4914+ <event name="OnRightDown"></event>
4915+ <event name="OnRightUp"></event>
4916+ <event name="OnSetFocus"></event>
4917+ <event name="OnSize"></event>
4918+ <event name="OnUpdateUI"></event>
4919+ </object>
4920+ </object>
4921+ <object class="sizeritem" expanded="1">
4922+ <property name="border">5</property>
4923+ <property name="flag">wxALL|wxEXPAND</property>
4924+ <property name="proportion">0</property>
4925+ <object class="wxStdDialogButtonSizer" expanded="1">
4926+ <property name="Apply">0</property>
4927+ <property name="Cancel">1</property>
4928+ <property name="ContextHelp">0</property>
4929+ <property name="Help">0</property>
4930+ <property name="No">0</property>
4931+ <property name="OK">1</property>
4932+ <property name="Save">0</property>
4933+ <property name="Yes">0</property>
4934+ <property name="minimum_size"></property>
4935+ <property name="name">m_sdbSizer</property>
4936+ <property name="permission">protected</property>
4937+ <event name="OnApplyButtonClick"></event>
4938+ <event name="OnCancelButtonClick">OnCancelClick</event>
4939+ <event name="OnContextHelpButtonClick"></event>
4940+ <event name="OnHelpButtonClick"></event>
4941+ <event name="OnNoButtonClick"></event>
4942+ <event name="OnOKButtonClick">OnOkClick</event>
4943+ <event name="OnSaveButtonClick"></event>
4944+ <event name="OnYesButtonClick"></event>
4945+ </object>
4946+ </object>
4947+ </object>
4948+ </object>
4949+ </object>
4950+</wxFormBuilder_Project>
4951
4952=== added file 'eeschema/BOM/dialogs/dialog_build_BOM_base.h'
4953--- eeschema/BOM/dialogs/dialog_build_BOM_base.h 1970-01-01 00:00:00 +0000
4954+++ eeschema/BOM/dialogs/dialog_build_BOM_base.h 2015-06-20 07:42:20 +0000
4955@@ -0,0 +1,83 @@
4956+///////////////////////////////////////////////////////////////////////////
4957+// C++ code generated with wxFormBuilder (version Oct 8 2012)
4958+// http://www.wxformbuilder.org/
4959+//
4960+// PLEASE DO "NOT" EDIT THIS FILE!
4961+///////////////////////////////////////////////////////////////////////////
4962+
4963+#ifndef __DIALOG_BUILD_BOM_BASE_H__
4964+#define __DIALOG_BUILD_BOM_BASE_H__
4965+
4966+#include <wx/artprov.h>
4967+#include <wx/xrc/xmlres.h>
4968+#include <wx/intl.h>
4969+class DIALOG_SHIM;
4970+
4971+#include "dialog_shim.h"
4972+#include <wx/string.h>
4973+#include <wx/checkbox.h>
4974+#include <wx/gdicmn.h>
4975+#include <wx/font.h>
4976+#include <wx/colour.h>
4977+#include <wx/settings.h>
4978+#include <wx/sizer.h>
4979+#include <wx/statbox.h>
4980+#include <wx/radiobox.h>
4981+#include <wx/statline.h>
4982+#include <wx/button.h>
4983+#include <wx/dialog.h>
4984+
4985+///////////////////////////////////////////////////////////////////////////
4986+
4987+///////////////////////////////////////////////////////////////////////////////
4988+/// Class DIALOG_BUILD_BOM_BASE
4989+///////////////////////////////////////////////////////////////////////////////
4990+class DIALOG_BUILD_BOM_BASE : public DIALOG_SHIM
4991+{
4992+ private:
4993+
4994+ protected:
4995+ enum
4996+ {
4997+ ID_RADIOBOX_SELECT_FORMAT = 1000
4998+ };
4999+
5000+ wxCheckBox* m_ListCmpbyRefItems;
The diff has been truncated for viewing.