notes/brainstorming.txt
[app.Builder.js] / notes / brainstorming.txt
1 While the editor is not to bad at present there are a few fundimental
2 issues with the design, that could do with some thought
3
4 - Gtk 'big' tree
5 The application builder itself core window is a huge tree that describes the UI
6 This makes working on the thing slower as it's often more difficult to find the related code.
7
8 - Big handlers and methods on objects
9 Kind of related to the big tree issue, the was it's possible to add methods to objects
10 results in quite a bit of the code getting added to a variety of objects in the code
11
12 - Breaking code into 'groups'
13 The cleaner idea here would be to break the code into groups, in such a way that all the 'special'
14 methods for a group of elements would be always at the 'top' level.
15
16  Currently all generated code looks like
17  
18  Window = new XObject({
19     ...... (the tree goes in here..)
20  });
21
22 ... Window.init() <<< This actually causes a build..
23 << It could probably be done outside...
24 XObject.cache['/Windows'] = 'Window'
25
26
27
28
29
30
31
32
33
34
35 -- GTK code needs simplifing so it works better 'out the box'
36 ** get rid of the 'init' methods
37   - basically the XObject base code should handle stuff that is in there.
38   ** this has a knock on effect that we will provide additional 'children' to the tree structure though..
39   
40   eg. to fake a table - we would do something like this..
41     -> Table
42         -> row[] = TableRow
43             -> cel[] = TableCell
44             
45
46
47
48 Building a reference for adding one element to another..
49
50 a widget being added to a box...:
51 a property with 'parent:' describes how it get's added to the parent..
52    parent: = add 
53    parent:add_mnemonic_label = this
54    
55    parent: =  pack_start
56    parent:expand = true
57    parent:fill = true
58    parent:padding = true
59    
60    parent: =  pack_end
61    parent:expand = true
62    parent:fill = true
63    parent:padding = true
64    
65 Widget Information:
66  - parents
67  - interfaces
68  - what it can be added to, and args that need/can  to be used..
69  
70    
71