Line 64: |
Line 64: |
| # Sharing of code over network, integrating of code in program directly. | | # Sharing of code over network, integrating of code in program directly. |
| # Exception handlers, should be interactive for users and should take minor decisions automatically. | | # Exception handlers, should be interactive for users and should take minor decisions automatically. |
| + | |
| + | ==== Basic Design Principles ==== |
| + | |
| + | Marbles is the pygtk GUI builder tool for pygtk almost like glade, but would be optimized for sugar environment. |
| + | |
| + | #:'''Python''' Python is powerful,easy and fun. It is an excellent choice both for development and usages for children,students as well for professionals for writing complex applications. if GUI builder is to be compared with RAD, I would say R(Rapid) in RAD stands for python. |
| + | #:'''GTK+''' A face for GNOME, Sugar and other desktop managers. |
| + | The python bindings (PyGTK) of this toolkit are elegant and both GTK+ and PYGTK have excellent documentation. |
| + | Whole design can be divided into three parts |
| + | |
| + | Input --------- Processing ----------- Output |
| + | |
| + | Where input is a UI canvas which shows widgets with its correct alignment. Processing is the program generator which takes the information of widgets from the canvas and output is a code generated from program generated ( Python, C/C++ or XRC source ) |
| + | |
| + | ''':Input''' |
| + | # It contains "Visual UI representations", UI builder tool showing the widgets |
| + | # Visual Authoring tool: It contains a canvas on which widgets can be placed. It also contains a tree structure in it's side view to view a tree strucuture to view UI application. |
| + | |
| + | |
| + | ''':Processing''' |
| + | |
| + | #Program Generator: Main spinal cord for the whole system. It takes the input as widget information from canvas and builds a UI code according to it. |
| + | #History generation: It's a module capabable of storing history of widget-activity on canvas. It links with database or files for storing history |
| + | #View Modifier: It's a seperate module and will be designed to remove the old technique of HBOXSIZER or VBOXSIZER. It will take decisions like widget placements, size, display ratio etc. |
| + | #Function Library: It associates the scripts or accelarator tags with widgets to give life to widgets. It would be responsible for "action" in UI application. |
| + | |
| + | |
| + | Output of processing will be a python code ( for now, but can be modified to other programming languages too ). |
| + | |
| + | ''':Output''' |
| + | #Python Source Code for UI application |
| + | #UI application will be launched as a seperated pid to view the UI design. |
| + | #Automatic Activity generation from python source code, if user wants |
| + | #Automatic sharing of activity as xo bundle. |
| + | |
| + | |
| + | ''':Foundations''' |
| + | |
| + | #Good design<br> |
| + | I am greatly impressed by Turtle activity of sugar, and would like to achieve if not same, then try to reach the UI clearity as much as possible. Usability would be primary aim for design. |
| + | #Good help system<br> |
| + | Since it involves various new widgets which children might not know .It better to have help-activity along with GUI builder to offer help to users for building the UI. |
| + | #Automatic Decision System<br> |
| + | Minor decisions for widget placements, size ratio with desktop resolution and other script associations should be done automatically. |
| + | #User Input<br> |
| + | Mouse input is more preferrable than Keyboard input. |
| + | |
| + | ''':And a final set of considerations''' |
| + | |
| + | Here are the final considerations for Marbles. |
| + | #Quality: prefers quality of features over quantity. |
| + | #Promote Collaboration: Promote collaboration through good documentation, careful modular design and quality code. |
| + | #Modularity: Design will allow extending to other target languages and other GUI toolkits. |
| | | |
| | | |