◀Unicode版開発トップへ
  • 1267 Commit報告(Chg) ICONをすべてのコマンドに割り当てる
    • 1268 Re:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
      • 1269 Re2:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
        • 1275 Re3:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
      • 1270 Re2:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
        • 1271 Re3:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
          • 1272 Re4:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
            • 1273 Re5:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
              • 1274 Re6:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
                • 1277 Re7:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
                  • 1278 Re8:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
                    • 1280 Re9:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
                      • 1281 Re10:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
                        • 1283 Re11:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
                          • 1284 Re12:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
                  • 1562 -
                • 1279 Re7:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
        • 1276 Re3:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
      • 1282 Re2:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
        • 1285 Re3:Commit報告(Chg) ICONをすべてのコマンドに割り当てる
          • 1286 折返しについて
            • 1287 RE: 折返しについて
              • 1288 Re2: 折返しについて
                • 1289 Re3: 折返しについて
                  • 1290 Re4: 折返しについて
                  • 1291 Re4: 折返しについて
                    • 1292 Re5: 折返しについて
                      • 1293 Re6: 折返しについて
                        • 1294 Re7: 折返しについて
                          • 1302 Commit報告(Fix):ツールバー折返しの番号ずれ対応
  • [1267] Commit報告(Chg) ICONをすべてのコマンドに割り当てる Uchi 2010年06月20日 20:46

    リビジョン:
    rev1779

    変更種別:
    仕様変更

    内容:
    ICONを割り当てたコマンドは、
    現在位置を移動履歴に登録
    1行選択
    閉じてタグジャンプ(元ウィンドウclose)
    カスタムメニュー11~24
    外部マクロ21~50
    です。

    また
    「このタブ以外を閉じる」、「左をすべて閉じる」、「右をすべて閉じる」
    に
    TabCloseOther、TabCloseLeft、TabCloseRight
    のマクロ名を与えました。

    既存コードと非互換性があり、ツールバーの折り返しのコード、とPluginのコードが32だけずれます。
    (外部マクロと重なるためです)

    PatchUnicode#3015183

    また同様のパッチのANSI版を
    Patch#3015185に上げてあります。
    • [1268] Re:Commit報告(Chg) ICONをすべてのコマンドに割り当てる syat 2010年06月22日 06:17

      ▼ Uchiさん
      > 既存コードと非互換性があり、ツールバーの折り返しのコード、とPluginのコードが32だけずれます。
      > (外部マクロと重なるためです)
      >
      パッチの段階でコメントすればよかったのですが、これちょっとまずくないですか。
      ツールバーの設定はiniファイルにアイコンの番号で記録されているので、ツールバーにプラグインコマンドや折り返しを追加してる状態でバージョンアップすると外部マクロに化けてしまいます。
      すでに割り当て済みのアイコン番号は変えないように外部マクロを追加した方がよいのでは?
      (12行目に25個、13行目に25個とか)
      • [1269] Re2:Commit報告(Chg) ICONをすべてのコマンドに割り当てる Uchi 2010年06月22日 22:05

        ▼ syatさん
        > ツールバーの設定はiniファイルにアイコンの番号で記録されているので、ツールバーにプラグインコマンドや折り返しを追加してる状態でバージョンアップすると外部マクロに化けてしまいます。
        > すでに割り当て済みのアイコン番号は変えないように外部マクロを追加した方がよいのでは?
        > (12行目に25個、13行目に25個とか)
        「折り返し」のみであれば、それも有かなと思います。
        事実、前にインプリメントした時には(3年ぐらい前ですが)、1~30を12段目に、31~49を12段目に置いていました。
        ですが、プラグインの場合に、実質的に開始位置以降のすべてのポジション(論理的には2000個)を占有します。
        つまり、段数を増やした場合、、必ず最後の段の後ろにプラグインコマンドを付けることになります。
        ので、プラグインがまだそれほど普及していない今ならば、まだ修正間可能と思い上げました。

        iniファイルの読み込み時に処理するルーチンもインプリメントしてみましたが、
        (Pluhinの作者のsyatさんはそうでもないかも知れませんが)
        使用頻度の少ないコマンドの為にそこまでするのもな、
        ということで、はずしました(simple is best)。

        今なら可能という事で、お許し願いたいと思います。
        • [1275] Re3:Commit報告(Chg) ICONをすべてのコマンドに割り当てる syat 2010年06月25日 00:35

          すみません。2日ほどBBSを見れませんでした。

          ▼ Uchiさん
          > プラグインの場合に、実質的に開始位置以降のすべてのポジション(論理的には2000個)を占有します。
          > つまり、段数を増やした場合、、必ず最後の段の後ろにプラグインコマンドを付けることになります。
          これはちょい違います。

          コマンド番号、アイコン番号、ボタン番号(仮称)の動きは、もかさんがまとめてくださった内容の通りです。
          ・コマンド番号→F_FILENEW(30101)のようなコマンドに割り振られた番号。
          ・アイコン番号→BMP上の位置を指定する番号。
          これらの対応表がCMenuDrawerのtbd配列で、実際はその配列をそのまま扱うのではなく、TBBUTTON構造体の配列に変換してメモリ上に持っています(m_tbMyButton)。この添え字をボタン番号とでも呼びましょう。ボタン番号とアイコン番号はだいたい同じです。
          だいたいと書いているのは、折返しとプラグインコマンドが小細工しているため。折返しは実際はアイコンが無いのだけれど仮想的にボタン(382)と見なしています。プラグインコマンドはBMPに含まれない追加アイコンを含むこと、および、追加アイコンを指定しないコマンドは383の固定アイコンにマップしています。
          ちなみに追加アイコンはメモリ上のBMPの最下行の下を1行分拡大してそこに保持するので、383以降の2000個を占有するのではなく、MAX_TOOLBARBUTTONSから2000個です。

          したがってBMPに段を追加する場合はMAX_TOOLBARBUTTONSさえ更新してもらえればプラグイン的に無問題です。
          ・・・って思っててもコメントなどに書いておかないと伝わりませんね。。。

          INIファイルのツールバー設定はボタン番号で記録するので、そもそもtbd配列が変わると影響が出てきます。
          外部マクロですが、アイコンは1個だけ追加し、外部マクロ20~49は共通でそのアイコンを使うという案はどうでしょう? ボタン番号の話だけなのでm_tbMyButtonの初期化に少しコード追加するだけですみそうです。小細工へようこそ!

      • [1270] Re2:Commit報告(Chg) ICONをすべてのコマンドに割り当てる anonymous 2010年06月22日 22:59

        UNICODE版てβ版ですよね
        • [1271] Re3:Commit報告(Chg) ICONをすべてのコマンドに割り当てる もか 2010年06月23日 05:03

          ANSI版のパッチも出ていて、trunk(ANSI)は互換性重視なので、受け入れられないと思います。
          そして trunk/trunk2で my_icons.bmp ぐらい共有できるようにしたいです。
          「折り返し」に関しては、
          // 2007.10.12 genta 折り返しボタンが最後のデータと重なっているが,
          // インデックスを変更するとsakura.iniが引き継げなくなるので
          // 重複を承知でそのままにする
          というコメントが書いてあるぐらいだから考慮した方がいいでしょう。
          # 自動折り返し、自動折り返し候補、複数ツールバー配置、下とか左右とかフロートとかもほしいところですが

          この辺の番号体系は複雑なわりに、まとまってコメントがないですね。
          プラグインも含めてちょっと見ただけでは全然わからないので調べてみました。間違いを発見したら必ず教えてください。
          ・コマンド番号/EFunctionCode
          もともとメニューの番号。範囲指定の値は式+キャスト で生成される。
          F_DISABLE, F_FILENEW, ... 非連番20000-40000位の値 16bit制限
          プラグインは、F_PLUGCOMMAND_FIRSTから20x100 を使用。共通設定、プラグインの順番に依存
          変更すると、カスタムメニュー,キー割り当て,メインメニュー,その他メニューが影響を受ける
          ・アイコン番号A CMenuDrawer::CMenuDrawer()の tbd のindex
          my_icons.bmpの特定コマンド番号に対する位置を決定している
          変更するとツールバーが化ける、my_icons.bmpの互換性がなくなる
          ・アイコン番号B std::vector<TBBUTTON> CMenuDrawer::m_tbMyButton のindex
          0はメニューのセパレータ用、通常コマンドは「tbdのindex + 1」
          tdbのリストのコメントの数字でもある。
          プラグインのコマンド数におおじて動的ロードで追加される
          その時点での数は m_nMyButtonNum と m_tbMyButton.size() の2重管理の模様
          変更するとツールバーが化ける
          ・アイコン番号C m_tbMyButtonのiBitmapの番号
          たぶん CImageListMgrのアイコン番号。0開始。
          アイコン番号Aに加えてプラグイン固有アイコンがあれば動的ロードで追加される
          CImageListMgrの管理者は、CEditApp(旧CEditWnd?)でありプロセス上に1つのみ。
          ・アイコン番号D m_nToolBarButtonIdxArr 所有者はDLLSHAREDATA
          CShareDataの初期化ではマジックナンバーで書いてある。説明もない
          管理者はしいて言うならCPropComToolbarとShareData_IO_Toolbar
          CMenuDrawer::getButton(int idx) の引数になる。たぶん アイコン番号Bと同じ。
          • [1272] Re4:Commit報告(Chg) ICONをすべてのコマンドに割り当てる もか 2010年06月23日 05:04

            (つづき)多対多なのか多:1なのか1:1が必須なのかは、私は未調査です。
            アイコンがないプラグインコマンドのツールバーの登録番号(アイコン番号D)は
            Uchiさんのパッチで MAX_TOOLBARBUTTONS-1 になる。
            rev1778以前は、383というマジックナンバーが使われているが、これはtbdのF_PLUGCOMMAND_FIRSTのアイコン番号Bで
            FIRSTになっているけど1番目という意味ではなく、独自アイコンがない場合のプラグインのアイコンという程度の意味

            F_PLUGCOMMAND_FIRST が実際にプラグインコマンドに割り当てられるなら、m_tbMyButtonのidCommandが重複登録されるかもとコードを追い続けたら、CPlugin::AddCommandで1から振ると書いてあるので、F_PLUGCOMMAND_FIRSTにはならない。

            ・元の話
            「プラグインのデフォルトアイコン」の位置は383で問題ない。固定アイコンだから。
            F_TOOLBARWRAP の位置は動かすと困る。動かさなくても問題ないはず(最後にある必要はない)
            動かさない場合は、「マクロのツールバー番号(アイコン番号D)」が連続しないけど、さすがにツールバー番号の範囲でマクロ用特殊処理とかしてないと思う。
            独自プラグインコマンドの番号は、番兵と手前すなわち「F_TOOLBARWRAP」の後ろに追加される。
            だから、もともと F_PLUGCOMMAND_FIRST と 各専用アイコンのIDは連続していない。
            固定アイコンの最大数(アイコン番号A => アイコン番号B)を増やせば、必然的にプラグインのツールバー登録はずれることになる。
            将来的にもう1行は増えると思っている。飛び番登録のような処理が必要で今m_tbMyButtonへの追加で工夫しておけばOKそうだ。
            新バージョンの設定を旧バージョンのサクラで開く可能性もあるので、読み込み時に旧設定をずらせばいいとは限らない。

            プラグイン自体の問題点
            1. 新しいウィンドウでプラグインを追加してツールバー・メニューに入れると古い方では、プラグインとアイコンが一致しないので、ツールバーの再表示でおかしくなるかも
            2. プラグインコマンドをツールバーに登録した後、そのコマンドより先にコマンド登録されるプラグインでコマンドが増えると、登録したものがずれるようにみえる
            3. PlugId と PluginId が混同されているみたい。 ついでに両方とも変数名が m_idなのでなおさら区別がつかない
            4. 今は20個のプラグインしか登録できないけど、私のはすでに9番目まで使用中

            #外が明るいよ
            • [1273] Re5:Commit報告(Chg) ICONをすべてのコマンドに割り当てる Uchi 2010年06月23日 21:37

              まず問題は、大きく2つに分かれると思います。

              ①「折り返し」のツールバー上の番号の変更。
              ②プラグイン関連(もかさんが指摘した問題など)。

              ①に関して言えば、「外部マクロ」の番号が連続していることを前提にコーデングされている箇所が、幾つか散見されるので、出来れば間は入れたくないというのが正直なところです
              (これを機会に整理するというのも有ですが)。
              また、「メインメニューの設定」を作成していたときにも、感じたのですが、「カスタムメニュー」が「左クリックメニュー」とその他でコマンド番号が分かれているので、大変作りにくく感じました。
              それも含めて、移動というのが妥当と考えました。
              > 新バージョンの設定を旧バージョンのサクラで開く可能性もあるので、読み込み時に旧設定をずらせばいいとは限らない。
              私の考えとしては、新バージョン.iniを旧バージョンで読み込ませて、いつも正常に動作することを期待するのは、過剰品質と思っています。
              後方互換性に関しては、出来る限り行うべきですが、絶対ではない、前方互換性は、考慮すべきだが、優先度低、と考えています。

              ②プラグイン
              これに関しての問題点は、もかさんも挙げられているようですが、内部的に自動割当されている番号(コマンド番号、ツールバー番号等)を、外部ファイルの sakuraW.ini に書き出しているのが問題なのだと思います。
              このあたりを如何にかすべきでしょう。
              syatさん如何考えていますでしょうか?
              デフォルトアイコンに関しては、MAX_TOOLBARBUTTONS-1 という定義ではなく、別に定義すべきという問題と捉えました。
              • [1274] Re6:Commit報告(Chg) ICONをすべてのコマンドに割り当てる もか 2010年06月23日 23:38

                パッチを書いていてようやく気が付きました。
                「折り返し」の本当の位置は、F_PLUGCOMMAND_FIRSTではなくて、F_TOOLBERWRAPの場所でした。
                マクロを再度移動して「折り返し」の位置を戻したパッチを書きましたので、議論の参考にしてください。
                ついでに、外部マクロ32以上がプラグインにアイコンを乗っ取られるバグを修正しました。
                → PatchUnicode#3020183 ツールバー番号とmyiconsの位置修正

                >「外部マクロ」の番号が連続していることを前提にコーデングされている箇所
                F_USERMACRO_0とMAX_CUSTMACROはそうみたいです。
                探してみたけど「外部マクロ」の「アイコン番号/メニュー番号」は一か所もないようです。
                352, 353, 371, 372あたりの数字です。
                >「カスタムメニュー」が「左クリックメニュー」とその他でコマンド番号が分かれている
                それもコマンド番号の話でアイコン/ツールバー番号は関係ないです。

                >②プラグイン
                のツールバー番号の件。上記パッチではとりあえず640までを予約しておき641からになります。

                1つ案としては、こんなのどうでしょ?
                m_nToolBarButtonIdxArr の値をプラグインはFuncCodeベースにする。これである程度変更に耐えられます。
                アイコン番号B m_tbMyButton[i]のインデックスは、間接アクセスになっているようなので、
                アイコン番号C m_nToolBarButtonIdxArrの番号との間は適度変換して適切なボタンを返せばいいんじゃないでしょうか。
                CMenuDrawner内部と、GetIconId/getButtonだけ直せばできそうな感じです。
                rev1778/1779以前との互換性はありませんが、使っていてプラグインボタンがいきなり変わるのは防げますし、アイコンの段が増えても問題ないです。
                Uchiさんは コマンド番号も反対のようです。
                私も名前空間(いわゆるプラグインID)が使えるならその方がいいですが影響範囲からして無理そうです。

                その他気が付いたもの:
                F_PLUGCOMMAND_LAST は maxdataの MAX_PLUGIN を反映しないから、片方変更すると矛盾する
                プラグコマンドは「1」から「99」だから最大数は20*99 = 1980
                # 個人的には40プラグイン*49プラグコマンドがいいかも
                • [1277] Re7:Commit報告(Chg) ICONをすべてのコマンドに割り当てる Uchi 2010年06月25日 01:49

                  プラグインのiniファイルへの書き込み(Pluginh本体ではなく、Toolbar,CustMenu,KeyBind)を文字列化(PluginId/番号の形)で行うパッチを上げます。
                  その他に、Pluginのデフォルトアイコンの番号のマクロ定義、
                  過去との互換性(共有変数バージョンをiniに書き込みそれでコントロール)
                  も追加してあります。
                  これで後方度感性の問題はなくなると思います(rev.1779でプラグイン、折返を設定しなおした場合を除く)。

                  PatchUnicode#3020889

                  もかさんのパッチは見ていないので、コンフリクトを起こしているかもしれません。

                  折り返しのICON番号の墨守が必要なのかという問題が残りますが、
                  これを使っている人はどの程度いるのでしょうか?
                  もかさん、syatさんが使用していかったらしいことはわかるのですが、
                  如何でしょうか?
                  • [1278] Re8:Commit報告(Chg) ICONをすべてのコマンドに割り当てる Uchi 2010年06月25日 01:52

                    追記
                    何もなければ、26日にでもコミットをかけます。
                    • [1280] Re9:Commit報告(Chg) ICONをすべてのコマンドに割り当てる もか 2010年06月26日 04:00

                      ①「折り返し」のツールバー上の番号の変更
                      ▼ syat さん
                      >ちなみに追加アイコンは MAX_TOOLBARBUTTONSから2000個です。
                      というコメントを見て MAX_TOOLBARBUTTONS という値について、誤解していたようです。
                      これは、tbdの大きさとMAX_TOOLBARBUTTONSを同じにして、tdbの最後から2番目に「ツールバー折返」を指定していないと、
                      共通設定でツールバー折返を追加した時におかしくなるんですね。
                      私の、v0_0.patchとコメントではそれに気が付いていなかったので、問題がありました。
                      この問題は、Uchiさんが折返を後ろにずらした理由になります。
                      でも、現在の仕様とUchiさんのパッチだけでは、将来 MAX_TOOLBARBUTTONSを増やしたいときに「今回と全く同じ」問題が発生します。
                      結局、問題を解決するにはツールバー折返を固定にする必要がります。どうせ固定にするなら384でいいですよね。

                      iniも、「バージョンアップで書き換えれば問題ない」といいますが、iniのANSI -> Unicode の移行など複数のシチュエーションでもボタン番号が正しく設定されますか?
                      DLLSHAREDATAのバージョンは、A/Wでそろっていません。仮に今そろえても、足並みを揃えて変更できるとは到底思えません。
                      また、次回変更時では、ANSI旧版その1、ANSI旧版その2、Unicode版その1、Unicode版その2があることになります。
                      ANSI版iniだったかUnicode版iniだったかを判別する方法はありません。エンコードは、ユーザが事前に変更する可能性もあります。
                      (なおほぼ設定を引き継いで移行できるかどうか細かいことは知りません)
                       もし互換用の数字をずらす処理はしない場合ツールバー折返だけおかしくなれば、ユーザは「バグってる」か「設定ファイルが壊れた」か「駄目なエディタ」と思うでしょう。

                      ②プラグイン
                      Uchiさんのpatchでは、MAX_TOOLBARBUTTONS+1からCShareDataでプラグインにボタン番号を振るようになっています。
                      上記のm_tbMyButton.size() == MAX_TOOLBARBUTTONS+1 の制限がプラグインのロード直前に守られていれば、期待した動作になります。
                      コード上で一切チェックしていない制限であり、たまたまおかしくない状態ではないでしょうか。
                      しかし以前に書いたような、自動折返候補のような「特殊ボタン番号を追加したい」ということをすれば、またアイコンをつぶすか何かしないといけません。
                      syatさん提案の「マクロのアイコンがないものもアイコンを共有してボタンに追加できるようにしよう」のようなものが増えた瞬間に破綻します。
                      色々考えた結果、やはりCShareData_IOでPlugin関連のコードを実行すること自体が、保守・整合性・依存性などを考えたときに、リスクが高いとおもます。

                      こちらに書いた方がいいと思ったので、こちらに書きますが、
                      プラグインが読み込まれて、有効になるのは次の起動時で、この「起動時」と呼んでいるものは、次の編集ウィンドウが起動したときのことです。
                      まず、プラグインがツールバーに設定されているとします。
                      ウィンドウAを開いて新しいプラグインを読み込んで、ウィンドウBを開いてプラグインをツールバーに登録します。
                      そのプラグインが、元からあるものより先に登録される場合(たぶんm_sId順)、つぎのウィンドウCでは、ツールバーがずれています。
                      ini読み込み時と、ini書き込み時ではコマンド数に加えてボタン番号も異なることになります。
                      こうなると手動で直す羽目になります。
                      • [1281] Re10:Commit報告(Chg) ICONをすべてのコマンドに割り当てる もか 2010年06月26日 04:16

                        まず自分の意見のまとめ。
                        ・ツールバー折返のボタン番号
                        384にしておくのがいい
                        ・マクロ20-49のアイコン
                        384をはずしてちょっと移動してもらう
                        49までは追加する
                        マクロ共有ボタン場所・設定を追加しておく(マクロ50用なので実際には利用されない)
                        ・プラグインのボタン番号の内部仕様
                        次からはプラグイン(とマクロのアイコン超過分)だけFuncCodeにしておく
                        ・プラグインのボタン番号のini仕様
                        過去のUnicode版との互換性は放棄して上記内部コードで保持すれば今後の分は互換性保てるだろう派
                        m_sIdベースにするのもいいかもしれないけど、クラス/関数の依存関係の調査や互換性の検討と末永い保守が必要
                        ・プラグインのデフォルトボタン
                        固定さえされていればどこでもいい。という結論で合意と理解。

                        ということで、syatさん提案のマクロアイコンのトリックコードの実装を追加した修正パッチを追加しました。
                        ただ提案と違い50個まではアイコンを確保してあります。
                        indexの代わりにコマンド番号にするので、前回のをA案として、これの基本仕様をB案とします。
                        Uchiさんのパッチと比較検討してみてください。

                        また今の仕組みだと、プラグインを削除→再登録した場合は、プラグイン番号が変更になり、カスタムメニューなどで使えません。
                        (これは、私のパッチでもUchiさんのパッチでも発生します)
                        これは、共通設定画面で削除待ちのものを復活させるように同じ番号に戻せば改善されると思います。

                        *意思を確認したい項目
                        To:主にsyatさん
                        プラグインのボタン番号のrev1778との互換性について。やっぱり必要でしょうか。
                        Uchiさんはボタン番号をずらすコードを提示してくれています。私は説明のとおりの理由で複雑なのであきらめてほしい派です。

                        To:Uchiさん
                        私の見落としでなければ、0初期化されないバグは IOProfileData内 のretがfalseになったときの事です。

                        *要調査
                        プラグインのフォルダをコピーして同じID文字列のままプラグインの登録をしようとした場合。
                        (Uchiさんパッチが採用されたとして)プラグインIDが数字か/\が含まれていたらどうなるか。
                        DLLSHAREに登録した後にplugin.defのIDを書き換えるまたは、プラグインのサブディレクトリの中身を入れかえるとどうなるか。
                        sakuraw.iniを「書き換えて」同じIDかフォルダを指定した場合
                         最後のは自業自得だけど、同じプラグインを設定違いで2つ使いたい。そうだsakuraw.iniを書き換えよう。という発想はありえるとおもう。
                        • [1283] Re11:Commit報告(Chg) ICONをすべてのコマンドに割り当てる Uchi 2010年06月26日 15:13

                          ▼ もかさん
                          > ①「折り返し」のツールバー上の番号の変更
                          >でも、現在の仕様とUchiさんのパッチだけでは、将来 MAX_TOOLBARBUTTONSを増やしたいときに「今回と全く同じ」問題が発生します。
                          「折り返し」と「プラグインのデフォルトアイコン」を移動したのは、「外部マクロ」のICONを素直に延長した中にぶつかった為に移動したものです。
                          将来、MAX_TOOLBARBUTTONSを増やしても、現在位置416固定で問題はないはずです。
                          プラグインコマンドは必ず移動することになると思いますが。

                          >iniも、「バージョンアップで書き換えれば問題ない」といいますが、iniのANSI -> Unicode の移行など複数のシチュエーションでもボタン番号が正しく設定されますか?
                          そうですね、そこまでは考慮していませんでした。
                          共有変数バージョンだけではなく、リリースバージョンのチェックも入れれば問題なく可能になると思います。

                          >②プラグイン
                          >Uchiさんのpatchでは、MAX_TOOLBARBUTTONS+1からCShareDataでプラグインにボタン番号を振るようになっています。
                          >上記のm_tbMyButton.size() == MAX_TOOLBARBUTTONS+1 の制限がプラグインのロード直前に守られていれば、期待した動作になります。
                          >コード上で一切チェックしていない制限であり、たまたまおかしくない状態ではないでしょうか。
                          そうですね、チェックコードを入れた方がいいようです。
                          >しかし以前に書いたような、自動折返候補のような「特殊ボタン番号を追加したい」ということをすれば、またアイコンをつぶすか何かしないといけません。
                          まったくその通りです。
                          >syatさん提案の「マクロのアイコンがないものもアイコンを共有してボタンに追加できるようにしよう」のようなものが増えた瞬間に破綻します。
                          おっしゃる通りです。
                          >色々考えた結果、やはりCShareData_IOでPlugin関連のコードを実行すること自体が、保守・整合性・依存性などを考えたときに、リスクが高いとおもます。
                          そのリスクはあると思います。がそれよりも文字列化のほうがメリットが大きいと思っています。
                          プラグインの読み込みをプラグインのIO部ではなくツールバーのIO部で行っている理由は、そのあたりを将来的に、如何にかしなければと思い其処においてあります(ツールバーでした使用しないというのもありますが)。
                          • [1284] Re12:Commit報告(Chg) ICONをすべてのコマンドに割り当てる Uchi 2010年06月26日 15:14

                            (つづき)
                            >まず、プラグインがツールバーに設定されているとします。
                            >ウィンドウAを開いて新しいプラグインを読み込んで、ウィンドウBを開いてプラグインをツールバーに登録します。
                            >そのプラグインが、元からあるものより先に登録される場合(たぶんm_sId順)、つぎのウィンドウCでは、ツールバーがずれています。
                            >ini読み込み時と、ini書き込み時ではコマンド数に加えてボタン番号も異なることになります。
                            >こうなると手動で直す羽目になります。
                            私の考えでは、この問題は、プラグインの定義時に初期化を行うことで解決する問題だと認識しています。

                            >*要調査
                            >プラグインのフォルダをコピーして同じID文字列のままプラグインの登録をしようとした場合。
                            どちらのプラグインを使用するか尋ねてきます。で片方の登録となっていると思いますが?
                            >(Uchiさんパッチが採用されたとして)プラグインIDが数字か/\が含まれていたらどうなるか。
                            >DLLSHAREに登録した後にplugin.defのIDを書き換えるまたは、プラグインのサブディレクトリの中身を入れかえるとどうなるか。
                            >sakuraw.iniを「書き換えて」同じIDかフォルダを指定した場合
                            > 最後のは自業自得だけど、同じプラグインを設定違いで2つ使いたい。そうだsakuraw.iniを書き換えよう。という発想はありえるとおもう。
                            プラグインを「プラグインID」で認識していますが「フォルダ名」で認識した方がいいという意見でしょうか?

                            追記
                            私としては、
                            PatchUnicode#3020889
                            は、互換性がないということに対する緊急パッチのつもりで出しています。
                  • [1562] - れい 2011年05月21日 01:05

                    -
                • [1279] Re7:Commit報告(Chg) ICONをすべてのコマンドに割り当てる もか 2010年06月25日 04:53

                  >「折り返し」の本当の位置は、F_PLUGCOMMAND_FIRSTではなくて、F_TOOLBERWRAPの場所でした。
                  訂正。説明がおかしかったです、正しくは、
                  「プラグインのデフォルトアイコン」の位置は、F_PLUGCOMMAND_FIRST ではなくて、F_TOOLBERWRAPの場所
                  です。
        • [1276] Re3:Commit報告(Chg) ICONをすべてのコマンドに割り当てる syat 2010年06月25日 00:48

          ▼ anonymousさん
          > UNICODE版てβ版ですよね
          プラグインだけだったらそれでもいいんですが、折返しはANSI版からある機能です。
      • [1282] Re2:Commit報告(Chg) ICONをすべてのコマンドに割り当てる syat 2010年06月26日 13:54

        何だか混乱してきました。私個人が折返しを使っているとかプラグインコマンドの番号を変えてほしくないとか、そんなことは全然問題ではありません。実際、最新ビルドに差し替えてアイコンがずれていることに気付いた私はすぐにツールバー設定を直してそのまま使っています。
        ツールバー折返しを使っていた人が新しいバイナリに差し替えて起動すると、折返しのアイコンが外部マクロ31に化けているのです。
        そのことへの対応は、①化けないように修正する、②仕様変更とする、のどちらかでしょう。
        私は修正を要求しているわけではなくて、このことが議論されてなく気付かれてもいないのでは?とおもって[1268]のコメントを書きました。
        ----
        外部マクロのアイコンが連続している方がプログラム的に自然だから、悪いけど折返しとかプラグインコマンド使ってる人はツールバー直してね、でも全然ありだと思います。
        極力変えない方がみんな幸せだと思うけど。
        ----
        INIにプラグインIDを書くとか、プラグインコマンドの追加アイコンの問題とかありますが、別トピックで話しません?
        • [1285] Re3:Commit報告(Chg) ICONをすべてのコマンドに割り当てる もか 2010年06月26日 18:14

          >折返しのアイコンが外部マクロ31に化けているのです。
          >私は修正を要求しているわけではなくて、このことが議論されてなく気付かれてもいないのでは?とおもって[1268]のコメントを書きました。
          実際、パッチと変更コメントを読んだのに、気が付いていませんでしたので助かりました。

          >INIにプラグインIDを書くとか、プラグインコマンドの追加アイコンの問題とかありますが、別トピックで話しません?
          私は了解です。

          ボタン番号を直すならプラグインのボタン番号の振り方自体も変だと突っ込みを入れて、その時点で理解したことを並べただけなので、混乱させてしまいました。
          このスレッドは一度閉じで、それぞれ新しくしましょう。
          議題と分類をどうするのかは、どなたかにお任せします。
          • [1286] 折返しについて syat 2010年06月27日 00:27

            ようやく>>unicode:1269でUchiさんのおっしゃりたかったことがわかりかけてきた気がします。
            アイコンの段追加はプラグイン的に無問題と書きましたが、ツールバーに登録してしまっているものは化けてしまうのですね。
            プラグインコマンドのツールバー登録についてはみなさんが調査・指摘いただいたように、プラグインIDのようなものを付けてINIに書くしかないようです。

            折返しの件ですが、プラグインコマンドのことを除いて考えれば外部マクロを2行にしてもとくに問題ないと思うのです。
            もしそれでUchiさんMocaさんに異論がないようでしたら、私のほうでパッチ作ったのでアップしますがいかがでしょうか。
            • [1287] RE: 折返しについて もか 2010年06月27日 01:18

              >折返しの件ですが、プラグインコマンドのことを除いて考えれば外部マクロを2行にしてもとくに問題ないと思うのです。
              >もしそれでUchiさんMocaさんに異論がないようでしたら、私のほうでパッチ作ったのでアップしますがいかがでしょうか。
              パッチであれば、(読み手がコードと仕様を理解できていれば)問題点と修正点がわかりやすいと思います。
              アップしていただけると助かります。
              • [1288] Re2: 折返しについて syat 2010年06月27日 07:29

                ツールバー折返しの番号ずれ対応パッチをアップしました。
                PatchUnicode:3021860
                • [1289] Re3: 折返しについて Uchi 2010年06月27日 08:29

                  ▼ syatさん
                  > ツールバー折返しの番号ずれ対応パッチをアップしました。
                  > PatchUnicode:3021860
                  私としては将来に禍根を残すことは反対なのですが、
                  どうしても移動したくないということならば、仕方がないと思います。
                  ただ、このパッチを2点ほど、変更して欲しいことがあります。
                  1点目、12段目「外部マクロ」と「折返」との間をなくしてほしい、
                  その間を、変な機能で使用されるのを防ぐためです。
                  2点目は、どうせプラグインデフォルトアイコンを移動するならば、
                  もっと別のところに移動してほしい
                  (外部マクロの領域を乱すのは出来るだけ減らしたい)。

                  調査してほしいこと
                  数年前(Unicode版が出ていなかった時期)、もかさんが配置したような感じで
                  作成したことが合いますが、その際、CMenuDrawer.cpp以外に2,3箇所修正した記憶があります。
                  ソースを検索しての修正ではなく、デバッグで修正したもので、大変手間取り、かつ、ほかにもありそうなので
                  方針転換した記憶があります。
                  パッチなどは紛失しているので、正確なことはいえないし、ANSI版のことでもあり、古いことでもあるので
                  現在のUnicode版に対しては、関係がないかもしれませんが、確認をよろしくお願いしたいと思います。
                  • [1290] Re4: 折返しについて もか 2010年06月27日 21:50

                    重要そうなことを上に書きます。
                    >調査してほしいこと
                    >数年前(Unicode版が出ていなかった時期)、もかさんが配置したような感じで
                    >作成したことが合いますが、その際、CMenuDrawer.cpp以外に2,3箇所修正した記憶があります。
                    >>unicode:1280
                    で書いた通りなのだけど、共通設定の折り返し追加ボタンのところを直さないとだめです。
                    (B案 skrw_toolbarno_b_v0_1.zip パッチ参照。ただしパッチはTOOLB<E>RWRAPになっている)
                    CPropComToolbar.cpp
                    - nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, MAX_TOOLBARBUTTONS );
                    + nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, CMenuDrawer::TOOLBAR_BUTTON_F_TOOLBARWRA
                    P );
                    CMenuDrawer.h
                    +static const int TOOLBAR_BUTTON_F_TOOLBARWRAP = 384;
                    rev1779ではこの値に合うように折返を移動しているので問題ないです。
                    rev1779のままMAX_TOOLBARBUTTONSだけを変更した場合もここはおかしくなるとおもいます。
                    もう1, 2か所はまだ発見できていません。
                    確証はないけど trunk rev1198 のryojiさんの作業などで修正されたのではないでしょうか。

                    >ただ、このパッチを2点ほど、変更して欲しいことがあります。
                    >1点目、12段目「外部マクロ」と「折返」との間をなくしてほしい、
                    >その間を、変な機能で使用されるのを防ぐためです。
                    私も最初そう思いました。中途半端に空いているとそこにアイコンを追加しにくいです。
                    ただ、マクロ3/4段目を13段/14段に25ずつ追加してビットマップの見た目を2次元で見ればおかしくないです。
                    逆に詰めて、違う機能群を14段目にいれたあとマクロ50-を15段目にいれると大変残念な結果になります。
                    私は将来の追加方針(どこの空きを何用にするか)さえ明確になっていれば別にどちらでもかまいません。
                    #マクロが50じゃ全然足りないみたいなのを見たことがあるので

                    *動作以外の話
                    m_nToolBarButtonIdxArr[MAX_TOOLBARBUTTON
                    S]; 以外で利用している(由来は反対みたいだけど)のが誤解の原因の一つだとおもいました。
                    ボタンとアイコンとツールバーの配列は違うんだとソースコードで主張したいです。
                    変更例:
                    MAX_TOOLBARBUTTON_X => MAX_TOOLBAR_ICON_X
                    MAX_TOOLBARBUTTON_Y => MAX_TOOLBAR_ICON_Y
                    追加定義で MAX_TOOLBARITEM = 1000 とか 512 とかにしておく。
                    m_nToolBarButtonIdxArr[MAX_TOOLBARBUTTON
                    S] => m_nToolBarButtonIdxArr[MAX_TOOLBARITEM]
                    m_nToolBarButtonIdxArr関連の MAX_TOOLBARBUTTON(3か所) => MAX_TOOLBARITEM か _countof
                    その他の MAX_TOOLBARBUTTONS => 利用箇所は変更でなくなるのでMAX_TOOLBARBUTTONS自体をコメントアウトしてもいいかも
                    ANSI版には m_tbMyButton[MAX_TOOLBARBUTTONS+1] だけ残ると思います。
                  • [1291] Re4: 折返しについて syat 2010年06月28日 01:30

                    ▼ Uchiさん
                    禍根と言われますが、正直なところUchiさんがマクロアイコンの連続を重要視している理由がいまだにわかりません。
                    おっしゃるように直すのは構いません。もかさんのv0_0パッチのようになるでしょう。ところで49番の後ろに空きができますが、ここは外部マクロと関係ない機能で使ってもよいのですか? 使ったとして、仮にマクロが100個に増えたらまた移動するという話になるのでしょうか?
                    それならあらかじめ100個分の領域を予約しておくか、いっそ外部マクロが新しい行に移動していけばよいじゃないですか?(もちろん冗談です)

                    アイコンBMPなんて開発者と差替アイコン作者しか気にしないのだし、ある程度わかりやすければ実装者のセンス次第でいいと思うんですけどね。
                    • [1292] Re5: 折返しについて Uchi 2010年06月28日 02:32

                      ▼ syatさん
                      > ▼ Uchiさん
                      > 禍根と言われますが、正直なところUchiさんがマクロアイコンの連続を重要視している理由がいまだにわかりません。
                      はっきりいって、中間に折り返しを入れた形で作成し、失敗しているからです。

                      > おっしゃるように直すのは構いません。もかさんのv0_0パッチのようになるでしょう。ところで49番の後ろに空きができますが、ここは外部マクロと関係ない機能で使ってもよいのですか? 使ったとして、仮にマクロが100個に増えたらまた移動するという話になるのでしょうか?
                      > それならあらかじめ100個分の領域を予約しておくか、いっそ外部マクロが新しい行に移動していけばよいじゃないですか?(もちろん冗談です)
                      50までという形でいいかなと思っています。
                      その理由は、syatさん作成のプラグインがあるからです。
                      多くのマクロを使うのであれば、それをまとめた形のマクロセットみたいな形でプラグインが作成できると思います。
                      たとえば、マクロ登録用のプラグインがあれば一つで99個のマクロが登録できるでしょう。

                      > アイコンBMPなんて開発者と差替アイコン作者しか気にしないのだし、ある程度わかりやすければ実装者のセンス次第でいいと思うんですけどね。
                      まったくその通りです。
                      つまり私のセンスがなかったおっしゃるわけですね。
                      • [1293] Re6: 折返しについて syat 2010年06月28日 06:49

                        ▼ Uchiさん
                        > つまり私のセンスがなかったおっしゃるわけですね。
                        ごめんなさい。そういう意図はなかったです。
                        ひょっとするとUchiさんが引っかかっているのは同種のアイコンがきちんと連続してないことの気持ち悪さなのでは?という推測で話してました。
                        もしカスタムメニューが30個になったら、右にあるタブ系のアイコンが移動することになるのかなぁ…とかが私の不安でしたが、杞憂だったみたいです。

                        修正パッチは今日の夜になるかもしれませんが作ったらアップします。
                        Uchiさんもかさん、長らくご対応ありがとうございました。
                        • [1294] Re7: 折返しについて syat 2010年06月29日 00:43

                          パッチを更新しました。
                          • [1302] Commit報告(Fix):ツールバー折返しの番号ずれ対応 syat 2010年07月04日 22:17

                            rev1780でコミットしました