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

台本欄のテキスト欄で単語等を範囲選択しながら右クリックメニューで、辞書登録できるようにする #2139

Open
Hiroshiba opened this issue Jun 27, 2024 · 5 comments

Comments

@Hiroshiba
Copy link
Member

Hiroshiba commented Jun 27, 2024

内容

台本欄のテキスト欄で、右クリックしたら辞書登録できる機能を実装したいです。

以前、台本欄のテキスト欄での右クリックメニューが実装されて、独自の機能を追加できるようになりました。
image
どこを選択しているかまでできているので、あとはそこから辞書登録 UI につなげれば行けそう?

Pros 良くなる点

簡単に辞書登録できるようになる

実現方法

やり方は2つあると思います。

1つめは既存の辞書登録ダイアログに遷移する方法です。
今の辞書登録ダイアログは開いた時に単語登録ではなく単語リスト画面になるので、最初から単語登録画面に遷移できるように作る必要がありそう。
ただ UX を考えると 画面遷移しない方が便利そうなので、可能ならこの方法は避けたいです。

2つ目は辞書登録用のちっちゃいUI を用意して、画面遷移することなくそのモーダルを表示する方法です。
こっちも実装はダイアログ(QDialog)になるかもですが、大きな画面遷移を挟まないので便利なはず。
見た目的には「書き出しファイル名パターンダイアログ」FileNamePatternDialog.vueのイメージです。

image

多分実装もFileNamePatternDialog辺りを追っていくとわかる・・・はず?

VOICEVOXのバージョン

0.19.2

その他

結構需要の多い機能なので優先度:中ラベルをつけてみました。

パターン2の方法で行く場合、デザインをどんな感じにするかを先に合わせておくとスムーズかもです。

@jdkfx
Copy link
Contributor

jdkfx commented Dec 8, 2024

こちらちょっと興味があったので、簡単にスクショを合成してUIを組み立ててみました。
こんな感じで、単語と読みだけでなく、アクセントも追加できるといいかなと思いました。
辞書登録ダイアログ仮デザイン

@Hiroshiba
Copy link
Member Author

Hiroshiba commented Dec 15, 2024

@jdkfx コメントありがとうございます!
確かにアクセントも登録できたほうがずっと良さそうですね!!!

見た目もその形が良さそうに思いました!!
実装が難しそうであればお試し再生はなくてもギリギリいいかも・・・?(もちろんあった方が良さそう!!)

辞書ダイアログとUI の共通化ができたら嬉しいけど、これぐらいだったらギリギリ共通化しなくてもいいかも・・・?(もちろん共通化できるとより嬉しそう!)

@jdkfx
Copy link
Contributor

jdkfx commented Dec 15, 2024

辞書ダイアログとUI の共通化ができたら嬉しいけど、これぐらいだったらギリギリ共通化しなくてもいいかも・・・?(もちろん共通化できるとより嬉しそう!)

共通化できるように処理部分だけ切り出すといいんですかね?
Dictionary.tsとか作って、登録ダイアログと辞書ダイアログ共通の処理をこちらに移動するみたいな感じを想定しています。

(辞書ダイアログのリファクタリングでやってた #2290 の大量のprovide/injectもいい感じにできそう?)

@Hiroshiba
Copy link
Member Author

@jdkfx すみません、風邪で長らく返信できてませんでした!!
最近たくさんコミット(git commitだけでなくissueコメントも含みます!)いただけてて嬉しいです!!

共通化は可能だと思いますが、踏破にはとんでもない時間がかかり、僕側の時間の捻出が難しいかもです🙇
というのもだいぶ処理がややこしいのにテストが少なく、処理が正しく行われていることがわかるようなコードが求められてしまうのが原因かなと。

ということで、まずは辞書ダイアログのテストを充実させるのはどうでしょう?
複数のe2eテストで操作一つ一つが全部網羅されてる感じをイメージしてます。
単語の編集を開始して変更して保存したら辞書に登録されている、登録済みの単語を変更しようとした後リセットするとちゃんとリセットできる、変更をキャンセルすると、ちゃんとキャンセルできてる等々…!
(最初にテストを実装するのが実は正当派です)

こちらなら最初コツを掴むまでは時間かかるかもですが、それ以降はサクサク進めれて、あとの追加実装も自信を持って進めやすいかなと!
もしよければ挑戦してみていただければ!!

@jdkfx
Copy link
Contributor

jdkfx commented Dec 22, 2024

ということで、まずは辞書ダイアログのテストを充実させるのはどうでしょう?

そうですね!今後のためにもそちらからやっていこうと思います!

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

No branches or pull requests

2 participants