File: mod_wsf_debug.spl

package info (click to toggle)
spl 1.0~pre2-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,240 kB
  • ctags: 1,987
  • sloc: ansic: 15,272; yacc: 3,167; sh: 272; makefile: 186; xml: 156
file content (84 lines) | stat: -rw-r--r-- 2,508 bytes parent folder | download | duplicates (5)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
 *  SPL - The SPL Programming Language
 *  Copyright (C) 2004, 2005, 2006  Clifford Wolf <clifford@clifford.at>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  mod_wsf_debug.spl: WebSPL Debugger
 */

/**
 * A module that implements an SPL debugger that can be used with a Web
 * Interface and integrates nicely in WSF applications.
 */

load "cgi";
load "task";
load "encode_xml";

load "webdebug";

/**
 * The WSF debugger compontent.
 *
 * This WSF component creates a small "controler box" with a button for opening
 * a debugger window and, if the DOM update machnism (see [[wsf:]]) is active,
 * add buttons for displaying and hiding the iframe used for the DOM update
 * hack.
 *
 * Derived from [[wsf:WsfComponent]].
 */
object WsfDebug WsfComponent
{
	/**
	 * Overloaded [[wsf:WsfComponent.main()]].
	 */
	method main() {
		task_co_return();
		write(<:>
			: <script><!--
			: window.open("${webdebug()}", "",
			: 	"width=600,height=500,resizable=yes,scrollbars=yes");
			: //--></script>
		</>);
	}

	/**
	 * Overloaded [[wsf:WsfComponent.get_html()]].
	 */
	method get_html() {
		return <:>
			: <table border="1" cellpadding="10"><tr><td bgcolor="#444444" align="center">
			: <form id="$id" ${add_action(cgi.url)}>
			: <input type="hidden" name="sid" value="${sid}" />
			: <p>
			:	<b>WSF Debug</b>
			: </p>
			: <p>
			:	<input type="submit" value="Open Debug Window" />
			: </p>
			<spl:if code="WsfDocument.domupdate ~== 'iframe'">
			:	<p>
			:		<input type="button" value="Show WSF IFrame" onClick="document.getElementById('wsfiframe').setAttribute('style', 'width:100%')" /><br/>
			:		<input type="button" value="Hide WSF IFrame" onClick="document.getElementById('wsfiframe').setAttribute('style', 'display:none')" />
			:	</p>
			</spl:if>
			: </form>
			: </td></tr></table>
			: </>;
	}
}