summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--swat/esptest/registry.esp120
-rw-r--r--swat/esptest/registry_calls.esp37
-rw-r--r--swat/menu.js3
3 files changed, 159 insertions, 1 deletions
diff --git a/swat/esptest/registry.esp b/swat/esptest/registry.esp
new file mode 100644
index 0000000000..85843c41d9
--- /dev/null
+++ b/swat/esptest/registry.esp
@@ -0,0 +1,120 @@
+<%
+ page_header("columns", "ESP registry edit", "esptest");
+%>
+
+<script type="text/javascript" src="/scripting/client/encoder.js"></script>
+<script type="text/javascript" src="/scripting/client/call.js"></script>
+
+<h1>Registry Editor</h1>
+
+ <script type="text/javascript">
+
+function folder_list(t, list) {
+ var i;
+ t.populated = true;
+ t.reg_list = new Object();
+ for (i=0;i<list.length;i++) {
+ var te;
+ if (t.reg_list.working != undefined) {
+ te = t.reg_list.working;
+ t.reg_list = new Object();
+ te.label = list[i];
+ } else {
+ te = new QxTreeFolder(list[i]);
+ t.add(te);
+ }
+ te.binding = t.binding;
+ if (t.reg_path == '\\\\') {
+ te.reg_path = list[i];
+ } else {
+ te.reg_path = t.reg_path + '\\\\' + list[i];
+ }
+ te.reg_list = new Object();
+ te.reg_list.working = new QxTreeFolder('Working ...');
+ te.add(te.reg_list.working);
+ t.reg_list[list[i]] = te;
+ te.addEventListener("click", function() {
+ var el = this; folder_click(el);
+ });
+ te.setOverflow("auto");
+ t.setOpen(1);
+ }
+}
+
+function folder_click(t) {
+ if (!t.populated) {
+ server_call("registry_calls.esp", 'enum_path',
+ function(list) { folder_list(t, list); },
+ t.binding, t.reg_path);
+ }
+}
+
+/* return a registry tree for the given server */
+function registry_tree(binding) {
+ var t = new QxTree("registry: " + binding);
+ t.binding = binding;
+ t.reg_path = "\\\\";
+ t.reg_list = new Object();
+ t.populated = false;
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(QxBorder.presets.inset);
+ setOverflow("auto");
+ setStyleProperty("padding", "2px");
+ setWidth(200);
+ setHeight("100%");
+ setTop(20);
+ addEventListener("click", function() { folder_click(t); });
+ }
+ return t;
+}
+
+ window.application.main = function()
+ {
+ var inlineWidget = new QxInline;
+ var fieldSet = new QxFieldSet("Registry");
+ var binding = "ncacn_np:win2003";
+
+ with(fieldSet)
+ {
+ setWidth("40%");
+ setMinHeight(500);
+ setBottom(48);
+ setMinWidth(500);
+ };
+
+ var gl = new QxGridLayout("auto,auto,auto,auto,auto", "100%");
+ gl.setEdge(0);
+ gl.setCellPaddingTop(3);
+ gl.setCellPaddingBottom(3);
+
+ inlineWidget.add(fieldSet);
+
+ var t = registry_tree(binding);
+
+ function change_binding(e) {
+ binding = e.getNewValue();
+ srv_printf("changed binding to %s\\n", binding);
+ gl.remove(t);
+ t = registry_tree(binding);
+ gl.add(t, { row : 2, col : 1 });
+ }
+
+ var b = new QxTextField(binding);
+ b.addEventListener("changeText", change_binding);
+
+ gl.add(b, { row : 1, col : 1 });
+ gl.add(t, { row : 2, col : 1 });
+
+ fieldSet.add(gl);
+ inlineWidget.add(fieldSet);
+ this.getClientWindow().getDocument().add(inlineWidget, "canvas");
+ };
+
+ </script>
+
+
+ <div id="canvas" style="overflow:hidden;position:static;margin-top:38px;margin-left:10px;margin-right:700px;width:700px"></div>
+
+<% page_footer(); %>
diff --git a/swat/esptest/registry_calls.esp b/swat/esptest/registry_calls.esp
new file mode 100644
index 0000000000..a5c1ae7a12
--- /dev/null
+++ b/swat/esptest/registry_calls.esp
@@ -0,0 +1,37 @@
+<%
+libinclude("base.js");
+libinclude("winreg.js");
+libinclude("server_call.js");
+
+/*
+ server side call to return a listing of elements in a winreg path
+*/
+function enum_path(binding, path) {
+ printf("enum_path(%s, %s)\n", binding, path);
+ if (path == "\\") {
+ printf("IN ROOT\n");
+ var list = new Array("HKLM", "HKCR", "HKPD");
+ return list;
+ }
+ printf("binding=%s path=%s\n", binding, path);
+ var reg = winreg_init();
+ security_init(reg);
+
+ reg.credentials = session.authinfo.credentials;
+
+ var status = reg.connect(binding);
+ if (status.is_ok != true) {
+ printVars(status);
+ return undefined;
+ }
+ var list = winreg_enum_path(reg, path);
+ return list;
+}
+
+/* register a call for clients to make */
+var call = servCallObj();
+call.add('enum_path', enum_path);
+
+/* run the function that was asked for */
+call.run();
+%>
diff --git a/swat/menu.js b/swat/menu.js
index 7e8281349f..83529825f1 100644
--- a/swat/menu.js
+++ b/swat/menu.js
@@ -32,7 +32,8 @@ swat_menus.esptest = simple_menu(
"loadparm access", session_uri("/esptest/loadparm.esp"),
"exception handling", session_uri("/esptest/exception.esp"),
"environment variables", session_uri("/esptest/showvars.esp"),
- "qooxdoo", session_uri("/esptest/qooxdoo.esp"));
+ "qooxdoo", session_uri("/esptest/qooxdoo.esp"),
+ "registry", session_uri("/esptest/registry.esp"));
swat_menus.install = simple_menu(