2 client side js functions for registry editing
4 Copyright Andrew Tridgell 2005
5 released under the GNU GPL Version 2 or later
10 callback from the key enumeration call
12 function __folder_keys(fParent, list)
15 if (fParent.working == 1) {
19 for (i=0;i<list.length;i++) {
21 fChild = new QxTreeFolder(list[i]);
23 fChild.binding = fParent.binding;
24 if (fParent.reg_path == '\\') {
25 fChild.reg_path = list[i];
27 fChild.reg_path = fParent.reg_path + '\\' + list[i];
30 fChild.add(new QxTreeFolder('Working ...'));
31 fChild.addEventListener("click", function() {
32 var el = this; __folder_click(el);
39 callback from the key enumeration call
41 function __folder_values(fParent, list)
44 if (list.length == 0) {
47 if (fParent.working == 1) {
51 for (i=0;i<list.length;i++) {
53 fChild = new QxTreeFile(list[i].name);
54 fChild.parent = fParent;
55 fChild.details = list[i];
62 called when someone clicks on a folder
64 function __folder_click(node)
66 if (!node.populated) {
67 node.populated = true;
68 server_call_url("/scripting/server/regedit.esp", 'enum_keys',
69 function(list) { __folder_keys(node, list); },
70 node.binding, node.reg_path);
71 server_call_url("/scripting/server/regedit.esp", 'enum_values',
72 function(list) { __folder_values(node, list); },
73 node.binding, node.reg_path);
77 /* return a registry tree for the given server */
78 function __registry_tree(binding)
80 var tree = new QxTree("registry: " + binding);
81 tree.binding = binding;
83 tree.populated = false;
85 setBackgroundColor(255);
86 setBorder(QxBorder.presets.inset);
87 setOverflow("scroll");
88 setStyleProperty("padding", "2px");
93 tree.addEventListener("click", function() {
94 var el = this; __folder_click(el);
102 function __values_table()
104 var headings = new Array("Name", "Type", "Size", "Value");
105 var table = document.createElement('table');
107 var body = document.createElement('tbody');
108 table.appendChild(body);
109 var th = document.createElement('th');
110 for (var i=0;i<headings.length;i++) {
111 var td = document.createElement('td');
112 td.appendChild(document.createTextNode(headings[i]));
115 body.appendChild(th);
120 create a registry editing widget and return it as a object
122 function regedit_widget(binding)
124 var regedit = new QxWindow("Registry Editor");
125 regedit.setSpace(300, 600, 300, 600);
127 var fieldSet = new QxFieldSet();
129 regedit.binding = binding;
136 var gl = new QxGridLayout("auto,auto,auto,auto,auto", "50%,50%");
138 gl.setCellPaddingTop(3);
139 gl.setCellPaddingBottom(3);
141 regedit.add(fieldSet);
143 var t = __registry_tree(regedit.binding);
145 function change_binding(e) {
146 regedit.binding = e.getNewValue();
147 srv_printf("changed binding to %s\\n", regedit.binding);
149 t = __registry_tree(regedit.binding);
150 gl.add(t, { row : 2, col : 1 });
153 var b = new QxTextField(regedit.binding);
154 b.addEventListener("changeText", change_binding);
156 var values = new __values_table();
158 gl.add(b, { row : 1, col : 1 });
159 gl.add(t, { row : 2, col : 1 });
160 // gl.add(values, { row : 2, col : 2 });
163 regedit.add(fieldSet);
166 call the startup() method to display the widget
168 regedit.startup = function() {
169 this.setVisible(true);
170 this.setMoveable(true);
171 this.setResizeable(true);
172 this.setResizeMethod("frame");
173 this.setMoveable(true);