Changes

Jump to navigation Jump to search
711 bytes removed ,  07:23, 16 April 2009
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.
   −
Whole  design can be divided into three parts
     −
  Input  ---------  Processing  ----------- Output
+
==== Technical Approach ====
   −
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 )
+
Below is the technical abstract for Marbles:
   −
:'''Input'''
+
:[[Image:marbles-flowchart.png|left| Marlbes-development environment.]]
# 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'''
+
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.
       
  −
#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 ).
+
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.
   −
:'''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.
     −
==== Technical Approach ====  
+
===== 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.
   −
Below is the technical abstract for Marbles:
     −
===== With LibGlade library =====
      
#Choosing UI widgets and dropping on canvas ( view )            |
 
#Choosing UI widgets and dropping on canvas ( view )            |
Line 110: Line 96:  
#Option for Activity creation, Exporting to xo bundle, Debugging tool for Developers, sharing of code etc. | - Post building activities  
 
#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 then be saved in glade-format file. this temporary glade file will then be read using libglade library in python and output will then be shown on canvas.  
+
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.  
 
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.
 
Post-building activities like activity creation from python source code, sharing source code using xo bundle can be done later.
  −
I have also made a plan without libglade library but after getting suggestions from sugar members, I removed that in my technical approach. Whole design is thus made very simple.
  −
  −
      
==== Design Goals ====
 
==== Design Goals ====
122

edits

Navigation menu