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

設定項目がなかったらデフォルト設定を使うようにしたい #1188

Closed
berryzplus opened this issue Feb 9, 2020 · 5 comments

Comments

@berryzplus
Copy link
Contributor

問題内容

設定項目がなかったらデフォルト設定を使うようにしたい

ぼんやりとした課題で申し訳ないのですが、設定項目がなかったらデフォルト設定を使うようにすることでサクラエディタの使い勝手を改善したいです。

前提知識として、サクラエディタの設定機構について概説します。

  1. サクラエディタを起動すると、バックグランドプロセスが1つ生成されます。
  2. バックグラウンドプロセスは、エディタ設定を同期させるためのもので、システム内に1つだけ作成されます。
  3. バックグラウンドプロセスは、最初にデフォルト設定を構築します。
  4. バックグラウンドプロセスは、sakura.iniの存在をチェックします。
  5. sakura.iniが存在していたら設定を読み込みます。( デフォルト設定が上書きされます。
  6. sakura.iniが存在しなかったらデフォルト設定をsakura.iniに書き出します。
  7. バックグラウンドプロセスは、プロセス終了時に設定をsakura.iniに書き出します。

読めなかった場合の挙動は、設定項目によってまちまちです。

  • デフォルト設定を破棄し、空設定で上書きするもの(ツールバーやメニューなど)
  • 特定の設定項目が読めない場合、設定を上書きしないようなガードが入っているもの(キー割り当てなど)

上書きガードが入っていない理由は不明ですが、予想される理由はこんな感じ。

  • 単なる手抜き(フリーソフトなんで、しゃあないっす! 😄)。
  • インフラクラス(CDataProfile) が読み取り失敗の検出に対応していない。
  • 設定の有効/無効判断に使うキーを決めるのがめんどかった。

とりあえず、できることから対策を進めていきたいので当面は「インフラクラス(CDataProfile) が読み取り失敗の検出に対応していない」を解決するための作業を進めていく感じです。

再現手順

問題事象のごく一部ですが、再現できる手順を1つ紹介します。

  1. GitHub Release から最新モジュール(Exe.zip)をダウンロードします。
  2. ダウンロードしたExe.zipをテキトーなフォルダに展開します。
  3. 起動しているサクラエディタを全終了させます。
  4. Exe.zipを展開してできた sakura.exe をダブルクリックで起動します。(sakura.iniが出力されます。)
  5. 起動したサクラエディタを×で閉じて終了させます。(sakura.iniが更新されます。)
  6. sakura.iniを開いて [Toolbar] セクションを削除します。
  7. Exe.zipを展開してできた sakura.exe を再度ダブルクリックで起動します。
  8. ボタンが1つもないツールバーが表示されるのを確認できると思います。(再現)

ツールバーセクションの例

[Toolbar]
bToolBarIsFlat=1
nTBB[000]=1
nTBB[001]=25
nTBB[002]=3
nTBB[003]=4
nTBB[004]=0
nTBB[005]=33
nTBB[006]=34
nTBB[007]=0
nTBB[008]=87
nTBB[009]=88
nTBB[010]=0
nTBB[011]=225
nTBB[012]=226
nTBB[013]=227
nTBB[014]=228
nTBB[015]=229
nTBB[016]=230
nTBB[017]=0
nTBB[018]=232
nTBB[019]=0
nTBB[020]=264
nTBB[021]=265
nTBB[022]=266
nTBB[023]=0
nTBB[024]=346
nToolBarButtonNum=25

再現頻度

100%

問題のカテゴリ

  • 仕様の問題

環境情報

環境に依存しない問題なので対象外

スクリーンショット

なし

@ds14050
Copy link
Contributor

ds14050 commented Feb 9, 2020

ユーザーがすべてのツールバーボタンを削除した状態とどう区別しますか?

Thunderbird というメーラーを使っていますが、縦方向に余白を作るために
空のツールバーを表示しています。

@ds14050
Copy link
Contributor

ds14050 commented Feb 9, 2020

セルフツッコミ。

nToolBarButtonNum=0 という設定が存在しないなどの不備で検知できそう。
お節介で馬鹿な道具になることを心配していますが、この件は当たらなそうでした。

@berryzplus
Copy link
Contributor Author

nToolBarButtonNum=0 という設定が存在しないなどの不備で検知できそう。

強調キーワードの上書きガードがそんな感じになっていたはずです。

「CDataProfileが読み取り失敗を検知できない」とは言っても、「設定項目がない」を検出するのは現状でも可能なので、設定項目によってはそういう上書きガードが「既にある」わけです。

全体的に対応ができれば、たとえば「メニュー設定をデフォルトに戻したい」の解決策として、メニューセクションをザクッと削るだけでデフォルトに戻せるのかな、という壮大な目論見です。

@ds14050
Copy link
Contributor

ds14050 commented Feb 10, 2020

メニューセクションをザクッと削るだけでデフォルトに戻せるのかな、という壮大な目論見です。

たぶんリセットボタンを設定ダイアログに付けた方が有用です。

それはそれとして、最近アウトラインウィンドウが見えなくなる不都合な設定値が明らかになりました。エディタを堅牢にする、正常動作する条件を拡大するための変更は応援します。

@berryzplus
Copy link
Contributor Author

モチベーションが尽きたので閉じてしまいます。 #1394

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

No branches or pull requests

2 participants