Examples/「Save a Copy」の保存先ライブラリを編集中のセルに連動させる

Last-modified: 2022-07-30 (土) 00:19:15

Layout L/XL/EXL/GXL などの [File] ⇒ [Save a Copy] 機能で出てくるフォームで保存先のライブラリを指定するフィールドが、とあるバージョンの Virtuoso から以降は編集中のセルと連動しなくなりました。この機能は編集中のレイアウトの予備を取っておこうとする場合によくつかいますので、保存先のライブラリ名が連動しないのは厄介です。下記のコードを .cdsinit などに入れておくことで、連動するようになります。

(define (jp_wikiwiki_aiou_InitSaveACopyLibName_postInstallTriggerHandler triggerArgs)
  (when (onep (nindex (getq triggerArgs viewType) "maskLayout"))
    (envSetVal "layout" "saveACopyLibName" 'string (getq triggerArgs libName))))
;
(let ((pith 'jp_wikiwiki_aiou_InitSaveACopyLibName_postInstallTriggerHandler))
  (foreach vt (deGetAllViewTypes)
    (when (onep (nindex vt "maskLayout"))
      (unless (memq pith (getq (deGetAppInfo vt) userPostInstallTrigList))
        (deRegUserTriggers vt nil nil pith)))))

このコードの真髄は Virtuoso環境変数 saveACopyLibName を設定するところです。

(envSetVal "layout" "saveACopyLibName" 'string ライブラリ名)

その他のコードは、レイアウト編集作業者がセルをライブラリマネージャーから開いたり、Edit-In-Place で潜ったりする都度、このコードが実行されるようさせるためのものです。