ooo-build r11658 - trunk/doc
- From: noelpwer svn gnome org
- To: svn-commits-list gnome org
- Subject: ooo-build r11658 - trunk/doc
- Date: Thu, 21 Feb 2008 12:27:09 +0000 (GMT)
Author: noelpwer
Date: Thu Feb 21 12:27:09 2008
New Revision: 11658
URL: http://svn.gnome.org/viewvc/ooo-build?rev=11658&view=rev
Log:
some basic notes ( and call stacks ) for import and export of form
controls ( before I forget )
Added:
trunk/doc/excel-formcontrols-import-export-notes.txt
Added: trunk/doc/excel-formcontrols-import-export-notes.txt
==============================================================================
--- (empty file)
+++ trunk/doc/excel-formcontrols-import-export-notes.txt Thu Feb 21 12:27:09 2008
@@ -0,0 +1,97 @@
+form control objects imported by
+
+XclImpTbxControlObj
+
+
+where
+
+XclImpControlObjHelper
+ /|\
+ |
+XclImpDrawObjBase
+ /|\
+ |
+XclImpDrawingObj
+ /|\
+ |
+XclImpTbxControlObj
+
+key methods are
+o CreateSdrObject - factory to create the correct 'type' of object
+o DoProcessObj - object specific processing e.g. for shape, control, note etc.
+
+XclImpTbxControlObj::DoProcessSdrObj() xiescher.cxx:943
+XclImpDrawObjBase::ProcessSdrObject () xiescher.cxx:561
+XclImpDffManager::ProcessObj() xiescher.cxx:1779 - note: after processing the object t is inserted into the solver container, there is a map between the shapeId and the SdrObject - useful I guess for postprocessing
+SvxMSDffManager::ImportShape() msdffimp.cxx:5425 - imports the shape e.g. size, position, font specifics etc. it also calls XclImpDffManager::ProcessObj() at xiescher.cxx:1681
+ XclImpDffManager::ProcessObj() calls XclImpDffManager::CreateCustomSdrObject() which calls XclImpDffManager::CreateSdrObject()
+SvxMSDffManager::ImportObj () msdffimp.cxx:4657 - calls appropriate sub processing importShape or importGroup
+XclImpDffManager::ProcessShContainer () at xiescher.cxx:1927 - imports the object
+XclImpDffManager::ProcessShGrContainer() at xiescher.cxx:1895 this fellow then loops for the DFF_msofbtSpgrContainer reading each record ( shape )
+XclImpDffManager::ProcessDgContainer () at xiescher.cxx:1869 - called in a loop, depending on the record ( DFF_msofbtSolverContainer or DFF_msofbtSpgrContainer ) a ProcessSolverContainer or ProcessShGrContainer call is made
+
+XclImpDffManager::ProcessDrawing() - called once per tab
+
+XclImpTbxControlObj ( and other subclasses of XclImpDrawObjBase are created by XclImpDrawObjBase::ReadObjCmo ( static ) called by the objectmanager
+
+The bones of the object ( formcontrol ) specific import happens in XclImpTbxControlObj::ReadSubRecord() where local variables are populated. The next stage is when XclImpTbxControlObj::DoProcessSdrObj is called. At the point the info stored by the local variables ( things like state, control name etc. ) are set on the uno object via the XPropertySet associated with the imported control. Access to the XPropertySet is given by XclImpControlObjHelper:: GetControlPropSet()
+
+Export
+======
+
+XclImpTbxControlObj(s) are all created before exporting ( so there is some chance to tweak them )
+
+#0 XclExpTbxControlObj (this=0x8a2b280, rRoot= 0x8916580, xShape= 0xbfbbcdf4) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/xeescher.cxx:341
+#1 0xb1801e72 in XclExpOcxConverter::CreateCtrlObj (this=0x8916558, xShape= 0xbfbbce4c) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/xlocx.cxx:335
+#2 0xb1817162 in XclEscherEx::StartShape (this=0x89164a8, rShape= 0xbfbbd238) at /data4/CWS/npower10/src680-m241/sc/source/filter/xcl97/xcl97esc.cxx:253
+#3 0xb0c521fe in ImplEESdrWriter::ImplWriteShape (this=0x89e0374, rObj= 0xbfbbd238, rSolverContainer= 0x8a28f38, ePageType=NORMAL) at /data4/CWS/npower10/src680-m241/svx/source/msfilter/eschesdo.cxx:255
+#4 0xb0c55da2 in ImplEESdrWriter::ImplWritePage (this=0x89e0374, rSolverContainer= 0x8a28f38, ePageType=NORMAL) at /data4/CWS/npower10/src680-m241/svx/source/msfilter/eschesdo.cxx:990
+#5 0xb0c55e22 in ImplEscherExSdr::ImplWriteCurrentPage (this=0x89e0370) at /data4/CWS/npower10/src680-m241/svx/source/msfilter/eschesdo.cxx:1082
+#6 0xb0c55e62 in EscherEx::AddSdrPage (this=0x89164a8, rPage= 0x86a4aa0) at /data4/CWS/npower10/src680-m241/svx/source/msfilter/eschesdo.cxx:1101
+#7 0xb1816a0b in XclEscher::AddSdrPage (this=0x89c7938, rRoot= 0x8a230dc) at /data4/CWS/npower10/src680-m241/sc/source/filter/xcl97/xcl97esc.cxx:409
+#8 0xb16802ad in ExcTable::FillAsTable (this=0x8a230d8, nCodeNameIdx=0) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/excdoc.cxx:377
+#9 0xb16821d9 in ExcDocument::ReadDoc (this=0x8928220) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/excdoc.cxx:488
+#10 0xb169dde3 in ExportBiff5::Write (this=0xbfbbd648) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/expop2.cxx:115
+#11 0xb16859fa in ScExportExcel5 (rMedium= 0x8916710, pDocument=0x85fed28, bBiff8=1 '\001', eNach=1) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/excel.cxx:252
+
+ImplEESdrWriter::ImplWritePage() - write shapes on a page
+{
+ ImplEESdrWriter::ImplWriteShape() - writes a shape
+ {
+ strange is seems to have a local shape id ( ahh used when called recusively )
+ it also handles (recursively of course ) some group related foo ( that I don't understand )
+ ExlEscherEx::StartShape() creates the ExcExpTbxControl object, there seems to be some support for grouping ( via pumping info in pCurrAppData [ XclEscherHostAppData ] & pCurrXclObj [ XclObjAny ] into a stack
+ pCurrAppData is pumped with various data
+ * Anchor data
+ * ClientTextbox etc.
+ )
+
+}
+
+
+saving the subRecords is triggered from
+
+#0 XclExpTbxControlObj::WriteSubRecs (this=0x8aead70, rStrm= 0x8acfa98) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/xeescher.cxx:588
+#1 0xb181dab5 in XclObj::WriteBody (this=0x8aead70, rStrm= 0xbfbbd434) at /data4/CWS/npower10/src680-m241/sc/source/filter/xcl97/xcl97rec.cxx:461
+#2 0xb17246df in XclExpRecord::Save (this=0x8aead70, rStrm= 0xbfbbd434) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/xerecord.cxx:89
+#3 0xb1819418 in XclObj::Save (this=0x8aead70, rStrm= 0xbfbbd434) at /data4/CWS/npower10/src680-m241/sc/source/filter/xcl97/xcl97rec.cxx:481
+#4 0xb1819a1e in XclObjList::Save (this=0x8ac7c30, rStrm= 0xbfbbd434) at /data4/CWS/npower10/src680-m241/sc/source/filter/xcl97/xcl97rec.cxx:365
+#5 0xb1682aee in XclExpRecordList<XclExpRecordBase>::Save (this=0x8ac7bf8, rStrm= 0xbfbbd434) at ../inc/xerecord.hxx:281
+#6 0xb167f307 in ExcTable::Write (this=0x8ac7be8, rStr= 0xbfbbd434) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/excdoc.cxx:452
+#7 0xb167f46c in ExcDocument::Write (this=0x8ad30b8, rSvStrm= 0x8ab39f0) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/excdoc.cxx:534
+#8 0xb169ddfb in ExportBiff5::Write (this=0xbfbbd648) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/expop2.cxx:116
+#9 0xb16859fa in ScExportExcel5 (rMedium= 0x8ab2458, pDocument=0x8818bc8, bBiff8=1 '\001', eNach=1) at /data4/CWS/npower10/src680-m241/sc/source/filter/excel/excel.cxx:252
+#10 0xb10bbbf2 in ScDocShell::ConvertTo (this=0x8818b90, rMed= 0x8ab2458) at
+
+
+basically ExcDocument has member maTableList which stores Table ( sheet ) records, e.g.
+
+maTableList.GetRecord( nTab )->Write( aXclStrm );
+
+where each ExcTable has a list of (objects) to write XclImpTbxControlObj(s) are all created before exporting ( so there is some chance to tweak them )
+
+these tables are filled ( as per where the XclImpTbxControlObj(s) are all created above ) e.g. from
+ExcDocument::ReadDoc ()
+ creates a ExcTable for each tab, and calls ExcTable::FillAsTable for each of those
+ExcTable::FillAsTable ()
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]