====== Introduction ====== {{ :en:dev:gribouillis2:gribouillis2_pymui2.jpg?256}} **Gribouillis2** is the successor of my first try to make a higly portable painting program. Goals are: - Highly portable - Close to the host GUI toolkit - Easy to modify - Able to uses tablet specific features (pressure, tilt, ...) - Rich features like layers, undo/redo historic, multi-documents, and so on {{ :en:dev:gribouillis2:gribouillis2_ellipse.jpg?256}} To reach them **Gribouillis2** uses following technologies: * **[[http://www.python.org/|Python 2.x]]** : (portability, easy modifications). * **[[http:///|PureMVC]]** : (like python, gives a framework for a graphic application, virualize the GUI toolkit used). * **[[..:pymui:start|PyMUI]]** : MUI Python binding (MorphOS) * **[[http://www.pygtk.org/|PyGTK]]** : GTK+ Python binding (others platforms) * **[[http://cairographics.org/pycairo/|PyCairo]]** : (rendering, portability) ===== Targets ===== **Gribouillis2 is designed to be simple**: it's not (for the moment...) an image editor/manipulator. It takes some ideas seen since a long time on Amiga, but also on OS stamped //modern//, like Linux.\\ We'll find some similarities with following projects: [[http://www.chibipaint.com/|ChibiPaint]], [[http://drawpile.sourceforge.net/|DrawPile]], [[http://www.flowpaint.org/|FlowPaint]], [[http://www.koffice.org/krita/|Krita]], [[http://mypaint.intilinux.com/|MyPaint]] and [[http://sourceforge.net/projects/qaquarelle/|Qaquarelle]]. ====== Downloads and Installation ====== **Current version is 2.7 (r333).** ===== Standalones Binaries ===== Nothing more to install more than just unpack the archive((Do not run Gribouillis from RAM: on MorphOS platform)) on your hard-disk and run it! ^ Platform ^ URI ^ Size ^ MD5 ^ | MorphOS | **[[http://www.yomgui.fr/projects/Gribouillis-2.7.morphos-r333-standalone.lha|Standalone - v2.7 r333]]** | 12.7MB | 1de957c0071798fd0eb85bc008e93f8c | | Linux | //Not available yet// ||| ===== Simple/Update Binaries ===== These versions contains only the code of Gribouillis itself and not dependencies.\\ So to use it you need to install them (described below). Useful for updates or if you've already these dependencies installed on your system. ^ Platform ^ URI ^ Size ^ MD5 ^ | MorphOS | **[[http://www.yomgui.fr/projects/Gribouillis-2.7.morphos-r333.lha|Simple - v2.7 r333]]** | 349.0kB | 23d888eb15e00f60e635f4ffa771726d | | Linux | //Not available yet// ||| ===== Sources ===== Sources are available as snapshot of the same revision used to generate binaries releases.\\ Only if you know how to build it yourself (eg. for other another platforms) or for you information ;-). **[[http://www.yomgui.fr/projects/Gribouillis-2.7-r333-sources.lha|Sources - v2.7 r333 - 184.3kB]]**\\ //md5sum: 818f9a4dd53d2d5ea61bad45cf591618// ====== Dependencies ====== Non standalone versions require following dependencies: * [[..:python:rel2x:start|Python 2.x, r144 or better]] * [[..:pymui:start|PyMUI-v0.4, r238 or better]] * [[..:python:rel2x:start#PyCairo|PyCairo, 1.8.2]] (this is a MorphOS binary archive, [[http://www.cairographics.org/pycairo/|official web site here]]) * [[..:python:rel2x:start#Python Imaging Library|Python Imaging Library, 1.1.7, r10]] * [[http://puremvc.org/pages/downloads/Python/PureMVC_Python.zip|PureMVC - Official Python release)]] to install using command ''python setup.py install'' inside the root directory of PureMVC sources (requires Python installed). ====== Credits ====== * Gribouillis2 icons from [[http://amigaos0morphos.olympe-network.com/|PatBest]]. ====== Licenses ====== * Gribouillis2 files (binaries/sources) are released under [[http://www.opensource.org/licenses/mit-license.php|the MIT License]].\\ * Gribouillis2 is released with [[http://code.google.com/p/pypng/|PyPNG]] module, also under [[http://www.opensource.org/licenses/mit-license.php|the MIT License]]. ====== Bugs and limitations ====== //(This category is only maintained for the current release and subject of changes).// ===== General ===== * Only OpenRaster (.ora) and PNG (.png) for saving, but loading is limited by the PIL formats support. * Pick mode (press 'p' on PyMUI port) takes color only from first layer. * CPU is often overloaded even with small brush. ===== PyMUI specific ===== * Waiting for your feedback ;-). ===== PyGTK specific ===== * Where is the release! ====== Technical aspects ====== ===== Portability ===== Numerous others supposed cross-platform projects fail to reach this goal due to miss-understanding of used technologies. This is mostly seen for applications using //graphic user interfaces// (GUI).\\ Almost //cross-platform// projects try to find a toolkit adapted to the application's main language. This portable toolkits are written to expose the most common denominator between native GUI toolkits on each system.\\ Unfortunately most of the time these toolkits differs largely from each one, causing troubles and difficulties to keep nice API interface and system-friendly aspect in the same toolkit.\\ Except the language used, this is one reason of existence of so many //portable// GUI toolkits.\\ Consequence of this, toolkits don't try to expand to much their portability and limit their native support.\\ And for thus that don't try (like WxWidgets) to limit, porting them is a nightmare and even official examples are littered with platform conditional blocks to make them work. So is another solution exists?\\ I think yes, I've found my solution just by using a not so young software design pattern knowns as **MVC**.\\ The idea is to apply the MVC rules stricly: user interface (UI) is loosely coupled of the functionality.\\ MVC stands for //Model-View-Controler//: This is not a new thing in software development, but this concept was never be used in a whole to separate platforms UI backends (aka //the GUI toolkits//). So now the overall design is chosen, remains to find the language: **Python** is a good candidate! Why? * Python tries to be multi-platforms and highly portable (even if I found its C implementation mostly designed for POSIX), and Python interpretor exists in many forms (C, Java, ...). * Most of native toolkits have their binding in Python. * Python has a well documented C-API and the language is easily extensible using dynamic modules. * It's a script language, modifications don't need recompilation from clever maintainers. * An well-known simple MVC framework exists for Python: **PureMVC**. ===== Rich features ===== One of the main features of **Gribouillis2** (other than it's true multi-platform design ;-)) is to not put limit to the drawing surface: you can always grow your image in all direction, it's **border-less** (excepted when saving obviously). ====== Gallery ====== ===== MorphOS/PyMUI ===== {{gallery> .?gribouillis2_pymui* }} {{gallery> .?g2_* }} //Thanks to Sebastien Poelzl for PyMUI snapshots// ===== Linux/PyGTK ===== {{gallery> .?gribouillis2_pygtk* }} ====== TODO ====== * Add possibility to move a layer independently on the canvas (layer offset). * //[in progress]// Increase brush features and positional events handling. * More tools like mirrors? * More save file formats. * Save in 16bits than 8bits. * Add CYMK colorspace support. * ====== Teaser ====== The Future of Gribouillis2 (currently named Project GB3 until I found a suitable name): {{ :en:dev:gribouillis2:gb3_teaser1.jpg?450 |Multiple views of the same document}}