VoidT SetupADCLIniDialog(StringT filename, F_ObjHandleT bookId) { F_ObjHandleT dlgId = 0; IntT i = 0; /* open resource for Help Settings dialog box. */ dlgId = F_ApiOpenResource(FO_DialogResource, "m2rseta"); DlgIds[DLG_SETUP_ADCL_INI - 1] = dlgId; /* set CurrProjectName and Path at top of dialog */ SetDlgProject(dlgId, DLG_SA_PROJDESC); /* set checkboxes for TOC and IX inclusion */ UseFmTOC = UseFmIX = UseFmGenFiles = True; SetDlgState(dlgId, DLG_SA_FM_TOC, UseFmTOC); SetDlgState(dlgId, DLG_SA_FM_IX, UseFmIX); SetDlgState(dlgId, DLG_SA_FM_GEN, UseFmGenFiles); /* set rad and checkboxes for graphic export */ SetDlgState(dlgId, DLG_SA_GXRAD + ImpGraphics, True); SetImpGrDef(dlgId, ImpGraphics, True); /* set numbers for export names */ SetDlgText(dlgId, DLG_SA_NMCBOX, ImpGraphicsNameChars); SetDlgText(dlgId, DLG_SA_DGCBOX, ImpGraphicsDigits); /* turn off everything under template and compiler */ SetFrameTemplateDlg(dlgId, DLG_SA_TPL_CK); SetupCancelled = True; /* default if closed */ F_ApiModalDialog(DLG_SETUP_ADCL_INI, dlgId); }
VoidT newDocCoreChild(IntT type) { F_ObjHandleT bookId, docId, childEdefId, compId, elemId, dlgId, childId; F_ElementLocT elemLoc; StringT bookPath, savePath, edefName, nameStr, idStr, elemName, selectedDocCore; IntT len; BoolT compExists, compFound; F_AttributesT docCoreAttr; F_StringsT doccores; UIntT j; /* Open resource for the dialogs */ dlgId = F_ApiOpenResource(FO_DialogResource, "docline"); /* Get Id and path of the book */ //bookId = F_ApiGetId(FV_SessionId, FV_SessionId, FP_ActiveBook); bookId = getActiveBookID(); bookPath = F_ApiGetString(FV_SessionId, bookId, FP_Name); pathFilename(bookPath); /* Check whether document has Docline section*/ compId = F_ApiGetId(FV_SessionId, bookId, FP_HighestLevelElement); if (!compId) { F_ApiAlert("Highest element error",FF_ALERT_CONTINUE_NOTE); F_ApiClose (dlgId, FF_CLOSE_MODIFIED); return; } else { /* Check which DocumentationCore sections already exist */ compId = F_ApiGetId(bookId, compId, FP_FirstChildElement); compExists = False; /* Initiallze list for dialog's pop-up*/ doccores.val = (StringT*) F_Alloc(2*sizeof(StringT), NO_DSE); doccores.len = 2; doccores.val[0] = F_StrCopyString("..."); doccores.val[1] = F_StrCopyString("New..."); while (compId) { elemId = F_ApiGetId(bookId, compId, FP_ElementDef); if (F_StrIEqual(F_ApiGetString(bookId, elemId, FP_Name), "DocumentationCore")) { compExists = True; break; } compId = F_ApiGetId(bookId, compId, FP_NextSiblingElement); } if (!compExists) // There is no "DocumentationCore" section { /* Create DocumentationCore section */ if(!newSecondLevelSection(True, "DocumentationCore", NULL)) { F_ApiClose (dlgId, FF_CLOSE_MODIFIED); return; } } compId = F_ApiGetId(FV_SessionId, bookId, FP_HighestLevelElement); compId = F_ApiGetId(bookId, compId, FP_FirstChildElement); while (compId) { elemId = F_ApiGetId(bookId, compId, FP_ElementDef); if (F_StrIEqual(F_ApiGetString(bookId, elemId, FP_Name), "DocumentationCore")) { docCoreAttr = F_ApiGetAttributes(bookId, compId); for(j=0; j<docCoreAttr.len; j++) { if (F_StrEqual("FileName", docCoreAttr.val[j].name)) { /* Allocate space for new string in dialog's popup */ doccores.len++; doccores.val = (StringT *) F_Realloc(doccores.val, doccores.len*sizeof(StringT), NO_DSE); /* Add string to the Pop-Up. */ doccores.val[doccores.len-1] = F_StrCopyString(docCoreAttr.val[j].values.val[0]); break; } } } compId = F_ApiGetId(bookId, compId, FP_NextSiblingElement); } F_ApiSetStrings(dlgId, F_ApiDialogItemId(dlgId, 7), FP_Labels, &doccores); /* Make the first item the default. */ F_ApiSetInt(dlgId, F_ApiDialogItemId(dlgId, 7), FP_State, 1); } /* show modal dialog with prompt for attributes */ F_ApiModalDialog(NEW_DLG, dlgId); if ((F_ApiGetInt(dlgId, F_ApiDialogItemId(dlgId, CANCELDLG), FP_State) == True) || (F_ApiGetInt(dlgId, F_ApiDialogItemId(dlgId, OKDLG), FP_State) != True)) { F_ApiClose (dlgId, FF_CLOSE_MODIFIED); return; } /* make sure that all attributes are typed in the text box*/ while (F_StrIsEmpty(F_ApiGetString(dlgId, F_ApiDialogItemId(dlgId, 1), FP_Text)) || F_StrIsEmpty(F_ApiGetString(dlgId, F_ApiDialogItemId(dlgId, 3), FP_Text))) { F_ApiAlert("You must type Id and Name in text fields!", FF_ALERT_CONTINUE_NOTE); F_ApiModalDialog(NEW_DLG, dlgId); if ((F_ApiGetInt(dlgId, F_ApiDialogItemId(dlgId, CANCELDLG), FP_State) == True) || (F_ApiGetInt(dlgId, F_ApiDialogItemId(dlgId, OKDLG), FP_State) != True)) { F_ApiClose (dlgId, FF_CLOSE_MODIFIED); return; } } /* get Id and Name values from dialog box*/ idStr = F_StrCopyString(F_ApiGetString(dlgId, F_ApiDialogItemId(dlgId, 1), FP_Text)); nameStr = F_StrCopyString(F_ApiGetString(dlgId, F_ApiDialogItemId(dlgId, 3), FP_Text)); if (F_ApiGetInt(dlgId, F_ApiDialogItemId(dlgId, 7), FP_State) == 1) { if(!newSecondLevelSection(True, "DocumentationCore", &selectedDocCore)) { F_ApiClose (dlgId, FF_CLOSE_MODIFIED); return; } } else { /* get Id of selected DocumentationCore section */ selectedDocCore = doccores.val[F_ApiGetInt(dlgId, F_ApiDialogItemId(dlgId, 7), FP_State)]; } compId = F_ApiGetId(FV_SessionId, bookId, FP_HighestLevelElement); compId = F_ApiGetId(bookId, compId, FP_FirstChildElement); compFound = False; while (True) { elemId = F_ApiGetId(bookId, compId, FP_ElementDef); if (F_StrIEqual(F_ApiGetString(bookId, elemId, FP_Name), "DocumentationCore")) { docCoreAttr = F_ApiGetAttributes(bookId, compId); for(j=0; j<docCoreAttr.len; j++) { if (F_StrEqual("FileName", docCoreAttr.val[j].name)) { if (F_StrEqual(selectedDocCore, docCoreAttr.val[j].values.val[0])) compFound = True; break; } } if (compFound) break; } compId = F_ApiGetId(bookId, compId, FP_NextSiblingElement); } /* Choose what type of element we add*/ switch (type) { case DICTION: savePath = F_Alloc(F_StrLen(bookPath)+F_StrLen(idStr)+F_StrLen("dictionary_.fm")+1, NO_DSE); len = F_Sprintf(savePath, "%sdictionary_%s.fm", (StringT)bookPath, (StringT)idStr); edefName = F_StrCopyString("Dictionary"); break; case DIRECT: savePath = F_Alloc(F_StrLen(bookPath)+F_StrLen(idStr)+F_StrLen("directory_.fm")+1, NO_DSE); len = F_Sprintf(savePath, "%sdirectory_%s.fm", (StringT)bookPath, (StringT)idStr); edefName = F_StrCopyString("Directory"); break; case DIRTEMP: savePath = F_Alloc(F_StrLen(bookPath)+F_StrLen(idStr)+F_StrLen("dir_template_.fm")+1, NO_DSE); len = F_Sprintf(savePath, "%sdir_template_%s.fm", (StringT)bookPath, (StringT)idStr); edefName = F_StrCopyString("DirTemplate"); break; case INFELEM: savePath = F_Alloc(F_StrLen(bookPath)+F_StrLen(idStr)+F_StrLen("inf_element_.fm")+1, NO_DSE); len = F_Sprintf(savePath, "%sinf_element_%s.fm", (StringT)bookPath, (StringT)idStr); edefName = F_StrCopyString("InfElement"); break; case INFPROD: savePath = F_Alloc(F_StrLen(bookPath)+F_StrLen(idStr)+F_StrLen("inf_product_.fm")+1, NO_DSE); len = F_Sprintf(savePath, "%sinf_product_%s.fm", (StringT)bookPath, (StringT)idStr); edefName = F_StrCopyString("InfProduct"); break; } /* Create document from template */ docId = F_ApiSimpleNewDoc("C:\\Program Files\\Adobe\\FrameMaker8\\Structure\\xml\\docline\\docline_doc_template.fm", False); /* Get Id of the highest-level element definition for created document */ childEdefId = F_ApiGetNamedObject(docId, FO_ElementDef, edefName); /* Insert new Highest-level element into the document, i.e. InfElement, InfProduct, etc. */ F_ApiWrapElement(docId, childEdefId); /* Save the doc with the specific name */ F_ApiSimpleSave(docId, savePath, False); /* Set correct values of attributes */ setAttributes(idStr, nameStr); /* Update header of the document */ editHeader(); /* Insert Book component in DocumentationCore section*/ childId = F_ApiGetId(bookId, compId, FP_FirstChildElement); while (childId) { elemId = F_ApiGetId(bookId, childId, FP_ElementDef); elemName = F_ApiGetString(bookId, elemId, FP_Name); if (F_StrIEqual(elemName, "Dictionary")) { if (type == DICTION) break; } else if (F_StrIEqual(elemName, "Directory")) { if (type <= DIRECT) break; } else if (F_StrIEqual(elemName, "DirTemplate")) { if (type <= DIRTEMP) break; } else if (F_StrIEqual(elemName, "InfElement")) { if (type <= INFELEM) break; } else if (F_StrIEqual(elemName, "InfProduct")) { if (type <= INFPROD) break; } childId = F_ApiGetId(bookId, childId, FP_NextSiblingElement); } elemLoc.childId = childId; elemLoc.parentId = compId; elemLoc.offset = 0; compId = F_ApiNewBookComponentInHierarchy(bookId, savePath, &elemLoc); /* Update book */ F_ApiSimpleGenerate(bookId, False, True); bookPath = F_ApiGetString(FV_SessionId, bookId, FP_Name); /* Save book and docs after update */ F_ApiSimpleSave(docId, savePath, False); F_ApiSimpleSave(bookId, bookPath, False); /* Deallocating memory */ F_ApiDeallocateString(&bookPath); F_ApiDeallocateString(&savePath); F_ApiDeallocateString(&edefName); F_ApiClose (dlgId, FF_CLOSE_MODIFIED); }
VoidT SetupOMHIniDialog(StringT filename, F_ObjHandleT bookId) { F_ObjHandleT dlgId = 0; F_ObjHandleT compId = 0; StringT basename = NULL; StringT compname = NULL; StringT topicfile = NULL; basename = BaseFileName(filename); /* open resource for OMH Settings dialog box. */ dlgId = F_ApiOpenResource(FO_DialogResource, "m2rsetc"); DlgIds[DLG_SETUP_OMH_INI - 1] = dlgId; /* set CurrProjectName and Path at top of dialog */ SetDlgProject(dlgId, DLG_SC_PROJDESC); /* set up name for [MAP] file */ CshMapFileSet = False; CshMapFile = NULL; //SetDlgText(dlgId, DLG_SC_CSHMAP, "resource.h"); /* set checkboxes for TOC and IX inclusion and search generation */ UseFmTOC = UseFmIX = False; UseFmGenFiles = True; UseOHTOC = UseOHIX = UseOHFTS = UseOHREL = True; /* these are always the same */ GenTOC = GenIX = True; WrapAndShip = True; SetDlgState(dlgId, DLG_SC_FM_TOC, UseFmTOC); SetDlgState(dlgId, DLG_SC_FM_IX, UseFmIX); SetDlgState(dlgId, DLG_SC_FM_GEN, UseFmGenFiles); SetDlgState(dlgId, DLG_SC_USE_TOC, UseOHTOC); SetDlgState(dlgId, DLG_SC_USE_IX, UseOHIX); SetDlgState(dlgId, DLG_SC_USE_FTS, UseOHFTS); SetDlgState(dlgId, DLG_SC_USE_REL, UseOHREL); #if 0 SetDlgState(dlgId, DLG_SC_COPY_TO, WrapAndShip); SetDlgText(dlgId, DLG_SC_HP_PATH, WrapPath); SetDlgText(dlgId, DLG_SC_VW_PATH, OHVName); #endif if (bookId) { /* get basename of first file in book */ compId = F_ApiGetId(FV_SessionId, bookId, FP_FirstComponentInBook); compname = F_ApiGetString(bookId, compId, FP_Name); topicfile = BaseFileName(compname); F_StrFree(compname); } else topicfile = F_StrCopyString(basename); SetDlgText(dlgId, DLG_SC_CONTENTS, topicfile); DefaultTopicFile = NULL; TopicFileSet = False; SetDlgText(dlgId, DLG_SC_PROJECT, basename); /* put dummy title */ SetDlgText(dlgId, DLG_SC_TITLE, HelpTitle); UseCSS = True; CssFileName = "ohmain.css"; SetDlgText(dlgId, DLG_SC_CSS, CssFileName); /* turn off everything under template */ SetFrameTemplateDlg(dlgId, DLG_SC_TPL_CK); SetupCancelled = True; /* default if closed */ F_ApiModalDialog(DLG_SETUP_OMH_INI, dlgId); WriteEqns = True; WriteAllGraphics = True; F_StrFree(basename); }
BoolT newSecondLevelSection(BoolT isFirst, StringT type, StringT *newFileName) { F_ObjHandleT bookId, sectionDlgId, compId, elemId; StringT fileName; F_AttributesT attributes; F_ElementLocT elemLoc; /* Get Id of the book */ //bookId = F_ApiGetId(FV_SessionId, FV_SessionId, FP_ActiveBook); bookId = getActiveBookID(); /* Open resource for the Create new DocumentationCore || ProductDocumentation || ProductLine section dialog */ sectionDlgId = F_ApiOpenResource(FO_DialogResource, "DOCCORE"); if (!isFirst) F_ApiSetInt(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 5), FP_Visibility, False); else F_ApiSetInt(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 5), FP_Visibility, True); if (F_StrIEqual(type, "ProductDocumentation")) { F_ApiSetString(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 0), FP_Label, "Type FileName attribute of new ProductDocumentation section:"); F_ApiSetString(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 5), FP_Label, "There is no ProductDocumentation section in project. New section will be created."); } else if (F_StrIEqual(type, "ProductLine")) { F_ApiSetString(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 0), FP_Label, "Type FileName attribute of new ProductLine section:"); F_ApiSetString(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 5), FP_Label, "There is no ProductLine section in project. New section will be created."); } F_ApiModalDialog(SECTION_DLG, sectionDlgId); /* define which button was clicked */ if((F_ApiGetInt(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 4), FP_State) == True) || (F_ApiGetInt(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 3), FP_State) != True)) { F_ApiClose (sectionDlgId, FF_CLOSE_MODIFIED); return False; } /* make sure that FileName attribute was typed in the text box */ while (F_StrIsEmpty(F_ApiGetString(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 1), FP_Text))) { F_ApiAlert("You must type FileName attribute in the text field!", FF_ALERT_CONTINUE_NOTE); F_ApiModalDialog(SECTION_DLG, sectionDlgId); if((F_ApiGetInt(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 4), FP_State) == True) || (F_ApiGetInt(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 3), FP_State) != True)) { F_ApiClose (sectionDlgId, FF_CLOSE_MODIFIED); return False; } } /* get fileName attribute value from dialog box*/ fileName = F_StrCopyString(F_ApiGetString(sectionDlgId, F_ApiDialogItemId(sectionDlgId, 1), FP_Text)); /* Get Id of Section Element definitions*/ elemId = F_ApiGetNamedObject(bookId, FO_ElementDef, type); elemLoc.parentId = F_ApiGetId(FV_SessionId, bookId, FP_HighestLevelElement); elemLoc.childId = 0; elemLoc.offset = 0; compId = F_ApiNewElementInHierarchy(bookId, elemId, &elemLoc); /* Create F_AttributesT structure to set FileName value */ attributes.len = 1; attributes.val = (F_AttributeT *)F_Alloc(sizeof(F_AttributeT), DSE); attributes.val[0].name = F_StrCopyString("FileName"); attributes.val[0].values.len = 1; attributes.val[0].values.val = (StringT *)F_Alloc(sizeof(StringT), DSE); attributes.val[0].values.val[0] = F_StrCopyString(fileName); *newFileName = F_StrCopyString(fileName); /* Set proper values */ F_ApiSetAttributes(bookId, compId, &attributes); F_ApiClose (sectionDlgId, FF_CLOSE_MODIFIED); return True; }