Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

設定ダイアログの仕組みを変更 #74

Open
nmaya opened this issue Jan 2, 2024 · 7 comments
Open

設定ダイアログの仕組みを変更 #74

nmaya opened this issue Jan 2, 2024 · 7 comments
Labels
todo Project task

Comments

@nmaya
Copy link
Member

nmaya commented Jan 2, 2024

Background

Setup メニュー配下の以下は、オリジナル 2.3 からある設定メニュー

  • Terminal
  • Window
  • Font
  • Keyboard
  • Serial port
  • TCP/IP
  • General

その後増設された設定項目は基本的に既存のダイアログを改修せず、Additional Settings に配置された。

概要

  • 本体の設定
    • 個別のダイアログを表示するのではなく、ひとつの「設定ダイアログ」(今で言う Additional Settings)に配置する
    • カテゴリごとにプロパティシートを用意する
    • タブはなくし、ツリープロパティシート(左側のリストはWindows的にはなんと言うのが正式?)で切り替える
    • 既存のメニューは残し、特定のプロパティシートを選択した状態で設定ダイアログを開く(既存の単体のダイアログは使わなくする)
  • プラグインからの設定の仕組み
    • フックは残し、メニューを追加してダイアログを表示するようなプラグインはそのまま動作する
      • リビルドは必要?だとしたら困るかも
    • 「設定ダイアログ」にプロパティシートを追加するAPIを新設し、プラグインはそれを呼び出す
    • 「設定ダイアログ」を閉じたときに、プロパティシートの値をプラグイン側で処理(値の反映)できるようにする

origin

https://osdn.net/projects/ttssh2/ticket/44226

@nmaya nmaya added the todo Project task label Jan 2, 2024
@zmatsuo
Copy link
Member

zmatsuo commented Jan 7, 2024

plugin_api ブランチを追加しました。
プラグインから Tera Term に実装した関数を呼び出す口(API)を追加します。
アイディア的にはよさそうと思いますがどうでしょうか?

プラグインはAPI(関数)へのポインタのリストを受けとり、
追加したAPIを使用できるようになります。
従来のプラグインは、ソースを変更なしビルドすることができます。
対応するよう修正すればAPIの呼び出しができるようになります。

現在は、プラグインから Tera Term の動作を変更したい場合は、
関連する設定画面のフックを利用します。
設定画面を再構成すると設定画面のフックを利用した
プラグインに影響が出ます。
(まだ調べていないのですが、#63 はプライグインのフックの影響もあるかもしれません)

プラグインから設定画面の構成を考慮する必要がないよう、
フックを利用しなくても Tera Term の動作を
変更できるようにする(TTXGetUIHooks の使用をなくす)ことを
目標に考えています。

おおまかな追加動作/仕様は次のようになります。

  • Tera Term はプラグインの初期化時、TTXBind() をコールする
  • TTXBind() に3番目の引数を追加 (common/ttplugin.h参照)
    • 従来2つの引数があった
    • ポインタ(void *)を追加
    • 従来のプラグインのソースは変更なしで使用可能
    • TTPluginData 型にキャストして使う (common/ttplugin_api.h参照)
  • TTPluginData の中に PluginAPI() へのポインタが入っている
  • PluginAPI() をコールして APIへのポインタのリストを取得

試しに TTXKanjiMenu をフックを使用しないように修正してみました。

設定画面の変更に伴って必要なAPIを追加していけばよい思っています。
また、こんなAPIを追加したり

  • ttssh の scp の呼び出し関数の登録(teraterm/scp.cpp)
  • 設定画面(プロパティーシート)の作成関数の登録

他の用途にも使えると思っています。

@nmaya
Copy link
Member Author

nmaya commented Jan 11, 2024

どちらを先にやるかだと思いますが、コメントしてくださったのは、こういうことだと思います。

  • 設定画面の表示の仕組み
    • タブをやめて左側のリストで切り換える仕組み(まだ隠し機能?)
  • プラグインから設定画面を追加する仕組みを含む

私がこのissueに書きたかったのは「設定項目の追加時期というプログラムの都合によって、同じカテゴリーの設定を別の画面から変更するのは使いづらい」というところまでです。
プラグインで本体と同じカテゴリーの設定があったとしても、別の画面(今で言う、Additional Settingのタブが増えるかたち)でいいと思います。

@zmatsuo
Copy link
Member

zmatsuo commented Jan 12, 2024

まずは Terminal ダイアログを

  • Additional Settings の1ページにする
  • Setup - Terminal メニューを選択したとき Additional Settings のTerminal ページを表示するようにする

というのをやってみましょうか
なんとなくいい感じになりそうな気がします。

タブをリスト(ツリー)で表示する機能は
使わないとテストにならないですね。

テスト的に実装されていてenable/disableできる機能は
どこか(wikiでしょうか)にまとめておいたほうがよさそうですね。

@zmatsuo
Copy link
Member

zmatsuo commented Jan 14, 2024

テスト的に実装されていてenable/disableできる機能は
どこか(wikiでしょうか)にまとめておいたほうがよさそうですね。

まとめページを作りました。
実験/テスト実装

@zmatsuo
Copy link
Member

zmatsuo commented Jan 14, 2024

試しに端末の設定ダイアログの内容をプロパティーページにしてみました。
term_property_page ブランチです。

端末の設定を開くと、端末の設定プロパティーページ1枚のダイアログが開きます。

プロパティーページをAdditional Settingsに追加していけばすればよさそうです。

あとフックをどのように扱うか、 @ttdodaさんの OSDN ticket#44226 のコメントの内容ですね。

フックをなくして、全てAPI(関数呼び出し)で対応できるようにするのはどうでしょう?
というのが今のところの私の案です。
こんな感じのAPIです。

  • 特定の設定が変更されたらコールバックを登録できるAPIを追加
    • ダイアログ(プロパティーシート)が閉じられた直後(設定されたとき)に発生
    • 送受信コードが変更されたとき
    • ウィンドウサイズが変更されたとき
  • 変更したい内容を設定できるAPIを追加
    • 送受信コード設定
    • ウィンドウサイズ設定
  • 特定のダイアログを差し替えるAPIを追加
    • plugin登録時にpluginのダイアログに差し替える
    • 現状はttxsshの New Connectionダイアログだけのはず

特定のダイアログが閉じたときに何かする、という作りにすると
ダイアログにある項目を別のダイアログ(やプロパティーページ)に移動する(再構成する)
ことが難しくなってしまうのではないかと考え、このような作りが良いかなと思いました。

@nmaya nmaya changed the title 設定画面の再構成 設定ダイアログの仕組みを変更 Jan 21, 2024
@nmaya
Copy link
Member Author

nmaya commented Jan 21, 2024

「設定項目のカテゴリの再分類」については #84 に移動しました。

@nmaya
Copy link
Member Author

nmaya commented Jan 21, 2024

全部理解できていませんが、#74 (comment) までをもとに issue の本文を修正しました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
todo Project task
Projects
None yet
Development

No branches or pull requests

2 participants