X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Sample%2FWindow.js;h=66223918e5d0ce636d01b93ebf5a9895061cf470;hb=f927f87326fa8196765f0c524cb514a2152f66c3;hp=20fb2039115f8310f0af691298cfd1c7577bc6e2;hpb=4058e5d7076f913dc85274d9c41075ba19b80a37;p=app.Builder.js
diff --git a/Sample/Window.js b/Sample/Window.js
index 20fb20391..66223918e 100644
--- a/Sample/Window.js
+++ b/Sample/Window.js
@@ -7,13 +7,34 @@ GObject = imports.gi.GObject;
GtkSource = imports.gi.GtkSource;
WebKit = imports.gi.WebKit;
Vte = imports.gi.Vte;
+GtkClutter = imports.gi.GtkClutter;
+Gdl = imports.gi.Gdl;
console = imports.console;
XObject = imports.XObject.XObject;
Window=new XObject({
xtype: Gtk.Window,
- type : Gtk.WindowType.TOPLEVEL,
- title : "Application Builder",
+ listeners : {
+ delete_event : function (self, event) {
+ return false;
+ },
+ destroy : function (self) {
+ Gtk.main_quit();
+ },
+ show : function (self) {
+ print("WINDOW SHOWING - trying to hide");
+ imports.Builder.Provider.ProjectManager.ProjectManager.loadConfig();
+ this.get('/MidPropTree').hideWin();
+ this.get('/RightPalete').hide();
+ this.get('/BottomPane').el.hide();
+ //this.get('/Editor').el.show_all();
+
+ }
+ },
border_width : 0,
+ default_height : 500,
+ default_width : 800,
+ id : "Window",
+ title : "Application Builder",
init : function() {
this.atoms = {
"STRING" : Gdk.atom_intern("STRING")
@@ -32,28 +53,10 @@ Window=new XObject({
},
- default_width : 800,
- default_height : 500,
- id : "Window",
setTitle : function(str) {
this.el.set_title(this.title + ' - ' + str);
},
- listeners : {
- delete_event : function (self, event) {
- return false;
- },
- destroy : function (self) {
- Gtk.main_quit();
- },
- show : function (self) {
- print("WINDOW SHOWING - trying to hide");
- imports.Builder.Provider.ProjectManager.ProjectManager.loadConfig();
- this.get('/MidPropTree').hideWin();
- this.get('/RightPalete').hide();
- this.get('/BottomPane').el.hide();
-
- }
- },
+ type : Gtk.WindowType.TOPLEVEL,
items : [
{
xtype: Gtk.VBox,
@@ -212,7 +215,7 @@ Window=new XObject({
activate : function (self, event) {
var js = this.get('/LeftTree.model').toJS();
if (js && js[0]) {
- this.get('/RightBrowser.view').renderJS(js[0]);
+ this.get('/RightBrowser.view').renderJS(js[0], true);
}
return false;
}
@@ -262,7 +265,7 @@ Window=new XObject({
html = html.replace('', project.runhtml + '');
- var jsstr = JSON.stringify(js[0], null, 4);
+ var jsstr = JSON.(js[0], null, 4);
var runbuilder = '';
+
+
+ this.runhtml = this.runhtml || '';
+
+ if ((project.runhtml != this.runhtml) || (this.redraws > 10)) {
// then we need to reload the browser using
// load_html_string..
@@ -2957,13 +3162,6 @@ Window=new XObject({
var runhtml = ''+ "\n" ;
- // this.runhtml = ''+ "\n" ;
- // this.runhtml += ''+ "\n" ;
- // this.runhtml += ''+ "\n" ;
this.runhtml = project.runhtml;
// need to modify paths
@@ -2975,27 +3173,27 @@ Window=new XObject({
print("LOAD HTML " + html);
this.el.load_html_string( html ,
//fixme - should be a config option!
- 'http://www.akbkhome.com/e/'
+ 'http://localhost/app.Builder/'
);
- // should trigger load_finished!
+ this.redraws = 0;
+ // should trigger load_finished! - which in truns shoudl set refresh Required;
return;
}
- this.pendingRedraw = false;
-
this.renderedData = data;
- var str = JSON.stringify(data) ;
+ var str = JSON.(data) ;
if (!this.ready) {
console.log('not loaded yet');
}
- //Seed.print("RENDER:" + str);
- //imports.File.File.write('/tmp/builder.debug.js', "Builder.render(" + JSON.stringify(data) + ");");
-
- this.el.execute_script("Builder.render(" + JSON.stringify(data) + ");");
-
+ this.lastRedraw = new Date();
+
+ this.el.execute_script("Builder.render(" + JSON.(data) + ");");
+ print( "before render" + this.lastRedraw);
+ print( "after render" + (new Date()));
+
}
}
]
@@ -3020,32 +3218,21 @@ Window=new XObject({
this.highlightWidget = false;
this.withDebug = false;
-
- if (this.renderedEl) {
- this.get('view').el.remove(this.renderedEl);
- this.renderedEl.destroy();
- this.renderedEl = false;
+ while (this.get('view').el.get_children().length) {
+ var c = this.get('view').el.get_children()[0];
+ this.get('view').el.remove(c);
+ c.destroy();
}
- if (!data) {
- return;
+ if (!data) {
+ return;
}
+
var tree = this.get('/LeftTree.model').toJS(false,true)[0];
// in theory tree is actually window..
try {
- if (tree['|xns'] == 'GtkClutter') {
- GtkClutter = imports.gi.GtkClutter;
- GtkClutter.init(null,null);
- this.renderedEl = new GtkClutter.Embed();
-
- //this.renderedEl.set_usize(500,500);
- this.get('view').el.add(this.renderedEl);
-
- this.viewAdd(tree.items[0], this.renderedEl);
- this.renderedEl.show_all();
- } else {
-
+
this.renderedEl = this.viewAdd(tree.items[0], this.get('view').el);
- }
+
} catch (e) {
print(e.message);
return;
@@ -3053,11 +3240,12 @@ Window=new XObject({
this.get('view').el.set_size_request(
tree.default_width * 1 || 400, tree.default_height * 1 || 400
) ;
-
- this.renderedEl.set_size_request(
- tree.default_width || 600,
- tree.default_height || 400
- );
+ if (this.renderedEl) {
+ this.renderedEl.set_size_request(
+ tree.default_width || 600,
+ tree.default_height || 400
+ );
+ }
this.get('view').el.show_all();
@@ -3116,17 +3304,30 @@ Window=new XObject({
*/
},
viewAdd : function(item, par)
- {
+ {
+
// does something similar to xobject..
- item.pack = (typeof(item.pack) == 'undefined') ? 'add' : item.pack;
+ //item.pack = (typeof(item.pack) == 'undefined') ? 'add' : item.pack;
+ // pack is forced to 'false'
if (item.pack===false || item.pack === 'false') { // no ;
return;
}
+
print("CREATE: " + item['|xns'] + '.' + item['xtype']);
+
+
var type = item['|xns'] + '.' + item['xtype'];
+
+ if (item['|xns'] == 'GtkClutter') { // we can not add this yet!
+ return false;
+ }
+
var ns = imports.gi[item['|xns']];
- var ctr = ns[item['xtype']];
+ var ctr = ns[item['xtype']]; // why are we using array here..?
+
+
+
var ctr_args = { };
for(var k in item) {
var kv = item[k];
@@ -3144,13 +3345,13 @@ Window=new XObject({
) {
continue;
}
-
+ // value is a function..
if (k[0] == '|' && typeof(kv) == 'string') {
if (kv.match(new RegExp('function'))) {
continue;
}
- print("WASL " + k + '=' + kv);
+ print("WASL " + k + '=' + kv);
try {
eval( 'kv = ' + kv);
} catch(e) { continue; }
@@ -3170,10 +3371,18 @@ Window=new XObject({
ctr_args[k] = kv;
}
-
+ var altctr = XObject.baseXObject({ xtype: ctr} );
+ var pack_m = false;
+ if (!item.pack && altctr) {
+ // try XObject.
+ print("SETTING PACK TO XObjectBase method");
+ pack_m = altctr.prototype.pack;
+
+
+ }
var el = new ctr(ctr_args);
-
+ item.el = el;
print("PACK" + item.pack);
//console.dump(item.pack);
@@ -3181,26 +3390,27 @@ Window=new XObject({
var args = [];
- var pack_m = false;
- if (typeof(item.pack) == 'string') {
-
- item.pack.split(',').forEach(function(e, i) {
+ if (!pack_m) {
+ item.pack = (typeof(item.pack) == 'undefined') ? 'add' : item.pack;
+ if (typeof(item.pack) == 'string') {
+
+ item.pack.split(',').forEach(function(e, i) {
+
+ if (e == 'false') { args.push( false); return; }
+ if (e == 'true') { args.push( true); return; }
+ if (!isNaN(parseInt(e))) { args.push( parseInt(e)); return; }
+ args.push(e);
+ });
+ //print(args.join(","));
- if (e == 'false') { args.push( false); return; }
- if (e == 'true') { args.push( true); return; }
- if (!isNaN(parseInt(e))) { args.push( parseInt(e)); return; }
- args.push(e);
- });
- //print(args.join(","));
-
- pack_m = args.shift();
- } else {
- pack_m = item.pack.shift();
- args = item.pack;
+ pack_m = args.shift();
+ } else {
+ pack_m = item.pack.shift();
+ args = item.pack;
+ }
}
-
// handle error.
- if (pack_m && typeof(par[pack_m]) == 'undefined') {
+ if (typeof(pack_m) == 'string' && typeof(par[pack_m]) == 'undefined') {
throw {
name: "ArgumentError",
message : 'pack method not available : ' + par.id + " : " + par + '.' + pack_m +
@@ -3215,17 +3425,21 @@ Window=new XObject({
args.unshift(el);
//if (XObject.debug) print(pack_m + '[' + args.join(',') +']');
//Seed.print('args: ' + args.length);
- if (pack_m) {
+ if (typeof(pack_m) == 'string') {
par[pack_m].apply(par, args);
+ } else if (pack_m) {
+ pack_m.call(item, par, item);
}
var _this = this;
item.items = item.items || [];
item.items.forEach(function(ch,n) {
- print ("type:" + type);
+ print ("type:" + type);
- print ("ch.pack:" + ch.pack);
+ print ("ch.pack:" + ch.pack);
+
+
if (type == 'Gtk.Table' && ch.pack == 'add') {
var c = n % item.n_columns;
var r = Math.floor(n/item.n_columns);
@@ -3253,7 +3467,7 @@ Window=new XObject({
el.signal.drag_motion.connect(XObject.createDelegate(this.widgetDragMotionEvent, this,[ item ], true));
el.signal.drag_drop.connect(XObject.createDelegate(this.widgetDragDropEvent, this, [ item ], true));
el.signal.button_press_event.connect(XObject.createDelegate(this.widgetPressEvent, this, [ item ], true ));
- el.signal.button_release_event.connect(XObject.createDelegate(this.widgetReleaseEvent, this, [ item ], true ));
+ el.signal.button_release_event.connect(XObject.createDelegate(this.widgetReleaseEvent, this, [ item ], true ));
} catch(e) {
// ignore!
}
@@ -3604,94 +3818,11 @@ Window=new XObject({
pack : "add",
init : function() {
XObject.prototype.init.call(this);
- this.el.set_tab_label(this.items[0].el, new Gtk.Label({ label : "Code Editor" }));
- this.el.set_tab_label(this.items[1].el, new Gtk.Label({ label : "Console" }));
- this.el.set_tab_label(this.items[2].el, new Gtk.Label({ label : "Inspector" }));
+ //this.el.set_tab_label(this.items[0].el, new Gtk.Label({ label : "Code Editor" }));
+ this.el.set_tab_label(this.items[0].el, new Gtk.Label({ label : "Console" }));
+ this.el.set_tab_label(this.items[1].el, new Gtk.Label({ label : "Inspector" }));
},
items : [
- {
- xtype: Gtk.ScrolledWindow,
- pack : "add",
- id : "RightEditor",
- items : [
- {
- xtype: GtkSource.View,
- pack : "add",
- id : "view",
- init : function() {
- XObject.prototype.init.call(this);
- var description = Pango.Font.description_from_string("monospace")
- description.set_size(8000);
- this.el.modify_font(description);
-
- },
- load : function(str) {
-
- // show the help page for the active node..
- this.get('/Help').show();
-
-
- this.get('/BottomPane').el.set_current_page(0);
- this.el.get_buffer().set_text(str, str.length);
- var lm = GtkSource.LanguageManager.get_default();
-
- this.el.get_buffer().set_language(lm.get_language('js'));
- var buf = this.el.get_buffer();
- var cursor = buf.get_mark("insert");
- var iter= new Gtk.TextIter;
- buf.get_iter_at_mark(iter, cursor);
- iter.set_line(1);
- iter.set_line_offset(4);
- buf.move_mark(cursor, iter);
-
-
- cursor = buf.get_mark("selection_bound");
- iter= new Gtk.TextIter;
- buf.get_iter_at_mark(iter, cursor);
- iter.set_line(1);
- iter.set_line_offset(4);
- buf.move_mark(cursor, iter);
-
- this.el.grab_focus();
- },
- insert_spaces_instead_of_tabs : true,
- indent_width : 4,
- auto_indent : true,
- show_line_numbers : true,
- items : [
- {
- xtype: GtkSource.Buffer,
- pack : "set_buffer",
- listeners : {
- changed : function (self) {
- var s = new Gtk.TextIter();
- var e = new Gtk.TextIter();
- this.el.get_start_iter(s);
- this.el.get_end_iter(e);
- var str = this.el.get_text(s,e,true);
- try {
- Seed.check_syntax('var e = ' + str);
- } catch (e) {
- this.get('/RightEditor.view').el.modify_base(Gtk.StateType.NORMAL, new Gdk.Color({
- red: 0xFFFF, green: 0xCCCC , blue : 0xCCCC
- }));
- print("SYNTAX ERROR IN EDITOR");
- print(e);
- console.dump(e);
- return;
- }
- this.get('/RightEditor.view').el.modify_base(Gtk.StateType.NORMAL, new Gdk.Color({
- red: 0xFFFF, green: 0xFFFF , blue : 0xFFFF
- }));
-
- this.get('/LeftPanel.model').changed( str , false);
- }
- }
- }
- ]
- }
- ]
- },
{
xtype: Gtk.ScrolledWindow,
pack : "add",
@@ -3835,48 +3966,6 @@ Window=new XObject({
items : [
{
xtype: Gtk.TreeView,
- pack : "add",
- init : function() {
- XObject.prototype.init.call(this);
- this.el.set_size_request(150,-1);
- // set_reorderable: [1]
-
- var description = new Pango.FontDescription.c_new();
- description.set_size(8000);
- this.el.modify_font(description);
-
- this.selection = this.el.get_selection();
- this.selection.set_mode( Gtk.SelectionMode.SINGLE);
- // this.selection.signal['changed'].connect(function() {
- // _view.listeners['cursor-changed'].apply(_view, [ _view, '']);
- //});
- // see: http://live.gnome.org/GnomeLove/DragNDropTutorial
-
- Gtk.drag_source_set (
- this.el, /* widget will be drag-able */
- Gdk.ModifierType.BUTTON1_MASK, /* modifier that will start a drag */
- null, /* lists of target to support */
- 0, /* size of list */
- Gdk.DragAction.COPY /* what to do with data after dropped */
- );
- //Gtk.drag_source_set_target_list(this.el, LeftTree.targetList);
-
- Gtk.drag_source_set_target_list(this.el, this.get('/Window').targetList);
- Gtk.drag_source_add_text_targets(this.el);
- /*
- print("RP: TARGET:" + LeftTree.atoms["STRING"]);
- targets = new Gtk.TargetList();
- targets.add( LeftTree.atoms["STRING"], 0, 0);
- targets.add_text_targets( 1 );
- Gtk.drag_dest_set_target_list(this.el, LeftTree.targetList);
-
- //if you want to allow text to be output elsewhere..
- //Gtk.drag_source_add_text_targets(this.el);
- */
- return true;
- },
- headers_visible : false,
- enable_tree_lines : true,
listeners : {
drag_begin : function (self, ctx) {
// we could fill this in now...
@@ -3929,8 +4018,58 @@ Window=new XObject({
this.el.dropList = false;
this.get('/LeftTree.view').highlight(false);
return true;
+ },
+ button_press_event : function (self, event) {
+
+ if (!this.get('/Editor').save()) {
+ // popup!! - click handled..
+ return true;
+ }
+ return false;
}
},
+ pack : "add",
+ enable_tree_lines : true,
+ headers_visible : false,
+ init : function() {
+ XObject.prototype.init.call(this);
+ this.el.set_size_request(150,-1);
+ // set_reorderable: [1]
+
+ var description = new Pango.FontDescription.c_new();
+ description.set_size(8000);
+ this.el.modify_font(description);
+
+ this.selection = this.el.get_selection();
+ this.selection.set_mode( Gtk.SelectionMode.SINGLE);
+ // this.selection.signal['changed'].connect(function() {
+ // _view.listeners['cursor-changed'].apply(_view, [ _view, '']);
+ //});
+ // see: http://live.gnome.org/GnomeLove/DragNDropTutorial
+
+ Gtk.drag_source_set (
+ this.el, /* widget will be drag-able */
+ Gdk.ModifierType.BUTTON1_MASK, /* modifier that will start a drag */
+ null, /* lists of target to support */
+ 0, /* size of list */
+ Gdk.DragAction.COPY /* what to do with data after dropped */
+ );
+ //Gtk.drag_source_set_target_list(this.el, LeftTree.targetList);
+
+ Gtk.drag_source_set_target_list(this.el, this.get('/Window').targetList);
+ Gtk.drag_source_add_text_targets(this.el);
+ /*
+ print("RP: TARGET:" + LeftTree.atoms["STRING"]);
+ targets = new Gtk.TargetList();
+ targets.add( LeftTree.atoms["STRING"], 0, 0);
+ targets.add_text_targets( 1 );
+ Gtk.drag_dest_set_target_list(this.el, LeftTree.targetList);
+
+ //if you want to allow text to be output elsewhere..
+ //Gtk.drag_source_add_text_targets(this.el);
+ */
+ return true;
+ },
items : [
{
xtype: Gtk.ListStore,