Make use of the PyGTK framework Kiwi

Registered by Severin H

I recently stumbled over this nice piece of software:

"Kiwi is a Python module for developing graphical applications. While most free software projects that support programming of graphical interfaces concentrate on low-level infrastructure and components, Kiwi provides a high-level framework that helps developers organize their code and develop applications quickly, removing the need to do a lot of low-level work to get basic functionality implemented."

Kiwi has already been around for a while and packages exist for various distributions and it's actively being developed.

It's just a idea, but Kiwi offers much functionality we developed ourself and would help us to reduce the code size in various parts of the application.

Features

* An MVC-derived framework of classes:
   * Views, which represent the graphical display
   * Controllers, which handles user interaction with the widgets
     in a View.
   * Delegates, combines a View and a Controller.
   * Models, which are special mixins for your domain objects
   * Proxies, special types of Delegate designed to implement forms
* Validation: Kiwi supports validation on different levels:
   data type validation and verification on the Model/Proxy level,
   View validation and hooks for visually displaying validation state.
* ObjectList widget, which provides a higher level abstraction of
   GtkTreeView and all its classes (GtkTreeModel, GtkTreeViewColumn,
   GtkCellRenderer) with hooks to easily integrate into the
   Kiwi Framework.
* Mask suport: You can set a mask on entries to force the input to
   follow a certain standard, such as zip code, social security, ip address
* Gazpacho integration for most (non-deprecated) interactive
   widgets with attributes for handling validation and proxy
   attributes.
* UI Test framework
   Features a recorder and a player. The recorder allows you to record
   different tasks, a script will be saved which will reproduce the
   actions you made in the interface.
* Kiwi Tasklets
   Tasklet is a small coroutines framework written by Gustavo Carneiro,
   it was previously known as gtasklets.
* PyGTK utilities, to make it easier to add signals and properties to
   your objects.
* i18n translation utilities, to help you translate PyGTK applications,
   currently depends on gettext and intltool.
* and many other things!

I experimented with it a little and tried to port the server dialog to kiwi. Lines of code before: 122 and using kiwi: 45. This is pretty amazing. The code turned out to be much more readable. I'm going to post a snippet soon.

Things that could be done using kiwi:

- Drop msgfmt.py (already included)
- Drop paths.py (Kiwi has a very nice resource management we can teach LottaNZB's paths in both the installed and uninstalled state)
- Drop util.UITree, util.WidgetHelper, util.Window, util.Message, util.LottaForm (basically much of our own "framework")
- kiwi's ObjectList would be terribly handy for the download, server and mode lists. No more fiddling about populating a ListStore etc.
- Kiwi would also make it much more convenient to extend the base LottaNZB UI using plugins.

http://www.async.com.br/projects/kiwi/

Blueprint information

Status:
Complete
Approver:
None
Priority:
Low
Drafter:
Severin H
Direction:
Needs approval
Assignee:
Severin H
Definition:
Approved
Series goal:
Accepted for 0.4
Implementation:
Implemented
Milestone target:
milestone icon 0.4
Started by
Severin H
Completed by
Severin H

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.