ブック中のすべての fm ファイルを開く(Adobe FrameMaker8 FDK Client)
先ほどの tomif.cを流用して作成。 単に、ブック中のfmファイルを全部開くだけのクライアント。
ブックを印刷するとき、全部開いたまま行うと高速に処理できる・・・と
(記憶では)
ヘルプに書いてあったので...
たとえば、そんなときに役立つクライアント。
これで、ちまちまファイルを開く手間を省けます。
openall.c
#include "fapi.h"
#include "futils.h"
#include "fstrings.h"
#include "fstrlist.h"
#define OpenAllFm 3
VoidT F_ApiInitialize(IntT initialization) {
F_ObjHandleT menuBarId, menuId;
menuBarId = F_ApiGetNamedObject(FV_SessionId,FO_Menu,"!BookMainMenu");
menuId = F_ApiDefineAndAddMenu(menuBarId,"APIMenu1","API");
F_ApiDefineAndAddCommand(OpenAllFm, menuId,"OpenAllFmCmd","Open all fm files in book", "");
}
VoidT DoOpenAllFm(){
F_ObjHandleT docId,fmDocId;
StringT docname;
IntT i;
StringListT list = F_StrListNew((UIntT)1,(UIntT)1);
docId = F_ApiGetId(0,FV_SessionId,FP_ActiveBook);
if(!docId){
return ;
}
docname = F_ApiGetString(docId, docId, FP_Name);
F_Printf(NULL,(StringT)"CHK BOOK= %s",docname );
fmDocId= F_ApiGetId(FV_SessionId, docId,FP_FirstComponentInBook);
while(fmDocId){
docname = F_ApiGetString(docId, fmDocId, FP_Name);
F_StrListAppend(list,docname);
fmDocId= F_ApiGetId(FV_SessionId, fmDocId,FP_NextComponentInBook);
}
for(i=0; i < F_StrListLen(list); i++){
docname = F_StrListGet(list, i);
fmDocId = F_ApiSimpleOpen(docname,False);
}
F_StrListFree(list);
}
VoidT F_ApiCommand(IntT command) {
switch (command) {
case OpenAllFm:
DoOpenAllFm();
break;
}
}