It is currently April 26th, 2024, 4:40 pm

Simple countdown timer

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

Re: Simple countdown timer

Post by sl23 »

Sorry, it's not perfect but hopefully this version is an improvement?
Once you press "Play" the "Pause" button shows. Once the mouse leaves and goes over the skin again, all buttons show. I don't like it, but Personally I don't want all the buttons showing all the time.
Press "Pause" or "Reset" to stop the alarm. Sorry, I thought that would be obvious? :oops:

It's a shame that IfConditions can't be used on a meter as that would easily solve the problem.

Well, for what it's worth here's the latest...
ClockTimer_2021.8.4.rmskin
I've added the skin I use as a "Screensaver" when running emulators, n case anyone likes the idea. If not just delete it.
You do not have the required permissions to view the files attached to this post.
- MuLab -
User avatar
Yincognito
Rainmeter Sage
Posts: 7171
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Simple countdown timer

Post by Yincognito »

sl23 wrote: August 4th, 2021, 9:57 am Sorry, it's not perfect but hopefully this version is an improvement?
Once you press "Play" the "Pause" button shows. Once the mouse leaves and goes over the skin again, all buttons show. I don't like it, but Personally I don't want all the buttons showing all the time.
Press "Pause" or "Reset" to stop the alarm. Sorry, I thought that would be obvious? :oops:

It's a shame that IfConditions can't be used on a meter as that would easily solve the problem.

Well, for what it's worth here's the latest...
ClockTimer_2021.8.4.rmskin

I've added the skin I use as a "Screensaver" when running emulators, n case anyone likes the idea. If not just delete it.
I guess the previous replies were made from a regular user POV, where he might be confused about the hide/show patterns in the skin - this is something to consider when releasing a skin. Other than that, nobody forces you to do something you don't like, it's your skin and you design it as you see fit. I like it one way, death.crafter likes it another way, you like it yet another way, but in the end the author has the last word. If it's functional and does what it's supposed to do, the rest are just opinions.

Regarding whether it's an improvement or not:
- the play button is not hidden when starting the timer, mouse leaving the play button or skin, then mouse over it again:
Timer.jpg
- regarding the hide / show patterns, I think my biggest problem is that I don't know when is the alarm set at and what time is the timer set on; they don't have to be shown at all times, but to show them - even if it's in a "faded" color - when hovering the related buttons (i.e. not just on pressing play or right clicking on the circle at the left) would be nice, otherwise from my POV is like walking blindfolded; anyway, like I said, you don't have to do it like that, it's just my opinion, putting myself in the shoes of a random user who wants to use your skin
- also, the timer text is a bit off the left circle and rounded rectangle on the right's bottom edges; the symmetrical individual in me would like either the center part a bit more upwards so that it expands equally up and down compared to the left and right parts, or, alternatively, making the left and right parts slightly bigger in order to match the center part

Other than that, you fixed the timer being temporarily 0 on reset, so that part is alright, IMHO. ;-)
You do not have the required permissions to view the files attached to this post.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
sl23
Posts: 1140
Joined: February 17th, 2011, 7:45 pm
Location: a Galaxy S7 far far away

Re: Simple countdown timer

Post by sl23 »

Thanks for the feedback from both of you. I didn't mean to sound negative about death.crafters issue, he has a good point wrt stopping the alarm. I just assumed it was obvious, like clicking on play, you just know that symbol means play, so I thought reset is an obvious choice to stop it as it resets the timer?

When it comes to hiding meters, it gets very complex to the point my brain can't cope lol

I wanted only the buttons showing necessary depending on the circumstance. You don't need to see the reset button when you've just reset it, you don't need to see the set button once the timer has been started. I was trying to achieve all that and more but it's so difficult when you're restricted by the code. Unless you know formulas it's a nightmare trying to show and hide meters depending on whether left clicking or mouse over actions are used.

To illustrate how these conflict I have a similar skin for media player, which has an icon in the circle. When the player is active, the icon is hidden. When inactive, it is shown. But it's also hidden on mouse over in order to change the system volume that appears in its place, this volume % meter then hides to show the icon if the media player is closed, if not it hides the icon.

So I had to use show/hide icon for mouse over, and when the media player is active, I had to use set option bang on the font colour so although mouse leave would show the icon, it was completely transparent. Does that all make sense?

If there were something like ifconditions for meters, things like this would be so much easier. I've had this same issue for years with most of my skins. But I either find ways around it or have to change how it works.

The left timer is an alarm clock. Right click is to activate it and enables setting of it via scrolling. Left click stops and deactivates the alarm. If it's not active, why do you need to see it?

Similar approach with the timer, although it has more buttons. But I suppose I could make them much more similar in that respect. Sounds like a good idea.

I was thinking of making the circles a lot bigger to incorporate the whole skin as it looks a bit rubbish atm! :oops:
- MuLab -
User avatar
death.crafter
Rainmeter Sage
Posts: 1399
Joined: April 24th, 2021, 8:13 pm

Re: Simple countdown timer

Post by death.crafter »

I would like it like this:

Code: Select all

[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1
OnRefreshAction=[!PauseMeasureGroup Timer]

[Variables]
; The time at which the timer / stopwatch is set or reset, in seconds (>0 for a timer, 0 for a stopwatch)
DefaultSeconds=10
DefaultMinutes=0
DefaultHours=0

AlarmBool=1
AlarmHours=2
AlarmMinutes=53

;Action
TimerAction=Play_sound

;CustomActions
Play_sound=[Play "#@#Calligraphy.wav"]

; Background's stroke colors (0 = mouse leave color, 1 = mouse hover color)
StrokeColor0=255,255,255,60
StrokeColor1=0,255,255,255
StrokeColorIndex=0

TextHighlightColor=0,240,20

HourColour=255,100,100,255
MinuteColour=255,170,0,255
SecondColour=128,255,0,255
TimerColor=100,100,200

; Seconds left to pass (for a timer), or seconds passed (for a stopwatch)
Seconds=([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)

; The amount of seconds by which the timer / stopwatch changes (<0 for a timer, >0 for a stopwatch)
Direction=-1

; Temporarily set to 1 when the timer / stopwatch is reset so the OnChangeAction below doesn't alter the Seconds above
Reset=0

Color1=255,255,255,200
Color2=128,255,0
Color3=255,255,0

;Do not touch
ResetAct=[!SetVariable Seconds "([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)"][!SetVariable Reset 1][!UnpauseMeasureGroup Timer][!UpdateMeasureGroup Timer][!PauseMeasureGroup Timer][!SetVariable Reset 0]
WriteAll=[!WriteKeyValue Variables DefaultHours "[#*DefaultHours*]"][!WriteKeyValue Variables DefaultMinutes "[#*DefaultMinutes*]"][!WriteKeyValue Variables DefaultSeconds "[#*DefaultSeconds*]"][!WriteKeyValue Variables AlarmHours "[#*AlarmHours*]"][!WriteKeyValue Variables AlarmMinutes "[#*AlarmMinutes*]"]

[Shapes]
Meter=Shape
X=0
;Outer circle
Shape=Ellipse 31,31,30,30 | Fill Color 0,0,0,80 | StrokeWidth 2 | Stroke Color [#StrokeColor[#StrokeColorIndex]]
;Inner circle
Shape2=Ellipse 31,31,20,20 | Fill Color 0,0,0,60 | StrokeWidth 2 | Stroke Color [#StrokeColor[#StrokeColorIndex]]
;Line
Shape3=Line 62,31,193,31 | StrokeWidth 2 | Stroke Color [#StrokeColor0]
;Buttons box
Shape4=Rectangle 193,1,28,60,14 | Fill Color 0,0,0,130 | StrokeWidth 2 | Stroke Color [#StrokeColor0]


;-------------------------------------
;MeterStyles
;-------------------------------------
[Icons]
FontFace=Segoe MDL2 Assets
FontSize=9
FontWeight=500
FontColor=255,255,255
StringAlign=CenterCenter
AntiAlias=1

;-------------------------------------
;Time
;-------------------------------------
[Time.Hour]
Measure=Time
Format=%I

[Time.Minute]
Measure=Time
Format=%M

[Time.Second]
Measure=Time
Format=%S

[Time.Date]
Measure=Time
Format=%a, %#d %b

[Alarm.Main]
Measure=Time
Format=%#H:%#M
IfMatch=#AlarmHours#:#AlarmMinutes#
IfMatchAction=[Play "#@#Alarm.wav"]
Disabled=(1-#AlarmBool#)
DynamicVariables=1

[Time.Analog]
Meter=Shape
;Hour line
Shape=Line (31+21*cos(rad(-90+[Time.Hour]*360/12))),(31+21*sin(rad(-90+[Time.Hour]*360/12))),(31+29*cos(rad(-90+[Time.Hour]*360/12))),(31+29*sin(rad(-90+[Time.Hour]*360/12))) | StrokeWidth 3.5 | Stroke Color #HourColour#
;Minute line
Shape2=Line (31+21*cos(rad(-90+[Time.Minute]*360/60))),(31+21*sin(rad(-90+[Time.Minute]*360/60))),(31+29*cos(rad(-90+[Time.Minute]*360/60))),(31+29*sin(rad(-90+[Time.Minute]*360/60))) | StrokeWidth 3 | Stroke Color #MinuteColour#
;Second line
Shape3=Line (31+21*cos(rad(-90+[Time.Second]*360/60))),(31+21*sin(rad(-90+[Time.Second]*360/60))),(31+29*cos(rad(-90+[Time.Second]*360/60))),(31+29*sin(rad(-90+[Time.Second]*360/60))) | StrokeWidth 2 | Stroke Color #SecondColour#

DynamicVariables=1
Group=Main | Time

[Time.Digital]
Meter=String
X=127
Y=3
MeasureName=Time.Hour
MeasureName2=Time.Minute
MeasureName3=Time.Date
Text=%1:%2#CRLF#%3
FontSize=16
FontFace=Segoe UI
FontWeight=600
FontColor=255,255,255
AntiAlias=1
StringAlign=Center
InlinePattern=#CRLF#(.*)
InlineSetting=Size | 9
InlinePattern2=(.*)#CRLF#
InlineSetting2=CharacterSpacing | 1.5
Group=Main | Time

;----------------------------------------
;Timer
;----------------------------------------
[Timer.Main]
Measure=Time
Format=%S
OnChangeAction=[!SetVariable Seconds (#Seconds#+#Direction#*(1-#Reset#))]
DynamicVariables=1
Group=Timer

[Timer.Uptime]
Measure=Uptime
SecondsValue=#Seconds#
Format=%3!02i!:%2!02i! %1!02i!
MaxValue=([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)
IfCondition=(#CURRENTSECTION#<=0) && (Sgn(#Direction#)=-1) && (#Reset#=0)
IfTrueAction=[!PauseMeasureGroup Timer][#[#TimerAction]][#ResetAct][!ShowMeterGroup Main][!HideMeterGroup Timer][!Redraw]
IfConditionMode=1
DynamicVariables=1
Group=Timer

[Timer.Play]
Meter=String
MeterStyle=Icons
Text=[\xE768]
X=207
Y=14
Group=Main
LeftMouseUpAction=[!HideMeterGroup Main][!ShowMeterGroup Timer][!Redraw][!UnpauseMeasureGroup Timer]

[Timer.Pause]
Meter=String
MeterStyle=Icons
Text=[\xE769]
X=207
Y=14
Group=Main | Timer
Hidden=1
LeftMouseUpAction=[!PauseMeasureGroup Timer][!ShowMeterGroup Main][!HideMeterGroup Timer][!Redraw]

[Timer.Reset]
Meter=String
MeterStyle=Icons
Text=[\xE72C]
X=207
Y=48
Group=Main | Timer
Hidden=1
LeftMouseUpAction=[#ResetAct][!UpdateMeter Timer.Digital][!HideMeter Timer.Pause][!ShowMeter Timer.Play][!Redraw]

[Timer.Analog]
Meter=RoundLine
X=31
Y=31
MeasureName=Timer.Uptime
LineStart=21
LineLength=29
LineWidth=2
StartAngle=(Rad(270))
Antialias=1
Solid=1
LineColor=#TimerColor#
LineWidth=5
Group=Main | Timer
Hidden=1

[Timer.Digital]
Meter=String
X=127
Y=3
MeasureName=Timer.Uptime
MeasureName2=Time.Hour
MeasureName3=Time.Minute
Text=%1#CRLF##TimerAction# • %2:%3
FontSize=16
FontFace=Segoe UI
FontWeight=600
FontColor=255,255,255
AntiAlias=1
StringAlign=Center
InlinePattern=^.*(\s.*)#CRLF#
InlineSetting=Size | 10
InlinePattern2=^.*(\s.*)#CRLF#
InlineSetting2=Weight | 700
InlinePattern3=#CRLF#(.*)
InlineSetting3=Size | 9
InlinePattern3=(.*)#CRLF#
InlineSetting3=CharacterSpacing | 1.5
Group=Main | Timer
Hidden=1

;--------------------------------------
;Settings
;--------------------------------------
[Settings.ActionTimer]
Measure=Plugin
Plugin=ActionTimer
ActionList1=Repeat Show,2,20
ActionList2=Repeat Hide,2,20
Show=[!SetVariable Animation "(Clamp(#Animation#+0.05, 0, 1))"][!UpdateMeterGroup Animation][!UpdateMeasure Settings.ActionTimer][!Redraw]
Hide=[!SetVariable Animation "(Clamp(#Animation#-0.05, 0, 1))"][!UpdateMeterGroup Animation][!UpdateMeasure Settings.ActionTimer][!Redraw]
DynamicVariables=1
UpdateDivider=-1

[Settings.Icon]
Meter=String
MeterStyle=Icons
Text=[\xE713]
X=207
Y=48
Group=Main
LeftMouseUpAction=[#ResetAct][!UpdateMeter Settings.Timer.Digital][!HideMeterGroup Main][!ShowMeterGroup Settings][!HideMeterGroup AlarmSettings][!Redraw]

[Settings.Done]
Meter=String
MeterStyle=Icons
Text=[\xE73E]
X=207
Y=31
Group=Settings
DynamicVariables=1
Hidden=1
LeftMouseUpAction=[#WriteAll][!HideMeterGroup Settings][!ShowMeterGroup Main][!HideMeterGroup Timer][!Redraw]

[Settings.Timer]
Meter=String
MeterStyle=Icons
Text=[\xE823]
X=207
Y=14
Group=Settings
Hidden=1
LeftMouseUpAction=[!HideMeterGroup AlarmSettings][!ShowMeterGroup TimerSettings][!Redraw]

[Settings.Alarm]
Meter=String
MeterStyle=Icons
Text=[\xEA8F]
X=207
Y=48
Group=Settings
Hidden=1
LeftMouseUpAction=[!HideMeterGroup TimerSettings][!ShowMeterGroup AlarmSettings][!Redraw]

[Settings.Timer.Digital]
Meter=String
MeterStyle=Timer.Digital
Text=%1#CRLF#
InlinePattern4=^$
InlineSetting4=Color | #TextHighlightColor#
DynamicVariables=1
Group=Settings | TimerSettings

[Settings.Timer.Hours]
Meter=Image
SolidColor=0,0,0,1
MouseOverAction=[!SetOption Settings.Timer.Digital InlinePattern4 "^(\d{2})"][!UpdateMeter Settings.Timer.Digital][!Redraw]
MouseLeaveAction=[!SetOption Settings.Timer.Digital InlinePattern4 "^$"][!UpdateMeter Settings.Timer.Digital][!Redraw]
MouseScrollUpAction=[!SetVariable DefaultHours "([#DefaultHours]=99 ? 0 : [#DefaultHours]+1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup Timer][!UpdateMeasureGroup Timer][!PauseMeasureGroup Timer][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable DefaultHours "([#DefaultHours]=0 ? 99 : [#DefaultHours]-1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup Timer][!UpdateMeasureGroup Timer][!PauseMeasureGroup Timer][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
DynamicVariables=1
Hidden=1
Group=Settings | TimerSettings
H=25
W=25
X=-36r
Y=r

[Settings.Timer.Minutes]
Meter=Image
MeterStyle=Settings.Timer.Hours
MouseOverAction=[!SetOption Settings.Timer.Digital InlinePattern4 "^.*:(\d{2})"][!UpdateMeter Settings.Timer.Digital][!Redraw]
MouseLeaveAction=[!SetOption Settings.Timer.Digital InlinePattern4 "^$"][!UpdateMeter Settings.Timer.Digital][!Redraw]
MouseScrollUpAction=[!SetVariable DefaultMinutes "([#DefaultMinutes]=59 ? 0 : [#DefaultMinutes]+1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup Timer][!UpdateMeasureGroup Timer][!PauseMeasureGroup Timer][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable DefaultMinutes "([#DefaultMinutes]=0 ? 59 : [#DefaultMinutes]-1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup Timer][!UpdateMeasureGroup Timer][!PauseMeasureGroup Timer][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
X=4R

[Settings.Timer.Seconds]
Meter=Image
MeterStyle=Settings.Timer.Hours
MouseOverAction=[!SetOption Settings.Timer.Digital InlinePattern4 "^.*\s(\d{2})"][!UpdateMeter Settings.Timer.Digital][!Redraw]
MouseLeaveAction=[!SetOption Settings.Timer.Digital InlinePattern4 "^$"][!UpdateMeter Settings.Timer.Digital][!Redraw]
MouseScrollUpAction=[!SetVariable DefaultSeconds "([#DefaultSeconds]=59 ? 0 : [#DefaultSeconds]+1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup Timer][!UpdateMeasureGroup Timer][!PauseMeasureGroup Timer][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable DefaultSeconds "([#DefaultSeconds]=0 ? 59 : [#DefaultSeconds]-1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup Timer][!UpdateMeasureGroup Timer][!PauseMeasureGroup Timer][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
H=22
X=2R
Y=3r

[Settings.Alarm.Uptime]
Measure=Uptime
SecondsValue=(#AlarmHours#*3600+#AlarmMinutes#*60)
Format=%3!02i!:%2!02i!
DynamicVariables=1

[Settings.Alarm.Digital]
Meter=String
MeasureName=Settings.Alarm.Uptime
Text=%1#CRLF#
MeterStyle=Time.Digital
Hidden=1
InlinePattern4=^$
InlineSetting4=Color | #TextHighlightColor#
DynamicVariables=1
Group=Settings | AlarmSettings

[Settings.Alarm.Hours]
Meter=Image
SolidColor=0,0,0,1
MouseOverAction=[!SetOption Settings.Alarm.Digital InlinePattern4 "^(\d{2})"][!UpdateMeter Settings.Alarm.Digital][!Redraw]
MouseLeaveAction=[!SetOption Settings.Alarm.Digital InlinePattern4 "^$"][!UpdateMeter Settings.Alarm.Digital][!Redraw]
MouseScrollUpAction=[!SetVariable AlarmHours "([#AlarmHours]=23 ? 0 : [#AlarmHours]+1)"][!UpdateMeasure Settings.Alarm.Uptime][!UpdateMeter Settings.Alarm.Digital][!Redraw]
MouseScrollDownAction=[!SetVariable AlarmHours "([#AlarmHours]=0 ? 23 : [#AlarmHours]-1)"][!UpdateMeasure Settings.Alarm.Uptime][!UpdateMeter Settings.Alarm.Digital][!Redraw]
DynamicVariables=1
Hidden=1
Group=Settings | AlarmSettings
H=25
W=25
X=(-[Settings.Alarm.Digital:W]/2+3)r
Y=r

[Settings.Alarm.Minutes]
Meter=Image
MeterStyle=Settings.Alarm.Hours
MouseOverAction=[!SetOption Settings.Alarm.Digital InlinePattern4 "^.*:(\d{2})"][!UpdateMeter Settings.Alarm.Digital][!Redraw]
MouseLeaveAction=[!SetOption Settings.Alarm.Digital InlinePattern4 "^$"][!UpdateMeter Settings.Alarm.Digital][!Redraw]
MouseScrollUpAction=[!SetVariable AlarmMinutes "([#AlarmMinutes]=59 ? 0 : [#AlarmMinutes]+1)"][!UpdateMeasure Settings.Alarm.Uptime][!UpdateMeter Settings.Alarm.Digital][!Redraw]
MouseScrollDownAction=[!SetVariable AlarmMinutes "([#AlarmMinutes]=0 ? 59 : [#AlarmMinutes]-1)"][!UpdateMeasure Settings.Alarm.Uptime][!UpdateMeter Settings.Alarm.Digital][!Redraw]
X=6R

[Settings.Alarm.Toggle.Measure]
Measure=String
String=[#AlarmBool]
IfCondition=Settings.Alarm.Toggle.Measure=1
IfTrueAction=[!EnableMeasure Alarm.Main]
IfFalseAction=[!DisableMeasure Alarm.Main]
Substitute="0":"[\xF19E]", "1":"[\xF19F]"
DynamicVariables=1

[Settings.Alarm.Toggle]
Meter=String
MeterStyle=Icons
FontSize=15
X=31
Y=32
Hidden=1
Group=Settings | AlarmSettings
MeasureName=Settings.Alarm.Toggle.Measure
LeftMouseUpAction=[!SetVariable AlarmBool (1-[#AlarmBool])][!WriteKeyValue Variables AlarmBool "[#AlarmBool]"][!UpdateMeasure Settings.Alarm.Toggle.Measure][!UpdateMeter Settings.Alarm.Toggle][!Redraw]
Timerlarm_v1.0.0.rmskin
You do not have the required permissions to view the files attached to this post.
from the Realm of Death
User avatar
sl23
Posts: 1140
Joined: February 17th, 2011, 7:45 pm
Location: a Galaxy S7 far far away

Re: Simple countdown timer

Post by sl23 »

Ok, so taking onboard the comments, I created a newer, better looking version.

I now have two issues though:
1. When the Timer is started via a process using [!ToggleMeterGroup PlayPause] The same as is used in the normal play/pause operation, it shows the play and pause buttons together as they were previously hidden. But I can't use show/hide meter bangs as they don't work properly either. How do I get it so the play button is shown, then toggled off? Only way out I can think of! Or, perhaps using a different group type would work? :confused:
After starting the timer via a process and then pausing it, the play button is then hidden so it can't be continued. A right click on the timer circle reshows it though.

2. For some weird bloody reason, the [BgTimer] ToolTipText="L - Timer Off#CRLF#R - Timer On" Appears wherever the mouse is over the whole skin! Why is this? Never had this issue before. There is no MouseOverActions in the [Rainmeter] section!

Hopefully this will be the final release! :)
Here's the latest code:

Code: Select all

[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,1
DynamicWindowSize=1
OnRefreshAction=[!PauseMeasureGroup TimerGroup][!HideMeterGroup Controls][!HideMeter OK][!SetOption #ActionText# FillAlpha "FillColor #Color2#"][!UpdateMeter *][!Redraw]

[Metadata]
Name=Countdown Timer
Author=sl23
Information=Clock including Timer, alarm and hourly chime.||Credits:||Timer code by Yincognito and death.crafter.||Adapted from "SimplyRound" clock skin by Krzysztof "gronostaj" Smialek||Help via forum: balala, eclectic-tech, jsmorley
Version=2021.8.4
License=CC BY 3.0

[Variables]
; The time at which the timer / stopwatch is set or reset, in seconds (>0 for a timer, 0 for a stopwatch)
DefaultHours=2
DefaultMinutes=10
DefaultSeconds=0
; Seconds left to pass (for a timer), or seconds passed (for a stopwatch)
Seconds=([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)
; The amount of seconds by which the timer / stopwatch changes (<0 for a timer, >0 for a stopwatch)
Direction=-1
; Temporarily set to 1 when the timer / stopwatch is reset so the OnChangeAction below doesn't alter the Seconds above
Reset=0

Click=ms-settings:dateandtime
HourColour=255,100,100
MinuteColour=255,170,0
SecondsColour=128,255,0
TimerColor=100,100,200

Color1=255,255,255,200
Color2=128,255,0
Color3=255,255,0
Color4=0,255,255
Color5=255,255,255,60

ChimeSound=Calligraphy.wav
; ChimeSound disabled whilst these apps are running
Process1=VLC.exe
Process2=foobar2000.exe
Process3=MuLab.exe

; These apps will start the Timer when run and pause it when stopped. So that you can time the use of them. Also, when the Timer reaches zero, these apps will close if the Setting "CloseApps" is used.
APP1=Dolphin.exe
APP2=pcsx2.exe
APP3=rpcs3.exe
APP4=retroarch.exe
APP5=cemu.exe
APP6=Project64.exe

Alarm=Alarm.wav
AlarmHourSet=23
AlarmMinuteSet=0

Hibernate=rundll32.exe powrprof.dll,SetSuspendState
Shutdown=shutdown.exe -s -t 5 -f
Lock=rundll32.exe user32.dll, LockWorkStation
CloseApps=!CommandMeasure mClose Run
Off=
Act=

ActionText=Off
Message1=10 mins until #ActionText#
Message2=#ActionText# Now

========================================
; Background
========================================
[Bg]
Meter=Shape
Shape=Rectangle 2,2,230,70,35 | Fill Color 0,0,0,150 | StrokeWidth 2 | Extend StrokeAlpha
StrokeAlpha=Stroke Color #Color5#
DynamicVariables=1

[BgAlarm]
Meter=Shape
Shape=Rectangle 7,7,60,60,50 | Fill Color 0,0,0,50 | StrokeWidth 2 | Extend StrokeAlpha
Shape2=Rectangle 16,16,42,42,50 | Fill Color 0,0,0,1 | StrokeWidth 2 | Extend StrokeAlpha2
Shape3=Rectangle 12,12,50,50,50 | Fill Color 0,0,0,1 | StrokeWidth 10 | Stroke Color 255,255,255,20
StrokeAlpha=Stroke Color #Color5#
StrokeAlpha2=Stroke Color #Color5#

LeftMouseUpAction=[!EnableMeasure mChimeHour] [!ShowMeter ChimeIcon] [!SetOption #CURRENTSECTION# StrokeAlpha2 "Stroke Color #Color5#"] [!DisableMeasureGroup ALARM] [!HideMeterGroup AlarmSet][!SetOption Action Text "#ActionText#"] [PlayStop "#Alarm#"] [!Update][!UpdateMeter *][!Redraw]

RightMouseUpAction=[!DisableMeasure mChimeHour] [!HideMeter ChimeIcon] [!SetOption #CURRENTSECTION# StrokeAlpha2 "Stroke Color 128,255,0,200"] [!EnableMeasureGroup ALARM] [!ShowMeter HourAlarm] [!ShowMeter MinuteAlarm] [!Update][!UpdateMeter *][!Redraw]

MouseOverAction=[!SetOption #CURRENTSECTION# StrokeAlpha "Stroke Color #Color4#"][!UpdateMeter *][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# StrokeAlpha "Stroke Color #Color5#"][!UpdateMeter *][!Redraw]

DynamicVariables=1
ToolTipText="L - Alarm Off#CRLF#R - Alarm On"

[BgLine]
Meter=Shape
Shape=Rectangle 67,42,100,2,0 | Fill Color #Color5# | StrokeWidth 0
DynamicVariables=1

[BgTimer]
Meter=Shape
Shape=Rectangle 167,7,60,60,50 | Fill Color 0,0,0,50 | StrokeWidth 2 | Extend StrokeAlpha
Shape2=Rectangle 176,16,42,42,50 | Fill Color 0,0,0,1 | StrokeWidth 2 | Extend StrokeAlpha2
Shape3=Rectangle 172,12,50,50,50 | Fill Color 0,0,0,1 | StrokeWidth 10 | Stroke Color 255,255,255,20
StrokeAlpha=Stroke Color #Color5#
StrokeAlpha2=Stroke Color #Color5#

LeftMouseUpAction=[!SetOption #CURRENTSECTION# StrokeAlpha2 "Stroke Color #Color5#"]  [!HideMeterGroup Controls][!SetOption Action Text "#ActionText#"] [PlayStop "#Alarm#"] [!Update][!UpdateMeter *][!Redraw]

RightMouseUpAction=[!SetOption #CURRENTSECTION# StrokeAlpha2 "Stroke Color 128,255,0,200"] [!ShowMeterGroup Controls] [!Update][!UpdateMeter *][!Redraw]

MouseOverAction=[!SetOption #CURRENTSECTION# StrokeAlpha "Stroke Color #Color4#"][!UpdateMeter *][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# StrokeAlpha "Stroke Color #Color5#"][!UpdateMeter *][!Redraw]

DynamicVariables=1
ToolTipText="L - Timer Off#CRLF#R - Timer On"

========================================
; STYLES
========================================
[sAllText]
FontFace=Trebuchet MS
StringStyle=Bold
StringAlign=Center
FontSize=16
FontColor=#Color1#
StringEffect=Shadow
FontEffectColor=0,0,0,150
AntiAlias=1
InlineSetting=Size | 8
InlinePattern=#CRLF#.+

FontFace=Aller
FontSize=16
FontWeight=650
StringEffect=Shadow
FontEffectColor=0,0,0,150
SolidColor=0,0,0,1
AntiAlias=1
DynamicVariables=1

[sRoundBar]
LineStart=22
LineLength=29
LineWidth=2
StartAngle=(Rad(270))
Antialias=1
Solid=0

[sHighlight]
MouseOverAction=[!SetOption #CURRENTSECTION# FontColor "#Color2#"] [!UpdateMeter #CURRENTSECTION#] [!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# FontColor "#Color1#"] [!UpdateMeter #CURRENTSECTION#] [!Redraw]

========================================
; Time
========================================
[mHour]
Measure=Time
Format=%#I
MinValue=0
MaxValue=12

[mMinutes]
Measure=Time
Format=%M
MinValue=0
MaxValue=60

[mSecond]
Measure=Time
Format=%S
MinValue=0
MaxValue=60

[mDate]
Measure=Time
Format=%a  %#d  %b

[HoursBar]
Meter=Roundline
MeasureName=mHour
MeterStyle=sRoundBar
LineColor=#HourColour#
X=37
Y=37

[MinutesBar]
Meter=Roundline
MeasureName=mMinutes
MeterStyle=sRoundBar
LineColor=#MinuteColour#
X=r
Y=r

[SecondsBar]
Meter=Roundline
MeasureName=mSecond
MeterStyle=sRoundBar
LineColor=#SecondsColour#
X=r
Y=r

[Value]
Meter=String
MeasureName=mHour
MeasureName2=mMinutes
MeterStyle=sAllText | sHighlight
Text=%1:%2#CRLF#[mDate]
LeftMouseUpAction=#Click#
X=117
Y=19

========================================
; CHIME
========================================
[sChime]
AntiAlias=1
X=30
Y=28
W=16
H=16

[mChimeHour]
Measure=Time
Format=%M
IfEqualValue=0
IfEqualAction=[Play #ChimeSound#]

[ChimeIcon]
Meter=Image
MeterStyle=sChime
ImageName=icon.png
ImageAlpha=150
EC4F
============================================
; Enable/Disable Chime on Process Start/Stop
============================================
[mProcessDisableChime]
Measure=Calc
Formula=1
IfCondition=(mProcess1=1) || (mProcess2=1) || (mProcess3=1)
IfTrueAction=[!DisableMeasure mChimeHour][!SetOption ChimeIcon ImageTint ""][!UpdateMeter *][!Redraw]
IfFalseAction=[!EnableMeasure mChimeHour][!SetOption ChimeIcon ImageTint "128,255,0"][!UpdateMeter *][!Redraw]

[mProcess1]
Measure=Plugin
Plugin=Process
ProcessName=#Process1#

[mProcess2]
Measure=Plugin
Plugin=Process
ProcessName=#Process2#

[mProcess3]
Measure=Plugin
Plugin=Process
ProcessName=#Process3#

========================================
; Alarm
========================================
[mDigitPrefixerAlarm]
Measure=calc
Formula=00
Dynamicvariables=1
IfCondition=(#AlarmHourSet# >= 0) && (#AlarmHourSet# <= 9)
IfTrueAction=[!SetOption HourAlarm Prefix "0"]
IfFalseAction=[!SetOption HourAlarm Prefix ""]
IfCondition2=(#AlarmMinuteSet# >= 0) && (#AlarmMinuteSet# <= 9)
IfTrueAction2=[!SetOption MinuteAlarm Prefix "0"]
IfFalseAction2=[!SetOption MinuteAlarm Prefix ""]
Group=mALARM | ALARM

[mHourAlarm]
Measure=Time
Format=%H
Group=ALARM

[mMinuteAlarm]
Measure=Time
Format=%M
Group=ALARM

[Alarm]
Measure=calc
Formula=0
DynamicVariables=1
IfCondition=(mHourAlarm = #AlarmHourSet#) && (mMinuteAlarm = #AlarmMinuteSet#-10)
IfTrueAction=[!SetOption Action Text "#Message1#"][Play #Alarm#][!Redraw]
IfCondition2=(mHourAlarm = #AlarmHourSet#) && (mMinuteAlarm = #AlarmMinuteSet#)
IfTrueAction2=[!SetOption Action Text "#Message2#"][#Act#][!Redraw]

[HourAlarm]
Meter=String
MeasureName=mHour
MeterStyle=sAllText | sHighlight
FontSize=9
Text=#AlarmHourSet#:
DynamicVariables=1
MouseScrollUpAction=[!SetVariable AlarmHourSet (Clamp(#AlarmHourSet#+1,0,23))] [!UpdateMeasureGroup mALARM] [!UpdateMeter HourAlarm] [!Redraw]
MouseScrollDownAction=[!SetVariable AlarmHourSet (Clamp(#AlarmHourSet#-1,0,23))] [!UpdateMeasureGroup mALARM] [!UpdateMeter HourAlarm] [!Redraw]
Group=AlarmSet
Hidden=1
X=29
Y=30

[MinuteAlarm]
Meter=String
MeterStyle=sAllText | sHighlight
FontSize=9
Text=#AlarmMinuteSet#
DynamicVariables=1
MouseScrollUpAction=[!SetVariable AlarmMinuteSet (Clamp(#AlarmMinuteSet#+1,0,59))] [!UpdateMeasureGroup mALARM] [!UpdateMeter MinuteAlarm] [!Redraw]
MouseScrollDownAction=[!SetVariable AlarmMinuteSet (Clamp(#AlarmMinuteSet#-1,0,59))] [!UpdateMeasureGroup mALARM] [!UpdateMeter MinuteAlarm] [!Redraw]
Group=AlarmSet
Hidden=1
X=-4R
Y=r

========================================
; Countdown
========================================
[mTime]
Group=TimerGroup
Measure=Time
Format=%H:%M %S
OnChangeAction=[!SetVariable Seconds (#Seconds#+#Direction#*(1-#Reset#))]
DynamicVariables=1

[mUptime]
Group=TimerGroup
Measure=Uptime
SecondsValue=#Seconds#
Format="%3!02i!:%2!02i!#CRLF#%1!02i!"
MaxValue=([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)
IfCondition=(#CURRENTSECTION#<=0) && (Sgn(#Direction#)=-1)
IfTrueAction=[!PauseMeasureGroup TimerGroup][#Act#][!SetOption Action Text "#Message2#"][Play "#Alarm#"][!Redraw]
IfCondition2=(#CURRENTSECTION#=600)
IfTrueAction2=[!SetOption Action Text "#Message1#"][Play "#Alarm#"][!Redraw]
IfConditionMode=1
DynamicVariables=1
OnUpdateAction=[!Log "Seconds = #Seconds#, mUptime = [mUptime]"]

[mClose]
Measure=Plugin
Plugin=RunCommand
Program=PowerShell
Parameter=taskkill /IM #APP1#;taskkill /IM #APP2#;taskkill /IM #APP3#;taskkill /IM #APP4#;taskkill /IM #APP5#;taskkill /IM #APP6#

[UptimeText]
Meter=String
MeasureName=mUptime
MeterStyle=sAllText
FontSize=10
Text=%1
InlineSetting=Size | 8
InlinePattern=^.*(\s.*)$
InlineSetting2=Weight | 800
InlinePattern2=^.*(\s.*)$
InlinePattern3=^$
InlineSetting3=Color | #Color2#
Group=Start | Controls
Hidden=1
X=197
Y=27

[Hours]
Meter=Image
SolidColor=0,0,0,1
MouseOverAction=[!SetOption UptimeText InlinePattern3 "^(\d{2})"][!UpdateMeter UptimeText][!Redraw]
MouseLeaveAction=[!SetOption UptimeText InlinePattern3 "^$"][!UpdateMeter UptimeText][!Redraw]
MouseScrollUpAction=[!SetVariable Default[#CURRENTSECTION] "([#DefaultHours]=99 ? 0 : [#DefaultHours]+1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup TimerGroup][!UpdateMeasureGroup TimerGroup][!PauseMeasureGroup TimerGroup][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable Default[#CURRENTSECTION] "([#DefaultHours]=0 ? 99 : [#DefaultHours]-1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup TimerGroup][!UpdateMeasureGroup TimerGroup][!PauseMeasureGroup TimerGroup][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
DynamicVariables=1
Hidden=1
Group=Settings
H=15
W=20
X=-20r
Y=r

[Minutes]
Meter=Image
MeterStyle=Hours
MouseOverAction=[!SetOption UptimeText InlinePattern3 "^.*:(\d{2})"][!UpdateMeter UptimeText][!Redraw]
MouseLeaveAction=[!SetOption UptimeText InlinePattern3 "^$"][!UpdateMeter UptimeText][!Redraw]
MouseScrollUpAction=[!SetVariable Default[#CURRENTSECTION] "([#DefaultMinutes]=59 ? 0 : [#DefaultMinutes]+1)][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup TimerGroup][!UpdateMeasureGroup TimerGroup][!PauseMeasureGroup TimerGroup][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable Default[#CURRENTSECTION] "([#DefaultMinutes]=0 ? 59 : [#DefaultMinutes]-1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup TimerGroup][!UpdateMeasureGroup TimerGroup][!PauseMeasureGroup TimerGroup][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
X=3R

[Seconds]
Meter=Image
MeterStyle=Hours
MouseOverAction=[!SetOption UptimeText InlinePattern3 "^.*\s(\d{2})"][!UpdateMeter UptimeText][!Redraw]
MouseLeaveAction=[!SetOption UptimeText InlinePattern3 "^$"][!UpdateMeter UptimeText][!Redraw]
MouseScrollUpAction=[!SetVariable Default[#CURRENTSECTION] "([#DefaultSeconds]=59 ? 0 : [#DefaultSeconds]+1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup TimerGroup][!UpdateMeasureGroup TimerGroup][!PauseMeasureGroup TimerGroup][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
MouseScrollDownAction=[!SetVariable Default[#CURRENTSECTION] "([#DefaultSeconds]=0 ? 59 : [#DefaultSeconds]-1)"][!SetVariable Seconds ([#DefaultSeconds]+[#DefaultMinutes]*60+[#DefaultHours]*3600)][!SetVariable Reset 1][!UnpauseMeasureGroup TimerGroup][!UpdateMeasureGroup TimerGroup][!PauseMeasureGroup TimerGroup][!SetVariable Reset 0][!UpdateMeter *][!Redraw]
H=13
X=-10r
Y=R

[TimerBar]
Meter=RoundLine
MeasureName=mUptime
MeterStyle=sRoundBar
LineColor=#Color2#
LineWidth=5
Group=Controls | Timer
Hidden=1
X=197
Y=37

========================================
; Process
========================================
[mProcessTimerStart]
Measure=Calc
Formula=1
IfCondition=(mAPP1=1) || (mAPP2=1) || (mAPP3=1) || (mAPP4=1) || (mAPP5=1) || (mAPP6=1)
IfTrueAction=[!ActivateConfig "RM\ScreenSaver" "ScreenSaver v2..ini"][!UnpauseMeasureGroup TimerGroup][!ToggleMeterGroup PlayPause][!ShowMeterGroup Controls][!SetOptionGroup Start FontColor "#Color3#"][!Redraw]
IfFalseAction=[!DeactivateConfig "RM\ScreenSaver" "ScreenSaver v2..ini"][!PauseMeasureGroup TimerGroup][!ToggleMeterGroup PlayPause][!SetOptionGroup Start FontColor "#Color1#"][PlayStop "#Alarm#"][!Redraw]

[mAPP1]
Measure=Plugin
Plugin=Process
ProcessName=#APP1#

[mAPP2]
Measure=Plugin
Plugin=Process
ProcessName=#APP2#

[mAPP3]
Measure=Plugin
Plugin=Process
ProcessName=#APP3#

[mAPP4]
Measure=Plugin
Plugin=Process
ProcessName=#APP4#

[mAPP5]
Measure=Plugin
Plugin=Process
ProcessName=#APP5#

[mAPP6]
Measure=Plugin
Plugin=Process
ProcessName=#APP6#

========================================
; Controls
========================================
[sControls]
FontFace=Segoe MDL2 Assets
FontSize=10
StringAlign=CenterCenter
X=92
Y=63

[Play]
Meter=String
MeterStyle=sAllText | sControls | sHighlight
Text=[\xE768]
;Text=[\xE81C]
LeftMouseUpAction=[!UnpauseMeasureGroup TimerGroup][!ToggleMeterGroup PlayPause][!SetOptionGroup Start FontColor "#Color3#"][!Redraw]
Group=PlayPause | Start | Controls

[Pause]
Meter=String
MeterStyle=sAllText | sControls | sHighlight
Text=[\xE769]
LeftMouseUpAction=[!PauseMeasureGroup TimerGroup][!ToggleMeterGroup PlayPause][!SetOptionGroup Start FontColor "#Color1#"][PlayStop "#Alarm#"][!Redraw]
Group=PlayPause | Start

[Reset]
Meter=String
MeterStyle=sAllText | sControls | sHighlight
Text=[\xE72C]
FontSize=9
LeftMouseUpAction=[!Refresh]
ToolTipText=Reset/Alarm Stop
Group=Controls
X=25r

[Set]
Meter=String
MeterStyle=sAllText | sControls | sHighlight
Text=[\xE713]
FontSize=9
LeftMouseUpAction=[!ToggleMeterGroup Settings][!HideMeter Action][!SetOptionGroup Button Hidden "0"] [!UpdateMeter *][!Redraw]
Group=Controls | Settings
X=25r

[OK]
Meter=String
MeterStyle=sAllText | sControls | sHighlight
Text=[\xE73E]
FontSize=9
LeftMouseUpAction=[!ToggleMeterGroup Settings][!ShowMeter Action][!SetOptionGroup Button Hidden "1"] [!UpdateMeter *][!WriteKeyValue Variables DefaultSeconds [#DefaultSeconds]][!WriteKeyValue Variables DefaultMinutes [#DefaultMinutes]][!WriteKeyValue Variables DefaultHours [#DefaultHours]][!Redraw]
Group=Settings
Hidden=1
X=r

========================================
; Buttons
========================================
[sButton]
Shape=Rectangle 0,0,10,10,50 | Extend FillAlpha | StrokeWidth 2 | Extend StrokeAlpha
FillAlpha=FillColor #Color5#
StrokeAlpha=StrokeColor 128,255,0,0
MouseOverAction=[!SetOption #CURRENTSECTION# StrokeAlpha "StrokeColor 255,255,0,255"] [!UpdateMeter *][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# StrokeAlpha ""] [!UpdateMeter *] [!Redraw] 
LeftMouseUpAction=[!SetOptionGroup Button FillAlpha "FillColor #Color5#"][!SetOption #CURRENTSECTION# FillAlpha "FillColor #Color2#"][!WriteKeyValue Variables Act [##CURRENTSECTION#]] [!WriteKeyValue Variables ActionText [#CURRENTSECTION]] [!UpdateMeter *][!Redraw]
ToolTipText=[#CURRENTSECTION]
DynamicVariables=1
Group=Button
Hidden=1
MouseActionCursor=0
UpdateDivider=-1
X=20r
Y=r

[CloseApps]
Meter=Shape
MeterStyle=sButton
X=72
Y=8

[Hibernate]
Meter=Shape
MeterStyle=sButton

[Shutdown]
Meter=Shape
MeterStyle=sButton

[Lock]
Meter=Shape
MeterStyle=sButton

[Off]
Meter=Shape
MeterStyle=sButton

========================================
; Message
========================================
[Action]
Meter=String
MeterStyle=sAllText
FontSize=9
FontColor=255,228,110,255
Text=#ActionText#
Group=Controls
Hidden=1
X=117
Y=6
Image 001.png
Image 002.png
Image 003.png
You do not have the required permissions to view the files attached to this post.
Last edited by sl23 on August 4th, 2021, 9:54 pm, edited 2 times in total.
- MuLab -
User avatar
sl23
Posts: 1140
Joined: February 17th, 2011, 7:45 pm
Location: a Galaxy S7 far far away

Re: Simple countdown timer

Post by sl23 »

Really good what you did with the buttons, but I don't like that you can't see everything.

The idea is to be able to set the timer and alarm together and see the current time, timer remaining time and the alarm time.

What about the latest version? is that an improvement? Despite the issues! :oops:
- MuLab -
User avatar
death.crafter
Rainmeter Sage
Posts: 1399
Joined: April 24th, 2021, 8:13 pm

Re: Simple countdown timer

Post by death.crafter »

sl23 wrote: August 4th, 2021, 9:44 pm Really good what you did with the buttons, but I don't like that you can't see everything.

The idea is to be able to set the timer and alarm together and see the current time, timer remaining time and the alarm time.
P.S.:
I like to hide things as much as possible :rofl:
I would like it like this:
sl23 wrote: August 4th, 2021, 9:44 pm What about the latest version? is that an improvement? Despite the issues! :oops:
Ofc it is improved. Personally I like how it looks. About the errors I may look into it tomorrow when I got time.

What I did was to make the hide show patterns more legible. The looks and stuff are ofc your doing. As you see I don't make much skins. So I am adept at modifying others' works :rolmfao:
from the Realm of Death
User avatar
sl23
Posts: 1140
Joined: February 17th, 2011, 7:45 pm
Location: a Galaxy S7 far far away

Re: Simple countdown timer

Post by sl23 »

Thanks for your help, greatly appreciated :thumbup: :thumbup:
Btw,
Me too... :p :lol:
Both wrt hiding things and modifying others work! :oops:
though less of an adept and more of a "please help when I'm stuck" type! :oops: :rolmfao:
- MuLab -
User avatar
Yincognito
Rainmeter Sage
Posts: 7171
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Simple countdown timer

Post by Yincognito »

sl23 wrote: August 4th, 2021, 9:44 pmWhat about the latest version? is that an improvement? Despite the issues! :oops:
I didn't see any serious issue for the brief time I tested it, but it looks much better and consistent, and visually appealing. I'm still a bit confused by what to click to do this or that, but from my part, it's alright. Good job! :great:
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
sl23
Posts: 1140
Joined: February 17th, 2011, 7:45 pm
Location: a Galaxy S7 far far away

Re: Simple countdown timer

Post by sl23 »

Thanks. I know the code could be better, probably. But best I can do at the moment.

The issues are the tool tip for timer seems to work on the whole skin whereas it should only appear on the right hand circle.

The other issue is related to hiding and showing icons when #APP1# - #APP5# is running. It causes a problem with the play and pause buttons.

If you know of a solution, please let me know. :Whistle
- MuLab -