Marbles: Difference between revisions
| (31 intermediate revisions by the same user not shown) | |||
| Line 65: | Line 65: | ||
# 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 GUI builder tool for pygtk almost like glade, but would be optimized for sugar environment.Basic components include: | |||
#'''Python'''<br> Python is powerful,easy and fun. It is an excellent choice both for development and usages for children,students as well for professionals for even<br>writing complex applications.if GUI builder is to be compared with RAD, I would say R(Rapid) in RAD stands for python. | |||
#'''GTK+'''<br>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. | |||
==== Technical Approach ==== | ==== Technical Approach ==== | ||
Below is the technical abstract for Marbles: | Below is the technical abstract for Marbles: | ||
:[[Image:marbles-flowchart.png|left| Marlbes-development environment.]] | :[[Image:marbles-flowchart.png|left| Marlbes-development environment.]] | ||
Thanks to '''James Henstridge''' and for his wonderful work on libglade which makes it easier to store the UI widget information and it's actions in xml file called GLADE. Using libglade will not only save the time of development but also makes the Marbles-output as platform independent. We can share the glade file for UI over network and recreate or edit the current glade file to make it more complex. It gives an option for children to play with it. | |||
I have also made a design without libglade library using database storage but after getting suggestions from sugar members, I removed that in my technical approach. Whole design is thus made very simple. Mentors can read that approach in my original GSOC proposal submitted to google. | |||
===== With LibGlade library ===== | |||
'' | Libglade is a library designed to dynamically load a user interface from an XML file on disk. These UI description files can be created using the Glade UI builder. It provides several options for connecting callbacks up to the interface including an `autoconnect' option that scans the program's symbol table for callback functions. | ||
#Choosing UI widgets and dropping on canvas ( view ) | | |||
#Showing the current output on canvas ( Temp glade file ) | - UI builder tool | |||
#Getting the output in Python code | | |||
#Option for Activity creation, Exporting to xo bundle, Debugging tool for Developers, sharing of code etc. | - Post building activities | |||
Creating GTK UI that can show various widgets icons and gives an option to select with the mouse, dragging and then dropping on canvas. It will be saved in glade-format file. this temporary glade file will then be read using libglade library in python and output can be shown on canvas. | |||
After completion of dragging and dropping, User can build the application using build activity in Marbles which takes input a glade file and outputs a python source code ( PyGTK framework ) capable of producing same output as glade does. | |||
Post-building activities like activity creation from python source code, sharing source code using xo bundle can be done later. | |||
==== Design Goals ==== | |||
:'''Design Goals''' | |||
#'''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<br>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<br>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. | |||
#'''Final Considerations'''<br> Below are the final considerations for Marbles (Future goals as well) | |||
#*'''Quality'''<br>prefers quality of features over quantity. | |||
#*'''Promote Collaboration'''<br>Promote collaboration through good documentation, careful modular design and quality code. | |||
#*'''Modularity'''<br>Design will allow extending to other target languages and other GUI toolkits. | |||
| Line 117: | Line 123: | ||
In summer, I plan to follow the following schedule: | In summer, I plan to follow the following schedule: | ||
#Preparation phase( Time : April | #'''Preparation phase'''( Time : April 20 - may15 ) | ||
#*gathering requirements of the project | #*gathering requirements of the project | ||
#*getting involved with Mentor in verifying and validating the requirements. | #*getting involved with Mentor in verifying and validating the requirements. | ||
#* | #* Writing abstract classes for all widgets and specifications | ||
#*This phase, I would be communicating with people as much as possible, getting requirements and verifying <br> with people or community. I would also go to the pre-releases of similar softwares to get prons and cons and trying to improve in | #* Creating of canvas to support widget dragging and dropping. | ||
#Coding Phase ( Time: May | #*This phase, I would be communicating with people as much as possible, getting requirements and verifying <br> with people or community. I would also go to the pre-releases of similar softwares to get prons and cons and trying to improve in my project <br> development.I am sure to get community support on this very interesting project. | ||
#* | #*'''Delieverables''' Final design and technical approach to mentors and getting reviewed by them. | ||
#* | #'''Coding Phase''' ( Time: May 15- July1 { This phase would be subdivided to different phases } ) | ||
#* Implementation of program generator to generate the required code. | |||
#* | #* Creation of programming libraries such as History generation, View modifier, function associations for code generation. | ||
#* | #* Work on intelligent sizers HBOX or VBOX to minimize the use of old technique sizers in UI creation. | ||
#* '''Delieverables''' Basic UI design with dragging and dropping facility for widgets and UI application output as a python code. | |||
#Testing Phase ( Time: July7- July 25 ) | # '''Coding & Internal Testing Phase''' ( Time: July7- July 25 ) | ||
#* | #* Creation of final UI output for UI builder. | ||
#* Creation of help activity for helping students in UI building. | |||
#* Full testing of system with different widgets. | |||
#* use coverage analysis to know the redundance code and improving it further | #* use coverage analysis to know the redundance code and improving it further | ||
#* | #* Documentation support for widgets and UI creation. | ||
#* '''Delieverables''' Release of Marbles-Alpha version for external testing. | |||
#''' Final Evaluation''' ( July 26 - END ) | |||
#* | #* This phase is basically for porting the UI builder solution to sugar's upstream development and checking for bugs in different environment. | ||
#* '''Delieverables''' full said project to sugar community. | |||
# | |||
#* | |||
#* | |||
Time line: Seems very little time to do so many things, but I will try to give the best from my side. | Time line: Seems very little time to do so many things, but I will try to give the best from my side. | ||
I have worked on variety of projects ranging from web application, mobile j2me midlets, Web server management( python project ) and desktop application. One of the interesting projects I worked on is "cross platform windows explorer" which I built in python using wxwidget, in which we handled the issues like portability, searching and UI designs. If I am not exagerating, that would not be wrong to say that I am a fast learner. | I have worked on variety of projects ranging from web application, mobile j2me midlets, Web server management( python project ) and desktop application. One of the interesting projects I worked on is "cross platform windows explorer" which I built in python using wxwidget, in which we (team work) handled the issues like portability, searching and UI designs. If I am not exagerating, that would not be wrong to say that I am a fast learner. | ||
Believe me, I have that talent needed to build and design a complex system for customers. Below are some of the projects I worked on | Believe me, I have that talent needed to build and design a complex system for customers. Below are some of the projects I worked on | ||
| Line 161: | Line 162: | ||
* Check out the source code of shallow file browser at http://code.google.com/p/shallow-file-browser. Do check the snapshot of browser in action. | * Check out the source code of shallow file browser at http://code.google.com/p/shallow-file-browser. Do check the snapshot of browser in action. | ||
* Minute-Shell: Well, it's a part of my course project. I created a small program to emulate linux shell. This code is hosted at http://code.google.com/p/minute-shell/ . | * Minute-Shell: Well, it's a part of my course project. I created a small program to emulate linux shell. This code is hosted at http://code.google.com/p/minute-shell/ . | ||
=== Me and the community === | === Me and the community === | ||