「テーマの自動変更」の版間の差分

Pizz (トーク | 投稿記録)
 
(2人の利用者による、間の6版が非表示)
4行目: 4行目:
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。
Meryのオプションで、「アプリのテーマ」を「システム設定を使用する」とすると、Windowsに合わせてMeryのテーマが変更されるようになりますが、エディタ部のテーマはこれとは別に設定変更する必要があります。


PowerToysのLight Switchや、Auto Dark Modeなどを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。
[https://apps.microsoft.com/detail/xp89dcgq3k6vld?hl=ja-JP&gl=JP Microsoft PowerToys]の Light Switch や、[https://apps.microsoft.com/detail/xp8jk4hzbvf435?hl=ja-JP&gl=JP Auto Dark Mode]などを使用すると、Windowsのテーマを時間で自動変更するなどができますが、Mery本体はこれに追随するのに、エディタ部のテーマだけ置き去りになって、なんか悲しかったので作りました。


* Meryのオプション->「基本」->「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。
* Meryのオプション->「基本」->「アプリのテーマ」で、「システム設定を使用する」としている場合のみ動作するようにしてあります。
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します
* ライトモード/ダークモード用のテーマを用意しておき、マクロ先頭でテーマ名を指定します
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)
:(Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)
* マクロのカスタマイズ画面のリストに登録したら、イベントを有効にします
:イベントはお好みで...(「フォーカスを受け取った時」「フォーカスを失った時」くらいが妥当だと思います)


テーマを書き換えるアイディアは、ucky様の「[https://www.haijin-boys.com/wiki/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%83%88%E3%82%B0%E3%83%AB テーマのトグル]」マクロからいただきましたが、表示設定項目が増えた場合などのメンテナンスが面倒だったので、別途対応を行っています。
テーマを書き換えるアイディアは、ucky様の「[[テーマのトグル]]」マクロからいただきました。
すてきなアイディアありがとうございます。


== 変更履歴 ==
== 変更履歴 ==
22行目: 25行目:
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します
// ライトモード/ダークモード用のテーマを用意しておき、ここでテーマ名を指定します
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)
// (Mery標準のテーマは使えません、「名前を付けて保存」したテーマを使用します)
var lightModeTheme = "#Custom-Light"
var lightModeTheme = "#Custom-Light";
var darkModeTheme = "#Custom-Dark";
var darkModeTheme = "#Custom-Dark";


76行目: 79行目:
// Mery.ini を探す
// Mery.ini を探す
var iniPath = editor.FullName.replace(/\.exe$/i, ".ini");
var iniPath = editor.FullName.replace(/\.exe$/i, ".ini");
if (! (new ActiveXObject("Scripting.FileSystemObject")).FileExists(iniPath)){
if(! (new ActiveXObject("Scripting.FileSystemObject")).FileExists(iniPath)){
var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];
var iniName = /\\([^\\]+)\.exe$/.exec(editor.FullName)[1];
iniPath = (new ActiveXObject( "WScript.Shell" )).SpecialFolders("APPDATA") + "\\Mery\\" + iniName + ".ini";
iniPath = (new ActiveXObject("WScript.Shell")).SpecialFolders("APPDATA") + "\\Mery\\" + iniName + ".ini";
}
}
// Mery.ini を読みこむ
// Mery.ini を読みこむ
89行目: 92行目:
adodb.Close();
adodb.Close();


var start = iniText.search(new RegExp( "^\\[" + sectionName.replace(/\W/g, "\\$&") + "\\]$", "m" ));
var start = iniText.search(new RegExp("^\\[" + sectionName.replace(/\W/g, "\\$&") + "\\]$", "m"));
if(start >= 0){
if(start >= 0){
start = start + sectionName.length + 4;
start = start + sectionName.length + 4;
スポンサーリンク