マクロで「書込禁止」と「テーマの設定」

  1. 今度はマクロを作成しようとチャレンジしていますが、基本的な所が間違っているようで
    動作しません。実現したい動作は以下です。

    1:ViewMode.js
    「書込禁止」を有効にする
    「テーマ設定」を「Windows Classic」に設定する

    2:EditMode.js
    「書込禁止」を無効にする
    「テーマ設定」を「Twilight」に設定する

    マクロで実現が可能であれば、実際のスクリプトを教えてもらうと助かります。

    もう一つあるのですが、プラグインを作成して(Delphi)、「文字コード」と「改行」
    の状態を取得する事は可能でしょうか?
    「名前を付けて保存」を操作した時に表示されるダイアログで、下に表示されている
    内容を取得したいと思います。

    こちらも、プラグインで取得は可能でしょうか?

    試行錯誤を繰り返していますが、なかなか実現できません。
    よろしくお願いします。

     |  大石剛司  |  返信
  2. 開発お疲れ様です ^^
    マクロは操作の自動化が目的なので、プラグインと比べると自由度は低いかもしれません。

    > 1:ViewMode.js
    > 「書込禁止」を有効にする

    これは Document オブジェクトの ReadOnly プロパティで可能です。

    document.ReadOnly = true;

    > 「テーマ設定」を「Windows Classic」に設定する

    テーマやオプションの項目はマクロから変更することはできません。

    > もう一つあるのですが、プラグインを作成して(Delphi)、「文字コード」と「改行」
    > の状態を取得する事は可能でしょうか?

    ソースを確認してみましたが、残念ながらまだ実装されていないようです。文字コードや改行コードの取得は機能としてあったほうが良いですね。今後の開発の参考にさせていただきます。

    > 「名前を付けて保存」を操作した時に表示されるダイアログで、下に表示されている
    > 内容を取得したいと思います。

    これは Windows の API でがんばればなんとかなるかもしれませんが、プラグインの機能としては用意しておりません。

     |  Kuro  |  返信
  3. 返信ありがとうございます。

    マクロやプラグインでは設定できない事が判りましたので、要望と
    いう事でお願いしたいと思います。

    現材 Mery をキーボードファイラーから使用するファイルビューワ
    として使用する事を考えています。
    ステータスバーに「書禁」の表示が可能ですが、ステータスバー
    まで、なかなか視点が行きません。
    そこで、ビューワとエディターの機能を直感的に確認したいので、
    背景色を変えたいと思っています。

    あと、ビューワとして使用するので、ビューワを直ぐに終了させ
    たいので、「Enter」キーなどにより終了したいと考えています。

    以下が要望となります。

    1:「書込禁止」の「有効」を設定
    「書き込み禁止」を「有効」設定
    テーマに「ビューワモード」のテーマを設定 <<これを追加
    (今回、追加する項目です)

    2:「書込禁止」の「無効」を設定
    「書き込み禁止」を「無効」に設定
    テーマに「エディタモード」のテーマを設定 <<これを追加
    (現状のテーマを設定します)

    3:「書込禁止」が「有効」の場合のキーボード操作 <<これを追加
    「Enter」で終了
    「Escape」で終了
    「BackSpace」で終了
    「Q」で終了

    4:「ビューワモードの設定画面」 <<これを追加
    テーマの設定を行う「コンボボックス」
    「Enter」で終了を「有効/無効」にするチェックボックス
    「Escape」で終了を「有効/無効」にするチェックボックス
    「BackSpace」で終了を「有効/無効」にするチェックボックス
    「Q」で終了を「有効/無効」にするチェックボックス

    対応が可能であれば、よろしくお願いします。

    に設定
    して「ビューワモード」のテーマを設定します。
    2:

    を変えた

     |  大石剛司  |  返信
  4. > マクロやプラグインでは設定できない事が判りましたので、要望と
    > いう事でお願いしたいと思います。

    ご意見は今後の開発の参考にさせていただきたいと思います。

    > そこで、ビューワとエディターの機能を直感的に確認したいので、
    > 背景色を変えたいと思っています。

    なるほど、そういうことでしたら、マクロを使用すれば対応できるかもしれません。

    マクロやプラグインからのテーマの変更は仕様上対応できそうにありませんが、[表示] メニューの [色の反転] という機能があり、これを使用すれば「表テーマ」と「裏テーマ」のように色を反転させたテーマが適用されます。

    これはマクロからでもアクセス可能ですから、エディタモードの時は「表テーマ」、ビューワモードの時は「裏テーマ」といった使い方もできるのではないでしょうか?

    > あと、ビューワとして使用するので、ビューワを直ぐに終了させ
    > たいので、「Enter」キーなどにより終了したいと考えています。

    こちらもマクロで対応できると思います。

    > 以下が要望となります。
    > テーマに「ビューワモード」のテーマを設定 <<これを追加
    > テーマに「エディタモード」のテーマを設定 <<これを追加

    テーマは自由にカスタマイズ可能です。

    > 3:「書込禁止」が「有効」の場合のキーボード操作 <<これを追加
    > 「Enter」で終了
    > 「Escape」で終了
    > 「BackSpace」で終了
    > 「Q」で終了

    これはプラグイン側で「書込禁止」状態をチェックして、キーボード入力を拾って終了コマンドを送信することで対応できると思います。

    > 4:「ビューワモードの設定画面」 <<これを追加
    > テーマの設定を行う「コンボボックス」
    > 「Enter」で終了を「有効/無効」にするチェックボックス
    > 「Escape」で終了を「有効/無効」にするチェックボックス
    > 「BackSpace」で終了を「有効/無効」にするチェックボックス
    > 「Q」で終了を「有効/無効」にするチェックボックス

    これもプラグイン側で設定画面などを実装することは可能です。
    プラグインはマクロよりもちょっと敷居が高いので、開発されている方は少ないですがぜひ挑戦してみてくださいね。

     |  Kuro  |  返信
  5. 返信ありがとうございます。

    試行錯誤していますが、先に進みませんのでアドバイスをお願いします。

    プラグインの「OnCommand(hwnd: HWND)」で以下を実行していますが
      //タブの状態を取得
      //ファイル名を取得
      //ステータスバーを取得
    の部分が、どうしても実現できません。
    動作するコードを教えてもらう事は可能でしょうか?

    よろしくお願いします。

    procedure OnCommand(hwnd: HWND); stdcall;
    var
      sFileName: String;
      sStatus: String;
      bTabStatus: Boolean;
      wRet1: Word;
    begin
      //親のハンドルを設定
      Application.Handle := hwnd;

      //タブの状態を取得
      //function Editor_Info(hwnd: THandle; nCmd: WPARAM; lParam: LPARAM): LRESULT;
      //   MI_IS_WINDOW_COMBINED: タブの有効・無効を取得します
      //bTabStatus に、タブの状態を取得したい

      //ファイル名を取得
      //function Editor_Info(hwnd: THandle; nCmd: WPARAM; lParam: LPARAM): LRESULT;
      //   MI_GET_FILE_NAME:      開いているファイル名を取得します
      //sFileName に、ファイル名を取得したい

      //ステータスバーを取得
      //function Editor_GetStatus(hwnd: THandle; szStatus: PChar; nBufferSize: Cardinal): Cardinal;
      //sStatus に、ステータスバーの文字列を取得したい

      //確認
      wRet1 := MessageDlg(sFileName + #13#10 + sStatus, mtInformation, [mbYes, mbNo ], 0);
      //Yes
      if wRet1 = mrYes then
      begin
        //「ウィンドウ」「タブを有効」
        //チェックされていない場合:終了する
        //チェックされている場合  :次のタブが自動的に作成され、終了にはならない
        //保存と終了
        Editor_ExecCommand(hwnd, MEID_FILE_SAVE_CLOSE);
      end
      //No
      else
      begin
        //何もしない
      end;
    end;

     |  大石剛司  |  返信
  6. 追加で質問です。

    >これはマクロからでもアクセス可能ですから、エディタモードの時は「表テーマ」、
    >ビューワモードの時は「裏テーマ」といった使い方もできるのではないでしょうか?

    マクロリファレンスを見ましたが該当項目が見つけられませんでした。
    お手数ですが、以下の記述を教えて下さい。
    「表テーマ」を設定するマクロ
    「裏テーマ」を設定するマクロ

    よろしくお願いします。

     |  大石剛司  |  返信
  7. 書き込みありがとうございます。

    > 動作するコードを教えてもらう事は可能でしょうか?
    申し訳ございませんがそこまではサポートすることができません。
    GitHub などに公開されているプラグインのソースなどをご参考にがんばってみてくださいね ^^

    > 「表テーマ」を設定するマクロ
    > 「裏テーマ」を設定するマクロ

    マクロでは、下記の通りです。

    editor.ExecuteCommandByID(2145);

    ↑ これを実行することでテーマが反転します。

     |  Kuro  |  返信
スポンサーリンク