ドラッグアンドドロップのプラグインと Html 作成のプラグインを公開しました

  1. Mery の開発、ありがとうございます。

    以前フォーラムで日記ソフトの「wDiary」との連携の記事があり「wDiary」を使ってみましたが「Mery」との連携は難しそうな感じでした。一方、自分はメモ的な内容はメモ帳を使用してデスクトップにファイルを保存していましたが、ファイル名を指定したり BOM有で保存をしたりと操作が面倒に感じていました。今回、日記ソフトを使用してみて、これらの操作から解放される事が判りました。

    ということで、「Mery」との連携を前提とした日記ソフト「BonsDiary」を作成しました。ファイル名は yyyymmdd-hhmmss.txt で UTF-8、BOM有、CrLf で保存されます。「wDiary」では画像を画面内に表示できますが、「BonsDiary」では「Mery」での編集を考慮してリンク名のみ記述する仕様として、外部ビューワで表示する事にしました。なお、外部ビューワは画像・動画・音楽に対応しています。 また、ブログ風に表示するために簡単な Html の作成機能を実装しました。

    ここまでは前置きです、日記ソフト「BonsDiary」の機能を抜き出してプラグインを作成しました。
    1:ファイル名をドラッグアンドドロップで記入する機能 MeryLinkFile
    2:リンクファイルを表示する機能と Html を作成する機能 MeryMakeHtml

    同梱しているビューワは、ファイル名をフルパス(途中で空白があるファイル名の場合は前後を " で囲んで渡す)で渡せば起動が可能で、表示位置は通常位置と拡大位置が設定できます。マクロでファイル名を取得できればマクロから起動する事も可能だと思いますが、マクロは苦手なので他の方に任せたいと思います。

    興味がありましたらプラグインを使ってみて下さい。プラグインにダウンロード先のリンクを記載しました。不具合は私の掲示板で対応します。なお、リンクファイル名はローカルファイル(ドライブ名がある)のみ対応です。

    ちょっと脱線ですがプラグインで Delphi のテーマを使用してダークモードを試しましたが、動作が安定しないので諦めました。プラグイン(DLL)でテーマを使用するのは敷居が高そうです。

    よろしくお願いします。

     |  大石剛司  |  返信
  2. ご愛用いただきありがとうございます。

    > 以前フォーラムで日記ソフトの「wDiary」との連携の記事があり「wDiary」を使ってみましたが「Mery」との連携は難しそうな感じでした。

    あー、そんな話もありましたね。たしか「値を受け取る口がないと連携は難しい~」みたいな内容だったような… (うろ覚えですが)

    それから「BonsDiary」と、それに対応する Mery プラグインの開発、お疲れさまです。機能や仕様まで丁寧に説明していただいて、とても助かります。

    Mery との連携を意識した日記ソフトという発想、とても面白いですね。HTML 作成機能まで実装されているところには感心しました。後でぜひプラグインを試してみたいです。

    > ちょっと脱線ですがプラグインで Delphi のテーマを使用してダークモードを試しましたが、動作が安定しないので諦めました。プラグイン(DLL)でテーマを使用するのは敷居が高そうです。

    DLL のフォームに VCL テーマを組み込むの、私も以前挑戦したことがあります。

    Delphi XE2 では動いた気がするのですが、新しい Delphi だと例外が出まくってうまく動かず、結局諦めた覚えがあります。

    ちょうどその頃、DLL から FireMonkey (FMX) を使えたら VCL より幅広いことができて面白そうだと思い試したこともあるのですが、こちらもうまく動かず断念しました…

    でも最近ちょっと調べてみたら「VCL アプリから FireMonkey フォームを使う方法」なんてのもあるみたいで、今の Delphi ならワンチャンあるのかも?なんて思うとちょっとワクワクしてきますね。

     |  Kuro  |  返信
  3. 日記ソフトを公開しましたが、ファイル名を任意に設定できるようなアプリケーションを作成してみました。

    テキストファイルを、同じフォルダに集めて運用されている方にお勧めします。ただし、ファイルは UTF8 BOM有 CrLf のみとなります。

    一方、各フォルダにテキストファイルがある方は、ファイル管理として使えます。「Mery」の「履歴ファイル」で「ピン止め」と同じような機能を実現できます。

    「BonsTextManeger」の編集エリアにマークダウンの定型文 ()[] を入力しておきます。次に、「Mery」タブの「ファイル名」の個所を「右クリック」して「パスのコピー」を操作します。その後「BonsTextManeger」でペーストします。

    もしくは、エクスプローラでファイルを「BonsTextManeger」にドロップ(複数化)します。次に、「BonsTextManeger」の編集エリアのファイル名の部分をマークダウン記号で囲みます。
    ()[フルパスのファイル名]

    あとは、「F2」キーを操作するとファイルを検索して拡張テキストビューワで表示します。目的のファイルなら「現在のテキストファイルを外部ビューワで表示」を操作すれば「Mery」で操作ができます。

    興味がありましたら使ってみて下さい。
    https://www.bonsfm.com/bonstextmanagerwindows/bonstextmanagerwin

    使い方こちらです
    https://ameblo.jp/macworld-yokohama/entry-12934427674.html

    よろしくお願いします。

     |  大石剛司  |  返信
  4. こんにちは。

    「BonsTextManager」、めちゃくちゃ多機能ですね。

    > もしくは、エクスプローラでファイルを「BonsTextManeger」にドロップ(複数化)します。

    Mery ウィンドウのタイトルバー左端にある Mery アイコンをドロップするのも、簡単で便利かもしれません。

    「F2」キーで使える拡張テキストビューアーもいい感じでした。

    最初はテキストビューアーが開かなくて戸惑ったのですが、どうやら 1 行目は無視されるようですね。(1 行目にタイトルなどを書く決まりがあるのでしょうか…?)

    [aaa](C:\Temp\aaa.txt)
    [bbb](C:\Temp\bbb.txt)
    

    それにしても、Markdown 対応を自前で実装されているのは驚きです。

    > ちょっと脱線ですがプラグインで Delphi のテーマを使用してダークモードを試しましたが、動作が安定しないので諦めました。プラグイン(DLL)でテーマを使用するのは敷居が高そうです。

    ちなみに、Mery プラグインでの Delphi テーマ (VCL スタイル) については、安定して動作させる方法が分かったので、プラグイン SDK にサンプル (CustomBarStyled) として追加しておきました。

    エラーが出て不安定だった原因は、Mery 側のダークモード (OS レベルでのフック) との競合だったようです。

    システムスタイルフックを無効化すると、安定するようになりました。(CustomBarStyled.dpr の一番下)

    さらに、Mery プラグインで FireMonkey (FMX) も使えるようになったので、こちらもサンプル (CustomBarFMX) として SDK に含めています。

    FireMonkey を使えば、スタイリッシュな GUI や 3D モデルの表示など、さまざまなことができて面白そうです。

    【参考】プラグインソフトウェア開発キット
    https://github.com/haijinboys/mery-plugin-sdk

     |  Kuro  |  返信
  5. >最初はテキストビューアーが開かなくて戸惑ったのですが、どうやら 1 行目は無視されるようですね。

    カレントファイルの表示があるので、次検索では現在行の次の行から検索するようにしていました。自分でも不自然かなあと思っていましたが、やはりそうですよね。

    検索開始時に現在行の選択開始位置と選択範囲を記憶して、現在行を検索して開始位置と範囲が異なったら現在行を対象としました。
    開始位置と範囲が同じなら検索済みなので、次の行から検索するようにしました。
    これで、大丈夫だと思います。

    >システムスタイルフックを無効化すると、安定するようになりました。(CustomBarStyled.dpr の一番下)

    情報提供ありがとうございます。
    早速 DLL に実装して、最新版をアップロードしました。

    実装して、気が付いた事があります。
    テーマを使用したアプリで背景色を変えたい場合は、コンポーネントの StyleName は Windows を指定する必要があります。
    指定しないと、設定したテーマで表示されます。
    EXE の場合は、StyleName は Windows に設定しても、正常な動作です。
    ただし DLL の場合は、StyleName に Windows を設定すると、設定したテーマと違う場合はエラーが表示されます。
    原因は判っていませんので、情報のみ提供します。

    実際には以下の状態になっています。
    BonsTextManager.exe では、Memo の StyleName は Windows を設定していますが、テーマを Dark に設定しても、Memo のフォント色と背景色はテーマとは関係なく設定できます。
    MeryMakeHtml.dll では、テーマによりエラーになるので Memo の StyleName は 空白 に設定しています。

    MeryMakeHtml.dll では「Normal」「Lite」「Dark」「Carbon」のテーマの選択を可能にして対応しました。
    「Normal」の場合には、テーマは設定しません。
    「Normal」以外の場合は、テーマを設定しています。

    よろしくお願いします。

     |  大石剛司  |  返信
  6. > 開始位置と範囲が同じなら検索済みなので、次の行から検索するようにしました。
    > これで、大丈夫だと思います。

    おぉ、ご対応ありがとうございます!1 行目もしっかりヒットするようになりました。助かります。

    > ただし DLL の場合は、StyleName に Windows を設定すると、設定したテーマと違う場合はエラーが表示されます。
    > 原因は判っていませんので、情報のみ提供します。

    なるほど、情報ありがとうございます。

    こちらの環境でも DLL で StyleName を Windows にするとエラーが出るのを確認しました。これはほんと謎ですね…。

    > MeryMakeHtml.dll では、テーマによりエラーになるので Memo の StyleName は 空白 に設定しています。

    Memo の背景色や文字色を指定するだけなら、StyleName を空白のままにして、StyleElements の seClient や seFont を False にすると、テーマの影響を受けずに色を反映できました。

    とはいえ、MeryMakeHtml.dll では背景色や文字色がちゃんとテーマに沿って変更できているようなので、もし見当違いなことを言っていたらすみません ^^;

    でもやっぱり、テーマが反映されると気分上がりますね!(ダーク テーマ派です)

     |  Kuro  |  返信
  7. >Memo の背景色や文字色を指定するだけなら、StyleName を空白のままにして、StyleElements の seClient や seFont を False にすると、テーマの影響を受けずに色を反映できました。

    情報ありがとうございます。こちらでも動作を確認しましたが、今回はこのままで公開します。

    別件ですが、1行の文字列はMemo1.Lines.String[]で取得していましたが、画面幅で折り返しを設定すると、1行が分断される事に気が付きました。対策としてMemo1.Textから正規表現でCrLfの位置を全て取得して、折り返さない1行を取得する方法を導入しました。「Mery」の表示座標または論理座標と同じ仕組みだと思います。対策版をアップロードしました。

    よろしくお願いします。

     |  大石剛司  |  返信
スポンサーリンク