KiCad TODO List
===============

CMAKE
-----
* Add install targets for binaries and resources on Mac.

WXMAC Platform
--------------
* Fix hotkey list to match CMD key
* Fix AddHotkeyName to let wxWidgets handle Ctrl to CMD key
* Fix About dialog crash, or trash wxAboutDialog and create our own
  About dialog to match all platforms. (wxAboutDialog different on platforms)
* Fix toolbar button tooltips.

Common
------
* Grep for @TODO or TODO for sourcecode tasks
* Use doxygen compatible comments on member functions (.h files)
* Add tooltip text to all non-obvious controls in every dialog window.
  Need to do this using DialogBlocks.
* Component and module search displays in which library the
  module or component lives.
* List auto up and down scrolling.
* Integer/long/double input boxes should handle comma and dot separated values,
  not only comma.


ANYONE:
C2) Write a tool to generate DSNLEXER keyword tables (and enums) as *.cpp and
    *.h. Language of tool should probably be C++. As input, the tool should take
    a list of whitespace separated keywords from a text file that is manually
    maintained.  The *.cpp file should be named based on input file name and should
    include the keyword table with a global array.  The *.h file be named based on
    the input file name and should hold the enums and an extern array to the keyword table.
    The enum table should include the core syntactical enums from dsnlexer.h as
    the first negative values.  See enum DSN_T { from specctra.h as example.

    Tool should verify uniqueness of keywords, enforce all lowercase, and sort.
    Spaces are not allowed in keywords, but if whitespace is the delimiter for
    the tool, it will be impossible to specify a keyword with whitespaces in it.

    Use tool in CMake scripts for future grammars, but remember for cross compiling,
    generating and using a tool to run natively on the build machine is a bit tricky with
    CMake.


CvPCB
-----
* Preview of the already assigned footprint.


EESchema
--------
* Use collector classes.
* Drag and drop between two EESchema windows.

Wayne:
E2)  Finish adding replace capability to new Find dialog.
E3)  Hook up perform last library search hot key to replace search libraries for
     component support removed from find dialog.
E4)  Change add component dialog search text control to combobox and add component
     search history save and restore capability.  Also add session save and restore
     to component history list control.  Add advanced search capability similar to
     new find dialog.
E5)  Make escape key work correctly in add component dialog.
E6)  Start initial work for changing component library file format to use Dick's
     dsnlexer.  See note C2 above.  Come up with a workable library file format to
     handle the wishes of the library implementation group.  Add initial clipboard
     support to the library editor.


GerbView
--------
* Need work as good as gerbv from gEDA
  * Named layers
  * List control for layer sort on the fly
* Add excellon2 drill file support (small good library)
* Fix the polygon bug.
* Switch to use ZONE instead of SEGZONE for polygons.





PCBNew
------

Dick:
P2) Write accessors for all items in PCB_VISIBLE such as grid control, so that
    the write accessor can fire change notifications to known listeners.
    (Accessors should always be used in general for every class, but in the case
    of PCB_VISIBLE I think we need them in WinEDA_PcbFrame, BOARD and
    EDA_Settings.
    <class>::IsElementVisible( aPCB_VISIBLE );
    <class>::SetElementVisiblity( aPCB_VISIBLE, bool isVisible );
    Two of the 3 classes already have these functions.  Once the functions are
    in place, it is a simple matter to decide and move where the actual data
    is stored without affecting client code.  The top most access point should
    be WinEDA_PcbVisible, because some data is best retained there and this is
    the "controller" part of MVC in PCBNEW.  Some data is best saved in the BOARD.
    We should go through the list of PCB_VISIBLE and decide on this in a separate email.

*   Fix block copy/move preview to not view only a border, we should
    see the moved/copied parts.

*   Fix DIALOG_PAD_PROPERTIES_BASE class to use actual layer names in the BOARD.

*   Use BOARD_ITEM::MenuIcon() in the onrightclick.cpp
*   Add ARC support to gerber polygons.
*   Need to add polygon aperture type.
    Then example 2 in RS274xrevd_e.pdf will draw properly.


LAYER_WIDGET for PCBNEW (Dick)
-----------------------
L6) Test, and fix up any remaining issues with the PCB_VISIBLE support after P2)
    is done.  This way we can fire change notifications to multiple GUI items
    all interested in the same setting, such as the two grid buttons which
    have to remain synchronized.  Using accessors makes this easy.

L8) LAYER_WIDGET::GetBestSize() needs platform independence.

L9) On board load, ReFill() is called, this should also update the Render
    checkboxes and colors.
