It is currently September 21st, 2021, 5:22 pm

Simple countdown timer

Help with creating, editing & fixing problems with skins
User avatar
sl23
Posts: 810
Joined: February 17th, 2011, 7:45 pm
Location: a Galaxy S7 far far away

Re: Simple countdown timer

Post by sl23 »

Can I just ask again as you probably missed it, why such a fast update rate?
User avatar
Yincognito
Rainmeter Sage
Posts: 4052
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Simple countdown timer

Post by Yincognito »

dvo wrote: July 29th, 2021, 12:24 pm most of the time it's for time to show correctly instead of skipping seconds. :welcome:
Never bothered (and will never bother) with such things. My time skin is updating at 1000 ms and doesn't skip seconds, unless, of course, the CPU is very busy. But then, when the CPU is really very busy, these kind of minor "issues" will happen even if the update rate is lower, so you end up having the same "problem". It's not like I'm watching the clock every second anyway, so if it happens once a day or so when I'm not paying attention to it, it's not such a big deal... :confused:
User avatar
Active Colors
Moderator
Posts: 845
Joined: February 16th, 2012, 3:32 am
Location: Berlin, Germany

Re: Simple countdown timer

Post by Active Colors »

Yincognito wrote: July 29th, 2021, 12:35 pm Never bothered (and will never bother) with such things. My time skin is updating at 1000 ms and doesn't skip seconds, unless, of course, the CPU is very busy. But then, when the CPU is really very busy, these kind of minor "issues" will happen even if the update rate is lower, so you end up having the same "problem". It's not like I'm watching the clock every second anyway, so if it happens once a day or so when I'm not paying attention to it, it's not such a big deal... :confused:
In theory when the Update equals 1000 the skin shouldn't skip seconds because the skin updates with the same speed as the seconds.
User avatar
jsmorley
Developer
Posts: 22288
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Simple countdown timer

Post by jsmorley »

Active Colors wrote: July 29th, 2021, 1:22 pm In theory when the Update equals 1000 the skin shouldn't skip seconds because the skin updates with the same speed as the seconds.
In theory. What Update=1000 means is that Rainmeter will "try" to update once every 1000 milliseconds. There is no absolute guarantee that it will always be able to do so, it depends a bit on what else your system and Rainmeter are busy doing at any given time.

Do NOT equate Update to seconds on a clock. It won't always work.

A skin that has Update=1000 and counts from 0 to 100 in a measure is in no way certain to be at 100 in 100 seconds on the clock. In a practical sense this isn't going to matter, unless you try to use Update to control some very exact amount of "elapsed time". Update is "more or less". For exact measurements of elapsed time, I would always use a Time measure, where if it DOES "skip" an Update, it will "catch up". I'd probably set Update=900 or Update=950 or something, to reduce any "skipped" or "jerky" seconds in the visible display of the Time measure.

It's perfectly fine to consider Update=1000 to mean "once a second". Just keep in mind it really means "pretty much once a second".
User avatar
Active Colors
Moderator
Posts: 845
Joined: February 16th, 2012, 3:32 am
Location: Berlin, Germany

Re: Simple countdown timer

Post by Active Colors »

jsmorley wrote: July 29th, 2021, 1:24 pm In theory. What Update=1000 means is that Rainmeter will "try" to update once every 1000 milliseconds. There is no absolute guarantee that it will always be able to do so, it depends a bit on what else your system and Rainmeter are busy doing at any given time.

Do NOT equate Update to seconds on a clock. It won't always work.

A skin that has Update=1000 and counts from 0 to 100 in a measure is in no way certain to be at 100 in 100 seconds on the clock. In a practical sense this isn't going to matter, unless you try to use Update to control some very exact amount of "elapsed time". Update is "more or less". For exact measurements of elapsed time, I would always use a Time measure, where if it DOES "skip" an Update, it will "catch up". I'd probably set Update=900 or Update=950 or something, to reduce any "skipped" or "jerky" seconds in the visible display of the Time measure.

It's perfectly fine to consider Update=1000 to mean "once a second". Just keep in mind it really means "pretty much once a second".
Thanks for the correction! I am myself have been wondering why there is such a case of jerky seconds. After you explained I see now.
User avatar
jsmorley
Developer
Posts: 22288
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Simple countdown timer

Post by jsmorley »

Yes. Here is an example of where I'm using Time measures to track seconds, while setting Update very low in order to eliminate any "skipping / jerky" behavior. There is a lot going on once a second on the "clock", and I don't want Rainmeter to fall behind at any point:

Code: Select all

[Rainmeter]
Update=50
DynamicWindowSize=1
AccurateText=1
OnRefreshAction=[!SetVariable CurrentHours "[MeasureHours]"][!SetVariable CurrentMinutes "[MeasureMinutes]"][!SetVariable CurrentSeconds "[MeasureSeconds]"][!UpdateMeter *][!Redraw]

[Variables]
LinesColor=0,0,0,255
NumberColor=255,255,255,255
BackColor=19,43,77,255
CurrentHoursY=2
NewHoursY=-40
CurrentMinutesY=2
NewMinutesY=-40
CurrentSecondsY=2
NewSecondsY=-40
U=[!UpdateMeasureGroup Sliders][!UpdateMeterGroup Numbers][!Redraw]

; Measures

[MeasureHours]
Measure=Time
Format=%I
OnChangeAction=[!CommandMeasure HoursSlide "Execute 1"]

[MeasureMinutes]
Measure=Time
Format=%M
OnChangeAction=[!CommandMeasure MinutesSlide "Execute 1"]

[MeasureSeconds]
Measure=Time
Format=%S
OnChangeAction=[!CommandMeasure SecondsSlide "Execute 1"]

[HoursSlide]
Measure=Plugin
Plugin=ActionTimer
Group=Sliders
IgnoreWarnings=1
ActionList1=SetThem | Wait 1 | Repeat SlideThem, 20, 21 | Wait 1| SwapThem
SetThem=[!SetVariable CurrentHoursY "2"][!SetVariable NewHoursY "-40"]#U#
SlideThem=[!SetVariable CurrentHoursY "(Clamp(#CurrentHoursY#+2,2,45))"][!SetVariable NewHoursY "(Clamp(#NewHoursY#+2,-40,2))"]#U#
SwapThem=[!SetVariable CurrentHoursY "2"][!SetVariable NewHoursY "-40][!SetVariable CurrentHours "[MeasureHours]"]#U#
UpdateDivider=-1
DynamicVariables=1

[MinutesSlide]
Measure=Plugin
Plugin=ActionTimer
Group=Sliders
IgnoreWarnings=1
ActionList1=SetThem | Wait 1 | Repeat SlideThem, 20, 21 | Wait 1| SwapThem
SetThem=[!SetVariable CurrentMinutesY "2"][!SetVariable NewMinutesY "-40"]#U#
SlideThem=[!SetVariable CurrentMinutesY "(Clamp(#CurrentMinutesY#+2,2,45))"][!SetVariable NewMinutesY "(Clamp(#NewMinutesY#+2,-40,2))"]#U#
SwapThem=[!SetVariable CurrentMinutesY "2"][!SetVariable NewMinutesY "-40][!SetVariable CurrentMinutes "[MeasureMinutes]"]#U#
UpdateDivider=-1
DynamicVariables=1

[SecondsSlide]
Measure=Plugin
Plugin=ActionTimer
Group=Sliders
IgnoreWarnings=1
ActionList1=SetThem | Wait 1 | Repeat SlideThem, 20, 21 | Wait 1| SwapThem
SetThem=[!SetVariable CurrentSecondsY "2"][!SetVariable NewSecondsY "-40"]#U#
SlideThem=[!SetVariable CurrentSecondsY "(Clamp(#CurrentSecondsY#+2,2,45))"][!SetVariable NewSecondsY "(Clamp(#NewSecondsY#+2,-40,2))"]#U#
SwapThem=[!SetVariable CurrentSecondsY "2"][!SetVariable NewSecondsY "-40][!SetVariable CurrentSeconds "[MeasureSeconds]"]#U#
UpdateDivider=-1
DynamicVariables=1

; Meters

[MeterContainer]
Meter=Shape
Shape=Rectangle 1,1,126,43 | StrokeWidth 2
UpdateDivider=-1

[MeterNewHours]
Meter=String
Group=Numbers
MeasureName=MeasureHours
W=30
H=32
X=22
Y=#NewHoursY#
StringAlign=Center
FontFace=Fira Sans
FontSize=20
FontColor=#NumberColor#
SolidColor=#BackColor#
Padding=5,5,5,5
AntiAlias=1
Container=MeterContainer
UpdateDivider=-1
DynamicVariables=1

[MeterCurrentHours]
Meter=String
Group=Numbers
W=30
H=32
X=22
Y=#CurrentHoursY#
StringAlign=Center
FontFace=Fira Sans
FontSize=20
FontColor=#NumberColor#
SolidColor=#BackColor#
Padding=5,5,5,5
AntiAlias=1
Text=#CurrentHours#
Container=MeterContainer
UpdateDivider=-1
DynamicVariables=1

[MeterNewMinutes]
Meter=String
Group=Numbers
MeasureName=MeasureMinutes
W=30
X=64
Y=#NewMinutesY#
H=32
StringAlign=Center
FontFace=Fira Sans
FontSize=20
FontColor=#NumberColor#
SolidColor=#BackColor#
Padding=5,5,5,5
AntiAlias=1
Container=MeterContainer
UpdateDivider=-1
DynamicVariables=1

[MeterCurrentMinutes]
Meter=String
Group=Numbers
MeasureName=MeasureMinutes
W=30
X=64
Y=#CurrentMinutesY#
H=32
StringAlign=Center
FontFace=Fira Sans
FontSize=20
FontColor=#NumberColor#
SolidColor=#BackColor#
Padding=5,5,5,5
AntiAlias=1
Text=#CurrentMinutes#
Container=MeterContainer
UpdateDivider=-1
DynamicVariables=1

[MeterNewSeconds]
Meter=String
Group=Numbers
MeasureName=MeasureSeconds
W=30
X=106
Y=#NewSecondsY#
H=32
StringAlign=Center
FontFace=Fira Sans
FontSize=20
FontColor=#NumberColor#
SolidColor=#BackColor#
Padding=5,5,5,5
AntiAlias=1
Container=MeterContainer
UpdateDivider=-1
DynamicVariables=1

[MeterCurrentSeconds]
Meter=String
Group=Numbers
W=30
X=106
Y=#CurrentSecondsY#
H=32
StringAlign=Center
FontFace=Fira Sans
FontSize=20
FontColor=#NumberColor#
SolidColor=#BackColor#
Padding=5,5,5,5
AntiAlias=1
Text=#CurrentSeconds#
Container=MeterContainer
UpdateDivider=-1
DynamicVariables=1

[MeterOutline]
Meter=Shape
Shape=Rectangle 1,1,126,43 | StrokeWidth 2 | Stroke Color #LinesColor# | Fill Color 0,0,0,0
Shape2=Line 43,2,43,43 | StrokeWidth 2 | Stroke Color #LinesColor#
Shape3=Line 85,2,85,43 | StrokeWidth 2 | Stroke Color #LinesColor#
UpdateDivider=-1

Animation.gif
You do not have the required permissions to view the files attached to this post.
User avatar
sl23
Posts: 810
Joined: February 17th, 2011, 7:45 pm
Location: a Galaxy S7 far far away

Re: Simple countdown timer

Post by sl23 »

Thanks for the comments. Well, I tried changing the update to 500 and it caused a delay when clicking the + or - on setting the timer. I then tried 100 and it's ok, so I may settle for that, or try a higher value later on.

Wrt the RoundBar, It does work, but not correctly. If I leave the timer set at 10mins, it works fine.
But if I reduce the time by clicking the - button the RoundBar reduces 10% for each minute, due to the default being 10mins.
If I increase the timer by clicking the + button, so it is more than the default of 10mins, the RoundBar doesn't start to decrease until it reaches that default of 10mins. For example, If I set the timer with the + button to a value of 10m10s, the RoundBar stays full until the timer reaches 10m, which it then starts to react to the timer and then decreases.

Hope that all makes sense?

I am happy with the RoundBar decreasing instead of increasing, so no need to worry about changing that, thank you for the offer though. :D
User avatar
Yincognito
Rainmeter Sage
Posts: 4052
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Simple countdown timer

Post by Yincognito »

As always, jsmorley is correct: there are times when you really want those seconds to be accurate (e.g. timers, AT driven skins, etc), and Rainmeter can't follow precisely the actual clock. For those cases, a lower update rate pays off and yields the expected result. I might have been lucky or something up until now, as I never needed to do it, since for some reason my time skin doesn't seem to miss a beat, so to speak. Either that, or it's doing it when the owner is not looking... :sly:
User avatar
balala
Rainmeter Sage
Posts: 13212
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: Simple countdown timer

Post by balala »

sl23 wrote: July 29th, 2021, 12:03 pm Can I just ask again as you probably missed it, why such a fast update rate?
Not sure why did I set it to such a low value (note that as said, the skin is almost 9 years old).
User avatar
sl23
Posts: 810
Joined: February 17th, 2011, 7:45 pm
Location: a Galaxy S7 far far away

Re: Simple countdown timer

Post by sl23 »

Made some changes, cleaned it up a little:

Code: Select all

[Rainmeter]
Author=zzeneg & balala
AppVersion=10
Update=100
BackgroundMode=2
SolidColor=0,0,0,1
DynamicWindowSize=1
;MouseOverAction=[!ShowMeterGroup Menu]
;MouseLeaveAction=[!HideMeterGroup Menu]
OnRefreshAction=[!ShowMeter Action1][!DisableMeasure mTimer4][!HideMeter Stop]
AccurateText=1

[Bg]
Meter=Shape
Shape=Rectangle Rectangle 1,1,150,60,5 | Extend StrokeSize | Stroke Color 128,255,0,100 | Fill Color 0,0,0,120
StrokeSize=StrokeWidth 0
MouseOverAction=[!SetOption #CURRENTSECTION# StrokeSize "StrokeWidth 2"][!UpdateMeter *][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# StrokeSize "StrokeWidth 0"][!UpdateMeter *][!Redraw]
StrokeAlpha=Stroke Color 128,255,0,100
DynamicVariables=1

[Variables]
Alarm=alarm.wav

DefaultInitialValue=6000
MaxVal=#DefaultInitialValue#
;DefaultInitialValue is the time (in one-tenth of seconds!) which appears when you refresh the skin. 

CloseApps=
Hibernate=rundll32.exe powrprof.dll,SetSuspendState
Shutdown=shutdown.exe -s -t 60 -f
HybridShutdown=shutdown.exe /s /hybrid /f /t 60
Restart=shutdown.exe -r -t 0
Lock=rundll32.exe user32.dll, LockWorkStation
Act=CloseApps

========================================
; STYLES
========================================
[sAllText]
FontFace=Aller
StringStyle=Bold
StringAlign=Center
FontSize=9
FontColor=255,255,255,200
AntiAlias=1

StringEffect=SHADOW
FontEffectColor=0,0,0,40

[sHighlight]
MouseOverAction=[!SetOption #CURRENTSECTION# FontColor "128,255,0"] [!UpdateMeter #CURRENTSECTION#] [!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# FontColor ""] [!UpdateMeter #CURRENTSECTION#] [!Redraw]

========================================
; MEASURES
========================================
[mTime]
Measure=Time

[mCounterTimer]
Measure=Calc
Formula=(( mCounterTimer = 0 ) ? ( mTime - mTimer / 10 ) : mCounterTimer )
Disabled=1

[mTimer]
Measure=Calc
Formula=(( mCounterTimer = 0 ) ? mTimer : ( mTime - mCounterTimer ) * 10 )

[mSp]
Measure=Calc
Formula=(( mSp + 1 ) % 2 )
Disabled=1
IfAboveValue=0
IfAboveAction=[!DisableMeasure mSp]

[mSm]
Measure=Calc
Formula=(( mSm + 1 ) % 2 )
Disabled=1
IfAboveValue=0
IfAboveAction=[!DisableMeasure mSm]

[mMp]
Measure=Calc
Formula=(( mMp + 1 ) % 2 )
Disabled=1
IfAboveValue=0
IfAboveAction=[!DisableMeasure mMp]

[mMm]
Measure=Calc
Formula=(( mMm + 1 ) % 2 )
Disabled=1
IfAboveValue=0
IfAboveAction=[!DisableMeasure mMm]

[mHp]
Measure=Calc
Formula=(( mHp + 1 ) % 2 )
Disabled=1
IfAboveValue=0
IfAboveAction=[!DisableMeasure mHp]

[mHm]
Measure=Calc
Formula=(( mHm + 1 ) % 2 )
Disabled=1
IfAboveValue=0
IfAboveAction=[!DisableMeasure mHm]

[mTimerSet]
Measure=Calc
Formula=((( mTimerSet + 10 * mSp - 10 * mSm + 600 * mMp - 600 * mMm + 36000 * mHp - 36000 * mHm + #DefaultInitialValue# ) < 0 ) ? ( #DefaultInitialValue# * ( -1 )) : ( mTimerSet + 10 * mSp - 10 * mSm + 600 * mMp - 600 * mMm + 36000 * mHp - 36000 * mHm ))

[mTimer2]
Measure=Calc
Format=%S
Formula=( #DefaultInitialValue# - mTimer + mTimerSet )
IfBelowValue=1
IfBelowAction=[!DisableMeasure mCounterTimer]
MinValue=0
MaxValue=#MaxVal#
DynamicVariables=1

[mTimer3]
Measure=Calc
Formula=(( mCounterTimer = 0 ) ? 1 : ( mTimer2 - 1 ))
IfBelowValue=0
IfBelowAction=[!DisableMeasure mCounterTimer]["#CURRENTPATH#nircmd.exe" #Act#][!HideMeter Stop][!HideMeter Start][!ShowMeter Reset]
DynamicVariables=1

[mTimer4]
Measure=Calc
Formula=(( mCounterTimer = 0 ) ? 1 : ( mTimer2 - 1 ))
IfBelowValue=0
IfBelowAction=[PLAY #Alarm#][!HideMeter Stop][!HideMeter Start][!ShowMeter Reset]
DynamicVariables=1

[mTimerHours]
Measure=Calc
Formula=(( FLOOR ( mTimer2 / 36000 )) % 100 )
RegExpSubstitute=1
Substitute="^(.*)$":"0\1","^.*(.{2})$":"\1"

[mTimerMinutes]
Measure=Calc
Formula=(( FLOOR ( mTimer2 / 600 )) % 60 )
RegExpSubstitute=1
Substitute="^(.*)$":"0\1","^.*(.{2})$":"\1"

[mTimerSeconds]
Measure=Calc
Formula=(( FLOOR ( mTimer2 / 10 )) % 60 )
RegExpSubstitute=1
Substitute="^(.*)$":"0\1","^.*(.{2})$":"\1"

========================================
; METERS
========================================
[TimerDisplay]
Meter=String
MeterStyle=sAllText
MeasureName=mTimerHours
MeasureName2=mTimerMinutes
MeasureName3=mTimerSeconds
FontSize=16
Text=%1:%2 %3
InlineSetting=Size | 10
InlinePattern=.+( .+)
X=60
Y=20
H=24

========================================
; Actions
========================================
[sAction]
StringAlign=Left
FontColor=255,255,255,200
Hidden=1
X=r
Y=r

[Action1]
Meter=String
MeterStyle=sAllText | sHighlight | sAction
Text=Close Apps
X=10
Y=6

[Action2]
Meter=String
MeterStyle=sAllText | sHighlight | sAction
Text=Hibernate

[Action3]
Meter=String
MeterStyle=sAllText | sHighlight | sAction
Text=Shutdown

[Action4]
Meter=String
MeterStyle=sAllText | sHighlight | sAction
Text=Hybrid S/d

[Action5]
Meter=String
MeterStyle=sAllText | sHighlight | sAction
Text=Restart

[Action6]
Meter=String
MeterStyle=sAllText | sHighlight | sAction
Text=Lock

========================================
; Controls
========================================
[sControls]
Group=Controls
Y=45

[Start]
Meter=String
MeterStyle=sAllText | sHighlight | sControls
Text=Start
LeftMouseDownAction=[!EnableMeasure mCounterTimer][!HideMeter Start][!ShowMeter Stop][!HideMeter Reset][!SetOption TimerDisplay FontColor "255,255,0"]
X=25

[Stop]
Meter=String
MeterStyle=sAllText | sHighlight | sControls
Text=Stop
LeftMouseDownAction=[!DisableMeasure mCounterTimer][!HideMeter Stop][!ShowMeter Start][!ShowMeter Reset][!SetOption TimerDisplay FontColor ""]
Hidden=1
X=25

[Reset]
Meter=String
MeterStyle=sAllText | sHighlight | sControls
Text=Reset
LeftMouseDownAction=[!DisableMeasure mTimer]
LeftMouseUpAction=[!EnableMeasure mTimer][!ShowMeter Start]
Hidden=1
X=71

[Set]
Meter=String
MeterStyle=sAllText | sHighlight | sControls
Text=Set
LeftMouseupAction=[!HideMeterGroup Controls][!ShowMeterGroup SetTimer]   [!SetOption Action1 LeftMouseDownAction """ [!ShowMeter Action2][!HideMeter Action1][!SetVariable Act "CloseApps"][!EnableMeasure mTimer3][!DisableMeasure mTimer4]"""]  [!SetOption Action2 LeftMouseDownAction """ [!ShowMeter Action3][!HideMeter Action2][!SetVariable Act "Shutdown"][!EnableMeasure mTimer3][!DisableMeasure mTimer4]"""]  [!SetOption Action3 LeftMouseDownAction """ [!ShowMeter Action4][!HideMeter Action3][!SetVariable Act "HybridShutdown"][!EnableMeasure mTimer3][!DisableMeasure mTimer4]"""]  [!SetOption Action4 LeftMouseDownAction """ [!ShowMeter Action5][!HideMeter Action4][!SetVariable Act "Restart"][!EnableMeasure mTimer3][!DisableMeasure mTimer4]"""]  [!SetOption Action5 LeftMouseDownAction """ [!ShowMeter Action6][!HideMeter Action5][!SetVariable Act "Lock"][!DisableMeasure mTimer3][!EnableMeasure mTimer4]"""]  [!SetOption Action6 LeftMouseDownAction """ [!ShowMeter Action1][!HideMeter Action6][!EnableMeasure mTimer3][!DisableMeasure mTimer4]"""][!DisableMeasure mCounterTimer]
X=118

========================================
; Setting
========================================
[sSetting]
Hidden=1
Group=SetTimer
Y=45

[HrSetUp]
Meter=String
MeterStyle=sAllText | sHighlight | sSetting
Text=+
LeftMouseDownAction=[!EnableMeasure mHp]
X=25

[HrSetDown]
Meter=String
MeterStyle=sAllText | sHighlight | sSetting
Text=-
LeftMouseDownAction=[!EnableMeasure mHm]
X=35

[MinSetUp]
Meter=String
MeterStyle=sAllText | sHighlight | sSetting
Text=+
LeftMouseDownAction=[!EnableMeasure mMp]
X=55

[MinSetDown]
Meter=String
MeterStyle=sAllText | sHighlight | sSetting
Text=-
LeftMouseDownAction=[!EnableMeasure mMm]
X=65

[SecSetUp]
Meter=String
MeterStyle=sAllText | sHighlight | sSetting
Text=+
LeftMouseDownAction=[!EnableMeasure mSp]
X=85

[SecSetDown]
Meter=String
MeterStyle=sAllText | sHighlight | sSetting
Text=-
LeftMouseDownAction=[!EnableMeasure mSm]
X=95

[OK]
Meter=String
MeterStyle=sAllText | sHighlight | sSetting
Text=OK
LeftMouseupAction=[!HideMeterGroup SetTimer][!ShowMeterGroup Controls]   [!ShowMeter Reset][!ShowMeter Start][!SetOption Action1 LeftMouseDownAction ""][!SetOption Action2 LeftMouseDownAction ""][!SetOption Action3 LeftMouseDownAction ""][!SetOption Action4 LeftMouseDownAction ""][!SetOption Action5 LeftMouseDownAction ""][!SetOption Action6 LeftMouseDownAction ""][!ShowMeter Start][!ShowMeter Reset][!HideMeter Stop]
X=118

========================================
; Round Bar
========================================
[sRoundBar]
LineStart=12
LineLength=16
StartAngle=(Rad(270))
RotationAngle=6.2831853
Antialias=1
Solid=1
X=130
Y=20

[RoundBarBack]
Meter=RoundLine
MeterStyle=sRoundBar
LineColor=255,85,85

[RoundBarFore]
Meter=RoundLine
MeasureName=mTimer2
MeterStyle=sRoundBar
LineColor=128,255,0

========================================
; Menu
========================================
;[Menu]
;Meter=IMAGE
;ImageName=;MenuXR.png
;Hidden=1
;Group=Menu
;X=127
;Y=0
;
;[Close]
;Meter=Shape
;Shape=Rectangle 127,0,20,20,15 | FillColor 200,100,100 | StrokeWidth 2 | Extend StrokeAlpha
;StrokeAlpha=Stroke Color 128,255,0,100
;LeftMouseupAction=!DeactivateConfig
;MouseOverAction=[!SetOption #CURRENTSECTION# StrokeAlpha "Stroke Color 0,255,255,255"] [!UpdateMeter *][!Redraw]
;MouseLeaveAction=[!SetOption #CURRENTSECTION# StrokeAlpha "Stroke Color 128,255,0,100"] [!UpdateMeter *] [!Redraw] 
;DynamicVariables=1
;Hidden=1
;Group=Menu
;
;[More]
;Meter=Shape
;Shape=Rectangle 127,21,20,20,15 | FillColor 100,100,200 | StrokeWidth 2 | Extend StrokeAlpha
;StrokeAlpha=Stroke Color 128,255,0,100
;LeftMouseupAction=!ActivateConfig "#CURRENTCONFIG#" "Stopwatch.ini"
;MouseOverAction=[!SetOption #CURRENTSECTION# StrokeAlpha "Stroke Color 0,255,255,255"] [!UpdateMeter *][!Redraw]
;MouseLeaveAction=[!SetOption #CURRENTSECTION# StrokeAlpha "Stroke Color 128,255,0,100"] [!UpdateMeter *] [!Redraw] 
;DynamicVariables=1
;Hidden=1
;Group=Menu