-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathplugin.tcl
More file actions
112 lines (96 loc) · 4.71 KB
/
Copy pathplugin.tcl
File metadata and controls
112 lines (96 loc) · 4.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
set plugin_name "de1_water_tracker_plugin"
namespace eval ::plugins::${plugin_name} {
variable plugin_name "de1_water_tracker_plugin"
variable author "Sy_Butter"
variable contact "Github"
variable version 0.1
variable description "Track total water usage to help schedule filter changes."
variable name "Water Usage Tracker"
variable settings
proc build_ui {} {
variable settings
set page_name "plugin_water_tracker_page_default"
add_de1_page "$page_name" "settings_message.png" "default"
add_de1_text $page_name 1280 1310 -text [translate "Done"] -font Helv_10_bold -fill "#fAfBff" -anchor "center"
add_de1_button $page_name {say [translate {Done}] $::settings(sound_button_in); page_to_show_when_off extensions} 980 1210 1580 1410 ""
add_de1_text $page_name 1280 300 -text [translate "Water Tracker"] -font Helv_20_bold -width 1200 -fill "#444444" -anchor "center" -justify "center"
add_de1_variable $page_name 1280 600 -font global_font -width 800 -fill "#444444" -anchor "center" -textvariable {$::plugins::de1_water_tracker_plugin::settings(display)}
dui add entry $page_name 1280 760 -tags filter_date -width 12 -font Helv_10 \
-borderwidth 1 -bg #fbfaff -foreground #4e85f4 -relief flat \
-highlightthickness 1 -highlightcolor #000000 \
-textvariable ::plugins::de1_water_tracker_plugin::settings(filter_change_date) \
-label [translate "Filter Last Changed Date"] -label_pos {1280 700} \
-label_font Helv_10_bold -label_width 1200 -label_fill "#444444" -label_anchor center
dui add dcheckbox $page_name 1280 860 -tags use_gallons -textvariable ::plugins::de1_water_tracker_plugin::settings(use_gallons) -fill "#444444" \
-label [translate "Display in gallons"] -label_font Helv_10_bold -label_fill #4e85f4 -command ::plugins::de1_water_tracker_plugin::toggle_units
add_de1_text $page_name 1280 1000 -text [translate "Reset Counter"] -font Helv_10_bold -fill "#4e85f4" -anchor "center"
add_de1_button $page_name ::plugins::de1_water_tracker_plugin::reset_counter 980 970 1580 1070 ""
return $page_name
}
proc update_display {} {
variable settings
set date_text $settings(filter_change_date)
if {$date_text eq ""} {
set date_text [translate "Unknown"]
}
if {[info exists settings(use_gallons)] && $settings(use_gallons)} {
set value [expr {$settings(total_volume) / 3785.41}]
set units "gal"
} else {
set value [expr {$settings(total_volume) / 1000.0}]
set units "L"
}
set settings(filter_change_date) [string trim $settings(filter_change_date)]
set settings(display) [format [translate "Total water used: %.2f %s\nFilter last changed: %s"] $value $units $date_text]
}
proc reset_counter {} {
variable settings
set settings(total_volume) 0
set settings(filter_change_date) [clock format [clock seconds] -format "%Y-%m-%d"]
save_plugin_settings $::plugins::de1_water_tracker_plugin::plugin_name
update_display
popup [translate "Counter reset"]
}
proc toggle_units {} {
save_plugin_settings $::plugins::de1_water_tracker_plugin::plugin_name
update_display
}
proc on_state_change {event_dict} {
variable settings
set this_state [dict get $event_dict this_state]
set prev_state [dict get $event_dict previous_state]
if { $this_state eq "Idle" } {
switch -exact -- $prev_state {
Espresso -
HotWater -
HotWaterRinse -
SteamRinse -
Steam -
Refill -
Clean -
Descale -
AirPurge {
set settings(total_volume) [expr {$settings(total_volume) + $::de1(volume)}]
save_plugin_settings $::plugins::de1_water_tracker_plugin::plugin_name
update_display
}
}
}
}
proc main {} {
variable settings
if {[array size settings] == 0} {
array set settings { total_volume 0 filter_change_date "" use_gallons 0 }
} else {
if {![info exists settings(filter_change_date)]} {
set settings(filter_change_date) ""
}
if {![info exists settings(use_gallons)]} {
set settings(use_gallons) 0
}
}
update_display
::de1::event::listener::on_major_state_change_add ::plugins::de1_water_tracker_plugin::on_state_change
plugins gui de1_water_tracker_plugin [build_ui]
}
}