# HG changeset patch # User Paul Boddie # Date 1227228231 -3600 # Node ID bdf2a1b673e568190776f5fe68d68c9647867847 # Parent 992418d0335952e2e02bdd59ff48c032f31a55b7 Remove PyQt-related example code. diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config.ui --- a/examples/Common/QtConfigurator/Resources/config.ui Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,664 +0,0 @@ - -Configurator - - - configuration - - - - 0 - 0 - 1013 - 693 - - - - Form1 - - - - unnamed - - - - textLabel1 - - - <h1>System Configurator</h1> - - - - - textLabel2 - - - <h2>Base System</h2> - - - - - spacer11 - - - Horizontal - - - Expanding - - - - 130 - 20 - - - - - - textLabel2_5 - - - <h2>Hard Disks</h2> - - - - - - (Not selected) - - - - base_system - - - - - textLabel4 - - - Model - - - - - spacer21 - - - Vertical - - - Expanding - - - - 20 - 30 - - - - - - hard_disks - - - StyledPanel - - - Raised - - - - unnamed - - - - hard_disk - - - StyledPanel - - - Raised - - - - unnamed - - - - textLabel4_3_2 - - - Hard disk drive - - - - - - (Not selected) - - - - hard_disk_value - - - - - remove_hard_disk - - - Remove - - - - - - - - - - (Not selected) - - - - cpu - - - - - spacer3 - - - Horizontal - - - Expanding - - - - 230 - 20 - - - - - - spacer8 - - - Horizontal - - - Expanding - - - - 350 - 20 - - - - - - textLabel4_2 - - - CPU - - - - - add_hard_disk - - - Add hard disk - - - - - textLabel2_6 - - - <h2>Additional Storage</h2> - - - - - textLabel2_2 - - - <h2>Processor</h2> - - - - - spacer22 - - - Vertical - - - Expanding - - - - 20 - 30 - - - - - - textLabel2_3 - - - <h2>Memory</h2> - - - - - memory_units - - - StyledPanel - - - Raised - - - - unnamed - - - - memory_unit - - - StyledPanel - - - Raised - - - - unnamed - - - - textLabel4_3 - - - Memory unit - - - - - - (Not selected) - - - - memory_unit_value - - - - - remove_memory_unit - - - Remove - - - - - - - - - textLabel2_7 - - - <h2>Accessories</h2> - - - - - add_storage_unit - - - Add storage - - - - - spacer4 - - - Horizontal - - - Expanding - - - - 230 - 20 - - - - - - spacer9 - - - Horizontal - - - Expanding - - - - 350 - 20 - - - - - - textLabel4_2_2 - - - Keyboard - - - - - spacer6 - - - Horizontal - - - Expanding - - - - 40 - 20 - - - - - - - (Not selected) - - - - screen - - - - - textLabel2_4 - - - <h2>Price</h2> - - - - - export - - - Export - - - - - spacer10 - - - Horizontal - - - Expanding - - - - 346 - 60 - - - - - - add_memory_unit - - - Add memory - - - - - textLabel4_2_3 - - - Mouse - - - - - textLabel2_9 - - - <h2>Display</h2> - - - - - spacer5 - - - Horizontal - - - Expanding - - - - 180 - 20 - - - - - - - (Not selected) - - - - keyboard - - - - - textLabel4_2_4 - - - Screen - - - - - update - - - Update - - - - - textLabel2_8 - - - <h2>Input Devices</h2> - - - - - textLabel4_2_4_2 - - - Total for this configuration: 0 - - - - - - (Not selected) - - - - mouse - - - - - - (Not selected) - - - - accessories - - - - - storage_units - - - StyledPanel - - - Raised - - - - unnamed - - - - storage_unit - - - StyledPanel - - - Raised - - - - unnamed - - - - textLabel4_3_2_2 - - - Storage unit - - - - - - (Not selected) - - - - storage_unit_value - - - - - remove_storage_unit - - - Remove - - - - - - - - - - - base_system - activated(const QString&) - configuration - baseSystemChanged(const QString&) - - - add_hard_disk - clicked() - configuration - addHardDisk() - - - add_memory_unit - clicked() - configuration - addMemoryUnit() - - - add_storage_unit - clicked() - configuration - addStorageUnit() - - - remove_hard_disk - clicked() - configuration - removeHardDisk() - - - remove_memory_unit - clicked() - configuration - removeMemoryUnit() - - - remove_storage_unit - clicked() - configuration - removeStorageUnit() - - - update - clicked() - configuration - updateConfig() - - - export - clicked() - configuration - exportConfig() - - - - baseSystemChanged(const QString&) - removeMemoryUnit() - addMemoryUnit() - addStorageUnit() - removeHardDisk() - addHardDisk() - removeStorageUnit() - updateConfig() - exportConfig() - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config_base_system.xml --- a/examples/Common/QtConfigurator/Resources/config_base_system.xml Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ - - - - - - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config_cpu.xml --- a/examples/Common/QtConfigurator/Resources/config_cpu.xml Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ - - - - - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config_hard_disk.xml --- a/examples/Common/QtConfigurator/Resources/config_hard_disk.xml Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ - - - - - - - - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config_keyboard.xml --- a/examples/Common/QtConfigurator/Resources/config_keyboard.xml Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ - - - - - - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config_memory_unit.xml --- a/examples/Common/QtConfigurator/Resources/config_memory_unit.xml Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config_mouse.xml --- a/examples/Common/QtConfigurator/Resources/config_mouse.xml Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config_screen.xml --- a/examples/Common/QtConfigurator/Resources/config_screen.xml Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config_storage_unit.xml --- a/examples/Common/QtConfigurator/Resources/config_storage_unit.xml Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ - - - - - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/config_tab.ui --- a/examples/Common/QtConfigurator/Resources/config_tab.ui Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,622 +0,0 @@ - -Configurator - - - configuration - - - - 0 - 0 - 871 - 755 - - - - Form1 - - - - unnamed - - - - update - - - Update - - - - - - (Not selected) - - - - mouse - - - - - - (Not selected) - - - - keyboard - - - - - textLabel4_2_3 - - - Mouse - - - - - textLabel4_2_4 - - - Screen - - - - - - (Not selected) - - - - screen - - - - - export - - - Export - - - - - spacer6 - - - Horizontal - - - Expanding - - - - 40 - 20 - - - - - - textLabel4_2_4_2 - - - Total for this configuration: 0 - - - - - textLabel4_2_2 - - - Keyboard - - - - - spacer10 - - - Horizontal - - - Expanding - - - - 346 - 60 - - - - - - - (Not selected) - - - - accessories - - - - - add_memory_unit - - - Add memory - - - - - spacer5 - - - Horizontal - - - Expanding - - - - 180 - 20 - - - - - - textLabel1 - - - <h1>System Configurator</h1> - - - - - memory_units - - - - tab - - - Unit - - - - unnamed - - - - textLabel4_3 - - - Memory unit - - - - - - (Not selected) - - - - memory_unit_value - - - - - remove_memory_unit - - - Remove - - - - - - - - add_storage_unit - - - Add storage - - - - - spacer4 - - - Horizontal - - - Expanding - - - - 230 - 20 - - - - - - spacer9 - - - Horizontal - - - Expanding - - - - 350 - 20 - - - - - - storage_units - - - - tab - - - Storage - - - - unnamed - - - - textLabel4_3_2_2 - - - Storage unit - - - - - - (Not selected) - - - - storage_unit_value - - - - - remove_storage_unit - - - Remove - - - - - - - - textLabel2 - - - <h2>Base System</h2> - - - - - spacer11 - - - Horizontal - - - Expanding - - - - 130 - 20 - - - - - - hard_disks - - - - tab - - - Disk - - - - unnamed - - - - textLabel4_3_2 - - - Hard disk drive - - - - - - (Not selected) - - - - hard_disk_value - - - - - remove_hard_disk - - - Remove - - - - - - - - add_hard_disk - - - Add hard disk - - - - - spacer3 - - - Horizontal - - - Expanding - - - - 230 - 20 - - - - - - spacer8 - - - Horizontal - - - Expanding - - - - 350 - 20 - - - - - - textLabel2_2 - - - <h2>Processor</h2> - - - - - textLabel2_7 - - - <h2>Accessories</h2> - - - - - textLabel2_3 - - - <h2>Memory</h2> - - - - - textLabel2_6 - - - <h2>Additional Storage</h2> - - - - - textLabel2_5 - - - <h2>Hard Disks</h2> - - - - - textLabel2_8 - - - <h2>Input Devices</h2> - - - - - textLabel2_4 - - - <h2>Price</h2> - - - - - textLabel2_9 - - - <h2>Display</h2> - - - - - - (Not selected) - - - - cpu - - - - - textLabel4_2 - - - CPU - - - - - - (Not selected) - - - - base_system - - - - - textLabel4 - - - Model - - - - - spacer22 - - - Vertical - - - Expanding - - - - 20 - 131 - - - - - - spacer21 - - - Vertical - - - Expanding - - - - 20 - 131 - - - - - - - - base_system - activated(const QString&) - configuration - baseSystemChanged(const QString&) - - - add_hard_disk - clicked() - configuration - addHardDisk() - - - add_memory_unit - clicked() - configuration - addMemoryUnit() - - - add_storage_unit - clicked() - configuration - addStorageUnit() - - - remove_hard_disk - clicked() - configuration - removeHardDisk() - - - remove_memory_unit - clicked() - configuration - removeMemoryUnit() - - - remove_storage_unit - clicked() - configuration - removeStorageUnit() - - - update - clicked() - configuration - updateConfig() - - - export - clicked() - configuration - exportConfig() - - - - baseSystemChanged(const QString&) - removeMemoryUnit() - addMemoryUnit() - addStorageUnit() - removeHardDisk() - addHardDisk() - removeStorageUnit() - updateConfig() - exportConfig() - - - diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/scripts/XSLForms.js --- a/examples/Common/QtConfigurator/Resources/scripts/XSLForms.js Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +0,0 @@ -// Area update functions. - -function requestUpdateArea(url, sourceAreasStr, targetName, targetAreasStr, elementPath) { - - var fieldNames = new Array(); - var targetFieldNames = new Array(); - - for (var i = 0; i < document.forms.length; i++) { - var form = document.forms[i]; - for (var j = 0; j < form.elements.length; j++) { - var fieldName = form.elements[j].name; - checkField(fieldName, sourceAreasStr, fieldNames); - checkField(fieldName, targetAreasStr, targetFieldNames); - } - } - - return _requestUpdate(url, fieldNames, targetName, targetFieldNames, elementPath); -} - -// Field list update functions. - -function requestUpdate(url, fieldNamesStr, targetName, targetFieldNamesStr, elementPath) { - - return _requestUpdate(url, fieldNamesStr.split(","), targetName, targetFieldNamesStr.split(","), elementPath); -} - -// Internal functions. - -function checkField(fieldName, areasStr, areaFieldNames) { - - // Process each area name. - - var areaArray = areasStr.split(","); - for (var i = 0; i < areaArray.length; i++) { - var areaName = areaArray[i]; - - // Skip empty area names (arising through empty elements in the CSV list). - - if (areaName == "") { - continue; - } - - if (fieldName.indexOf(areaName) == 0) { - areaFieldNames.push(fieldName); - } - } -} - -function _requestUpdate(url, fieldNames, targetName, targetFieldNames, elementPath) { - - // Note that XMLHttpRequest access may be denied if Mozilla believes that - // this resource's URL and the supplied URL are different. - - var xmlhttp = new XMLHttpRequest(); - xmlhttp.open("POST", url, false); - - // Add the element path specification. - - var requestBody = ("element-path=" + elementPath); - - // Send the controlling field value. - - requestBody += addFields(fieldNames, false); - requestBody += addFields(targetFieldNames, true); - - // Load the remote document with the given parameters sent as text in the request body. - - xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xmlhttp.send(requestBody); - - // Parse the result document. - - var newDocument = Sarissa.getDomDocument(); - newDocument = (new DOMParser()).parseFromString(xmlhttp.responseText, "text/xml"); - - // Find the definition of the affected field in the result document. - - var newElement = newDocument.getElementById(targetName); - var targetElement = document.getElementById(targetName); - - // Insert the new definition into the current document. - - if (newElement != null && targetElement != null) { - var importedElement = document.importNode(newElement, true); - targetElement.parentNode.replaceChild(importedElement, targetElement); - //importedElement.setAttribute("style", "background-color:red;"); - } - - // NOTE: Test Konqueror bug. - - //showMismatch(targetFieldNames); - - return false; -} - -function addFields(fieldNames, disable) { - - var requestBody = ""; - - // Process each target field name. - // Add the values of the dependent fields. - - for (var i = 0; i < fieldNames.length; i++) { - var fieldName = fieldNames[i]; - - // Skip empty field names (arising through empty elements in the CSV list). - - if (fieldName == "") { - continue; - } - - // Find the values of the target field. - - var fieldValue; - var fieldNodes = document.getElementsByName(fieldName); - for (var v = 0; v < fieldNodes.length; v++) { - - // Test for different field types. - - if (fieldNodes[v].options) { - for (var opt = 0; opt < fieldNodes[v].options.length; opt++) { - if (fieldNodes[v].options[opt].selected) { - fieldValue = fieldNodes[v].options[opt].value; - requestBody += ("&" + encodeURIComponent(fieldName) + "=" + encodeURIComponent(fieldValue)); - } - } - } else if (fieldNodes[v].type != 'checkbox' && fieldNodes[v].type != 'radio' || fieldNodes[v].checked) { - fieldValue = fieldNodes[v].value; - requestBody += ("&" + encodeURIComponent(fieldName) + "=" + encodeURIComponent(fieldValue)); - } - } - - // NOTE: Konqueror hack: disable fields. - - if (disable) { - disableFields(fieldName); - } - } - - return requestBody; -} - -function disableFields(targetFieldName) { - - for (var i = 0; i < document.forms.length; i++) { - var form = document.forms[i]; - for (var j = 0; j < form.elements.length; j++) { - if (form.elements[j].name == targetFieldName) { - form.elements[j].name = ""; - } - } - } -} - -function showMismatch(targetFieldNameArray) { - - // Show how the number of field elements with a given name can be different - // from the number known to the DOM Level 0 part of the API. - - for (var h = 0; h < targetFieldNameArray.length; h++) { - var targetFieldName = targetFieldNameArray[h]; - var targetFieldNodes = document.getElementsByName(targetFieldName); - alert("Nodes for " + targetFieldName + ": " + targetFieldNodes.length); - - var count = 0; - for (var i = 0; i < document.forms.length; i++) { - var form = document.forms[i]; - for (var j = 0; j < form.elements.length; j++) { - if (form.elements[j].name == targetFieldName) { - count++; - } - } - } - alert("Fields for " + targetFieldName + ": " + count); - } -} - -// vim: tabstop=4 expandtab shiftwidth=4 diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/scripts/sarissa.js --- a/examples/Common/QtConfigurator/Resources/scripts/sarissa.js Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,688 +0,0 @@ -/** - * ==================================================================== - * About - * ==================================================================== - * Sarissa is an ECMAScript library acting as a cross-browser wrapper for native XML APIs. - * The library supports Gecko based browsers like Mozilla and Firefox, - * Internet Explorer (5.5+ with MSXML3.0+), Konqueror, Safari and a little of Opera - * @version ${project.version} - * @author: @author: Copyright 2004-2007 Emmanouil Batsis, mailto: mbatsis at users full stop sourceforge full stop net - * - * ==================================================================== - * Licence - * ==================================================================== - * Sarissa is free software distributed under the GNU GPL version 2 (see gpl.txt) or higher, - * GNU LGPL version 2.1 (see lgpl.txt) or higher and Apache Software License 2.0 or higher - * (see asl.txt). This means you can choose one of the three and use that if you like. If - * you make modifications under the ASL, i would appreciate it if you submitted those. - * In case your copy of Sarissa does not include the license texts, you may find - * them online in various formats at http://www.gnu.org and - * http://www.apache.org. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY - * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE - * WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -/** - *

Sarissa is a utility class. Provides "static" methods for DOMDocument, - * DOM Node serialization to XML strings and other utility goodies.

- * @constructor - */ -function Sarissa(){}; -Sarissa.VERSION = "${project.version}"; -Sarissa.PARSED_OK = "Document contains no parsing errors"; -Sarissa.PARSED_EMPTY = "Document is empty"; -Sarissa.PARSED_UNKNOWN_ERROR = "Not well-formed or other error"; -Sarissa.IS_ENABLED_TRANSFORM_NODE = false; -var _sarissa_iNsCounter = 0; -var _SARISSA_IEPREFIX4XSLPARAM = ""; -var _SARISSA_HAS_DOM_IMPLEMENTATION = document.implementation && true; -var _SARISSA_HAS_DOM_CREATE_DOCUMENT = _SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.createDocument; -var _SARISSA_HAS_DOM_FEATURE = _SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.hasFeature; -var _SARISSA_IS_MOZ = _SARISSA_HAS_DOM_CREATE_DOCUMENT && _SARISSA_HAS_DOM_FEATURE; -var _SARISSA_IS_SAFARI = navigator.userAgent.toLowerCase().indexOf("safari") != -1 || navigator.userAgent.toLowerCase().indexOf("konqueror") != -1; -var _SARISSA_IS_SAFARI_OLD = _SARISSA_IS_SAFARI && parseInt((navigator.userAgent.match(/AppleWebKit\/(\d+)/)||{})[1]) < 420; -var _SARISSA_IS_IE = document.all && window.ActiveXObject && navigator.userAgent.toLowerCase().indexOf("msie") > -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1; -var _SARISSA_IS_OPERA = navigator.userAgent.toLowerCase().indexOf("opera") != -1; -if(!window.Node || !Node.ELEMENT_NODE){ - Node = {ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12}; -}; - -//This breaks for(x in o) loops in the old Safari -if(_SARISSA_IS_SAFARI_OLD){ - HTMLHtmlElement = document.createElement("html").constructor; - Node = HTMLElement = {}; - HTMLElement.prototype = HTMLHtmlElement.__proto__.__proto__; - HTMLDocument = Document = document.constructor; - var x = new DOMParser(); - XMLDocument = x.constructor; - Element = x.parseFromString("", "text/xml").documentElement.constructor; - x = null; -} -if(typeof XMLDocument == "undefined" && typeof Document !="undefined"){ XMLDocument = Document; } - -// IE initialization -if(_SARISSA_IS_IE){ - // for XSLT parameter names, prefix needed by IE - _SARISSA_IEPREFIX4XSLPARAM = "xsl:"; - // used to store the most recent ProgID available out of the above - var _SARISSA_DOM_PROGID = ""; - var _SARISSA_XMLHTTP_PROGID = ""; - var _SARISSA_DOM_XMLWRITER = ""; - /** - * Called when the Sarissa_xx.js file is parsed, to pick most recent - * ProgIDs for IE, then gets destroyed. - * @private - * @param idList an array of MSXML PROGIDs from which the most recent will be picked for a given object - * @param enabledList an array of arrays where each array has two items; the index of the PROGID for which a certain feature is enabled - */ - Sarissa.pickRecentProgID = function (idList){ - // found progID flag - var bFound = false, e; - for(var i=0; i < idList.length && !bFound; i++){ - try{ - var oDoc = new ActiveXObject(idList[i]); - var o2Store = idList[i]; - bFound = true; - }catch (objException){ - // trap; try next progID - e = objException; - }; - }; - if (!bFound) { - throw "Could not retrieve a valid progID of Class: " + idList[idList.length-1]+". (original exception: "+e+")"; - }; - idList = null; - return o2Store; - }; - // pick best available MSXML progIDs - _SARISSA_DOM_PROGID = null; - _SARISSA_THREADEDDOM_PROGID = null; - _SARISSA_XSLTEMPLATE_PROGID = null; - _SARISSA_XMLHTTP_PROGID = null; - if(!window.XMLHttpRequest){ - /** - * Emulate XMLHttpRequest - * @constructor - */ - XMLHttpRequest = function() { - if(!_SARISSA_XMLHTTP_PROGID){ - _SARISSA_XMLHTTP_PROGID = Sarissa.pickRecentProgID(["Msxml2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]); - }; - return new ActiveXObject(_SARISSA_XMLHTTP_PROGID); - }; - }; - // we dont need this anymore - //============================================ - // Factory methods (IE) - //============================================ - // see non-IE version - Sarissa.getDomDocument = function(sUri, sName){ - if(!_SARISSA_DOM_PROGID){ - _SARISSA_DOM_PROGID = Sarissa.pickRecentProgID(["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]); - }; - var oDoc = new ActiveXObject(_SARISSA_DOM_PROGID); - // if a root tag name was provided, we need to load it in the DOM object - if (sName){ - // create an artifical namespace prefix - // or reuse existing prefix if applicable - var prefix = ""; - if(sUri){ - if(sName.indexOf(":") > 1){ - prefix = sName.substring(0, sName.indexOf(":")); - sName = sName.substring(sName.indexOf(":")+1); - }else{ - prefix = "a" + (_sarissa_iNsCounter++); - }; - }; - // use namespaces if a namespace URI exists - if(sUri){ - oDoc.loadXML('<' + prefix+':'+sName + " xmlns:" + prefix + "=\"" + sUri + "\"" + " />"); - } else { - oDoc.loadXML('<' + sName + " />"); - }; - }; - return oDoc; - }; - // see non-IE version - Sarissa.getParseErrorText = function (oDoc) { - var parseErrorText = Sarissa.PARSED_OK; - if(oDoc && oDoc.parseError && oDoc.parseError.errorCode && oDoc.parseError.errorCode != 0){ - parseErrorText = "XML Parsing Error: " + oDoc.parseError.reason + - "\nLocation: " + oDoc.parseError.url + - "\nLine Number " + oDoc.parseError.line + ", Column " + - oDoc.parseError.linepos + - ":\n" + oDoc.parseError.srcText + - "\n"; - for(var i = 0; i < oDoc.parseError.linepos;i++){ - parseErrorText += "-"; - }; - parseErrorText += "^\n"; - } - else if(oDoc.documentElement == null){ - parseErrorText = Sarissa.PARSED_EMPTY; - }; - return parseErrorText; - }; - // see non-IE version - Sarissa.setXpathNamespaces = function(oDoc, sNsSet) { - oDoc.setProperty("SelectionLanguage", "XPath"); - oDoc.setProperty("SelectionNamespaces", sNsSet); - }; - /** - * Basic implementation of Mozilla's XSLTProcessor for IE. - * Reuses the same XSLT stylesheet for multiple transforms - * @constructor - */ - XSLTProcessor = function(){ - if(!_SARISSA_XSLTEMPLATE_PROGID){ - _SARISSA_XSLTEMPLATE_PROGID = Sarissa.pickRecentProgID(["Msxml2.XSLTemplate.6.0", "MSXML2.XSLTemplate.3.0"]); - }; - this.template = new ActiveXObject(_SARISSA_XSLTEMPLATE_PROGID); - this.processor = null; - }; - /** - * Imports the given XSLT DOM and compiles it to a reusable transform - * Note: If the stylesheet was loaded from a URL and contains xsl:import or xsl:include elements,it will be reloaded to resolve those - * @argument xslDoc The XSLT DOMDocument to import - */ - XSLTProcessor.prototype.importStylesheet = function(xslDoc){ - if(!_SARISSA_THREADEDDOM_PROGID){ - _SARISSA_THREADEDDOM_PROGID = Sarissa.pickRecentProgID(["MSXML2.FreeThreadedDOMDocument.6.0", "MSXML2.FreeThreadedDOMDocument.3.0"]); - }; - xslDoc.setProperty("SelectionLanguage", "XPath"); - xslDoc.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'"); - // convert stylesheet to free threaded - var converted = new ActiveXObject(_SARISSA_THREADEDDOM_PROGID); - // make included/imported stylesheets work if exist and xsl was originally loaded from url - try{ - converted.resolveExternals = true; - converted.setProperty("AllowDocumentFunction", true); - } - catch(e){ - // Ignore. "AllowDocumentFunction" is only supported in MSXML 3.0 SP4 and later. - }; - if(xslDoc.url && xslDoc.selectSingleNode("//xsl:*[local-name() = 'import' or local-name() = 'include']") != null){ - converted.async = false; - converted.load(xslDoc.url); - } else { - converted.loadXML(xslDoc.xml); - }; - converted.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'"); - var output = converted.selectSingleNode("//xsl:output"); - this.outputMethod = output ? output.getAttribute("method") : "html"; - this.template.stylesheet = converted; - this.processor = this.template.createProcessor(); - // for getParameter and clearParameters - this.paramsSet = []; - }; - - /** - * Transform the given XML DOM and return the transformation result as a new DOM document - * @argument sourceDoc The XML DOMDocument to transform - * @return The transformation result as a DOM Document - */ - XSLTProcessor.prototype.transformToDocument = function(sourceDoc){ - // fix for bug 1549749 - if(_SARISSA_THREADEDDOM_PROGID){ - this.processor.input=sourceDoc; - var outDoc=new ActiveXObject(_SARISSA_DOM_PROGID); - this.processor.output=outDoc; - this.processor.transform(); - return outDoc; - } - else{ - if(!_SARISSA_DOM_XMLWRITER){ - _SARISSA_DOM_XMLWRITER = Sarissa.pickRecentProgID(["Msxml2.MXXMLWriter.6.0", "Msxml2.MXXMLWriter.3.0", "MSXML2.MXXMLWriter", "MSXML.MXXMLWriter", "Microsoft.XMLDOM"]); - }; - this.processor.input = sourceDoc; - var outDoc = new ActiveXObject(_SARISSA_DOM_XMLWRITER); - this.processor.output = outDoc; - this.processor.transform(); - var oDoc = new ActiveXObject(_SARISSA_DOM_PROGID); - oDoc.loadXML(outDoc.output+""); - return oDoc; - }; - }; - - /** - * Transform the given XML DOM and return the transformation result as a new DOM fragment. - * Note: The xsl:output method must match the nature of the owner document (XML/HTML). - * @argument sourceDoc The XML DOMDocument to transform - * @argument ownerDoc The owner of the result fragment - * @return The transformation result as a DOM Document - */ - XSLTProcessor.prototype.transformToFragment = function (sourceDoc, ownerDoc) { - this.processor.input = sourceDoc; - this.processor.transform(); - var s = this.processor.output; - var f = ownerDoc.createDocumentFragment(); - if (this.outputMethod == 'text') { - f.appendChild(ownerDoc.createTextNode(s)); - } else if (ownerDoc.body && ownerDoc.body.innerHTML) { - var container = ownerDoc.createElement('div'); - container.innerHTML = s; - while (container.hasChildNodes()) { - f.appendChild(container.firstChild); - } - } - else { - var oDoc = new ActiveXObject(_SARISSA_DOM_PROGID); - if (s.substring(0, 5) == '') + 2); - } - var xml = ''.concat('', s, ''); - oDoc.loadXML(xml); - var container = oDoc.documentElement; - while (container.hasChildNodes()) { - f.appendChild(container.firstChild); - } - } - return f; - }; - - /** - * Set global XSLT parameter of the imported stylesheet - * @argument nsURI The parameter namespace URI - * @argument name The parameter base name - * @argument value The new parameter value - */ - XSLTProcessor.prototype.setParameter = function(nsURI, name, value){ - // make value a zero length string if null to allow clearing - value = value ? value : ""; - // nsURI is optional but cannot be null - if(nsURI){ - this.processor.addParameter(name, value, nsURI); - }else{ - this.processor.addParameter(name, value); - }; - // update updated params for getParameter - nsURI = "" + (nsURI || ""); - if(!this.paramsSet[nsURI]){ - this.paramsSet[nsURI] = new Array(); - }; - this.paramsSet[nsURI][name] = value; - }; - /** - * Gets a parameter if previously set by setParameter. Returns null - * otherwise - * @argument name The parameter base name - * @argument value The new parameter value - * @return The parameter value if reviously set by setParameter, null otherwise - */ - XSLTProcessor.prototype.getParameter = function(nsURI, name){ - nsURI = "" + (nsURI || ""); - if(this.paramsSet[nsURI] && this.paramsSet[nsURI][name]){ - return this.paramsSet[nsURI][name]; - }else{ - return null; - }; - }; - /** - * Clear parameters (set them to default values as defined in the stylesheet itself) - */ - XSLTProcessor.prototype.clearParameters = function(){ - for(var nsURI in this.paramsSet){ - for(var name in this.paramsSet[nsURI]){ - if(nsURI!=""){ - this.processor.addParameter(name, "", nsURI); - }else{ - this.processor.addParameter(name, ""); - }; - }; - }; - this.paramsSet = new Array(); - }; -}else{ /* end IE initialization, try to deal with real browsers now ;-) */ - if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){ - /** - *

Ensures the document was loaded correctly, otherwise sets the - * parseError to -1 to indicate something went wrong. Internal use

- * @private - */ - Sarissa.__handleLoad__ = function(oDoc){ - Sarissa.__setReadyState__(oDoc, 4); - }; - /** - *

Attached by an event handler to the load event. Internal use.

- * @private - */ - _sarissa_XMLDocument_onload = function(){ - Sarissa.__handleLoad__(this); - }; - /** - *

Sets the readyState property of the given DOM Document object. - * Internal use.

- * @private - * @argument oDoc the DOM Document object to fire the - * readystatechange event - * @argument iReadyState the number to change the readystate property to - */ - Sarissa.__setReadyState__ = function(oDoc, iReadyState){ - oDoc.readyState = iReadyState; - oDoc.readystate = iReadyState; - if (oDoc.onreadystatechange != null && typeof oDoc.onreadystatechange == "function") { - oDoc.onreadystatechange(); - } - }; - Sarissa.getDomDocument = function(sUri, sName){ - var oDoc = document.implementation.createDocument(sUri?sUri:null, sName?sName:null, null); - if(!oDoc.onreadystatechange){ - - /** - *

Emulate IE's onreadystatechange attribute

- */ - oDoc.onreadystatechange = null; - }; - if(!oDoc.readyState){ - /** - *

Emulates IE's readyState property, which always gives an integer from 0 to 4:

- * - */ - oDoc.readyState = 0; - }; - oDoc.addEventListener("load", _sarissa_XMLDocument_onload, false); - return oDoc; - }; - if(window.XMLDocument){ - // do nothing - }// TODO: check if the new document has content before trying to copynodes, check for error handling in DOM 3 LS - else if(_SARISSA_HAS_DOM_FEATURE && window.Document && !Document.prototype.load && document.implementation.hasFeature('LS', '3.0')){ - //Opera 9 may get the XPath branch which gives creates XMLDocument, therefore it doesn't reach here which is good - /** - *

Factory method to obtain a new DOM Document object

- * @argument sUri the namespace of the root node (if any) - * @argument sUri the local name of the root node (if any) - * @returns a new DOM Document - */ - Sarissa.getDomDocument = function(sUri, sName){ - var oDoc = document.implementation.createDocument(sUri?sUri:null, sName?sName:null, null); - return oDoc; - }; - } - else { - Sarissa.getDomDocument = function(sUri, sName){ - var oDoc = document.implementation.createDocument(sUri?sUri:null, sName?sName:null, null); - // looks like safari does not create the root element for some unknown reason - if(oDoc && (sUri || sName) && !oDoc.documentElement){ - oDoc.appendChild(oDoc.createElementNS(sUri, sName)); - }; - return oDoc; - }; - }; - };//if(_SARISSA_HAS_DOM_CREATE_DOCUMENT) -}; -//========================================== -// Common stuff -//========================================== -if(!window.DOMParser){ - if(_SARISSA_IS_SAFARI){ - /* - * DOMParser is a utility class, used to construct DOMDocuments from XML strings - * @constructor - */ - DOMParser = function() { }; - /** - * Construct a new DOM Document from the given XMLstring - * @param sXml the given XML string - * @param contentType the content type of the document the given string represents (one of text/xml, application/xml, application/xhtml+xml). - * @return a new DOM Document from the given XML string - */ - DOMParser.prototype.parseFromString = function(sXml, contentType){ - var xmlhttp = new XMLHttpRequest(); - xmlhttp.open("GET", "data:text/xml;charset=utf-8," + encodeURIComponent(sXml), false); - xmlhttp.send(null); - return xmlhttp.responseXML; - }; - }else if(Sarissa.getDomDocument && Sarissa.getDomDocument() && Sarissa.getDomDocument(null, "bar").xml){ - DOMParser = function() { }; - DOMParser.prototype.parseFromString = function(sXml, contentType){ - var doc = Sarissa.getDomDocument(); - doc.loadXML(sXml); - return doc; - }; - }; -}; - -if((typeof(document.importNode) == "undefined") && _SARISSA_IS_IE){ - try{ - /** - * Implementation of importNode for the context window document in IE. - * If oNode is a TextNode, bChildren is ignored. - * @param oNode the Node to import - * @param bChildren whether to include the children of oNode - * @returns the imported node for further use - */ - document.importNode = function(oNode, bChildren){ - var tmp; - if (oNode.nodeName=='#text') { - return document.createTextElement(oNode.data); - } - else { - if(oNode.nodeName == "tbody" || oNode.nodeName == "tr"){ - tmp = document.createElement("table"); - } - else if(oNode.nodeName == "td"){ - tmp = document.createElement("tr"); - } - else if(oNode.nodeName == "option"){ - tmp = document.createElement("select"); - } - else{ - tmp = document.createElement("div"); - }; - if(bChildren){ - tmp.innerHTML = oNode.xml ? oNode.xml : oNode.outerHTML; - }else{ - tmp.innerHTML = oNode.xml ? oNode.cloneNode(false).xml : oNode.cloneNode(false).outerHTML; - }; - return tmp.getElementsByTagName("*")[0]; - }; - - }; - }catch(e){ }; -}; -if(!Sarissa.getParseErrorText){ - /** - *

Returns a human readable description of the parsing error. Usefull - * for debugging. Tip: append the returned error string in a <pre> - * element if you want to render it.

- *

Many thanks to Christian Stocker for the initial patch.

- * @argument oDoc The target DOM document - * @returns The parsing error description of the target Document in - * human readable form (preformated text) - */ - Sarissa.getParseErrorText = function (oDoc){ - var parseErrorText = Sarissa.PARSED_OK; - if(!oDoc.documentElement){ - parseErrorText = Sarissa.PARSED_EMPTY; - } else if(oDoc.documentElement.tagName == "parsererror"){ - parseErrorText = oDoc.documentElement.firstChild.data; - parseErrorText += "\n" + oDoc.documentElement.firstChild.nextSibling.firstChild.data; - } else if(oDoc.getElementsByTagName("parsererror").length > 0){ - var parsererror = oDoc.getElementsByTagName("parsererror")[0]; - parseErrorText = Sarissa.getText(parsererror, true)+"\n"; - } else if(oDoc.parseError && oDoc.parseError.errorCode != 0){ - parseErrorText = Sarissa.PARSED_UNKNOWN_ERROR; - }; - return parseErrorText; - }; -}; -Sarissa.getText = function(oNode, deep){ - var s = ""; - var nodes = oNode.childNodes; - for(var i=0; i < nodes.length; i++){ - var node = nodes[i]; - var nodeType = node.nodeType; - if(nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE){ - s += node.data; - } else if(deep == true - && (nodeType == Node.ELEMENT_NODE - || nodeType == Node.DOCUMENT_NODE - || nodeType == Node.DOCUMENT_FRAGMENT_NODE)){ - s += Sarissa.getText(node, true); - }; - }; - return s; -}; -if(!window.XMLSerializer - && Sarissa.getDomDocument - && Sarissa.getDomDocument("","foo", null).xml){ - /** - * Utility class to serialize DOM Node objects to XML strings - * @constructor - */ - XMLSerializer = function(){}; - /** - * Serialize the given DOM Node to an XML string - * @param oNode the DOM Node to serialize - */ - XMLSerializer.prototype.serializeToString = function(oNode) { - return oNode.xml; - }; -}; - -/** - * strips tags from a markup string - */ -Sarissa.stripTags = function (s) { - return s.replace(/<[^>]+>/g,""); -}; -/** - *

Deletes all child nodes of the given node

- * @argument oNode the Node to empty - */ -Sarissa.clearChildNodes = function(oNode) { - // need to check for firstChild due to opera 8 bug with hasChildNodes - while(oNode.firstChild) { - oNode.removeChild(oNode.firstChild); - }; -}; -/** - *

Copies the childNodes of nodeFrom to nodeTo

- *

Note: The second object's original content is deleted before - * the copy operation, unless you supply a true third parameter

- * @argument nodeFrom the Node to copy the childNodes from - * @argument nodeTo the Node to copy the childNodes to - * @argument bPreserveExisting whether to preserve the original content of nodeTo, default is false - */ -Sarissa.copyChildNodes = function(nodeFrom, nodeTo, bPreserveExisting) { - if(_SARISSA_IS_SAFARI && nodeTo.nodeType == Node.DOCUMENT_NODE){ // SAFARI_OLD ?? - nodeTo = nodeTo.documentElement; //Appearantly there's a bug in safari where you can't appendChild to a document node - } - - if((!nodeFrom) || (!nodeTo)){ - throw "Both source and destination nodes must be provided"; - }; - if(!bPreserveExisting){ - Sarissa.clearChildNodes(nodeTo); - }; - var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument; - var nodes = nodeFrom.childNodes; - if(typeof(ownerDoc.importNode) != "undefined") { - for(var i=0;i < nodes.length;i++) { - nodeTo.appendChild(ownerDoc.importNode(nodes[i], true)); - }; - } else { - for(var i=0;i < nodes.length;i++) { - nodeTo.appendChild(nodes[i].cloneNode(true)); - }; - }; -}; - -/** - *

Moves the childNodes of nodeFrom to nodeTo

- *

Note: The second object's original content is deleted before - * the move operation, unless you supply a true third parameter

- * @argument nodeFrom the Node to copy the childNodes from - * @argument nodeTo the Node to copy the childNodes to - * @argument bPreserveExisting whether to preserve the original content of nodeTo, default is - */ -Sarissa.moveChildNodes = function(nodeFrom, nodeTo, bPreserveExisting) { - if((!nodeFrom) || (!nodeTo)){ - throw "Both source and destination nodes must be provided"; - }; - if(!bPreserveExisting){ - Sarissa.clearChildNodes(nodeTo); - }; - var nodes = nodeFrom.childNodes; - // if within the same doc, just move, else copy and delete - if(nodeFrom.ownerDocument == nodeTo.ownerDocument){ - while(nodeFrom.firstChild){ - nodeTo.appendChild(nodeFrom.firstChild); - }; - } else { - var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument; - if(typeof(ownerDoc.importNode) != "undefined") { - for(var i=0;i < nodes.length;i++) { - nodeTo.appendChild(ownerDoc.importNode(nodes[i], true)); - }; - }else{ - for(var i=0;i < nodes.length;i++) { - nodeTo.appendChild(nodes[i].cloneNode(true)); - }; - }; - Sarissa.clearChildNodes(nodeFrom); - }; -}; - -/** - *

Serialize any non DOM object to an XML string. All properties are serialized using the property name - * as the XML element name. Array elements are rendered as array-item elements, - * using their index/key as the value of the key attribute.

- * @argument anyObject the object to serialize - * @argument objectName a name for that object - * @return the XML serialization of the given object as a string - */ -Sarissa.xmlize = function(anyObject, objectName, indentSpace){ - indentSpace = indentSpace?indentSpace:''; - var s = indentSpace + '<' + objectName + '>'; - var isLeaf = false; - if(!(anyObject instanceof Object) || anyObject instanceof Number || anyObject instanceof String - || anyObject instanceof Boolean || anyObject instanceof Date){ - s += Sarissa.escape(""+anyObject); - isLeaf = true; - }else{ - s += "\n"; - var isArrayItem = anyObject instanceof Array; - for(var name in anyObject){ - s += Sarissa.xmlize(anyObject[name], (isArrayItem?"array-item key=\""+name+"\"":name), indentSpace + " "); - }; - s += indentSpace; - }; - return (s += (objectName.indexOf(' ')!=-1?"\n":"\n")); -}; - -/** - * Escape the given string chacters that correspond to the five predefined XML entities - * @param sXml the string to escape - */ -Sarissa.escape = function(sXml){ - return sXml.replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); -}; - -/** - * Unescape the given string. This turns the occurences of the predefined XML - * entities to become the characters they represent correspond to the five predefined XML entities - * @param sXml the string to unescape - */ -Sarissa.unescape = function(sXml){ - return sXml.replace(/'/g,"'") - .replace(/"/g,"\"") - .replace(/>/g,">") - .replace(/</g,"<") - .replace(/&/g,"&"); -}; -// EOF diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/Resources/styles/styles.css --- a/examples/Common/QtConfigurator/Resources/styles/styles.css Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -#left { - float: left; - width: 50%; -} - -#right { - float: right; - width: 50%; -} - -#bottom { - clear: both; - width: 100%; -} - -div.details { - width: 100%; -} - -div.memory { - width: 100%; -} - -div.hard-disks { - width: 100%; -} - -div.storage { - width: 100%; -} - -div.accessories { - width: 100%; -} - -div.peripherals { - clear: both; - float: right; - width: 50%; -} - -div.price { - float: left; - width: 50%; -} diff -r 992418d03359 -r bdf2a1b673e5 examples/Common/QtConfigurator/__init__.py --- a/examples/Common/QtConfigurator/__init__.py Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,241 +0,0 @@ -#!/usr/bin/env python - -"An example of a system configurator which runs under PyQt and WebStack." - -import os - -class ConfiguratorResource: - - # Standard attributes. - - resource_dir = os.path.join(os.path.split(__file__)[0], "Resources") - - design_resources = { - "configuration" : "config.ui" - } - - widget_resources = { - "hard_disk" : ("config_hard_disk.ui", "hard_disk"), - "memory_unit" : ("config_memory_unit.ui", "memory_unit"), - "storage_unit" : ("config_storage_unit.ui", "storage_unit") - #"hard_disks" : ("config_hard_disks.ui", "hard_disks"), - #"memory_units" : ("config_memory_units.ui", "memory_units"), - #"storage_units" : ("config_storage_units.ui", "storage_units") - } - - document_resources = { - "base-system" : "config_base_system.xml", - "cpu" : "config_cpu.xml", - "hard-disk" : "config_hard_disk.xml", - "keyboard" : "config_keyboard.xml", - "memory-unit" : "config_memory_unit.xml", - "mouse" : "config_mouse.xml", - "screen" : "config_screen.xml", - "storage-unit" : "config_storage_unit.xml" - } - - # Initialisation. - - def __init__(self, *args, **kw): - pass - - def form_init(self): - - self.reset_collection(self.child("hard_disks")) - self.reset_collection(self.child("memory_units")) - self.reset_collection(self.child("storage_units")) - - def form_populate(self): - - # Get field data. - # NOTE: This would be done for whole page updates in a Web application. - - self.populate_list(self.child("base_system"), self.get_elements("base-system")) - self.populate_list(self.child("keyboard"), self.get_elements("keyboard")) - self.populate_list(self.child("mouse"), self.get_elements("mouse")) - self.populate_list(self.child("screen"), self.get_elements("screen")) - - # General functionality. - - def form_refresh(self, current_text=None): - - # Ensure consistency. - # NOTE: This would be done for whole page updates in a Web application. - # NOTE: This would also be done for page updates where the information - # NOTE: involved was important. - - current_text = current_text or self.child("base_system").currentText() - - # Find the CPU socket and the interface of the current base system. - cpu_socket = None - interface = None - for element in self.get_elements("base-system"): - text = element.getAttribute("value") - if text == current_text: - cpu_socket = element.getAttribute("cpu-socket") - interface = element.getAttribute("interface") - - # Find all valid CPUs. - valid = [] - for element in self.get_elements("cpu"): - if not element.hasAttribute("cpu-socket") or element.getAttribute("cpu-socket") == cpu_socket: - valid.append(element) - self.populate_list(self.child("cpu"), valid) - - # Find all valid hard disks. - valid = [] - for element in self.get_elements("hard-disk"): - if not element.hasAttribute("interface") or element.getAttribute("interface") == interface: - valid.append(element) - for hard_disk_value in self.factory.find_widgets(self, "hard_disk_value"): - self.populate_list(hard_disk_value, valid) - - # Find memory units. - for memory_unit_value in self.factory.find_widgets(self, "memory_unit_value"): - self.populate_list(memory_unit_value, self.get_elements("memory-unit")) - - # Find storage units. - for storage_unit_value in self.factory.find_widgets(self, "storage_unit_value"): - self.populate_list(storage_unit_value, self.get_elements("storage-unit")) - - # Slots. - - def baseSystemChanged(self, current_text): - self.request_refresh(current_text) - - def addHardDisk(self): - #hard_disks = self.prepare_widget("configuration", "hard_disks") - #tab_pages = hard_disks.child("tab pages") - #tab = tab_pages.child("tab") - #self.child("hard_disks").addTab(tab, hard_disks.tabLabel(tab)) - #self.factory.connect(tab, self) - hard_disk = self.prepare_widget("configuration", "hard_disk", self.child("hard_disks")) - self.child("hard_disks").layout().add(hard_disk) - hard_disk.show() - self.factory.connect(hard_disk, self) - - # Perform the consistency check. - # NOTE: This is not as efficient as it could be since the general check - # NOTE: refreshes all fields, not just newly added ones. - self.request_refresh() - - def addMemoryUnit(self): - #memory_units = self.prepare_widget("configuration", "memory_units") - #tab_pages = memory_units.child("tab pages") - #tab = tab_pages.child("tab") - #self.child("memory_units").addTab(tab, memory_units.tabLabel(tab)) - #self.factory.connect(tab, self) - memory_unit = self.prepare_widget("configuration", "memory_unit", self.child("memory_units")) - self.child("memory_units").layout().add(memory_unit) - memory_unit.show() - self.factory.connect(memory_unit, self) - - # Perform the consistency check. - # NOTE: This is not as efficient as it could be since the general check - # NOTE: refreshes all fields, not just newly added ones. - self.request_refresh() - - def addStorageUnit(self): - #storage_units = self.prepare_widget("configuration", "storage_units") - #tab_pages = storage_units.child("tab pages") - #tab = tab_pages.child("tab") - #self.child("storage_units").addTab(tab, storage_units.tabLabel(tab)) - #self.factory.connect(tab, self) - storage_unit = self.prepare_widget("configuration", "storage_unit", self.child("storage_units")) - self.child("storage_units").layout().add(storage_unit) - storage_unit.show() - self.factory.connect(storage_unit, self) - - # Perform the consistency check. - # NOTE: This is not as efficient as it could be since the general check - # NOTE: refreshes all fields, not just newly added ones. - self.request_refresh() - - def removeHardDisk(self): - #page = self.hard_disks.currentPage() - #self.hard_disks.removePage(page) - #page.deleteLater() - remove_hard_disk = self.sender() - hard_disk = remove_hard_disk.parent() - self.child("hard_disks").layout().remove(hard_disk) - hard_disk.deleteLater() - - def removeMemoryUnit(self): - #page = self.memory_units.currentPage() - #self.memory_units.removePage(page) - #page.deleteLater() - remove_memory_unit = self.sender() - memory_unit = remove_memory_unit.parent() - self.child("memory_units").layout().remove(memory_unit) - memory_unit.deleteLater() - - def removeStorageUnit(self): - #page = self.storage_units.currentPage() - #self.storage_units.removePage(page) - #page.deleteLater() - remove_storage_unit = self.sender() - storage_unit = remove_storage_unit.parent() - self.child("storage_units").layout().remove(storage_unit) - storage_unit.deleteLater() - - def updateConfig(self): - self.form_refresh() - - def exportConfig(self): - print "configuration.exportConfig(): Not implemented yet" - -def get_resource(resource_type, *args, **kw): - - if resource_type == "PyQt": - import XSLForms.Resources.PyQtResources - try: - import QtConfigurator.Forms - except ImportError: - print "*" * 60 - print "Please generate the following file before running this example:" - print os.path.join(os.path.split(__file__)[0], "Forms.py") - print "Use the pyuic program along with the form definition file:" - print os.path.join(os.path.split(__file__)[0], "Resources", "config.ui") - print "*" * 60 - print - raise - class Configurator(ConfiguratorResource, QtConfigurator.Forms.Configurator, XSLForms.Resources.PyQtResources.XSLFormsResource): - def __init__(self, *args, **kw): - QtConfigurator.Forms.Configurator.__init__(self, *args, **kw) - XSLForms.Resources.PyQtResources.XSLFormsResource.__init__(self, "configuration") - ConfiguratorResource.__init__(self, *args, **kw) - resource = Configurator(*args, **kw) - resource.form_init() - resource.form_populate() - - else: - import XSLForms.Resources.PyQtWebResources - from WebStack.Resources.ResourceMap import MapResource - from WebStack.Resources.Selectors import EncodingSelector - from WebStack.Resources.Static import DirectoryResource - - # Configuration setting. - - encoding = "utf-8" - - class Configurator(ConfiguratorResource, XSLForms.Resources.PyQtWebResources.XSLFormsResource): - def __init__(self, *args, **kw): - XSLForms.Resources.PyQtWebResources.XSLFormsResource.__init__(self, "configuration") - ConfiguratorResource.__init__(self, *args, **kw) - - configurator_resource = Configurator(*args, **kw) - directory = configurator_resource.resource_dir - root_resource = MapResource({ - "styles" : DirectoryResource(os.path.join(directory, "styles"), {"css" : "text/css"}), - "scripts" : DirectoryResource(os.path.join(directory, "scripts"), {"js" : "text/javascript"}), - "" : configurator_resource - }) - resource = EncodingSelector(root_resource, encoding) - - # Do not initialise or populate the resource here: both happen when a - # Web request is received (initialisation when no form document is - # found; population when a form document is prepared for output). - - return resource - -# vim: tabstop=4 expandtab shiftwidth=4 diff -r 992418d03359 -r bdf2a1b673e5 examples/PyQt/QtConfiguratorApp.py --- a/examples/PyQt/QtConfiguratorApp.py Fri Nov 21 01:43:30 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -#!/usr/bin/env python - -from qt import QApplication, QMainWindow, QScrollView, QSizePolicy -import QtConfigurator -import sys - -if __name__ == "__main__": - app = QApplication(sys.argv) - window = QScrollView() - configurator = QtConfigurator.get_resource("PyQt", window) - window.addChild(configurator) - window.show() - window.resize( - configurator.width(), # + window.verticalScrollBar().width(), - configurator.height()) # + window.horizontalScrollBar().height()) - app.setMainWidget(window) - app.exec_loop() - -# vim: tabstop=4 expandtab shiftwidth=4