[Notes/Domino] 設計解析講座: データベースプロパティとアイコン(2)
前回の続きです。$Flags、$FlagsNoRefresh、IconBitmap を解説します。
$Flags
$Flags は、以前のエントリでも解説したとおり、半角英数字記号(大文字小文字区別)の組み合わせを保管しています。アイコンノートで使用されるのは、以下のフラグです。(stdnames.h の記述を LotusScript 形式に変換しています。)
Public Const CHFLAG_LAUNCH_APP = "a" Public Const CHFLAG_MAILBOX_TYPE = "A" Public Const CHFLAG_ADDRESS_BOOK_TYPE = "b" Public Const CHFLAG_LIGHT_ADDRESS_BOOK_TYPE = "B" Public Const CHFLAG_SHOW_CHANGED_POLICY = "c" Public Const CHFLAG_LAUNCH_DOCLINK = "d" Public Const CHFLAG_LAUNCH_FRAMESET = "F" Public Const CHFLAG_LAUNCH_XPAGE = "?" Public Const CHFLAG_RESTRICT_STORED_FORMS = "f" Public Const CHFLAG_LIBRARY_TYPE = "g" Public Const CHFLAG_DEFERRED_LOADED_IMAGES = "i" Public Const CHFLAG_PERSONALJOURNAL_TYPE = "j" Public Const CHFLAG_LAUNCH_COMPAPP_PAGE = "k" Public Const CHFLAG_LAUNCH_NAVIGATOR = "l" Public Const CHFLAG_SEARCH_SCOPE_TYPE = "m" Public Const CHFLAG_NEVER_SHOW_POLICY = "n" Public Const CHFLAG_LAUNCH_OUTLINE = "o" 'Launch Outline as the navigator Public Const CHFLAG_ALWAYS_SHOW_POLICY = "p" Public Const CHFLAG_MAILFILE_TYPE = "r" Public Const CHFLAG_SOLO_NAVIGATOR = "s" Public Const CHFLAG_OBSOLETE_DONTUSE = "t" Public Const CHFLAG_SITEDB_TYPE = "u" Public Const CHFLAG_NO_SHOW_VIEW = "v" Public Const CHFLAG_LAUNCH_WEBPAGE = "W" 'Launch navigator of type Web Page Public Const CHFLAG_PANE_BIGFOLDER = "w" 'preview pane orientation; mutually exclusive with below Public Const CHFLAG_PANE_SMALLVIEW = "x" 'preview pane orientation; mutually exclusive with above Public Const CHFLAG_PANE_MAXIMIZED = "y" 'preview pane size Public Const CHFLAG_WEB_LAUNCH_DOCLINK = "D" Public Const CHFLAG_WEB_LAUNCH_NAVIGATOR = "L" Public Const CHFLAG_WEB_ALWAYS_SHOW_POLICY = "P" Public Const CHFLAG_WEB_LAUNCH_THISDOCLINK = "T" Public Const CHFLAG_WEB_LAUNCH_VIEWNAME = "V" Public Const CHFLAG_WEB_USEJAVASCRIPT = "J" Public Const CHFLAG_WEB_USESSLCONN = "X" Public Const CHFLAG_WEB_LAUNCH_PAGE = "E" Public Const CHFLAG_WEB_LAUNCH_XPAGE = "!" Public Const CHFLAG_WEB_LAUNCH_FRAMESET = "S" Public Const CHFLAG_RESTORE_VIEW = "K" Public Const CHFLAG_MULTILINGUAL_DB = "M" Public Const CHFLAG_ALLOW_DECS_CONNECTIONS = "C" Public Const CHFLAG_NOUNREAD_MARKS = "z" Public Const CHFLAG_DISABLE_RESPONSE_INFO = "1" Public Const CHFLAG_FORM_BUCKET_OPT = "2" Public Const CHFLAG_MAINTAIN_LAST_ACCESSED = "3" Public Const CHFLAG_DELETES_ARE_SOFT = "4" Public Const CHFLAG_IS_LOCK_DB = "5" Public Const CHFLAG_IS_DESIGN_LOCK_DB = "6" Public Const CHFLAG_LARGE_UNKTABLE = "7" Public Const CHFLAG_HIDE_FROM_WEB = "8" Public Const CHFLAG_IS_WEBAPPLICATION = "9" Public Const CHFLAG_REFRESH_ON_ADMIN = "e" Public Const CHFLAG_COPY_PROFILES = "G" 'For templates - copy profile notes on creating database from this one and when refreshing databases from it Public Const CHFLAG_LZ1 = "Z" 'LZ1 compression db option Public Const CHFLAG_REPL_UNREAD_CLUSTERED = "Q" Public Const CHFLAG_REPL_UNREAD_EVERYWHERE = "U" 'Icon flag for enabling replication of unread marks - on AND off cluster Public Const CHFLAG_TRACK_REPLYFORWARD = "h" 'inherited track reply/forward flag Public Const CHFLAG_OOS_ENABLED = "O" 'icon flag flagigng if out of office service is enabled DBOPTBIT_OOS_ENABLED Public Const CHFLAG_SUPPORT_RESP_THREADS = "H" 'icon flag marking that the database supports reponse threads Public Const CHFLAG_THEMES = "I" 'enable themes in this database Public Const CHFLAG_COMPRESSED_DESIGN = "q" 'compress design documents Public Const CHFLAG_COMPRESSED_DATA_DOCS = "N" 'compress data documents Public Const CHFLAG_DISABLE_AUTO_VIEW_UPDS = "0" 'don't have update task update views for this DB (on servers)
定数名を見れば、だいたい何を指しているかはわかるかと思います。
$FlagsNoRefresh
$FlagsNoRefresh は、stdnames.h の説明のよれば、再設計/設計の置換で親テンプレートからフラグを引き継がないようにするためのものだそうです。
Public Const CHFLAG_NR_ADV_TEMPLATE = "t" Public Const CHFLAG_NR_SINGLE_COPY_TEMPLATE = "s" Public Const CHFLAG_NR_DONTTRACK_REPLYFORWARD = "r" 'need separate flags here because Public Const CHFLAG_NR_DOTRACK_REPLYFORWARD = "f" 'we need to know if user turned off OR on to override template setting Public Const CHFLAG_NR_REPLUNREAD_NEVER = "v" Public Const CHFLAG_NR_REPLUNREAD_CLUSTERED = "Q" Public Const CHFLAG_NR_REPLUNREAD_EVERYWHERE = "U"
IconBitmap
IconBitmap は、文字通りアイコンのデータが入っているところです。どういう構造になっているか、についてはこちらのアイコンデータをリッチテキストにコピーするサンプルを見ていただければわかるかと(得意の丸投げ)。バイナリデータになると、ちょっと複雑ですね。
R8.5.2以降のアイコン
R8.5.2 以降で、ようやくアイコンに GIF、JPEG、PNG のデータが使えるようになりました。っつーか遅すぎ(- -メ
この新しいアイコンは、IconBitmap ではなく、$DBIcon という名前のイメージリソースとして作成されます。$DBIcon は$Flagsに「~」(DESIGN_FLAG_HIDEFROMDESIGNLIST)が立っていることにより、設計リストには表示されません。
$DBIcon ノートは、通常のイメージリソースと構造は同じです。リッチテキストにコピーするには、NIFFindDesignNoteByName あたりでノートIDを取得して、$ImageData をそのままコピーすればいいのではないでしょうか($ImageData はリッチテキストアイテムなので。試してないですが)。
(次回に続く)
コメント
こんにちは
>$ImageData をそのままコピーすればいいのではないでしょうか($ImageData はリッチテキストアイテムなので。試してないですが)。
イメージリソースの$ImageDataと同じく、ファイルリソースの$FileDataもリッチテキストデータなのですが、
ForAll o In rtitem.EmbeddedObjects
でエラーになってしまいます。
なんとか、ファイルリソースをスクリプトから取得できない物でしょうか?
Posted at 2012/08/11 4:30 PM by iwachi
iwachiさん、コメントありがとうございます! 😀
$FileData の場合、$FILE ではないので、残念ながら EmbeddedObjects では取得できません。
あくまで LotusScript でやるなら、「リッチテキストアイテム解析の基礎」の方法で、CDFILEHEADER と CDFILESEGMENT を解析しなければなりません。
($FileData がどのようなデータになっているかは、拙作の Note Dump Tool で見てみてください。)
ものすごく難しいわけではありませんが、それなりに面倒な処理にはなりますね……。
Posted at 2012/08/11 9:36 PM by takenoff
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。