Skip to main content
Participant
August 7, 2008
Question

How can I get elements in a page that I have selected?

  • August 7, 2008
  • 1 reply
  • 338 views
I have selected a page in the pages panel in InDesign CS3 interface and in my plugin I wish to get all items in the selected page. However when I try to get the IHierarchy smart poiner, It is valid but the hierarchy does not exist! That is GetChildCount(), gives back 0!<br />What is wrong?<br /><br />My Code:<br /><br /> InterfacePtr<IDocument>document(_docUIDRef, UseDefaultIID());<br /> if(nil == document)<br /> {<br /> CAlert::ErrorAlert("CInDesignDocumentExplorer::inspectDocumentByHierarchy: IDocument is null!");<br /><br /> return;<br /> }<br /> IDataBase* database = ::GetDataBase(document);<br /> if(nil == database)<br /> {<br /> CAlert::ErrorAlert("CInDesignDocumentExplorer::inspectDocumentByHierarchy: IDataBase is null!");<br /><br /> return;<br /> }<br /><br /> InterfacePtr<IPageList>pageList(document, UseDefaultIID());<br /> if(nil == pageList)<br /> {<br /> CAlert::ErrorAlert("CInDesignDocumentExplorer::inspectDocumentByHierarchy: IPageList is null!");<br /><br /> return;<br /> }<br /><br /> UIDRef pageUIDRef(nil, kInvalidUID);<br /> UIDList selectedPages(database);<br /> Utils<ILayoutUIUtils>()->GetSelectedPages(selectedPages);<br /> int32 selectedPageNum = selectedPages.Length();<br /> DebugPrint("%i\n", selectedPageNum);<br /> if (selectedPageNum > 0)<br /> {<br /> pageUIDRef = selectedPages.GetRef(0);<br /> }<br /> else<br /> {<br /> int32 pageCount = pageList->GetPageCount();<br /> DebugPrint("%i\n", pageCount);<br /> UID pageUID = pageList->GetNthPageUID(0);<br /> pageUIDRef = UIDRef(database, pageUID);<br /> }<br /><br /> InterfacePtr<IHierarchy>pageHierarchy(pageUIDRef, UseDefaultIID());<br /> int32 childCount = pageHierarchy->GetChildCount(); // it is == 0!<br /> //traverseIHierarchy(pageHierarchy);<br /><br />Thanks<br /><br />Daniele
This topic has been closed for replies.

1 reply

Inspiring
August 7, 2008
Pages are dead ends, they're just for display in the background.
Most PageItems reside in the IHierarchy of kSpreadLayerBoss.
Some are in separate hierarchies, e.g. inlined (into text flow), master pages and TOP.

Dirk