Better GITHUB class header documentation, better eeschema library field dialog stretching and title.

This commit is contained in:
Dick Hollenbeck 2013-11-27 14:06:41 -06:00
parent cd9da9dd64
commit 1b93203f7c
4 changed files with 92 additions and 59 deletions

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 30 2013)
// C++ code generated with wxFormBuilder (version Nov 5 2013)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@ -43,7 +43,7 @@ DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE
bSizerFiledsList->Add( moveUpButton, 0, wxALL|wxEXPAND, 5 );
bSizerFieldsSetup->Add( bSizerFiledsList, 1, wxEXPAND, 5 );
bSizerFieldsSetup->Add( bSizerFiledsList, 3, wxEXPAND, 5 );
wxBoxSizer* fieldEditBoxSizer;
fieldEditBoxSizer = new wxBoxSizer( wxVERTICAL );
@ -179,7 +179,7 @@ DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE::DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE
fieldEditBoxSizer->Add( fgSizerPosSize, 1, wxEXPAND|wxTOP|wxBOTTOM|wxLEFT, 5 );
bSizerFieldsSetup->Add( fieldEditBoxSizer, 0, wxEXPAND, 5 );
bSizerFieldsSetup->Add( fieldEditBoxSizer, 2, wxEXPAND, 5 );
mainSizer->Add( bSizerFieldsSetup, 1, wxEXPAND, 5 );

View File

@ -20,8 +20,10 @@
<property name="path">.</property>
<property name="precompiled_header"></property>
<property name="relative_path">1</property>
<property name="skip_lua_events">1</property>
<property name="skip_php_events">1</property>
<property name="skip_python_events">1</property>
<property name="ui_table">UI</property>
<property name="use_enum">0</property>
<property name="use_microsoft_bom">0</property>
<object class="Dialog" expanded="1">
@ -45,7 +47,7 @@
<property name="size">-1,-1</property>
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU</property>
<property name="subclass"></property>
<property name="title">Fields Properties</property>
<property name="title">Field Properties</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
@ -103,17 +105,17 @@
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<property name="proportion">3</property>
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizerFiledsList</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">8</property>
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">1</property>
<object class="wxListCtrl" expanded="1">
<object class="wxListCtrl" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -214,11 +216,11 @@
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<object class="wxButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -302,11 +304,11 @@
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<object class="wxButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -390,11 +392,11 @@
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<object class="wxButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -483,7 +485,7 @@
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<property name="proportion">2</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">fieldEditBoxSizer</property>

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 30 2013)
// C++ code generated with wxFormBuilder (version Nov 5 2013)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@ -80,7 +80,7 @@ class DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE : public wxDialog
public:
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Fields Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU );
DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Field Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU );
~DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE();
};

View File

@ -31,57 +31,88 @@ struct GH_CACHE;
/**
* Class GITHUB_PLUGIN
* implements a portion of pcbnew PLUGIN to provide read only access to a github
* repo consisting of pretty footprints. It could have used version 3 of the
Class GITHUB_PLUGIN
implements a portion of pcbnew PLUGIN to provide read only access to a github
repo consisting of pretty footprints. It could have used version 3 of the
github.com API documented here:
<code>
<pre>
http://developer.github.com
https://help.github.com/articles/creating-an-access-token-for-command-line-use
</code>
but it does not. Rather it simply reads in a zip file of the repo and unzips it
from RAM as needed. Therefore the PLUGIN is read only for accessing
remote pretty libraries. The "Library Path" in the fp-lib-table should be set
to the full https:// URL. For example:
<code>
</pre>
but it does not. Rather it simply reads in a zip file of the repo and unzips
it from RAM as needed. <b>Therefore the PLUGIN is read only for accessing
remote pretty libraries at https://github.com.</b> The "Library Path" in the
fp-lib-table row for a Github library should be set to the full https:// URL.
For example:
<pre>
https://github.com/liftoff-sr/pretty_footprints
</code>
</pre>
This is typically https://github.com/user_name/repo_name
This is typically
<pre>
https://github.com/user_name/repo_name
</pre>
<p>
This PLUGIN also supports "Copy On Write", a.k.a. "COW". Thus a Github
library defined in either the fp-lib-table (project or global) will take an
optional option called <b>allow_pretty_writing_to_this_dir</b>. This option
is essentially the "Library Path" for a local Kicad (pretty) library which is
combined to make up the Github library found in the same fp-lib-table row. If
the option is missing, then the Github library is read only as always. If the
option is present for a Github library, then any writes to this library will
go to the local *.pretty directory. Note that the github.com resident portion
of this hybrid COW library is always read only, meaning you cannot delete
anything or modify any footprint at github directly.
<p>
This PLUGIN also supports "Copy On Write", a.k.a "COW". So a library defined
in the fp-lib-table will take an optional option called
<b>allow_pretty_writing_to_this_dir</b> which is essentially the lib_path for
a local Kicad (pretty) library which is combined to make up the Github library.
If the option is missing, then the Github library is read only. If it is present,
then any writes will go to the local *.pretty directory. Any reads will always
give precedence to the local footprints. So once you have written to the local
directory, no github updates will travel down on any footprints for which you've
written locally. Always keep a separate local *.pretty directory for each Github
library, never combine them you will likely create a mess. You must manually
create the local directory in advance, and the directory name must end with ".pretty".
The option <b>allow_pretty_writing_to_this_dir</b> will be path substituted with
any environment variable strings embedded in the option's value, just like the
Any footprint loads will always give precedence to the local footprints found
in the pretty dir given by option <b>allow_pretty_writing_to_this_dir</b>. So
once you have written to the COW library's local directory by doing a
footprint save, no github updates will be seen when loading a footprint by
the same name as one for which you've written locally.
<p>
Always keep a separate local *.pretty directory for each Github library,
never combine them by referring to the same directory more than once. Also,
do not also use the same COW (*.pretty) directory in a "Kicad" fp-lib-table
entry. This would likely create a mess. The COW directory should be manually
created in advance, and the directory name must end with ".pretty". The value
of the option <b>allow_pretty_writing_to_this_dir</b> will be path
substituted with any environment variable strings embedded, just like the
"Library Path" is.
<p>
What's the point of COW? It is to turbo charge the sharing of footprints. If you
periodically email your COW pretty footprints to the Github repo maintainer,
you can help update the Github copy. The idea should be to keep the COW file
set as small as possible. After you've received confirmation that your changes
have been committed up at github.com, you can safely delete your COW file(s)
and those from github.com will flow down.
<p>
Note that if you use the module editor to delete a footprint and it is present
in the COW local dir, it will get deleted from there. However, it may not
be deleted from the library as a whole if the footprint of the same name also
existed in the github repo. In this case deleting the local copy will simply
unmask the one at the github repo. Remember, it is masked out if there is
a local COW copy, since the local copy always takes precedence.
*
* @author Dick Hollenbeck
* @date Original date: 10-Sep-2013
<p>
What's the point of COW? It is to turbo-charge the sharing of footprints. If
you periodically email your COW pretty footprint modifications to the Github
repo maintainer, you can help update the Github copy. Simply email the
individual *.kicad_mod file you find in your COW directories. After you've
received confirmation that your changes have been committed up at github.com,
you can safely delete your COW file(s) and those from github.com will flow
down. Your goal should be to keep the COW file set as small as possible by
contributing frequently to the shared master copies at https://github.com.
<p>
Note that if you use the module editor to delete a footprint and it is
present in the COW local dir, it will get deleted from there. However, it may
not be deleted from the library as a whole if the footprint of the same name
also exists in the github repo. In this case deleting the local copy will
simply unmask the one at the github repo. Remember, it is masked out if there
is a local COW copy, since the local copy always takes precedence. And
remember you cannot modify the github copy except by emailing a COW
modification to the repo maintainer.
@author Dick Hollenbeck
@date Original date: 10-Sep-2013
*/
class GITHUB_PLUGIN : public PCB_IO
{