diff --git a/lib/gtk.js b/lib/gtk.js index 8e0d330..66d3a64 100644 --- a/lib/gtk.js +++ b/lib/gtk.js @@ -16,11 +16,57 @@ var GTKWidgets = {}; var GTKWidget = function() { this.widgetType = "GTKWidget"; this.widgetID = GTKCreateWidget(this); - this.onEventTriggered = function() {}; + + this.eventListener = GTKEventListener(this); + this.addEventListener = function(ev, fn) { + if (typeof(fn) == "function") { + this['on' + ev] = fn; + } else { + throw new TypeError("EventListener must be a function"); + } + }; GTKWidgets[this.widgetID] = this; }; +// definedEvents +var definedEvents = { + "Window" [ + "onload" + ], + "Table": [ + "onload" + ], + "Button": [ + "onload", + "onclick" + ], + "Entry": [ + "onload", + "onkeyup" + ] + "RadioBox": [ + "onload", + "onclick" + ], + "TextBox" [ + "onload" + ] +}; + +// GTKEventListener +var GTKEventListener = function(widget) { + if (widget.widgetType in definedEvents) { + var widgetEvents = definedEvents[widget.widgetType]; + for (var i = 0; i < widgetEvents.length; i++) { + var eventName = widgetEvents[i]; + if (eventName in widget && typeof(widget[eventName]) == "function") { + widget[eventName](); + } + } + } +}; + // GTKCreateElement var GTKCreateWidget = function(widget) { var widgetID, commands = []; @@ -269,7 +315,7 @@ var GTKWait = function(callback) { ]); if (even in GTKWidgets) { - GTKWidgets[even].onEventTriggered(); + GTKWidgets[even].eventListener(); } if (typeof(callback) == "function") {