| # ************************************************************* |
| # |
| # 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: |
| |
| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd"> |
| <dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Dialog1" dlg:left="204" dlg:top="148" dlg:width="136" dlg:height="115" dlg:closeable="true" dlg:moveable="true"> |
| <dlg:bulletinboard> |
| <dlg:button dlg:id="OkButtonName" dlg:tab-index="0" dlg:left="86" dlg:top="92" dlg:width="44" dlg:height="19" dlg:value="OkButtonLabel"/> |
| <dlg:titledbox dlg:id="FrameControl1" dlg:tab-index="1" dlg:left="4" dlg:top="7" dlg:width="68" dlg:height="41"> |
| <dlg:title dlg:value="FrameControl1"/> |
| </dlg:titledbox> |
| <dlg:scrollbar dlg:id="ScrollBar1" dlg:tab-index="2" dlg:left="82" dlg:top="10" dlg:width="45" dlg:height="24"/> |
| <dlg:scrollbar dlg:id="ScrollBar2" dlg:tab-index="3" dlg:left="107" dlg:top="43" dlg:width="21" dlg:height="37" dlg:align="vertical"/> |
| <dlg:timefield dlg:id="TimeField1" dlg:tab-index="4" dlg:left="4" dlg:top="92" dlg:width="28" dlg:height="19"/> |
| <dlg:text dlg:id="Label1" dlg:tab-index="5" dlg:left="22" dlg:top="61" dlg:width="44" dlg:height="15" dlg:value="Label1"/> |
| </dlg:bulletinboard> |
| </dlg:window> |
| |
| + 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<XControlModel>()) |
| + 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 ]: |
| |
| <hbox id="baa" flange="true"> |
| <child padding="0" expand="false" fill="false"> |
| <radio id="foo" value="..."/> |
| </child> |
| <radio id="foo" value="..."/> |
| </hbox> |
| |
| + if 'child' element omitted - default properties used ... |
| + if multiple elements in same 'child' set: all have the same props. |
| |
| |