Marbles: Difference between revisions
No edit summary |
|||
| (8 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 166: | Line 128: | ||
#* 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 } ) | ||
| Line 173: | Line 135: | ||
#* 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. | ||
# '''Coding &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. | ||
#* '''Delieverables''' Release of Marbles-Alpha version for external testing. | |||
#''' Final Evaluation''' ( July 26 - END ) | #''' 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. | ||