mhammond%skippinet.com.au 94e1ef753b First cut at the Python implementation of nsIScriptContext etc (see
http://wiki.mozilla.org/Breaking_the_grip_JS_has_on_the_DOM).

See also bug 255942 - "Support other scripting languages than JS".

Not part of the build - indeed this will not build at all until bug
255942 lands, or the latest patch there is applied.


git-svn-id: svn://10.0.0.236/trunk@195705 18797224-902f-48f8-a5cc-f745e15eee43
2006-04-29 01:56:45 +00:00

165 lines
5.8 KiB
XML

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xul-overlay href="chrome://pyxultest/content/js_overlay.xul"?>
<?xul-overlay href="chrome://pyxultest/content/python_overlay.xul"?>
<window
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
id="mainWindow" orient="vertical"
screenX="100" screenY="100"
height="450" width="600"
script-type="application/x-python"
onload="write('hello from the inline window load event')"
title="Python in XUL demos and tests"
>
<script type="application/x-python" src="chrome://pyxultest/content/pyxultest.py"/>
<script>
<![CDATA[
dump("Scrollbar visible = %s", window.scrollbars.visible)
dump("Window location is %s", window.location.href)
#promptService = xpcom.components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(xpcom.components.interfaces.nsIPromptService)
#promptService.alert(window, "title", "Hello from Python");
]]>
</script>
<script type="application/javascript">
// a 'write' function that writes to our window - like the Python one
// although this version does *not* auto-append a '\n' char. This keeps
// 'write' like 'dump', but also serves as a useful test that the wrong
// language isn't accidently being used.
function write(msg) {
tb = document.getElementById("output_box");
tb.value = tb.value + msg;
}
</script>
<!-- This commandset drags in commands from our overlays, each
implemented in different languages
-->
<commandset id="cmdset">
<!-- and one define inline -->
<command id="menu-file-close:command"
oncommand="print 'Python closing the window';window.close()"/>
</commandset>
<!-- this keyset and menu reference commands implemented in multiple
languages
-->
<keyset id="mainkeys">
<key
id = "menu-file-close:key"
key = "q"
observes = "menu-file-close:command"
modifiers = "accel" />
<key
id = "menu-file-test-js:key"
key = "j"
observes = "menu-file-test-js:command"
modifiers = "accel" />
<key
id = "menu-file-test-python:key"
key = "p"
observes = "menu-file-test-python:command"
modifiers = "accel" />
</keyset>
<toolbox id="main-toolbox">
<menubar id="menu">
<menu id="menu-file" label="File" accesskey="f">
<menupopup id="menu-file-popup">
<menuitem
id = "menu-file-test-js"
key = "menu-file-test-js:key"
label = "Test JS"
command = "menu-file-test-js:command"
accesskey = "J"/>
<menuitem
id = "menu-file-test-python"
key = "menu-file-test-python:key"
label = "Test Python"
command = "menu-file-test-python:command"
accesskey = "P"/>
<menuitem
id = "menu-file-test-inline"
key = "menu-file-test-inline:key"
label = "Test Inline menu handler"
oncommand = "write('Hello from an inline menu handler')"
accesskey = "I"/>
<menuitem
id = "menu-file-close"
key = "menu-file-close:key"
label = "Close"
command = "menu-file-close:command"
accesskey = "C"/>
</menupopup>
</menu>
</menubar>
</toolbox>
<textbox id="output_box" style="width:100%"
value = "If you can see this, things aren't working well!"
rows="15" multiline="true" flex="1"
/>
<!--
<iframe src="chrome://pyxultest/content/html_content.html" height="30"/>
-->
<groupbox>
<caption label="Items from Overlays"/>
<!-- A box from our overlay - it will have one button using js events
and another using Python events -->
<hbox>
<hbox id="language_box"/>
<button id="but_multi" label="click for both"/>
</hbox>
</groupbox>
<hbox>
<groupbox>
<caption label="Random Buttons"/>
<hbox>
<!-- Here we have a script element defined at a parent node -->
<vbox oncommand="write('You clicked on a %s with id=%s and type=%s' % (event.target.tagName, event.target.id, event.target.type))">
<hbox>
<button id="some-button" label = "click here"/>
<button id="another-button" label = "or here"/>
<!-- a button that overrides script-type and oncommand in a different language -->
<button id="js-button" label = "JS"
script-type="application/javascript"
oncommand="write('This is a JS button with ID ' + event.target.id + '\n');"
/>
</hbox>
<button type="checkbox" autocheck="1" id="some-checkbox" label="Click on this checkbox too"/>
</vbox>
<button id="but_dialog" label="open dialog"
oncommand="on_but_dialog_click()"/>
</hbox>
</groupbox>
<groupbox flex="1">
<caption label="Key Event Tests"/>
<textbox id="input_test_intrinsic" value="Type something and press Enter"
onkeypress="return do_textbox_keypress(event)"/>
</groupbox>
</hbox>
<groupbox>
<caption label="Automated tests"/>
<hbox>
<button id="test_error" label="Run tests" oncommand="run_tests()"/>
<vbox flex="1">
<text class="label"
value="The test window is not shown (or closes quickly) if the tests work"/>
<checkbox id="keep_tests_open" label="Always keep test window open"/>
</vbox>
<image id="image-python" src="http://www.python.org/pics/PyBanner011.gif"
width="150" height="35" flex="0"
onclick="change_image()"/>
</hbox>
</groupbox>
</window>