mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-05-18 07:31:04 +00:00
Update gtk.js
This commit is contained in:
parent
4c804833cb
commit
4f2d5d9466
52
lib/gtk.js
52
lib/gtk.js
|
@ -9,7 +9,13 @@ var binPath = "bin\\gtk-server.exe";
|
||||||
// start GTKServer
|
// start GTKServer
|
||||||
var GTKServer = SHELL.createExecObject([binPath, "-stdin"]);
|
var GTKServer = SHELL.createExecObject([binPath, "-stdin"]);
|
||||||
|
|
||||||
// Common (Elements)
|
// Common (Event)
|
||||||
|
var GTKEvent = function(eventName) {
|
||||||
|
this.eventName = eventName;
|
||||||
|
this.target = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Common (Widgets)
|
||||||
var GTKWidgets = {};
|
var GTKWidgets = {};
|
||||||
|
|
||||||
// Common (Element)
|
// Common (Element)
|
||||||
|
@ -17,41 +23,32 @@ var GTKWidget = function() {
|
||||||
this.widgetType = "GTKWidget";
|
this.widgetType = "GTKWidget";
|
||||||
this.widgetID = GTKCreateWidget(this);
|
this.widgetID = GTKCreateWidget(this);
|
||||||
|
|
||||||
this.eventListener = GTKEventListener(this);
|
this.dispatchEvent = function(event) {
|
||||||
this.addEventListener = function(ev, fn) {
|
event.target = this;
|
||||||
|
if(event.eventName in this) {
|
||||||
|
this['on' + event.eventName](event);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.addEventListener = function(eventName, fn) {
|
||||||
if (typeof(fn) == "function") {
|
if (typeof(fn) == "function") {
|
||||||
this['on' + ev] = fn;
|
this['on' + eventName] = fn;
|
||||||
} else {
|
} else {
|
||||||
throw new TypeError("EventListener must be a function");
|
throw new TypeError("EventListener must be a function");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
GTKWidgets[this.widgetID] = this;
|
GTKWidgets[this.widgetID] = this;
|
||||||
|
GTKEventListener(this);
|
||||||
};
|
};
|
||||||
|
|
||||||
// definedEvents
|
// definedEvents
|
||||||
var definedEvents = {
|
var definedEvents = {
|
||||||
"Window" [
|
"Window" ["load"],
|
||||||
"onload"
|
"Table": ["load"],
|
||||||
],
|
"Button": ["load", "click"],
|
||||||
"Table": [
|
"Entry": ["load", "keyup"]
|
||||||
"onload"
|
"RadioBox": ["load", "click"],
|
||||||
],
|
"TextBox" ["load"]
|
||||||
"Button": [
|
|
||||||
"onload",
|
|
||||||
"onclick"
|
|
||||||
],
|
|
||||||
"Entry": [
|
|
||||||
"onload",
|
|
||||||
"onkeyup"
|
|
||||||
]
|
|
||||||
"RadioBox": [
|
|
||||||
"onload",
|
|
||||||
"onclick"
|
|
||||||
],
|
|
||||||
"TextBox" [
|
|
||||||
"onload"
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// GTKEventListener
|
// GTKEventListener
|
||||||
|
@ -60,9 +57,8 @@ var GTKEventListener = function(widget) {
|
||||||
var widgetEvents = definedEvents[widget.widgetType];
|
var widgetEvents = definedEvents[widget.widgetType];
|
||||||
for (var i = 0; i < widgetEvents.length; i++) {
|
for (var i = 0; i < widgetEvents.length; i++) {
|
||||||
var eventName = widgetEvents[i];
|
var eventName = widgetEvents[i];
|
||||||
if (eventName in widget && typeof(widget[eventName]) == "function") {
|
var event = new GTKEvent(eventName);
|
||||||
widget[eventName]();
|
widget.dispatchEvent(event);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user