Marbles: Difference between revisions
No edit summary |
|||
| (9 intermediate revisions by the same user not shown) | |||
| Line 73: | Line 73: | ||
#*The python bindings (PyGTK) of this toolkit are elegant and both GTK+ and PYGTK have excellent documentation. | #*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 ==== | ||
| Line 161: | Line 123: | ||
In summer, I plan to follow the following schedule: | In summer, I plan to follow the following schedule: | ||
#Preparation phase( Time : April 20 - may15 ) | #'''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 | #* Writing abstract classes for all widgets and specifications | ||
#* Creating of canvas to support widget dragging and dropping. | #* Creating of canvas to support widget dragging and dropping. | ||
#*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 | #*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. | #*'''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 } ) | #'''Coding Phase''' ( Time: May 15- July1 { This phase would be subdivided to different phases } ) | ||
#* Implementation of program generator to generate the required code. | #* Implementation of program generator to generate the required code. | ||
#* Creation of programming libraries such as History generation, View modifier, function associations for code generation. | #* 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. | #* 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. | #* '''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 final UI output for UI builder. | ||
#* Creation of help activity for helping students in UI building. | #* Creation of help activity for helping students in UI building. | ||
| Line 179: | Line 141: | ||
#* 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. | #* Documentation support for widgets and UI creation. | ||
# Final Evaluation ( July 26 - END ) | #* '''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. | #* 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. | #* '''Delieverables''' full said project to sugar community. | ||
| Line 185: | Line 148: | ||
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 | ||