source: branches/samba-3.5.x/swat2/scripting/client/regedit.js

Last change on this file was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

File size: 3.5 KB
Line 
1/*
2 client side js functions for registry editing
3
4 Copyright Andrew Tridgell 2005
5 released under the GNU GPL Version 3 or later
6*/
7
8
9/*
10 callback from the key enumeration call
11*/
12function __folder_keys(fParent, list)
13{
14 var i;
15 if (fParent.working == 1) {
16 fParent.working = 0;
17 fParent.removeAll();
18 }
19 for (i=0;i<list.length;i++) {
20 var fChild;
21 fChild = new QxTreeFolder(list[i]);
22 fParent.add(fChild);
23 fChild.binding = fParent.binding;
24 if (fParent.reg_path == '\\') {
25 fChild.reg_path = list[i];
26 } else {
27 fChild.reg_path = fParent.reg_path + '\\' + list[i];
28 }
29 fChild.working = 1;
30 fChild.add(new QxTreeFolder('Working ...'));
31 fChild.addEventListener("click", function() {
32 var el = this; __folder_click(el);
33 });
34 }
35 fParent.setOpen(1);
36}
37
38/*
39 callback from the key enumeration call
40*/
41function __folder_values(fParent, list)
42{
43 var i;
44 if (list.length == 0) {
45 return;
46 }
47 if (fParent.working == 1) {
48 fParent.working = 0;
49 fParent.removeAll();
50 }
51 for (i=0;i<list.length;i++) {
52 var fChild;
53 fChild = new QxTreeFile(list[i].name);
54 fChild.parent = fParent;
55 fChild.details = list[i];
56 fParent.add(fChild);
57 }
58 fParent.setOpen(1);
59}
60
61/*
62 called when someone clicks on a folder
63*/
64function __folder_click(node)
65{
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);
74 }
75}
76
77/* return a registry tree for the given server */
78function __registry_tree(binding)
79{
80 var tree = new QxTree("registry: " + binding);
81 tree.binding = binding;
82 tree.reg_path = "\\";
83 tree.populated = false;
84 with(tree) {
85 setBackgroundColor(255);
86 setBorder(QxBorder.presets.inset);
87 setOverflow("scroll");
88 setStyleProperty("padding", "2px");
89 setWidth("50%");
90 setHeight("90%");
91 setTop("10%");
92 }
93 tree.addEventListener("click", function() {
94 var el = this; __folder_click(el);
95 });
96 return tree;
97}
98
99/*
100 the table of values
101*/
102function __values_table()
103{
104 var headings = new Array("Name", "Type", "Size", "Value");
105 var table = document.createElement('table');
106 table.border = "1";
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]));
113 th.appendChild(td);
114 }
115 body.appendChild(th);
116 return table;
117}
118
119/*
120 create a registry editing widget and return it as a object
121*/
122function regedit_widget(binding)
123{
124 var fieldSet = new QxFieldSet();
125
126 fieldSet.binding = binding;
127
128 with(fieldSet) {
129 setWidth("100%");
130 setHeight("100%");
131 };
132
133 var gl = new QxGridLayout("auto,auto,auto,auto,auto", "50%,50%");
134 gl.setEdge(0);
135 gl.setCellPaddingTop(3);
136 gl.setCellPaddingBottom(3);
137
138 var t = __registry_tree(fieldSet.binding);
139
140 function change_binding(e) {
141 fieldSet.binding = e.getNewValue();
142 srv_printf("changed binding to %s\\n", fieldSet.binding);
143 gl.remove(t);
144 t = __registry_tree(fieldSet.binding);
145 gl.add(t, { row : 2, col : 1 });
146 }
147
148 var b = new QxTextField(fieldSet.binding);
149 b.addEventListener("changeText", change_binding);
150
151 var values = new __values_table();
152
153 gl.add(b, { row : 1, col : 1 });
154 gl.add(t, { row : 2, col : 1 });
155// gl.add(values, { row : 2, col : 2 });
156
157 fieldSet.add(gl);
158
159 return fieldSet;
160};
Note: See TracBrowser for help on using the repository browser.