TeraTermProject / teraterm

Other
496 stars 39 forks source link

設定ダイアログと設定項目の再編成 #84

Open nmaya opened 10 months ago

nmaya commented 10 months ago

Background

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

その後増設された設定項目は基本的に既存のダイアログを改修せず、Additional Settings に配置された。 そのため、Additional Settings 内ではタブでカテゴリ分けがなされているが、同じカテゴリの設定項目が別のダイアログに散逸している。(例:boldの色設定と有効設定)

さらにあとから、Font が「Font-Font」と「Font-Dialog」に分割された。 また、Additional Settings に Font シートや Conding シートが追加され、同じ設定が複数の箇所から変更できるようになり、混迷を極めている。

概要

設定ダイアログ(設定の分類)と設定項目の整合性を取る

ダイアログと設定項目の対応・新分類案を書いてみました https://docs.google.com/spreadsheets/d/1ZsRES7VbZVDvvHrCNL7ubTN1o5YWQ1AfrqSOFw_7n1E/edit?usp=sharing

Special (INI 直接編集) になっている項目

タスク管理

origin

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

_Originally posted by @nmaya in https://github.com/TeraTermProject/teraterm/issues/74

zmatsuo commented 1 month ago

Window 設定 の VT/TEK 切り替えなどが解決したつもりです。 fbf9a38fea6861f311197e4cd6e0adbcc8035134

nmaya commented 1 month ago

@zmatsuo

どうするのがよいでしょうか?

zmatsuo commented 1 month ago

使っている人からみると 「VTWindow 用の Windowタブ」と 「TEKWindow 用の Windowタブ」はとても似ているけど別タブで、 VTWindowから設定する時は、VTWindow用が出ていて、TEKWindow用は出ていない。 TEKWindowから設定する時は、TEKWindow用が出ていて、VTWindow用は出ていない。 という風に見えるのかな?

いつもVT/TEKWindow用の両方のタブを出すのも分かりやすいかもしれません。 (両方のタブに同一の設定項目が出ているならその設定項目は要調整です)

でも、TEKWindowはあまり使われない感じがするので出すと邪魔と思う人もいるかも。 TEKWindowが出ているときには、TEKWindow用タブも出てくるのもありでしょうか。

必要なタブだけを出す方針だと現在の状態でよさそうです。 タブが1個だけというは、概ねsempreff さんの案と同じかなと思います。

色が反映されないバグが直っているので fbf9a38fea6861f311197e4cd6e0adbcc8035134 をいったんmainにマージしようと思います。

zmatsuo commented 1 month ago

アクセスキーの見直しをタスクに追加しました。

zmatsuo commented 1 month ago

シリアルダイアログをタブ化しました。

概ね動作は良いと思います。 シリアル接続時はシリアルポートを変更できないようにしています。 ご意見いただけないでしょうか

zmatsuo commented 1 month ago

全般、lngファイルのドロップボックスで、 lngファイルの情報をツールチップで表示するようにしてみました。 2d1893ff7b2b11ab7b57f09e8db9a8f2d6b5382b いまいちなところがあれば教えてください。 問題あれば削除しようと思います。

設定のツリービューで階層表示できるようにしました。 i18n化、タブの順序は変更していません。 動作を見てみていただけないでしょうか。 99c70ab77a8f06a424215294ace6843b95e03d4e

sempreff commented 1 month ago

lngファイルの情報をツールチップで表示する

lngファイルの情報を画面に出すには、動的に現れたり消えたりする表現形式は合わないと思います。 右側の空いているスペースに表示する方が良いと思います。 (なお個人的には lngファイルの情報を画面に出す必然性は無いと思っています)

sempreff commented 1 month ago

ツリービューで階層表示

sempreff commented 1 month ago

シリアルタブは

nmaya commented 1 month ago

シリアルダイアログをタブ化しました。

ありがとうございます。

「新しい接続ダイアログ~」

以前に話した「TCP/IP, Serial の設定値」と「それぞれの New Connection ダイアログのデフォルト」をどう表すのか、という話に戻ってくるでしょうか。 https://github.com/TeraTermProject/teraterm/issues/84#issuecomment-2342353298

デバイスの詳細情報

たくさん差しているPCだと、このポートなんだっけ?と確認できるのは便利なように思います。


lngファイルの情報をツールチップで表示

情報が表示されていてもいいと思いますが、ユーザにはあまり関係ないことだと感じます。 ツールチップでの表示については、私は好みません。 Serial の Speed の「You can directly specify a number」もマウスオーバーでツールチップが表示されます。 このような UI は、ユーザが意図していないのに画面表示が変わる(表示されていたものが隠れる)のでユーザが戸惑う、またマウスオーバーしないと情報が提供されないので良くないと感じます。


設定のツリービューで階層表示

「どの項目をどのタブに分類するか」に加えて「どのカテゴリにどのタブを分類するか」を検討する必要があります。 「始めから全て開いて」「キーボード移動」については @sempreff さんに同意します。 点線は PuTTY で見慣れているので違和感はありません。

zmatsuo commented 1 month ago

まだmainにマージはちょっとな状態です。 作り込んでダメ,不採用となるとしょんぼりなので ある程度動作した状態なブランチになっています。

最初はcontributerの情報を出したいなというのがあって、 7-Zipの言語設定をイメージしていました。 言語ファイルの翻訳をマニュアルに入れれば okな気がしてきました。

マウスオーバー系のUIは 最近ではタッチと相性が悪いのでおすすめじゃない感じですよね。 ダイアログの面積が稼げるところが利点でしょうか。 (Tera TermをタッチUIで使っているとするとよくわかっている人に違いない気はします)

Speed 欄のチカチカはだいぶ前からだったと思います。 調べます。

「新しい接続ダイアログ~」

以前に話した「TCP/IP, Serial の設定値」と「それぞれの New Connection ダイアログのデフォルト」をどう表すのか、という話に戻ってくるでしょうか。 https://github.com/TeraTermProject/teraterm/issues/84#issuecomment-2342353298

そうですね。 そこをどうしたものか悩ましいところです。 一応現在の実装で良さげな動作ですがどうでしょう? 説明書きがあるからかろうじてわかる状態かもしれません・・ 説明を削除してしまって大丈夫そうでしょうか?

シリアルの情報は、 Tera Termでシリアルを使うとOSが落ちる、BSoD発生、 ということがしばしばあったので、 使っているデバイスドライバが分かるようにしました。 今ぐらいの表示があるのがよいです。

シリアルタブの動作が一番重要だと思っていますが、

「どの項目をどのタブに分類するか」に加えて「どのカテゴリにどのタブを分類するか」を検討する必要があります。

ですね。

今のところ実験的機能で隠れていますが、 出してみるとツリーは使いやすいですね。 「始めから全て開いて」はその通りだと思います。できるに違いない。 「キーボード移動」はタブが切り替わると プロパティページ内にフォーカスが移動しているようです。 ツリーで「↓」などした後、「Shift+TAB」するとキーでツリー操作ができます。 (妥当? いまいちな感じはします。)

ポートのドロップダウン(COM1,COM2とか選ぶところ)で、 「↓」を押して<COM256まで表示>を選択したとたん COM256表示に切り替わってしまいます。 かなりいまいちです。 直します。

sempreff commented 1 month ago

Speed 欄の tooltip 「You can directly specify a number」がチカチカします。これは良くないです。

誤解があるといけないので補足させてください。 ツールチップがチカチカしなくなれば良いわけではありません。 このツールチップは不要だと思います。

nmaya commented 1 month ago

このツールチップは不要だと思います。

補足しますが、以前は Speed をプルダウンから選択することしかできず編集できなかったため、この「情報」は有用だと思っています。 直したのは最近だと思っていましたが14年も経っているので、もうヘルプに書いてあればいい情報かもしれませんね。

nmaya commented 1 month ago

作り込んでダメ,不採用となるとしょんぼりなので

いろいろ思いついてくだるのはいいのですが、「現状のままの移植」と「新しいアイデア」を分けてほしいです。

また、実際にコードを書いた人が偉い・新しいアイデアを説明して合意するより作った方が早いという感覚はわかるのですが、そもそも慎重に考えるために「検討しましょう」というこの issue を立てた意図(一番上では「議論するため」と書きました)が汲まれていないように感じます。

zmatsuo commented 1 month ago

慎重に考えるために「検討しましょう」というこの issue を立てた意図(一番上では「議論するため」と書きました)が汲まれていないように感じます。

いろいろ改造を入れてすいません。

比較的大工事なタブ化を先に進めて、 小工事な設定項目のタブ間の移動を後から少しづつ行えばよいと 当初は思っていました。

タブ化がもう少しで一段落しそうなので、まずはタブ化を進めますね。 (シリアルタブの変更は "COM%d" 以外の対応も合わせて後で行いましょう)

タブ化、フックなどの動作は TTXKanjiMenu がうまく動いていたので大丈夫と思っていました。

でも、TTXChangeFontSize がうまく動かない(#366) とのことで、 調べました。

TTXKanjiMenu がうまく動いていたのでは、 ts構造体の中のメンバ変数を変更するだけで Tera Term が動作を変更できたからで、 TTXChangeFontSize がうまく動かないのは、 設定ダイアログがokを押されて閉じるときの動作変更を行う処理が 現在動作しなくなっているからのようです。

とりあえず手もとではうまく動くように修正できました。 タブ表示とフックを両立させるのが難しくて、 今のところ、「端末」など従来のダイアログが出るメニュから表示する時は タブが1つのダイアログが出ることになりそうです。

zmatsuo commented 1 month ago

シリアルタブの 一緒に出していたメッセージを消して、 従来の雰囲気だとCOMポートのドロップダウンは こうなるのかなというの動作に修正しました。 b6ef2bf21d36582375a15db38c4742f70b502e57 これで検討しやすいでしょうか。

ダイアログ表示,前後処理を externalsetup.cpp,h に移動しました。

今のところ、「端末」など従来のダイアログが出るメニュから表示する時は タブが1つのダイアログが出ることになりそうです。

タブなど従来通りでフックも正しく動作しそうです。

366 の TTXChangeFontSize も okになっていると思います。

nmaya commented 1 month ago

一緒に出していたメッセージを消して、

ありがとうございます。

6e9488a6e720898d0e3a78aa8699348df6b9a4f7

以前の Tera Term は MaxComPort までのすべてのポート(存在しなくても)を列挙していましたが、いまは表示時点で存在するポートだけを列挙するようになっています。どうして元の動作に戻されたのでしょうか?設定では、表示時点で存在しないポートもデフォルトポートとして選択し保存できることが有用である、ということでしょうか? また、なぜ COM4096 が特別扱いされるのでしょうか?

zmatsuo commented 1 month ago

設定では、表示時点で存在しないポートもデフォルトポートとして選択し保存できることが有用である、ということでしょうか?

多分USB-シリアルなどで、COMポートがいなくなっても良いように、 ということではないかと思います。 新しい接続時に存在しないと "COM1" がデフォルトになります。

いつもCOM2に接続しているので、 デフォルトをCOM2にしておく という使い方なのかなと思います。

シリアルタブ_提案

COM4096 が特別扱い

com0com を使って初めて手もとでCOM4096を作成することができました。 COMポートの上限MaxComPortも意識して 動作を見てみました。 MaxComPortを256(4096未満)にするとCOM4096は見ることができませんでした。

今回のシリアルタブではMaxComPortより大きな COMポートを見ることができるようしています。

maxcomport

COMポートの最大数は256とか4096とか2^23とか OSのバージョンやドライバで様々だと思うのですが 存在しているポートだけが選択肢であって、 必要な時にMaxComPortまで出せればよさそうな感じはします。

シリアルの上限2^23は以前教えていただいた情報です [ttssh2-dev 664] https://web.archive.org/web/20150511100555/https://support.microsoft.com/en-us/kb/100111

365 の内容になってきますが、

com0com を見ていて、シリアルデバイス名は "COM%d" 以外も使えるととてもよさそうです。

シリアルデバイスと同じ動作をする、互換デバイスを作ることができて、 それは "COM%d" というルールのデバイス名ではなくてもよくて、 例えば "TERATERM" といデバイス名でもokのようです。

Tera Term では tttypes.h tttset.ComPort は WORD 型で、 (まだ追っていませんが) "COM%d" 前提となっているようです。

com0com以外に"COM%d"以外のデバイスを作れる ドライバが存在するのかはよくわからないです。 優先順位は低そうです。

nmaya commented 1 month ago

なるほど、「Additional settings - Serial タブ」はいったん「Setup - Serial ダイアログ (Port は存在するポートのみ列挙)」の移植として落ち着くはずだと思っていましたが、「旧 General - Default port (MaxComPortまで列挙)」と「Setup - Serial - Port (存在するポートのみ列挙) 」を融合したんですね。 https://github.com/TeraTermProject/teraterm/issues/358#issuecomment-2381290440https://github.com/TeraTermProject/teraterm/issues/84#issuecomment-2425282334 のコメントをご覧になっていると思ったので、「タブへの振り分け」ですらない「動作の変更」がなされているのはおかしいと思って読んでいました。

元々(4.51から)の挙動

  1. New connection ダイアログ ... 存在するポートのみ列挙
    • 新規接続する - 存在しないポートがあっても仕方ないのでこれでよい
  2. Setup - Serial ダイアログ - Port ... 存在するポートのみ列挙
    • 新規接続していたので、New connection ダイアログと同じ動作が望ましい
  3. 旧 General - Default port ... MaxComPort まで列挙
    • デフォルトポートを選ぶため
    • MacComPort まで出る理由はご説明のとおりと思うが、いかんせん長い

デフォルト選択用はどうあるべきか

zmatsuo commented 1 month ago

シリアルタブの試し実装、84-serial_tab_2 ブランチを main(1f4001ca1c69cee7fa34fd151c6dd6cc09cd54fd) から作り直しました。 このブランチも捨てようと思っています。

「旧 General - Default port (MaxComPortまで列挙)」と「Setup - Serial - Port (存在するポートのみ列挙) 」を融合したんですね。

  • TCP/IP と Serial のみへの変更
    • INI の設定値と1対1で対応していなかったが、対応するようになる
    • 従来のプルダウンは、内部で Port(serial/tcpip) と ComPort の組み合わせになっている
    • 論理的にはよい気がする--永田感想

そうなんです。 Generalタブの Default port が ts.ComPort と ts.PortType を一度に設定します。 general_pp.cpp 405 (1f4001ca1c69cee7fa34fd151c6dd6cc09cd54fd) 新しい接続ダイアログのシリアルのデフォルトポートが ts.ComPort で、Serialタブで設定したい値です。

別々のタブ(GeneralとSerialタブ)で同じ変数を変更するのは避けたいので 今回修正したUI(serial/tcpip と ComPort)が妥当かなと思います。

  • シリアルポートの選択肢
    • MaxComPort まで列挙 ... 従来の動作
    • MaxComPort まで列挙/それ以上は存在するポートのみ表示 ... 今回の提案

前回のブランチ(84-serial_tab)のシリアルポートタブを表示は、 最初は存在するポートと一番最後に"MaxComPortまで表示"があります。

"MaxComPortまで表示"を選ぶとMaxComPortまで全て列挙となります。 全て列挙したい場合も存在するポートのみ表示の場合も両方できるので 良いのではないかなと思います。 ( c16e1d2caaa9b8d74dd20479f3d4ad7dba7f8737 には "COM%d"以外も表示できるような仕込みが入っていました。表示のみです)

comport_dropdown

(最初の表示は存在するポートのみ、次に256まで、次に4096までとすれば MaxComPortもいらないのではないかと思っています) MaxComPortはどういう経緯で作られたのかがわかれば…です。

"MaxComPortまで表示"はちょっと動きがおかしいので要調整です。

  • Serial タブにあるべきか、New connection ダイアログ用をまとめるか

シリアルタブにはつぎの2つの機能があると考えています。

  1. シリアル未接続時
    • 新しい接続ダイアログからシリアル接続する時のデフォルト値(ポート、パラメータ)の設定
  2. シリアル接続時
    • 現在接続中のシリアルの設定変更を行う

2つが1つのUIに入っていてわかりにくい気がしています。

1のときは従来通りで、 2のときは、シリアルポートの選択ができないようにしています。 まだまだ分かりにくいかなと感じています。

New connection ダイアログ設定の話ついでに、 そのうち使えるようにできたらいいなと思う 接続したい先候補(プラグイン)にものはこんなものがあります。

conpty, adbは結構欲しいです。

現在の接続先はこんな感じですね。

nmaya commented 1 month ago

New connection ダイアログ設定タブの案として以前に書いたこれでは、「Default port」と「シリアル接続する時のデフォルト値」を同じタブにしています。 以下の2つが解消される案だと思っています。

TCP/IP は各種設定ができて Serial は設定できない不平等感がありますが、それは「New connection ダイアログにコントロールがあるものだけが、このタブで設定できる」で説明できます。

MaxComPortはどういう経緯で作られた

4.50 まではリストアップ時にポートの存在チェックをしていなかった(接続しないとわからない)ので、おそらく「どこまでプルダウンにリストアップするか」のためです。

最初の表示は存在するポートのみ、次に256まで、次に4096までとすれば

私は、表示する情報が変化する設定 UI はあまり好みません。

シリアルタブにはつぎの2つの機能があると考えています。 シリアル未接続時 ― 新しい接続ダイアログからシリアル接続する時のデフォルト値(ポート、パラメータ)の設定 シリアル接続時 ― 現在接続中のシリアルの設定変更を行う 2つが1つのUIに入っていてわかりにくい気がしています。

未接続時/接続時の切り分けはずっとこうで慣れているので私は大丈夫ですが、そう思われるのですね。 「シリアル未接続時」にはさらに「ここから新規接続」機能がありましたがなくなったので、シンプルになったと思います。

COM%d"以外

デフォルトとして設定できるのは数字だけなので、"COM%d" 以外を選べても保存できませんね。 これはまた別の話です。

使えるようにできたらいいなと思う接続したい先

これもまた別の話です。