Update gtk.js

This commit is contained in:
Namhyeon Go 2020-10-27 10:45:04 +09:00
parent 4c804833cb
commit 4f2d5d9466

View File

@ -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);
}
} }
} }
}; };