◀ANSI版開発トップへ
  • 1467 タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ
    • 1469 Re: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ
      • 1470 Re2: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ
        • 1471 Re3: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ
        • 1474 Re3: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ
          • 1475 Re4: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ
            • 1476 1つだけ書き方について
            • 1482 Re5: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ
  • [1467] タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ やざき 2002年02月04日 16:13

    diff_2002_2_4.zipをアップロードしました。
    PPA.DLL対応パッチからのdiffになってます。

    共通設定と、タイプ別設定の両方に、外部ヘルプと外部HTMLヘルプを設定することができます。
    優先されるのはタイプ別設定です。

    タイプ別設定で、外部ヘルプ等が設定されていない場合に、共通設定の外部ヘルプが呼び出されます。

    というわけで、取り込んでいただけるとこれ幸いです。
    • [1469] Re: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ げんた 2002年02月04日 19:12

      >共通設定と、タイプ別設定の両方に、外部ヘルプと外部HTMLヘルプを設定することができます。
      >優先されるのはタイプ別設定です。
      どーもお疲れさまです.ただ,1カ所気にくわないところがあります.
      Helpファイルの判定処理をDLLSHAREにおいていますが,これをCEditDocに移動できませんか.

      というのは,現在Types構造体へのアクセスはCEditDoc::GetDocumentAttributeを通じてのみアクセスするようになっており,将来的にはこれを共有メモリから追い出したいと考えていますので.

      #考えているだけで全然やる気配がない...という突っ込みはしないで(((;^^)
      • [1470] Re2: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ やざき 2002年02月04日 19:24

        ▼ げんたさん
        > >共通設定と、タイプ別設定の両方に、外部ヘルプと外部HTMLヘルプを設定することができます。
        > >優先されるのはタイプ別設定です。
        > どーもお疲れさまです.ただ,1カ所気にくわないところがあります.
        > Helpファイルの判定処理をDLLSHAREにおいていますが,これをCEditDocに移動できませんか.
        >
        > というのは,現在Types構造体へのアクセスはCEditDoc::GetDocumentAttributeを通じてのみアクセスするようになっており,将来的にはこれを共有メモリから追い出したいと考えていますので.
        >
        > #考えているだけで全然やる気配がない...という突っ込みはしないで(((;^^)

        ではひとつ教えてください。CShareDataの役目はなんですか?
        私は、CShareDataは、DLLSHAREのアクセスクラスで、ゆくゆくは、DLLSHAREを隠して、CShareDataからアクセスするだけになるんじゃないかと思っていたんですが。

        それに、ヘルプファイルの判定処理は、DLLSHAREに書かれているファイル名も使うし、DLLSHAREに書かれているTypesに書かれているファイル名も使うので、CShareDataに置くのは理にかなっていると思っていたのですが。。。今も思っていますけど。。。

        というわけで、CEditDocに移動するのは、やぶさかではないのですが、CShareDataの役割を知っておかないと今後また同じようなことがおきないとも言い切れないので、教えてください。
        • [1471] Re3: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ やざき 2002年02月04日 19:25

          って、m_TypeをDLLSHAREから取りはずそうとしているということ?
          DLLSHAREから取りはずして、どうやって共有するつもりですか?
        • [1474] Re3: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ やざき 2002年02月04日 23:36

          そうそう、わたしは、
          CSettingMediatorというクラスを作って、各種設定が共通設定だろうが、タイプ別設定だろうが、気にせずとりあえずCSettingMediatorに問い合わせたり、設定を依頼するだけでよくなったら
          便利だなぁと思っています。
          で、CShareDataをそのうち、CSettingMediatorにしてやろうかと思っていたんですが、いかがでございましょう?

          そうすると、設定は基本的にCShareDataにお願いするという方針で行ける。(というか、勝手に行っていた。すみません。)
          • [1475] Re4: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ げんた 2002年02月05日 00:47

            ちょっと考え直してみました.

            ▼初期の私のアイディア
            ・CShareDataの役割=単にDLL Sharedを得るためのクラス.

            ・タイプ別設定を共有メモリから追い出す.
            そのために,タイプ別設定のアクセスをCEditDoc::GetDocumentAttributeに集約.
            追い出した後の実装はCEditDoc,またはCEditDocに含まれる新規クラスで行うつもりだった.

            共有メモリからタイプ別設定を追い出したい理由は以下の通り.
            * タイプ別設定が足りなくなり,既に2回最大値を拡張している.
            * タイプ別設定の領域を予め共有メモリに確保しなくてはならないので,上限の撤廃ができない.
            * 初回起動時に使うかわからない領域全てを初期化するのは無駄ではないか.

            追い出しのアイディア
            * タイプ別設定はそれぞれ外部ファイルに用意する.
            * 設定ファイルは必要に応じて読み込まれる.
            * 変更は現状通りダイアログボックスで行う.
            * 変更されたらすぐにファイルに保存し,設定変更Broadcastメッセージを投げる.
            * Broadcastを受け取ったら該当タイプを使用しているか確認.
            * 使用していたらファイルから再読込し,設定を更新する.

            >各種設定が共通設定だろうが、タイプ別設定だろうが、気にせずとりあえずCSettingMediatorに問い合わせたり、設定を依頼するだけでよくなったら便利だなぁと思っています。
            なるほど.これは良いと思います.最終的には設定情報がどこに格納されているのかも意識する必要が無くなるので,これは私のアイディアと矛盾しません.CEditDoc::GetDocumentAttributeで取得するのをDLLSHAREからCSettingMediator経由に変更すればタイプ別設定のカプセル化の場所が移動します.

            私の初期アイディアと組み合わせると,追い出した後の実装というのをCSettingMediatorに依頼することになるでしょう.タイプ一覧の設定,指定タイプの取得,更新などファイルへの書き出し・読み込みタイミングもCSettingMediatorが管理すれば良いような気がします.

            上記内容を納得した上で私が確認した限りでは特に問題はないように思います.

            ---
            実装に入る前に設計に対する議論を行うことは有意義だと思います.これまでは議論する相手がいなかったので...(;_;)
            • [1476] 1つだけ書き方について げんた 2002年02月05日 09:19

              >上記内容を納得した上で私が確認した限りでは特に問題はないように思います.
              1つだけ書き方についてお願い.
              //if( old_condition ){
              if( old_condition ){
              と古い行を残してある箇所がありますが,ご存じの通りコメント中であっても括弧を残してあると対括弧の対応が正しくとれなくなってしまいます.

              本当はエディタ側にて対応する問題かもしれませんが,実装の際に考慮していただければと思います.

              既存の変数直接参照部分をカプセル化したような場合は自分のコメントだけ残して古い行は消しちゃってもいいと思いますけどね.元に戻すことは絶対あり得ないと思いますし.

              操作性や機能の変更のためにコメントアウトした場合にはコメントとして残した方がいいと思います.
            • [1482] Re5: タイプ別設定に外部ヘルプと外部HTMLヘルプ新設パッチ あろか 2002年02月05日 23:37

              ▼ げんたさん
              > * タイプ別設定の領域を予め共有メモリに確保しなくてはならないので,上限の撤廃ができない.
              > * 初回起動時に使うかわからない領域全てを初期化するのは無駄ではないか.
              >
              > * タイプ別設定はそれぞれ外部ファイルに用意する.

              タイプ毎に共有メモリを動的に確保するように出来ないでしょうか。
              いちいちファイルにアクセスするとパフォーマンスがわるくなりそうで心配です。
              たとえばこんなかんじ。
              * 設定ファイルはいままでどおりとする.
              * タイプ別設定は必要に応じて読み込まれる.
              * すでに別ウィンドウで読みこみ済みなら読みこまない。
              * 読みこんだら共有メモリ名を"sakura_share_xxx"(xxx はcpp や html)などとして共有しておく。
              * 変更は現状通りダイアログボックスで行う.
              * 設定変更の更新はいままでどおり.

              > * 変更は現状通りダイアログボックスで行う.
              設定ダイアログを複数のプロセスで同時に開かないのなら、コントロールプロセスだけに持たせてもよいかと思っていますがどうでしょう?
              1 編集ウィンドウの設定メニューを選択する
              2 コントロールプロセスにウィンドウメッセージが飛ぶ。
              3 コントロールプロセスは編集ウィンドウの位置付近に設定ダイアログを表示する。