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

MACRO: listboxで表示されるダイアログのダブルクリック対応他 #154

Closed
hkanou opened this issue Mar 10, 2024 · 25 comments
Closed
Labels
enhancement New feature or request

Comments

@hkanou
Copy link
Contributor

hkanou commented Mar 10, 2024

ttpmacroのlistboxで表示されるダイアログの下記の要望につきまして、サンプル実装を紹介させていただきます。

  • ダブルクリックによる項目選択に対応
  • 最小化/最大化ボタンの追加
  • アイコン画像の差し替え
  • ダイアログのサイズの拡大

パッチ https://github.com/hkanou/ttpmacro/tree/main/ttpmacro

参考にして頂ければ幸いです。

@nmaya nmaya added the enhancement New feature or request label Mar 13, 2024
@nmaya
Copy link
Member

nmaya commented Mar 19, 2024

ご提案ありがとうございます。

ダブルクリックによる項目選択に対応

よいと思います。

最小化/最大化ボタンの追加

私の環境では最小化せず、タスクバーを除いたデスクトップ範囲の左下端に「タイトルバーだけ」のような状態で表示されました。
154

→この拡張で予想される、さらなるリクエスト

  • 最大化状態でlistboxを出したい
  • 最小化状態でlistboxを出したい

アイコン画像の差し替え→listboxダイアログにアイコンをセット

このダイアログだけ?ほかのbox(messagebox, yesnobox, statusbox, inputbox, passwordbox)はどうするの?と思いました。全体として挙動が統一されていたほうがよいです。
また、"M" のアイコンかファイルのアイコンが考えられますが、私の感覚では "M" な気がします。マクロのメインウィンドウが "M" だからです。

ダイアログのサイズの拡大→ダイアログのサイズをマウス操作で広げられるようになった

最初のサイズより縮小できないようになっていて、よいと思います。

→この拡張で予想される、さらなるリクエスト

  • 寸法を指定してlistboxを出したい

ダイアログのサイズの拡大→デフォルトのダイアログのサイズの拡大

選択肢の数や長さが短く、今までどおりのサイズでコンパクトに使いたい人にとっては、これは嬉しくありません。

@hkanou
Copy link
Contributor Author

hkanou commented Mar 31, 2024

ご回答いただきありがとうございます。

最小化/最大化ボタンの追加
私の環境では最小化せず、タスクバーを除いたデスクトップ範囲の左下端に「タイトルバーだけ」のような状態で表示されました。

失礼いたしました、WS_EX_APPWINDOWを付け忘れていました。修正しました。

→この拡張で予想される、さらなるリクエスト
最大化状態でlistboxを出したい
最小化状態でlistboxを出したい

オプションで指定できるよう修正しました。

アイコン画像の差し替え→listboxダイアログにアイコンをセット
このダイアログだけ?ほかのbox(messagebox, yesnobox, statusbox, inputbox, passwordbox)はどうするの?と思いました。全体として挙動が統一されていたほうがよいです。

他のダイアログについてもアイコン画像の差し替えを行いました。

また、"M" のアイコンかファイルのアイコンが考えられますが、私の感覚では "M" な気がします。マクロのメインウィンドウが "M" だからです。

メインウィンドウのアイコン"M"に揃えました。

→この拡張で予想される、さらなるリクエスト
寸法を指定してlistboxを出したい
ダイアログのサイズの拡大→デフォルトのダイアログのサイズの拡大
選択肢の数や長さが短く、今までどおりのサイズでコンパクトに使いたい人にとっては、これは嬉しくありません。

ダイアログのサイズをパラメタで指定できるよう修正しました。

修正版の格納先は以下のとおりです。
使用方法:http://htmlpreview.github.io/?https://github.com/hkanou/ttpmacro/blob/main/ttpmacro/doc/listbox.html
パッチ、修正ソース:https://github.com/hkanou/ttpmacro/tree/main/ttpmacro
バイナリ:https://github.com/hkanou/ttpmacro/tree/main/ttpmacro/Release

@zmatsuo
Copy link
Member

zmatsuo commented May 11, 2024

もしよければ Pull Request にしていただけないでしょうか。@hkanou

いただいた改良がリポジトリに残りますし、
修正の確認(diff)などがgitを使っていると比較的簡単にできます。

まずは、setpassword、getpassword暗号化機能部分などどうでしょうか
https://github.com/hkanou/ttpmacro/tree/main/ttpmacro2

@hkanou
Copy link
Contributor Author

hkanou commented May 12, 2024

ありがとうございます。
setpassword、getpassword暗号化機能をPull Requestさせていただきました。

@nmaya
Copy link
Member

nmaya commented May 13, 2024

タイトルと異なる内容のPRなので、別のissueにしていただけるでしょうか?

@hkanou
Copy link
Contributor Author

hkanou commented May 13, 2024

考慮が足りておりませんでした、別issueで起票させて頂きます。
#213 (comment)

hkanou added a commit to hkanou/teratermproject_teraterm that referenced this issue May 26, 2024
zmatsuo added a commit that referenced this issue Jul 7, 2024
add:ttpmacro listbox オプション追加 #154
@hkanou
Copy link
Contributor Author

hkanou commented Jul 7, 2024

ソースをマージ頂きまして大変ありがとうございます。
しばらく様子を見て、特に問題が無いようでしたらクローズさせて頂こうと思います。

@nmaya
Copy link
Member

nmaya commented Jul 7, 2024

(1) マクロコマンドの引数について
今までの「追加コマンドは引数を順番に追加し、何番目の引数は固定の何かを表す」という型から外れています。
このコマンドは新規のコマンドではなく、selected までが既存の引数に、それ以降の引数が新しい形になっています。
#167 で最終結論が出ているように思いませんが、マージされたということは「新しいマクロコマンドについて、新しい引数の受け取り方がプロジェクトとして受け入れられた」「既存のマクロコマンドに新旧の引数の受け取り方が混在していても問題ない(既存の引数を変えては既存のマクロが動かないので、既存のマクロコマンドは今までの受け取り方のみにするか、途中からは許して混在を許可するかの2択)」「マクロユーザに対して、この変化を十分に説明するドキュメントになっている」と判断されたということですか?>@zmatsuo

(2) (1)が問題ないという前提で、「dclick以降の引数だけが順不同である」ということがわかるようにドキュメントを書いて頂けるでしょうか。

(3) (1)が問題ないという前提で、マクロのドキュメントで「固定文字列」と言う言葉は使いません。文字列変数でも文字列リテラルでもよい場合は「文字列」と書きます。

(4) ドキュメントに省略時の動作を書いて頂けるでしょうか。私のように全くマクロを使わないユーザだと、ドキュメントだけでは何が普通の動きなのかわかりません。

(5) "dclick" という綴りに違和感があります。VBA では OnDblClick ですし、HTMLでも dblclick イベントになっているので、"dblclick" としてはどうでしょうか?

@hkanou
Copy link
Contributor Author

hkanou commented Jul 7, 2024

混乱を招いてしまい大変申し訳ございません。

今までの「追加コマンドは引数を順番に追加し、何番目の引数は固定の何かを表す」という型から外れています。
このコマンドは新規のコマンドではなく、selected までが既存の引数に、それ以降の引数が新しい形になっています。

ご指摘のとおりです。
引数の指定方法を変更しており、マクロユーザに対して従来とは異なる旨説明が必要でした。
本提案は "既存のマクロコマンドに新旧の引数の受け取り方が混在していても問題ない(途中からは許して混在を許可する)"になります。既存のマクロへの影響が無く新オプションの指定もし易いと思っておりますが、考慮漏れ等ございましたら修正させていただきます。
(2)~(5)につきましても対応させて頂きますので、どうぞよろしくお願いいたします。

@zmatsuo
Copy link
Member

zmatsuo commented Jul 8, 2024

リリースに向けてプルリクエストを処理しなきゃと思っていました。

#167 で最終結論が出ているように思いません

そうですね。
失礼しました。

このissueについて、
各々のついて私のコメントです。

新しいマクロコマンドについて、新しい引数の受け取り方がプロジェクトとして受け入れられた

わかりやすいかなと思います。

たとえば、logopen の引き数をみると、すぐにわかりにくい感じです。

私が分かりやすい/にくいと思うことと、
プロジェクトとして受け入れられたとすることは別ですね。

私もマクロを使っていないのですが拡張をしたい内容は理解できますし、
listboxの機能拡張,引き数の追加はとてもよさそうだと思います。

引き数の仕様についてもうすこし考えたほうがよさそうでしょうか?

既存のマクロコマンドに新旧の引数の受け取り方が混在していても問題ない(既存の引数を変えては既存のマクロが動かないので、既存のマクロコマンドは今までの受け取り方のみにするか、途中からは許して混在を許可するかの2択)

手もとでテストしてみて従来との互換性があって、拡張/仕様変更も容易そうです。
私は良いとおもいました。

マクロユーザに対して、この変化を十分に説明するドキュメントになっている

私はPRのドキュメントをみて使い方がわかりました。
ソースも見ているからでしょうね。

引き数の仕様の変化は分かりにくいでしょうか。
従来の引数に対して「名前付き引き数(仮)」と名前を付けて、

listbox <message> <title> <string array> [named paraeters]

 :
named paraeters

  minimize=on

みたいな感じにすれば分かりやすいでしょうか・・。

5.3devで、このissueの拡張の前にlistboxをリサイズ可能にしています。
デフォルトはリサイズ不可で resizeable=on でリサイズ可能としたほうが
よいかな思いました。

minmaxbutton=on という書き方は、
Python(という言語です)の関数呼び出しの引数のような感じで
C(言語ですね:-)の関数の引数順序が固定しているより
自由度があってよさそうです。
scanf() でsize=<N1xN2>のサイズを取ってきているところがありますが、
今後もっと複雑なパースがあってもoniguruma使えば何とかなりそうです。
(いや width=w height=h でシンプルさを保ったほうがよいか?)

@hkanou
Copy link
Contributor Author

hkanou commented Jul 9, 2024

5.3devで、このissueの拡張の前にlistboxをリサイズ可能にしています。
デフォルトはリサイズ不可で resizeable=on でリサイズ可能としたほうが
よいかな思いました。

5.3devのダイアログのリサイズ可能対応は、私には違和感は無くresizeable=onがデフォルトで良いように感じています。(リサイズしなければ従来の挙動と変わりがないため)

scanf() でsize=のサイズを取ってきているところがありますが、
今後もっと複雑なパースがあってもoniguruma使えば何とかなりそうです。
(いや width=w height=h でシンプルさを保ったほうがよいか?)

無意識にsize=としていました。
key=value形式での直交性という意味では、width=w height=h の方が良さそうです...

@zmatsuo
Copy link
Member

zmatsuo commented Jul 10, 2024

追加いただいた機能拡張(引き数部分)は
テスト実装ということで問題が出ないかようすをみるというので
mainにマージしてリリースに含めませんか?

about/history, macro/command/listbox には
テスト実装で仕様変更があるかもしれないと分かるよう追記、
問題があったら再考しましょう。

key=value形式での直交性という意味では、width=w height=h の方が良さそうです...

使うときは横と縦をセットで指定すると思うので、
WxHのほうが便利そうに思えてきました。
サイズがダイアログ(ウィンドウがよい?)か分かるよう
dlgsize=WxH はどうでしょうか?

ウィンドウ位置(デスクトップ左上相対、ttermpro.exe(親)のセンター相対、#234 参照)
なども指定できればよさそうです。(一段落したら入れましょう)

@nmaya
Copy link
Member

nmaya commented Jul 10, 2024

引数の仕様

引き数の仕様についてもうすこし考えたほうがよさそうでしょうか?

私はPRのドキュメントをみて使い方がわかりました。
ソースも見ているからでしょうね。

私は、多くの引数を渡し、かつマクロを最小の書き方で実現するには、まあこうなるよねと理解をしています。

私が気にしているのは、ユーザには色々な人がいて、それぞれにとって理解できるかという点です。

  • 過去の仕様・新しい仕様・互換性・拡張する際の都合、といった全体が見えている人(この issue に書き込んでいる人)
  • 今までの使っていた人(今までの仕様を理解しているが、これから新しい仕様を見ることになる人)
  • これから初めて使う人

一般ユーザにはPRやソースを見て理解しろとは言いづらいので、過不足なくドキュメントを書くことが望ましいです。

ドキュメント

listbox <message> <title> <string array> [named paraeters]

サンプルのフォーマットはよさそうです。optional(指定しなくてよい)で、複数指定可能であることが分かればよいと思います。

それに加えて、マクロ言語下に「引数」のページを追加し、従来の引数と新しい引数(必要になった経緯を手短に説明)について書いてあると分かりやすいと思います。

Python(という言語です)の関数呼び出しの引数

キーワード引数と言うんですね。

このコマンドの引数

resizeable

リサイズ可能になりましたが、今までと全く同じサイズで表示されます。
個人的にはどちらがデフォルトでも構わないと思います。
「リサイズさせたくない」というニーズがあるかわかりませんが、onをデフォルトにするならresizeable=offを作ると選択が可能になります。

size, width, height, w, h

ソースは見られていませんが、これはリスト部分の高さ・幅を文字数で指定するものだと思います。
しかしドキュメントには説明がありません。

上がっているどのキーワードも、ダイアログのpx数とも捉えられます。digsizeになるともう完全にダイアログをpx数で指定するように感じます。
これがいいかどうかはともかく、htmlのtextareaだとrowsとcolsというワードが使われています。

listboxの説明に「リストボックスを開き…」とあるので、listboxコマンドが表示するダイアログを「リストボックス」であると表現しています。
キーワードがどうなるとしても、リスト部分のサイズを文字数で指定するものであることの記述がほしいです。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 11, 2024

一般ユーザにはPRやソースを見て理解しろとは言いづらいので、過不足なくドキュメントを書くことが望ましいです。

今回のようなエンハンスをスムーズに受け入れて頂くためにとても大切なことでした。
ありがとうございます。

まずは、たたき台として下記の修正のPRが出せるよう準備いたします。

引数

dclickはdblclickに修正。

listboxの使用方法

パラメタ省略時の動作を記載。
引数追加分は、optional(指定しなくてよい)、複数指定可能、順不同な旨記載。
size=WxHは、リスト部分のサイズ指定なので、listboxsize=WxHに変更。
リスト部分のサイズ指定は、高さと幅を文字数で指定する(px数ではない)旨明記。
PRの"固定文字列"は、"名前付き引き数"に修正

listbox <title> [named paraeters]

:
named paraeters

minimize=on

ドキュメント

マクロ言語下に「引数」のページを追加し、従来の引数と新しい引数(必要になった経緯を手短に説明)の違い、必要性を記載。
↑ご紹介いただいた"キーワード引数"を用いて"位置引数"との違いを説明。
5.3devのリサイズ可能対応:resizeable=offの追加はニーズが小さそうなため、後日対応。

エンハンス

ウィンドウ位置(デスクトップ左上相対、ttermpro.exe(親)のセンター相対、#234 参照)
なども指定できればよさそうです。(一段落したら入れましょう)

一段落したら対応

@zmatsuo
Copy link
Member

zmatsuo commented Jul 11, 2024

listbox .... [named paraeters]

named paraetersでも通じそうでしょうか?

pythonのkeyword argumentと、
従来のマクロのparametersを引き継いで
keyword parametersはどうでしょうか?

size=WxHは、リスト部分のサイズ指定なので、listboxsize=WxHに変更。

👍

resizeable=offの追加はニーズが小さそうなため、後日対応。

ReiseHelperInit() の第二引数をTRUEにするとサイスボックスがでます。
後日対応時に考慮できるととてもいい感じです。
エンハンスこうもくということで。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 11, 2024

listbox .... [named paraeters]

named paraetersでも通じそうでしょうか?

Web検索で多かったのは下記のようでした。

ruby	keyword parameters
python	keyword arguments
PHP	named arguments
C# 	named arguments

wikipediaの記載は下記でした。

仮引数=parameter
実引数=argument

pythonのkeyword argumentと、
従来のマクロのparametersを引き継いで
keyword parametersはどうでしょうか?

keyword、namedはどちらも通じそうです。
ruby,pythonに慣れてらっしゃる方が多そうでしたらkeywordでしょうか
(私自身はPHP,C#よりruby,pythonを目にする機会が多いです)
Tera Temのマクロの説明でparametersが使われていることと、仮引数の説明なので後半はparametersが良いです。
keyword parametersにしたいと思います。
日本語も"キーワード引数"にします。

resizeable=offの追加はニーズが小さそうなため、後日対応。
ReiseHelperInit() の第二引数をTRUEにするとサイスボックスがでます。
後日対応時に考慮できるととてもいい感じです。
エンハンスこうもくということで。

情報ありがとうございます、承知いたしました。

@nmaya
Copy link
Member

nmaya commented Jul 11, 2024

size=WxHは、リスト部分のサイズ指定なので、listboxsize=WxHに変更。

cf. https://teratermproject.github.io/manual/5/ja/macro/command/listbox.html

リストボックスを開き、ユーザーに項目を選択させる。(バージョン4.78以降)
リストボックスに表示されるメッセージ。
リストボックスのタイトル。
リストボックスの選択項目。

このように、ダイアログ全体を「リストボックス」と呼んでいます。listsize=WxH としないとダイアログ全体の感じになってしまいます。
しかし、listboxsize=WxH を採用して、ドキュメント側を調整したほうがよいかもしれません。

リストボックスを開き、ユーザーに項目を選択させる。(バージョン4.78以降)
リストボックスに表示されるメッセージ。
リストボックスのタイトル。
リストボックスのサイズ指定。
↓
リストボックスを持つダイアログボックス開き、ユーザーに項目を選択させる。(バージョン4.78以降)
ダイアログボックスに表示されるメッセージ。
ダイアログボックスのタイトル。
リストボックスの選択項目。
リストボックスのサイズ指定。

listbox <title> [named paraeters]

こんな感じでどうでしょうか?

  • オプションであることを表す []
  • 複数指定可であることをあらわす...
  • ひとつのパラメータは単数形
listbox <message> <title> <string array> [<selected>] [<keyword parameter>...]

:
keyword parameters オプション, 複数指定可

文字列 'minimize=on'
説明

文字列 'maximize=on'
説明

:

仮引数と実引数は、関数定義の引数が仮引数で呼び出す側の引数を実引数、と呼んだような気がします。

int func(int b) { // b ... 仮引数
  return b;
}

int main(void) {
  int a = 20;
  func(10); // 10 ... 実引数
  func(a); // a ... 実引数
}

@hkanou
Copy link
Contributor Author

hkanou commented Jul 13, 2024

このように、ダイアログ全体を「リストボックス」と呼んでいます。listsize=WxH としないとダイアログ全体の感じになってしまいます。
しかし、listboxsize=WxH を採用して、ドキュメント側を調整したほうがよいかもしれません。

ありがとうございます。
ドキュメント側を修正いたします。

listbox <title> [named paraeters]
こんな感じでどうでしょうか?

はい、記載頂いた形で記載いたします。

仮引数と実引数は、関数定義の引数が仮引数で呼び出す側の引数を実引数、と呼んだような気がします。

承知いたしました、keyword parameterを使わせて頂きます。

hkanou added a commit to hkanou/teratermproject_teraterm that referenced this issue Jul 13, 2024
パラメタ名見直し、ドキュメント追加(キーワード引数)等

TeraTermProject#154 (comment)
@hkanou
Copy link
Contributor Author

hkanou commented Jul 13, 2024

まずは、たたき台として下記の修正のPRが出せるよう準備いたします。

パラメタ名とドキュメント修正のPRを出させて頂きました。#253
文言の過不足等ございましたら、再修正致します。
どうぞよろしくお願いいたします。

@nmaya
Copy link
Member

nmaya commented Jul 16, 2024

ありがとうございます。よさそうですね。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 17, 2024

いつもありがとうございます。

zmatsuo added a commit that referenced this issue Jul 20, 2024
@zmatsuo
Copy link
Member

zmatsuo commented Jul 20, 2024

PR #253 マージしました。
ありがとうございます。

@zmatsuo
Copy link
Member

zmatsuo commented Jul 20, 2024

マージ(+いくつかの修正)した 4c04b9b をビルドしました。
https://ci.appveyor.com/project/teraterm/github-main/builds/50251053/artifacts

@hkanou
Copy link
Contributor Author

hkanou commented Jul 20, 2024

PR #253 マージしました。

大変ありがとうございます。
ソースを修正させて頂きたいと思ったきっかけがlistboxでしたので感慨もひとしおです。
ご尽力に感謝致します。

マージ(+いくつかの修正)した 4c04b9b をビルドしました。
https://ci.appveyor.com/project/teraterm/github-main/builds/50251053/artifacts

ありがとうございます。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 27, 2024

本issue #154 をクローズいたします。
ありがとうございました。

@hkanou hkanou closed this as completed Jul 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants