See http://wiki.ktechlab.org/ - not entirely ready yet, but I plan on moving (at least some of) the stuff in this TODO file to this wiki. This allows for better categorization, discussion, etc of ideas than a plain-text file in subversion that only a few people have write access to.

0.4 targets:
* Replace QCanvas with own optimized implementation.
* Only use IDs for items, etc, in ItemDocumentData - otherwise they lead to too many bugs.
* More intelligent connector routing.
* Variable time step in Simulation.
* Fix subcircuits so that they are saved in an itemdocument.


Bugs:
* At the moment, KTechlab auto-detects a point in the circuit to use as ground, according to a set of priorities (e.g. the Ground component has the highest priority, then voltage elements, etc etc). However, some circuits do not have any point which should be considered ground, e.g. "(+9V)-------(Battery)". Suggested solution: detect a point to have as a fixed voltage, that can be anything including 0V.
* Microbe should give "noline" where applicable in show-source (such as in delay routines).

Features:
* Bookmarks in the oscilloscope.
* Work area text: allow clickable URIs, rich text editor.

General TODO:
* optimize microbe some more?

Polishing:
* Informational message when user attempts to paste flowcode into a circuit (can't do so; must save and load into pic).
* On program startup, use "text blobs" pointing to sidebars to explain what they do.
* Update register info even when PIC is paused.
* replace "refresh rate" slider in settings dialog with standard one.


[Being worked on or soon to be worked on]

david:

electronerd:
* refactor the oscilloscope for better code reuse and so I can add a view that looks more like an oscilloscope's screen instead of a printed tape


william:
* In progress:

- variable capacitor/trimmer - Done.
- variable resistor - Done.
- Voltage Regulator - On Hold.
- bar graph display - Done.

* Future Ideas: (leave me a note if anyone wants to do any of these so I know and can remove them)

- crystal oscillator
- 16 seg display
- bridge rectifier
- opto isolator 
- Scmidt NAND
- Schmidt Inverter
- Thyristor
- Zener Diode
- Logic analyser (16 bit) and graph output
- Variable Inductor
- Solenoid ( requires animation )
- Bar Graph Display Driver
=======

The following have been brainstormed with reference to other electronics software I have used. I have found these features useful and these are all wishes for the future that may or may not be relevant to the direction the software takes in the future. I will obviously consult before attempting any of them:

- Model poperty framework for components to include things like wattage, frequency, resistance, etc... of components using specs of manufactured components, with the future goal of accurate simulation of component destruction. This will also allow a parts list to be created when a circuit is completed. Just an idea, up for discussion. 
- Allow labeling of components in circuit, eg. R1, R2, C1, C2 etc.. Maybe a caption facility.
- Right click properties for component model, values with separate value and multiplier selection to make it easier. This could be implemented in the Item editor too.
-Circuit drawing on a black background to better visualise animated wires and logic levels through wires. Different view options: voltage levels, current flow, logic levels, normal(no wire animation of any sort). 
- A means for users to create a circuit which is intended for use in a component, and to link the created circuit to a generic component that automatically creates the required in/out pins with reference to the created component circuit. On top of this, a means for users to submit new components they have created this way to allow the library of components to be built. So instead of a long list of IC's one generic one may be used with a library containing the circuits needed to simulate different types which can be chosen for example through the Item Editor.


Modifications needed for KF5 port
=======
- read this: http://doc.qt.io/qt-4.8/porting4.html

- fix UI files to not use Q3* functionality

- Q3PointArray -> QPolygon ?
- Q3PtrVector -> ?
- Q3ListView -> ?
- K3ListView -> ?
- K3TextEdit -> ?

Fixes that could be postponed after the first Qt4 release
=======
- fix building of the core library first; otherwise missing include file (ktlconfig.h) error could happen at build time
    - the build-scripts have a work-around, and based on that, building should be straight-forward

- maximum size of collected oscilloscope data should be configurable and should signal the user that the buffer is full
    - for now the line "flats out" when it reaches its limit; a Reset makes it collect data again

- undo / redo interface needs to be properly fixed for text documents: this interface is not exported by KDE4 KTextEditor
    http://api.kde.org/4.10-api/kdelibs-apidocs/interfaces/ktexteditor/html/kte_port_to_kde4.html
    - a hack is in place which works

- printing a text document needs fixing
    - hack is in place, it works

- some PICs do not have SDCC support (e.g. Pic18Cxxx). These should not be selectable from the GUI

- minimize the number of bundled 3rd party icons; most should be usable from Oxygen icon theme

- loading C code to PIC fails
    - apparently when using a project, the PIC gets recognized and uploading works; looks like a feature

- components have no description
   - the context help exists; or something else is needed here?
   - missing for: VCVS, VCCS, CCVS, CCCS, Push-to-Make, Push-to-Break, NPN, PNP, n-JFET, p-JFET, n-MOSFET, p-MOSFET,
        Inductor, Bar Graph Display

- created subcircuits appear twice in the subcircuit list; investigation needed
- created subcircuits in some cases they cause crashes; investigation needed

- Translations: not all strings are available in gettext ( https://bugs.kde.org/show_bug.cgi?id=375726 )

- Oscilloscope view sometimes does not scale the signals correctly ( https://bugs.kde.org/show_bug.cgi?id=371625 )

- Op-amp with positive feedback behaves as amplifier; should behave as comparator ( https://bugs.kde.org/show_bug.cgi?id=371622 )


Features which need re-implementation in Qt4 port
=======
- dbus integration for documents (used to be dcop bindings for documents)

- TextDocument::clearUndo / clearRedo is not implemented; only used in newly created documents


Fixes needed for the first release candidate of the Qt4 port
=======
