summaryrefslogtreecommitdiffstats
path: root/kjsembed/docs/examples/kjsuic/kjsuic.js
blob: f95aa5eecf71ad765a38cb3a0e88064679328237 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
* To use this fuction provide the ui file name, the parent
* that will handle the slots of the form, and the parent
* widget that will handle the UI portion.
*
* var form = kjsuic("EnvelopeMakerUI.ui", this, this);
* println(dump(form));
*
* This will then return you a widget object that has properties
* that are the main child widgets in the UI file.  So if you have
* a KLineEdit called "myLineEdit" in the UI file then there would
* be a member of the form called myLineEdit.  (ex: form.myLineEdit )
*
* If there are container widgets present then the children will show
* up as properties of those widgets.  So if you have a groupbox called
* "Group" and a KLineEdit inside of it called "editor" you would address
* this as "Group.editor".
*
* An important note:   Take care when using UI files with this that have
* widget names that do not conflict with current Qt properties as the Qt
* properties will take precident over the added widgets.
*/

function kjsuic(uifile, slotParent, parent)
{
        var widget = Factory.loadui(uifile, slotParent, parent);
        var lst = widget.children();
        addChildren( widget )
        return widget;
}

function addChildren( widget )
{
	var lst = widget.children();
        for( var idx = 0; idx < lst.length; ++idx)
        {
                var str = "widget." + lst[idx] + " = widget.child('" + lst[idx] + "');";
                eval(str);
		var typeName = widget.child(lst[idx]).className();

		if( typeName == "QGroupBox" || typeName == "QButtonGroup" || typeName == "QFrame")
		{
			eval("addChildren( widget." + lst[idx] + ");");
		}
        }
}