First of all sorry for the translation of Saint Google.
This Chronometer works perfectly as a WATCH, but not as a TIME COUNTER.
The problem is that the line does not start at 0 and after the pause, it continues in the real seconds.
The seconds are synchronized with the time and not as a time counter.
I have tried a thousand ways, but I can't find the solution. Is it possible to convert it into a stopwatch that is not a countdown?
I have also tried with other code, which starts at 0, but the timeline is sometimes exact and other times it is unbalanced.
If anyone could help me, that would be fantastic. Thank you.
Code: Select all
[Rainmeter]
Update=60
AccurateText=1
Background=#@#Images\cronos.png
MiddleMouseDownAction=!Refresh
OnRefreshAction=[!DisableMeasure MeasureTimeDelta][!DisableMeasure MeasureBar][!HideMeter "StopButton"][!HideMeter "PauseButton"][!ShowMeter "StartButton"]
;-------------------------------------------------------------
[Metadata]
Name=SweepSeconds + Timer Monterey
Author=JSMorley, Creewick... y más que no me acuerdo... y algo de mi.
Information=Cronómetro. Basado en SweepSeconds y Timer Monterey
License=Creative Commons Share-Alike NC 4
;-------------------------------------------------------------
[Variables]
StartTime=-1
EndTime =-1
PauseTime=-1
ActionPlay=[!EnableMeasure MeasureTimeDelta][!UnpauseMeasure TimeLeft][!EnableMeasure MeasureElapsedTime][!ShowMeter "StopButton"][!Redraw]
ActionPause=[!DisableMeasure MeasureTimeDelta][!PauseMeasure TimeLeft][!PauseMeasure MeasureElapsedTime][!Redraw]
[TextStyle]
FontFace=Garamond
FontColor=644b40
FontSize=16
StringEffect=Shadow
FontEffectColor=fdfceb
StringStyle=Bold
StringAlign=CenterCenter
AntiAlias=1
X=70
[sController]
W=24
H=24
MouseOverAction=[!SetOption "#CurrentSection#" ImageTint DDDDDD][!UpdateMeter #CurrentSection#][!Redraw]
MouseLeaveAction=[!SetOption "#CurrentSection#" ImageTint ""][!UpdateMeter #CurrentSection#][!Redraw]
;-------------------------------------------------------------
;[MEDIDORES Y SCRIPT]
;-------------------------------------------------------------
[Lua]
Measure=Script
ScriptFile=#@#Scripts\Timer.lua
[IsStopped]
Group=Measures
Measure=Calc
Formula=(#StartTime# = -1)
DynamicVariables=1
[IsPaused]
Group=Measures
Measure=Calc
Formula=(#PauseTime# <> -1)
DynamicVariables=1
[IsStarted]
Group=Measures
Measure=Calc
Formula=(#StartTime# <> -1) && (#PauseTime# = -1)
DynamicVariables=1
[TrueNow]
Measure=Time
UpdateDivider=1
[TheClock]
Group=Measures
Measure=Time
DynamicVariables=1
Format=🔔 %H:%M
;-------------------------------------------------------------
;[ELIPSE PERCENTUAL]
;-------------------------------------------------------------
[TimeMeterBase]
Meter=Shape
Shape=Ellipse 0,0,56,56 | Fill Color 00000000 | StrokeWidth 4 | Stroke Color 2C2C2C
X=70
Y=70
[TimeLeft]
Group=Measures
Measure=Time
Format=%#S
AverageSize=10
Disabled=([IsStopped] = 1)
DynamicVariables=1
[MeasureBar]
Measure=Calc
Formula=(TimeLeft % 59) / 60
;-------------------------------------------------------------
;[LINEA DE TIEMPO]
;-------------------------------------------------------------
[MeterSeconds]
Group=Meters
Meter=Roundline
MeasureName=MeasureBar
X=r
Y=r
StartAngle=(-PI/2)
RotationAngle=(2*PI)
LineStart=54
LineLength=58
LineColor=f9932e
Solid=1
AntiAlias=1
Hidden=([IsStopped] = 1)
DynamicVariables=1
UpdateDivider=1
;-------------------------------------------------------------
;[CONTADORES DE TIEMPO]
;-------------------------------------------------------------
[MeasureCurrentTime]
Group=Measures
Measure=Time
[MeasureTimeDelta]
Group=Measures
Measure=Calc
Formula=(MeasureTimeDelta = 0 ? (MeasureCurrentTime - MeasureElapsedTime / 10) : MeasureTimeDelta)
Disabled=1
[MeasureElapsedTime]
Group=Measures
Measure=Calc
Formula=(MeasureTimeDelta = 0 ? MeasureElapsedTime : (MeasureCurrentTime - MeasureTimeDelta) * 10)
[CalcElapsedHours]
Group=Meters
Measure=Calc
Formula=Floor(MeasureElapsedTime / 10 / 3600) % 24
RegExpSubstitute=1
Substitute="(.+)":"0\1","^\d(\d\d)$":"\1"
[CalcElapsedMinutes]
Group=Meters
Measure=Calc
Formula=Floor(MeasureElapsedTime / 10 / 60) % 60
RegExpSubstitute=1
Substitute="(.+)":"0\1","^\d(\d\d)$":"\1"
[CalcElapsedSeconds]
Group=Meters
Measure=Calc
Formula=Floor(MeasureElapsedTime / 10) % 60
RegExpSubstitute=1
Substitute="(.+)":"0\1","^\d(\d\d)$":"\1"
;-------------------------------------------------------------
;[TIEMPO]
;-------------------------------------------------------------
[VisibleTime]
Group=Measures
Meter=String
MeasureName=CalcElapsedHours
MeasureName2=CalcElapsedMinutes
MeasureName3=CalcElapsedSeconds
MeterStyle=TextStyle
NumOfDecimals=0
Y=60
Text="%1:%2:%3"
;-------------------------------------------------------------
;[RELOJ]
;-------------------------------------------------------------
[TimeMeter]
Group=Meters
MeasureName=TheClock
Meter=String
MeterStyle=TextStyle
FontSize=9
Text=
Y=80
Hidden=([IsStopped] = 1)
;-------------------------------------------------------------
;[BOTONES]
;-------------------------------------------------------------
[StopButton]
Meter=Image
Group=Meters
ImageName=#@#Images\istop.png
MeterStyle=sController
X=59
Y=25
LeftMouseUpAction=[&Lua:stop()][!SetOption MeterPlayPause ImageName "#@#Botones\iplay.png"][!DisableMeasure MeasureTimeDelta][!Redraw]
Hidden=([IsStopped] = 1)
DynamicVariables=1
[StartButton]
Group=Meters
Meter=Image
ImageName=#@#Images\iplay.png
MeterStyle=sController
X=r
Y=90
LeftMouseUpAction=[&Lua:continue()]#ActionPlay#[!Delay "0"][!ShowMeter "PauseButton"][!EnableMeasure MeasureBar]
Hidden=([IsStopped] = 0)
DynamicVariables=1
[PauseButton]
Group=Meters
Meter=Image
ImageName=#@#Images\ipause.png
MeterStyle=sController
X=r
Y=r
LeftMouseUpAction=[&Lua:pause()]#ActionPause#
Hidden=([IsStarted] = 0)
DynamicVariables=1
[ContinueButton]
Group=Meters
Meter=Image
ImageName=#@#Images\iplay.png
MeterStyle=sController
X=r
Y=r
LeftMouseUpAction=[&Lua:continue()]#ActionPlay#[!Delay "0"][!ShowMeter "PauseButton"]
Hidden=([IsPaused] = 0)
DynamicVariables=1
Code: Select all
function start()
local now = SKIN:GetMeasure('TrueNow'):GetValue()
setAndSave('StartTime', now)
local duration = SKIN:GetVariable('VisibleTime', 0)
local endTime = now + duration
setAndSave('EndTime', endTime)
SKIN:Bang('!SetOption', 'Now', 'AverageSize', 10)
update()
return 0
end
function pause()
local now = SKIN:GetMeasure('TrueNow'):GetValue()
setAndSave('PauseTime', now)
SKIN:Bang('!SetOption', 'Now', 'AverageSize', 1)
update()
return 0
end
function continue()
local now = SKIN:GetMeasure('TrueNow'):GetValue()
local pauseTime = SKIN:GetVariable('PauseTime', 0)
local startTime = SKIN:GetVariable('StartTime', 0)
local endTime = SKIN:GetVariable('EndTime', 0)
local newStartTime = now - pauseTime + startTime
setAndSave('StartTime', newStartTime)
local newEndTime = now - pauseTime + endTime
setAndSave('EndTime', newEndTime)
setAndSave('PauseTime', -1)
SKIN:Bang('!SetOption', 'Now', 'AverageSize', 10)
update()
return 0
end
function stop()
SKIN:Bang('PlayStop')
setAndSave('StartTime', -1)
setAndSave('EndTime', -1)
setAndSave('PauseTime', -1)
SKIN:Bang('!Refresh')
return 0
end
function increase(type, value)
if (type == 'h') then value = value * 60 * 60 end
if (type == 'm') then value = value * 60 end
local time = SKIN:GetVariable('VisibleTime')
SKIN:Bang('!SetVariable', 'VisibleTime', math.min(math.max(time + value, 0), 24 * 60 * 60 - 1))
return 0
end
function input(type, value)
local time = SKIN:GetVariable('VisibleTime')
local seconds = time % 60
local minutes = ((time - seconds) / 60) % 60
local hours = (time - seconds - minutes * 60) / (60 * 60)
if (type == 'h') then
time = time + (value - hours) * 60 * 60
end
if (type == 'm') then
time = time + (value - minutes) * 60
end
if (type == 's') then
time = time + (value - seconds)
end
SKIN:Bang('!SetVariable', 'VisibleTime', math.min(math.max(time, 0), 24 * 60 * 60 - 1))
return 0
end
function setAndSave(variable, value)
SKIN:Bang('!WriteKeyValue', 'Variables', variable, value)
SKIN:Bang('!SetVariable', variable, value)
end
function update()
SKIN:Bang('!UpdateMeasureGroup', 'Measures')
SKIN:Bang('!UpdateMeterGroup', 'Meters')
end