2016-10-09(Sun)

LuaCalender で lua スクリプトから土曜・日曜の色付けが出来るようにする

デスクトップカレンダーを LuaCalender に乗り換えちゃう。

今まで WtCal というカレンダーを愛用していた。
日本の休日、複数月表示、ホイールスクロール、ダブルクリックで即カレント月、自由度の高いデザイン変更など、とても良く出来ている。

しかし日付変更時にフォーカスを奪われてしまう点が、深夜作業が多い私にとっては問題で、仕方なく乗り換え先を捜すことにした。

大前提として日本の休日を表示できるもの。
軽くて複数月表示、デザインや色を適当に変更できて、ホイールスクロールできればなお良し。

そんなわけで、Rainmeter スキンの LuaCalender に行き当たる。
luacalender_01.jpg

休日の対応は、[だれがだ]さんにより日本の休日設定ファイルが公開されていた。
http://daregada.blogspot.jp/2016/07/luacalendar.html
これは素晴らしすぎる。 ありがたく導入しよう。

前・次月のホイールスクロール操作は残念ながら私の環境で相当な遅延があり使用に耐え難い。
クリック操作でも同じことが可能なのでそこは妥協することにした。

Rainmeter のスキンらしく色やデザインも手を加えられる。
そ・れ・な・の・に、土曜と日曜の色変えが出来ないようだ。 これは地味に痛いぞ。

上記サイトのおかげで Lua スクリプトでイベント判定していることが判った。
それならば、土日判定も追加してみよう。

■ 土・日曜日 色変更の準備


編集するのは以下の2ファイル。
2つ目の Styles.inc は好きなスタイルのフォルダを MyStyle として複製してから編集している。

・LuaCalendar\@Resources\CScript.lua
・LuaCalendar\@Resources\Styles\MyStyle\Styles.inc



■ CScript.lua の編集

スタイルの追加

まずは LuaCalendar\@Resources\CScript.lua を編集して、独自のスタイルを追加定義する。
(追加したスタイルは後に Style.inc 内で使用可能になる)

エディタで、'WeekendStyle' 付近を検索。
それらのスタイル定義に、毎土曜日と毎日曜日の独自スタイル(赤字部分)を追加。
Styles = {
(中略)
Weekend = 'WeekendStyle',
Event = 'HolidayStyle',
-- 毎土曜日と毎日曜日の独自スタイルを追加
EverySunday = 'EverySundayStyle',
EverySaturday = 'EverySaturdayStyle',

},


土日判定の追加

続けて -- Regular MeterStyles 付近を検索。
条件を次のように改変。
-- Regular MeterStyles
-- 先頭の Current 判定部に土日を除く条件を追加
if (
(CurrentDayMeter == MeterNumber and Time.stats.inmonth) and
((MeterNumber % 7) ~= 0 and (MeterNumber % 7) ~= (Settings.StartOnMonday and 6 or 1))
) then

table.insert(Styles, Meters.Days.Styles.Current)
(中略)
-- 土曜・日曜の判定を Weekend 判定部の前に追加
elseif (MeterNumber % 7) == 0 and not EventText then
table.insert(Styles, Meters.Days.Styles.EverySaturday)
elseif (MeterNumber % 7) == (Settings.StartOnMonday and 6 or 1) and not EventText then
table.insert(Styles, Meters.Days.Styles.EverySunday)

elseif (
(MeterNumber % 7) == 0 or
(MeterNumber % 7) == (Settings.StartOnMonday and 6 or 1) and
not EventText
) then
table.insert(Styles, Meters.Days.Styles.Weekend)
end


■ Styles.inc の編集

スタイルファイルにて色定義する

LuaCalendar\@Resources\Styles\MyStyle\Styles.inc を編集。
先ほどのスクリプトで定義した EverySundayStyle と EverySaturdayStyle が使えるようになっている。
適当に [HolidayStyle] 付近で色指定する。
[HolidayStyle]
FontColor=250,0,250,160

[EverySundayStyle]
FontColor=250,0,0,160

[EverySaturdayStyle]
FontColor=0,200,250,160



■ スタイルの切り替え

LuaCalender スキンの右クリックから Option.ini スキンを開く。

左上の StyleSheet から MyStyle を選択。
(2016/10/19追記: @Resources\Styles\MyStyle\meta.txt 内で Name= に設定した名前が選択肢として現れます)
Save して Close すれば完了。
luacalender_02.png

■ おまけ

2ヶ月表示のスキン作成が面倒なので LuaCalender を丸ごと LuaCalender_NextMonth として複製し、2つ起動することにした。
LuaCalender_NextMonth の CScript.lua で function Initialize() 関数の最後に Move(1) を追加することで、初期表示月を次月にできた。
function Initialize()
(中略)
-- Start Next Month
Move(1)

end -- Initialize

luacalender_03.jpg

プロフィール

nakami

Author:nakami
可愛いテンプレートに似合う俺
うそAチームのスミス大佐

NAVI
カテゴリー
最近の記事
リンク
FC2カウンター
ブログ内検索
RSSフィード
sponsored link