# ************************************************************* # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # # ************************************************************* * Obsolete notes ... ** Form XML format: + from the basic editor: + code to read this & generate UIs is in: + DTD: xmlscript/dtd/dialog.dtd + xmlscript/source/xmldlg_imexp/imp_share.hxx, line 674 + xmlscript/source/misc/unoservices.cxx xmlscript/source/xmlflat_imexp/xmlbas_import.cxx (?) "com.sun.star.comp.xmlscript.XMLBasicImporter" + the dialog piece seems separate ? "importDialogModel" ... + cf. the interesting test code ... + cd xmlscript/test dmake ../unxlngi6.pro/bin/imexp /opt/OOInstall ./test.xml + generates & renders a dialog ... + This code has ~all we need to get a simple impl. + compatibility wrappers [!] // first create model: Reference< container::XNameContainer > xModel( xContext->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ), xContext ), UNO_QUERY ); // NB. xmldlg_addfunc.cxx not xmldlg_import.cxx [!?] ;-) ::xmlscript::importDialogModel( ::xmlscript::createInputStream( bytes ), xModel, xContext ); // second create view of model: Reference< awt::XControl > xDlg( xMSF->createInstance( OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialog" ) ) ), UNO_QUERY ); xDlg->setModel( Reference< awt::XControlModel >::query( xModel ) ); // third - associate toolkit / peer ... Reference< awt::XToolkit> xToolkit( xMSF->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.ExtToolkit" ) ) ), UNO_QUERY ); xDlg->createPeer( xToolkit, 0 ); // fourth - execute [ nasty ... ] Reference< awt::XDialog > xD( xDlg, UNO_QUERY ); xD->execute(); ** Basic dialog editor: + basctl/source/dlged/dlged.cxx + dialog editor (?) + basctl/source/basicide/basobj3.cxx + basctl/source/basicide/basides3.cxx + BasicIDEShell:CreateDlgWin ... ** FIXME: + createPeer - when called is always passed the toplevel [ it seems ... ] + we need to pass a container instead ... + or have some separate hint / method ? + or call the 'setChild' inside the model construction bits ? [!?] UnoControlContainer::addingControl: + only caller to 'setContext' + sets the 'Parent' for peers ... Dialog is an UnoControlContainer ... + hmm ... + 'XControlContainer' + perhaps just what we need ... [!] + our VBox should be one ... + Other things: tab widgets are 'UnoControlContainers' ... + finally remembered: xml foo ... + + FIXME: it -seems- that we don't store much hierarchy in the model [ any ? ] + UnoControlModel -> ? + UnoControlDialogModel - has an XNameContainer ... + but ... only the UnoControl-Dialog-Model has this ... + Wow - even the percieved hierarchy: + 'exportDialogModel' + achieved by 'getElementNames' -> flat set of names ... [urgh] + So - we need to add more structure: + XNameContainers ... + that we insert into [!?] + we also need to retain order for packing. + need a list of sillies to reverse / revert (?) ... + back-compat: + kill bogus nesting eg. radiogroup ... [ have a group/tag instead - or hierarchical names ? ] + ditto for 'titledbox' ... + menulists - seem rather unrelated / bogus anyway. + Add into toplevel & child ... + copy Dialog bits into unocontrolcontainer.cxx ... + re-using unocontrolcontainer ... ** FIXME: + we need property introspection on the awt widgets: + but they have no property interfaces [!] - interestingly the UnoControl's don't either only the UnoControlModel foo ... + unocontrols.cxx: Uno + source/helper/property.cxx + has all the type information ... + but no information on what properties are valid for a type ... - implicit in the UnoControlModel's code ... + ImplGetPropertyInfos ... + add to vclxwindow.cxx: + inc/toolkit/helper/property.hxx + 'getProperties' static ... ** It seems that things like UnoControlComboBoxModel are missing some derived properties: EchoChar (etc.) UnoControlDateFieldModel - missing ... EchoChar too (?) - deliberate ? + query these ... [!?] layout container - start child 'combobox' missing property 46 (EchoChar) missing property 48 (HardLineBreaks) missing property 12 (HScroll) missing property 104 (LineEndFormat) missing property 10 (MultiLine) missing property 13 (VScroll) + add regression test: + count number of properties ... TODO: add 'XPropertySetInfo' to VCLXWindow: + trivial to implement :-) + hook it to Ricardo's parser ... [!] :-) * xmlscript + xmldlg_import.cxx - + xml_helper/xml_impctx.cxx - foo ... * plan: + hard-code container hooks into the xmlscript/ parser ... + create a layout object in toolkit/ + populate it with good things ... + coupling to toolkit - widget instantiation: how ... + ComponentInfos + vclxtoolkit.cxx: + has a 'hook function' for 'fnSvtCreateWindow' for SVT widgets :-) [ grotesque ;-] + [ wow - fetched by dlopen! ;-] + A little app - a-la solver: using awt (?) + XMessageBoxFactory ... + XToolkit: + CreateWindow ... + ** how does the xml code generate these guys ? ** + what APIs does the xmlimporter use ? not 'createWindow' seemingly. + existing xml import uses: property bag a -lot-: Reference< beans::XPropertySet > xProps( _pImport->_xDialogModel, UNO_QUERY_THROW ); * we do _xDialogModel->insertByName (new any()) + to build hierarchy ( cf. ~ControlImportContext ) DialogImport: css::uno::Reference< css::container::XNameContainer > _xDialogModel; Reference< container::XNameContainer > xModel( xContext->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ), xContext ), UNO_QUERY ); toolkit/source/controls/dialogcontrol.cxx + UnoControlButtonModel (eg.) + service 'UnoControlModel' ... + poke at 'titledbox' or 'radiogroup' to see how containment works there ... + how will child widget properties work ? + bug with a 'vbox' inside a 'titledbox' ... + titledbox - acts as a container (interesting) - offsetting child positions + how will pseudo-containers eg. "radiogroup" cope ? + propose new syntax: [ with child properties a-la glade ]: + if 'child' element omitted - default properties used ... + if multiple elements in same 'child' set: all have the same props.