PyGraph - Patch67/Graphics GitHub Wiki
App will allow creation of 2D graphics like a simple CAD / drawing program. It will be able to run on any OS so I've chosen Python.
The app will be as generic as possible so where existing classes must be used they will be wrapped with a simpler interface to match my needs, i.e. tkinter. This will allow me to avoid the complexities of the language whilst getting the most done.
The application will be based around the Composite Design Pattern used to define graphics elements. Line, Circle, Rectangle, Group and Instance. The entire model will be a group object from the Graphics Elements class Graph.py.
There will be a wrapper for each element allowing implementing an output to file method allowing easy export to various graphics file formats; DXF, PDF, Gcode, SVG, etc.
Undo / Redo will be facilitated through use of the Memento Design Pattern, whilst this may become memory inefficient it is the easiest way to achieve the results in the quickest time.
[Clipboard] facilities will be limited to operations within in own sphere, i.e. you can cut, copy paste within the app but not necessarily with other apps. There will be another Graphics Element Group object called clipboard for this purpose.
GUI will appear as follows: -
File Open O ... cmdOpen Save S ... cmdSave Save As ... cmdSaveAs Close ... cmdClose
Edit Undo Z ... cmdUndo Redo ... cmdRedo
Cut X ... cmdCut Copy C ... cmdCopy Paste V ... cmdPaste
Delete ... cmdDelete
Select All A ... cmdSelectAll