void MyActiveSelectionObserver::styleCharaPara() { do { /* InterfacePtr<IDocument> document(this, UseDefaultIID()); if (!document) { CAlert::InformationAlert("document Failed:"); break; } IDataBase* database = ::GetDataBase(document); CAlert::InformationAlert("--------------222-------------------"); //UIDRef wsRef=document->GetDocWorkSpace(); //InterfacePtr<IWorkspace> ws(document->GetDocWorkSpace(), UseDefaultIID()); InterfacePtr<IWorkspace> ws(GetExecutionContextSession()->QueryWorkspace()); if(!ws) { CAlert::InformationAlert("ws failed"); break; } InterfacePtr<IStyleNameTable> styleNameTable(ws, IID_IPARASTYLENAMETABLE); if(!styleNameTable) { CAlert::InformationAlert("styleNameTable failed"); break; } int32 styleNum=styleNameTable->GetNumStyles(); for(int32 i=0;i<styleNum;i++) { CAlert::InformationAlert("--------------333-------------------"); UID styleUID=styleNameTable->GetNthStyle(i); InterfacePtr<IStyleInfo> styleInfo(database,styleUID, UseDefaultIID()); if(!styleInfo) { CAlert::InformationAlert("styleInfo failed"); break; } PMString paraStyleName=styleInfo->GetName(); CAlert::InformationAlert("paraStyleName is:"+paraStyleName); } */ /* //UIDRef wsRef=document->GetDocWorkSpace(); //InterfacePtr<IWorkspace> ws(document->GetDocWorkSpace(), UseDefaultIID()); //InterfacePtr<IWorkspace> ws(GetExecutionContextSession()->QueryWorkspace()); IActiveContext *context = GetExecutionContextSession()->GetActiveContext(); IWorkspace* ws = context->GetContextWorkspace(); if(!ws) { CAlert::InformationAlert("ws failed"); break; } InterfacePtr<IStyleNameTable> styleNameTable(ws, IID_IPARASTYLENAMETABLE);//ICHARSTYLENAMETABLE_OBSOLETE //InterfacePtr<IStyleGroupManager> styleNameTable(document->GetDocWorkSpace(), IID_ICHARSTYLEGROUPMANAGER); if(!styleNameTable) { CAlert::InformationAlert("styleNameTable failed"); break; } int32 styleNum=styleNameTable->GetNumStyles(); PMString styleNumString; styleNumString.AppendNumber(styleNum); CAlert::InformationAlert("paraStyle count is:"+styleNumString); for(int32 i=0;i<styleNum;i++) { UID styleUID=styleNameTable->GetNthStyle(i); //UID rootStyleUID=styleNameTable->GetRootStyleUID(); //InterfacePtr<IStyleInfo> styleInfo(database,styleUID, UseDefaultIID()); InterfacePtr<IStyleInfo> styleInfo(::GetDataBase(styleNameTable),styleUID,UseDefaultIID()); if(!styleInfo) { CAlert::InformationAlert("styleInfo failed"); break; } bool16 res=styleInfo->IsParagraphStyle(); if(res==kTrue) { CAlert::InformationAlert("IsParagraphStyle :"); } PMString paraStyleName=styleInfo->GetName(); CAlert::InformationAlert("paraStyleName is:"+paraStyleName); } */ InterfacePtr<ITextSelectionSuite> iTextSelectionSuite(fCurrentSelection, UseDefaultIID()); if (!iTextSelectionSuite) { CAlert::InformationAlert("iTextSelectionSuite Failed:"); break; } InterfacePtr<const IIntegratorTarget> iIntegratorTarget_text(iTextSelectionSuite, UseDefaultIID()); if(iIntegratorTarget_text == nil) { return; } RangeData rangeData(0,RangeData::kLeanForward); UIDRef textRef; /* InterfacePtr<ILayoutSelectionSuite> iLayoutSelectionSuite(fCurrentSelection, UseDefaultIID()); if (!iLayoutSelectionSuite) { CAlert::InformationAlert("compScanner Failed is :"); break; } InterfacePtr<const IIntegratorTarget> iIntegratorTarget_layout(iLayoutSelectionSuite, UseDefaultIID()); if(!iIntegratorTarget_layout) { CAlert::InformationAlert("iIntegratorTarget_layout failed"); break; } //std::auto_ptr<IIntegratorTarget::TargetSuiteCollection> selectionSuites_layout(iIntegratorTarget_layout->GetTarget(ILayoutTarget::kDefaultIID)); */ std::auto_ptr<IIntegratorTarget::TargetSuiteCollection> selectionSuites_text(iIntegratorTarget_text->GetTarget(ITextTarget::kDefaultIID)); for(IIntegratorTarget::TargetSuiteCollection::size_type i = 0; i < selectionSuites_text->size(); i++) { ITextTarget* textTarget = (ITextTarget*)selectionSuites_text->at(i).get(); if(!textTarget) continue; rangeData = textTarget->GetRange(); int32 start = rangeData.Start(nil); int32 end = rangeData.End(); int32 len = end-start; textRef = textTarget->GetTextModel(); if(textRef == nil) return; InterfacePtr<ITextModel> textModel(textTarget->QueryTextModel()); if (!textModel) { CAlert::InformationAlert("textModel Failed"); break; } InterfacePtr<IAttributeStrand> ipastrand((IAttributeStrand*)(textModel->QueryStrand(kParaAttrStrandBoss,IID_IATTRIBUTESTRAND))); if (!ipastrand) { CAlert::InformationAlert("ipastrand Failed"); break; } InterfacePtr<IAttributeStrand> icastrand((IAttributeStrand*)(textModel->QueryStrand(kCharAttrStrandBoss,IID_IATTRIBUTESTRAND))); if (!icastrand) { CAlert::InformationAlert("icastrand Failed"); break; } int32 count,count2; // number of chars from start that have this style // let's see what style applies to this bit of text UID parastyle = ipastrand->GetStyleUID(start,&count); UID carastyle = icastrand->GetStyleUID(start,&count2); IActiveContext* activeContext = GetExecutionContextSession()->GetActiveContext(); if (!activeContext) { CAlert::InformationAlert("activeContext Failed"); break; } IWorkspace * theWS = activeContext->GetContextWorkspace(); InterfacePtr<IStyleInfo> paraStyleInfo(::GetDataBase(theWS),parastyle,UseDefaultIID()); if(!paraStyleInfo) { CAlert::InformationAlert("paraStyleInfo failed"); break; } InterfacePtr<IStyleInfo> caraStyleInfo(::GetDataBase(theWS),carastyle,UseDefaultIID()); if(!caraStyleInfo) { CAlert::InformationAlert("caraStyleInfo failed"); break; } PMString paraStyleName=paraStyleInfo->GetName(); PMString caraStyleName=caraStyleInfo->GetName(); PMString charNumbers,charNumbers2; charNumbers.AppendNumber(count); charNumbers2.AppendNumber(count2); CAlert::InformationAlert("paraStyleName is:"+paraStyleName+"/////"+charNumbers+"***caraStyleName is:"+caraStyleName+"\\\\\\"+charNumbers2); /* InterfacePtr<ITextModel> textModel(textTarget->QueryTextModel()); if (!textModel) { CAlert::InformationAlert("textModel Failed"); break; } InterfacePtr<IComposeScanner> compScanner(textModel, UseDefaultIID()); if (!compScanner) { CAlert::InformationAlert("compScanner Failed"); break; } IDrawingStyle* drawStyle = compScanner->GetParagraphStyleAt(rangeData.Start(nil), nil); if (!drawStyle) { CAlert::InformationAlert("drawStyle Failed"); break; } InterfacePtr<ICompositionStyle> compStyle(drawStyle, UseDefaultIID()); if (!compStyle) { CAlert::InformationAlert("compStyle Failed"); break; } int32 dirPara = compStyle->GetParagraphDirection(); PMString paraDirection; paraDirection.AppendNumber(dirPara); CAlert::InformationAlert("GetParagraphDirection is:"+paraDirection); */ /* // default name alert.....error InterfacePtr<IStyleGroupManager> paraGroupMgr(document->GetDocWorkSpace(), IID_IPARASTYLEGROUPMANAGER); UID styleRootUID = paraGroupMgr->GetRootStyleUID(); if(styleRootUID==0) { CAlert::InformationAlert("styleRootUID Failed :"); break; } else { //UIDRef styleRef = kInvalidUIDRef; //InterfacePtr<IStyleInfo> styleInfo(database,styleRootUID, UseDefaultIID()); InterfacePtr<IStyleInfo> styleInfo(::GetDataBase(paraGroupMgr),styleRootUID,UseDefaultIID()); if(!styleInfo) { CAlert::InformationAlert("styleInfo Failed "); break; } PMString paraStyleName=styleInfo->GetName(); CAlert::InformationAlert("paraStyleName is:"+paraStyleName); } */ } }while(kFalse); }
void MyPlugin2SelectionObserver::HandleSelectionChanged(const ISelectionMessage* selectionMessage) { // get selection manager for active selection. ISelectionManager* iSelectionManager = Utils<ISelectionUtils>()->GetActiveSelection(); return; //get pointer to textSelectionSuite using selection manager OR fCurrentSelection. InterfacePtr<ITextSelectionSuite> iTextSelectionSuite(iSelectionManager, UseDefaultIID()); CAlert::InformationAlert("Selection** changed.."); if (iTextSelectionSuite) { //get pointer to integrator target text using textSelectionSuite. //Use to Return a list of interfaces from the "concrete selection" InterfacePtr<const IIntegratorTarget> iIntegratorTarget_text(iTextSelectionSuite, UseDefaultIID()); if (iIntegratorTarget_text == nil) return; RangeData rangeData(0, RangeData::kLeanForward); UIDRef textRef; PMString tagName; PMString childCountString = "xml child count-"; PMString tagUIDString = "UID of TAG -"; UID tagUID; TextIndex startPosXML = 0, endPosXML = 0; int startIndexSelection; int endIndexSelection; // Return a list of interfaces from the "concrete selection" //auto_ptr automatically makes clean up of objects. std::auto_ptr<IIntegratorTarget::TargetSuiteCollection> selectionSuites_text(iIntegratorTarget_text->GetTarget(ITextTarget::kDefaultIID)); for (IIntegratorTarget::TargetSuiteCollection::size_type i = 0; i < selectionSuites_text->size(); i++) { //Get target text. ITextTarget* target = (ITextTarget*)selectionSuites_text->at(i).get(); if (!target) continue; // extract range from target text. rangeData = target->GetRange(); // get start and end index of range selected. startIndexSelection = rangeData.Start(nil); endIndexSelection = rangeData.End(); // get text model for target text. InterfacePtr<ITextModel>textModel(target->QueryTextModel()); // get UIDRef of text model. textRef = target->GetTextModel(); // query xml reference data for text model. IXMLReferenceData *xmlReferenceData = Utils<IXMLUtils>()->QueryXMLReferenceData(textRef); if (xmlReferenceData) { // get xml reference from xml reference data. XMLReference xmlRef = xmlReferenceData->GetReference(); // obtain xml element from xml reference InterfacePtr<IIDXMLElement> xmlElement(xmlRef.Instantiate()); if (xmlElement != nil) { childCountString.AppendNumber(xmlElement->GetChildCount()); XMLReference childRef = xmlElement->GetNthChild(0); InterfacePtr<IIDXMLElement> childXMLElement(childRef.Instantiate()); if (childXMLElement != nil){ tagUID = childXMLElement->GetTagUID(); tagName = childXMLElement->GetTagString(); Utils<IXMLUtils>()->GetElementMarkerPositions(childXMLElement, &startPosXML, &endPosXML); } } } } // for end int length = rangeData.Length(); if (length >= 1) { PMString textFrameContentLength = "selected content length-"; textFrameContentLength.AppendNumber(length); PMString srtPosString = "Start Position XML tag-"; PMString endPosString = "End postion XML tag-"; PMString srtPosSelString = "Start Position of Selection-"; PMString endPosSelString = "End postion Selection-"; srtPosString.AppendNumber(startPosXML); endPosString.AppendNumber(endPosXML); srtPosSelString.AppendNumber(startIndexSelection); endPosSelString.AppendNumber(endIndexSelection); CAlert::InformationAlert(textFrameContentLength); CAlert::InformationAlert(childCountString); CAlert::InformationAlert(tagName); CAlert::InformationAlert(srtPosString); CAlert::InformationAlert(endPosString); CAlert::InformationAlert(srtPosSelString); CAlert::InformationAlert(endPosSelString); if (startPosXML <= startIndexSelection && endPosXML >= endIndexSelection) { CAlert::InformationAlert("Selection inside tag- "+tagName); } else { CAlert::WarningAlert("Selection not inside tag- " + tagName); } } } // --------:: Table selection ::--------- InterfacePtr<ITableSelectionSuite> iTableSelectionSuite(fCurrentSelection, UseDefaultIID()); if (iTableSelectionSuite == nil) return; InterfacePtr<const IIntegratorTarget> iIntegratorTarget_table(iTableSelectionSuite, UseDefaultIID()); if (iIntegratorTarget_table == nil) return; UIDRef tableUIDRef; GridArea tableGridArea; PMString PMRowCount = "Total no of rows-"; PMString PMColCount = "Total no of cols-"; std::auto_ptr<IIntegratorTarget::TargetSuiteCollection> selectionSuites_table(iIntegratorTarget_table->GetTarget(ITableTarget::kDefaultIID)); for (IIntegratorTarget::TargetSuiteCollection::size_type i = 0; i < selectionSuites_table->size(); i++) { ITableTarget* target = (ITableTarget*)selectionSuites_table->at(i).get(); if (!target) continue; tableUIDRef = target->GetModel(); if (tableUIDRef != UIDRef(nil, kInvalidUID)) { CAlert::WarningAlert("Table selection occured"); tableGridArea = target->GetRange(); } InterfacePtr<ITableModel>tableModel(target->QueryModel()); if (tableModel != nil) { RowRange totalRows = tableModel->GetTotalRows(); ColRange totalCols = tableModel->GetTotalCols(); int rowCount = totalRows.count; int colCount = totalCols.count; PMRowCount.AppendNumber(rowCount); PMColCount.AppendNumber(colCount); CAlert::InformationAlert(PMRowCount); CAlert::InformationAlert(PMColCount); InterfacePtr<ITableLayout> tableLayout(tableModel, UseDefaultIID()); if (tableLayout == nil) { break; } CAlert::InformationAlert("table layout present"); ITableLayout::frame_iterator frameIter = tableLayout->begin_frame_iterator(); CAlert::InformationAlert("Frame Iterator ppresent"); CAlert::InformationAlert("Frame Iterator present"); InterfacePtr<ITableFrame> tableFrame(frameIter->QueryFrame()); CAlert::InformationAlert("table frame ppresent"); if (tableFrame == nil){ break; } CAlert::InformationAlert("table frame present"); UIDRef tableContainerUIDRef = tableFrame->GetFrameRef(); if (tableContainerUIDRef == nil){ break; } CAlert::InformationAlert("table container UIDRef present"); InterfacePtr<IFrameType> frameType(tableContainerUIDRef, UseDefaultIID()); //if (frameType == nil) { //break; //} CAlert::InformationAlert("container frame present"); PMString textFrameType = "Is container , text frame-"; // TYPE OF TEXT FRAME // bool isTextFrame = frameType->IsTextFrame(); CAlert::InformationAlert("Is text frame success"); if (true) { textFrameType.Append("YES"); CAlert::InformationAlert(textFrameType); } else { textFrameType.Append("NO"); CAlert::InformationAlert(textFrameType); } } } };
void MyActiveSelectionObserver::textSelection() ////////////////////////Frame and Text Selection...... { WideString result,item; UIDRef layoutRef; do { InterfacePtr<ITextSelectionSuite> iTextSelectionSuite(fCurrentSelection, UseDefaultIID()); if (!iTextSelectionSuite) { break; } else { InterfacePtr<const IIntegratorTarget> iIntegratorTarget_text(iTextSelectionSuite, UseDefaultIID()); if(iIntegratorTarget_text == nil) return; RangeData rangeData(0,RangeData::kLeanForward); UIDRef textRef; std::auto_ptr<IIntegratorTarget::TargetSuiteCollection> selectionSuites_text(iIntegratorTarget_text->GetTarget(ITextTarget::kDefaultIID)); for(IIntegratorTarget::TargetSuiteCollection::size_type i = 0; i < selectionSuites_text->size(); i++) { ITextTarget* target = (ITextTarget*)selectionSuites_text->at(i).get(); if(!target) continue; rangeData = target->GetRange(); textRef = target->GetTextModel(); if(textRef == nil) return; else { WideString result; do { InterfacePtr<ITextModel> textModel(textRef, UseDefaultIID()); TextIndex startIndex=rangeData.Start(nil); InterfacePtr<IFrameList> frameList(textModel->QueryFrameList()); int32 frameCount = frameList->GetFrameCount(); int32 frameIndex = frameList->GetFrameIndexContaining(startIndex); PMString IDframe; IDframe.AppendNumber(frameIndex); CAlert::InformationAlert("frameID: "+IDframe); /* //frame ID... for(int32 i=0; i<frameCount;i++) { UID frameID=frameList->GetNthFrameUID(i); PMString IDframe; IDframe.AppendNumber(frameID); CAlert::InformationAlert("frameID: "+IDframe); } */ /*TextIterator begin(textModel,rangeData.Start(nil)); // selected text TextIterator end(textModel,rangeData.End()); for (TextIterator iter = begin; iter<end; iter++) { const UTF32TextChar characterCode = *iter; result.Append(characterCode); } CAlert::InformationAlert("You Selected : "+result); */ } while(false); } } } }while (kFalse); }