RAINMETER VIDEO PLAYER
A video player based on FFmpeg's FFplay.exe as discussed in this thread by Yincognito.Should play most downloaded video file formats. Tested: .mp4, .mp3, .avi, .flv, .webm, .mrec
Also has the ability to display image files.
FFPlay includes controls of Video, Sound, and Waveforms
Hover the button for actions
In order to have button controls that do not require clicking the FFPlay window first to give it focus, I use an add-on to send key codes without changing focus away from the FFPlay window. I use IsFullScreen plugin by JSMorley to prevent sending keys if FFPlay.exe is not the focused window (buttons will be greyed out).
The buttons send these key codes to the active window (FFPlay) to achieve the desired action:
ACTION | 'KEY'
Quit Video | 'q' or 'ESC'
Toggle Play/Pause | 'p' or 'Spacebar'
Frame Step | 's'
Back 10 sec | 'Left-Arrow'
Ahead 10 sec | 'Right-Arrow'
Select Stream | 'w'
Vol Up | '0' or 'Asterisk'
Vol Dn | '9' or '/'
Toggle Mute | 'm'
Context menu select sizes:
Default Video Size (usually 480 on YouTube)
320X180 Size
480X270 Size
640X360 Size
960X540 Size
PLUGINS USED
FileChoose plugin by Setsukka (included after V 1.2020.09.18)
IsFullScreen plugin by JSMorley included in the RMSKIN package
SysColorr plugin by Brian Ferguson
NOTES ON USE
Context menu video size can be set when no video is playing.
Control styles 'Text' or 'Buttons' can be selected from the context menu
When a video is playing Control Actions will appear. Hovering the first label will toggle them so only the toggle and video show. The controls can be moved anywhere on the screen
Video window can be position and resized while playing, but will revert to the skin location after quitting video play
If you change the main skin's screen position, Middle-click the skin (or use the context menu) to refresh position of the video window
DO NOT UNLOAD THE SKIN WHILE A VIDEO IS PLAYING; always quit the video first!
(Otherwise, FFPlay will stop responding and must be killed by Windows)
SUMMARY
A plugin for Rainmeter would be better, but until then I hope this helps.
OPTIONS
Option 1) Download RMSKIN (27 meg includes ffplay.exe, SendKey.exe, FileChoose.dll, IsFullScreen.dll, SysColor.dll): My MediaFire Link
Option 2) Download full FFmpeg (127 meg): Latest FFmpeg GIT build for Windows and follow steps in Option 3.
Option 3) If you already have FFmpeg on your system, you can create a new skin from the code below. Place FFPlay.exe in ''@Resources\FFmpeg' in that new skin folder. Download and install FileChoose.dll, IsFullScreen, and SysColor. Find SendKey program (I forgot where I got it)
V 1.2020.09.27a
'RainVideo\RainVideo.ini'
Code: Select all
[Variables]
File=C:\Users\John\Videos\Music\George Michael - Freedom! ’90 (Official Video).mp4
Width=640
Height=34
Default=1
Size=0
Repeat=0
XPosition=(#CurrentConfigX#+128)
; ControlType: 'Text' or 'Buttons'
ControlType=Buttons
[Metadata]
Name=RainVideo
Author=Eclectic Tech
Information=Play videos. Selectable frame size when no video is playing. Controls: quit, pause, step frame, repeat, fullscreen, volume up/down, mute when video has focus (left-click video first).
License=CC3-BY-SA-NC
Version=1.2020.09.27a
[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1
MiddleMouseUpAction=[!Refresh]
RightMouseUpAction=[!SkinCustomMenu]
ContextTitle=[\x25cb] Default Size
ContextAction=[!WriteKeyValue Variables Size 0][!WriteKeyValue Variables Default 1][!WriteKeyValue Variables Width 640][!WriteKeyValue Variables Height 34][!Refresh]
ContextTitle2=[\x25cb] 320X180 Size
ContextAction2=[!WriteKeyValue Variables Size 1][!WriteKeyValue Variables Default 0][!WriteKeyValue Variables Width 320][!WriteKeyValue Variables Height 180][!Refresh]
ContextTitle3=[\x25cb] 480X270 Size
ContextAction3=[!WriteKeyValue Variables Size 2][!WriteKeyValue Variables Default 0][!WriteKeyValue Variables Width 480][!WriteKeyValue Variables Height 270][!Refresh]
ContextTitle4=[\x25cb] 640X360 Size
ContextAction4=[!WriteKeyValue Variables Size 3][!WriteKeyValue Variables Default 0][!WriteKeyValue Variables Width 640][!WriteKeyValue Variables Height 360][!Refresh]
ContextTitle5=[\x25cb] 960X540 Size
ContextAction5=[!WriteKeyValue Variables Size 4][!WriteKeyValue Variables Default 0][!WriteKeyValue Variables Width 960][!WriteKeyValue Variables Height 540][!Refresh]
ContextTitle6=---
ContextAction6=[]
ContextTitle7=[\x25cb] Repeat
ContextAction7=[!WriteKeyValue Variables Repeat (1-#Repeat#)][!Refresh]
ContextTitle8=---
ContextAction8=[]
ContextTitle9=[\x25cb] Text Controls
ContextAction9=[!WriteKeyValue Variables ControlType Text][!Refresh]
ContextTitle10=[\x25cb] Button Controls
ContextAction10=[!WriteKeyValue Variables ControlType Buttons][!Refresh]
ContextTitle11=---
ContextAction11=[]
ContextTitle12=Refresh Position
ContextAction12=[!Refresh]
ContextTitle13=---
ContextAction13=[]
ContextTitle14=More Actions >>>
ContextAction14=[!SkinMenu]
;---Measures---
[mAccent]
Measure=Plugin
Plugin=SysColor
ColorType=DWM_COLOR
[MeasureContextSize]
Measure=Calc
Formula=#Size#
IfCondition=(#CurrentSection#=0)
IfTrueAction=[!SetOption Rainmeter ContextTitle "[\x25c9] Default Size"]
IfFalseAction=[!SetOption Rainmeter ContextTitle "[\x25cb] Default Size"]
IfCondition2=(#CurrentSection#=1)
IfTrueAction2=[!SetOption Rainmeter ContextTitle2 "[\x25c9] 320X180 Size"]
IfFalseAction2=[!SetOption Rainmeter ContextTitle2 "[\x25cb] 320X180 Size"]
IfCondition3=(#CurrentSection#=2)
IfTrueAction3=[!SetOption Rainmeter ContextTitle3 "[\x25c9] 480X270 Size"]
IfFalseAction3=[!SetOption Rainmeter ContextTitle3 "[\x25cb] 480X270 Size"]
IfCondition4=(#CurrentSection#=3)
IfTrueAction4=[!SetOption Rainmeter ContextTitle4 "[\x25c9] 640X360 Size"]
IfFalseAction4=[!SetOption Rainmeter ContextTitle4 "[\x25cb] 640X360 Size"]
IfCondition5=(#CurrentSection#=4)
IfTrueAction5=[!SetOption Rainmeter ContextTitle5 "[\x25c9] 960X540 Size"]
IfFalseAction5=[!SetOption Rainmeter ContextTitle5 "[\x25cb] 960X540 Size"]
UpdateDivider=-1
[MeasureContextRepeat]
Measure=Calc
Formula=#Repeat#
IfCondition=(#CurrentSection#=0)
IfTrueAction=[!SetOption Rainmeter ContextTitle7 "[\x25c9] Repeat"][!SetOption MeterRepeat Text "Repeat: On"]
IfFalseAction=[!SetOption Rainmeter ContextTitle7 "[\x25cb] Repeat"][!SetOption MeterRepeat Text "Repeat: Off"]
UpdateDivider=-1
[MeasureContextControlType]
Measure=String
String=#ControlType#
IfMatch=(?i)text
IfMatchAction=[!SetOption Rainmeter ContextTitle9 "[\x25c9] Text Controls"][!SetOption Rainmeter ContextTitle10 "[\x25cb] Button Controls"]
IfNotMatchAction=[!SetOption Rainmeter ContextTitle9 "[\x25cb] Text Controls"][!SetOption Rainmeter ContextTitle10 "[\x25c9] Button Controls"]
UpdateDivider=-1
[MeasureFocus]
Measure=Plugin
Plugin=IsFullScreen
IfMatch=ffplay.exe
IfMatchAction=[!SetVariable ButtonAlpha 255]
IfNotMatchAction=[!SetVariable ButtonAlpha 128]
[MeasureVideoSize]
Measure=String
String="-x #Width# -y #Height#"
UpdateDivider=-1
IfCondition=(#Default#=1)
IfTrueAction=[!SetVariable Width "640"][!SetVariable Height 34][!SetVariable XPosition (#CurrentConfigX#+128)][!UpdateMeter *][!Redraw]
IfFalseAction=[!SetVariable Width "#Width#"][!SetVariable Height #Height#][!SetVariable XPosition (#CurrentConfigX#+128)][!UpdateMeter *][!Redraw]
DynamicVariables=1
[MeasurePlaying]
Measure=Process
ProcessName=ffplay.exe
IfCondition=(MeasurePlaying=1)
IfTrueAction=[!DisableMouseAction Rainmeter "MiddleMouseUpAction|RightMouseUpAction"]
IfFalseAction=[!EnableMouseAction Rainmeter "MiddleMouseUpAction|RightMouseUpAction"]
[MeasureChoose]
Measure=Plugin
Plugin=FileChoose
GetTarget=1
CopyLink=1
LinkCache=%USERPROFILE%/Videos/
ReturnValue=WholePath
Command1=[!SetVariable File """$Path$"""][!WriteKeyValue Variables File """$Path$"""][!Update]
DynamicVariables=1
; Make the Title Pretty
[MeasureTitle]
Measure=String
String=#File#
RegExpSubstitute=1
Substitute="^.*\\(.*)\..*$":"\1"
DynamicVariables=1
; Play in pre-defined size window
[MeasurePlay0]
Measure=Plugin
Plugin=RunCommand
Parameter=ffplay "#File#" -left #XPosition# -top #CurrentConfigY# [MeasureVideoSize] -window_title "[MeasureTitle]" -hide_banner -loop #Repeat# -autoexit
OutputType=ANSI
State=Hide
StartInFolder=#@#ffmpeg
DynamicVariables=1
FinishAction=[!DeActivateConfig "#RootConfig#\Controls"]
; Play in default size window
[MeasurePlay1]
Measure=Plugin
Plugin=RunCommand
Parameter=ffplay "#File#" -left #XPosition# -top #CurrentConfigY# -window_title "[MeasureTitle]" -hide_banner -loop #Repeat# -autoexit
OutputType=ANSI
State=Hide
StartInFolder=#@#ffmpeg
DynamicVariables=1
FinishAction=[!DeActivateConfig "#RootConfig#\Controls"]
;---Styles---
[StyleText]
FontWeight=500
FontSize=11
FontColor=255,255,255,255
SolidColor=[mAccent]
Padding=5,5,5,5
AntiAlias=1
;---Meters---
[MeterUpperLeftCorner]
Meter=Shape
X=0
Y=0
Shape=Rectangle 1,1,(#Width#-2),(#Height#-2) | StrokeWidth (2*([MeasurePlaying]<0?)) | Stroke Color [mAccent] | Fill Color 0,0,0,1
DynamicVariables=1
Hidden=([MeasurePlaying]=1)?
[MeterPlay]
Meter=String
MeterStyle=StyleText
X=(#Width#-70)
Y=4
W=120
StringAlign=Center
Text=Play
LeftMouseUpAction=[!CommandMeasure MeasurePlay#Default# "Run"][!ActivateConfig "#RootConfig#\Controls" "#ControlType#.ini"]
Hidden=([MeasurePlaying]=1)?
DynamicVariables=1
[MeterChooseFile]
Meter=String
MeterStyle=StyleText
X=70
Y=4
W=120
StringAlign=Center
Text=File
LeftMouseUpAction=[!CommandMeasure MeasureChoose "ChooseFile 1"]
Hidden=([MeasurePlaying]=1)?
DynamicVariables=1
[MeterRepeat]
Meter=String
MeterStyle=StyleText
X=(#Width#*0.5)
Y=4
W=120
StringAlign=Center
Text=Repeat: #Repeat#
Hidden=([MeasurePlaying]=1)?
LeftMouseUpAction=[!WriteKeyValue Variables Repeat (1-#Repeat#)][!Refresh]
DynamicVariables=1
[MeterCurrent]
Meter=String
MeterStyle=StyleText
X=(#Width#*0.5)
Y=36
StringAlign=Center
ClipString=2
ClipStringW=(#Width#*0.5)
Text=[MeasureTitle]
Hidden=([MeasurePlaying]=1)?
DynamicVariables=1
Code: Select all
; ========= Metadata ==========
[Metadata]
Name=RainVideoControlsText
Author=Eclectic Tech deviantArt.com/eclectictech
Information=
; BY=attribution / SA=share-alike / ND=no-derivatives / NC=non-commercial
License=CC BY-SA-NC 3.0
Version=1.2020.09.27a
; ========= Variables ==========
[Variables]
ButtonWidth=120
ButtonAlpha=255
; Exchange the X & Y values below for vertical or horizontal buttons
HSpacing=r
VSpacing=4R
; ========= Skin Settings ==========
[Rainmeter]
Update=1000
AccurateText=1
DynamicWindowSize=1
Group=#RootConfig#
DefaultAlwaysOnTop=1
OnRefreshAction=[!ZPos +2][!HideMeterGroup Buttons]
ContextTitle=Horizontal Buttons
ContextAction=[!SetVariable HSpacing "4R"][!SetVariable VSpacing "r"][!UpdateMeter *][!Redraw][!WriteKeyValue Variables HSpacing "4R"][!WriteKeyValue Variables VSpacing "r"]
ContextTitle2=Vertical Buttons
ContextAction2=[!SetVariable HSpacing "r"][!SetVariable VSpacing "4R"][!UpdateMeter *][!Redraw][!WriteKeyValue Variables HSpacing "r"][!WriteKeyValue Variables VSpacing "4R"]
; ========= Measures ==========
[mAccent]
Measure=Plugin
Plugin=SysColor
ColorType=DWM_COLOR
[MeasureFocus]
Measure=Plugin
Plugin=IsFullScreen
IfMatch=ffplay.exe
IfMatchAction=[!SetVariable ButtonAlpha 255]
IfNotMatchAction=[!SetVariable ButtonAlpha 128]
[MeasurePlaying]
Measure=Process
ProcessName=ffplay.exe
[MeasureQuit]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "q""][!DeActivateConfig]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasurePlayPause]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "{Space}""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureStepFrame]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "s""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureBack10]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "{Left}""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureAhead10]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "{Right}""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureWave]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "w""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureVolUp]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "0""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureVolDn]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "9""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureMute]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "m""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
; ========= Meter Styles ==========
[StyleText]
FontWeight=500
FontSize=11
FontColor=255,255,255,255
SolidColor=[mAccent]
Padding=5,5,5,5
AntiAlias=1
[StyleButton]
FontWeight=500
FontSize=11
FontColor=255,255,255,#ButtonAlpha#
SolidColor=[mAccent]
Padding=5,5,5,5
AntiAlias=1
W=#ButtonWidth#
X=#HSpacing#
Y=#VSpacing#
; ========= Meters ==========
; Control Buttons
[HoverButtonControl]
Meter=Shape
X=0
Y=0
Shape=Rectangle 0,0,(#ButtonWidth#+8),26 | StrokeWidth 0 | Fill Color 0,0,0,1
MouseOverAction=[!ToggleMeterGroup Buttons][!UpdateMeter *][!Redraw]
DynamicVariables=1
[HoverButton]
Meter=String
MeterStyle=StyleText
X=60
Y=r
W=#ButtonWidth#
StringAlign=Center
StringStyle=Italic
Text=Toggle Controls
;Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[PauseButton]
Group=Buttons
Meter=String
MeterStyle=StyleButton
StringAlign=Center
Text=Pause/Play
MouseOverAction=[!UpdateMeasure MeasurePlayPause]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[StepFrameButton]
Group=Buttons
Meter=String
MeterStyle=StyleButton
StringAlign=Center
Text=Frame Step
MouseOverAction=[!UpdateMeasure MeasureStepFrame]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[Back10Button]
Group=Buttons
Meter=String
MeterStyle=StyleButton
StringAlign=Center
Text=Back 10 Sec
MouseOverAction=[!UpdateMeasure MeasureBack10]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[Ahead10Button]
Group=Buttons
Meter=String
MeterStyle=StyleButton
StringAlign=Center
Text=Ahead 10 Sec
MouseOverAction=[!UpdateMeasure MeasureAhead10]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[WaveButton]
Group=Buttons
Meter=String
MeterStyle=StyleButton
StringAlign=Center
Text=Next Stream
MouseOverAction=[!UpdateMeasure MeasureWave]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[VolumeUpButton]
Group=Buttons
Meter=String
MeterStyle=StyleButton
StringAlign=Center
Text=Scroll Volume
MouseScrollUpAction=[!UpdateMeasure MeasureVolUp]
MouseScrollDownAction=[!UpdateMeasure MeasureVolDn]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[MuteButton]
Group=Buttons
Meter=String
MeterStyle=StyleButton
StringAlign=Center
Text=Toggle Mute
MouseOverAction=[!UpdateMeasure MeasureMute]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[QuitButton]
Group=Buttons
Meter=String
MeterStyle=StyleButton
StringAlign=Center
Text=Quit
MouseOverAction=[!UpdateMeasure MeasureQuit]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
Code: Select all
; ========= Metadata ==========
[Metadata]
Name=RainVideoControlsButtons
Author=Eclectic Tech deviantArt.com/eclectictech
Information=
; BY=attribution / SA=share-alike / ND=no-derivatives / NC=non-commercial
License=CC BY-SA-NC 3.0
Version=1.2020.09.27a
; ========= Variables ==========
[Variables]
ButtonWidth=24
ButtonColor=[mAccent]
; Exchange the X & Y values below for vertical or horizontal buttons
HSpacing=r
VSpacing=4R
; ========= Skin Settings ==========
[Rainmeter]
Update=1000
AccurateText=1
DynamicWindowSize=1
Group=#RootConfig#
DefaultAlwaysOnTop=1
OnRefreshAction=[!ZPos +2][!HideMeterGroup Buttons]
ContextTitle=Horizontal Buttons
ContextAction=[!SetVariable HSpacing "4R"][!SetVariable VSpacing "r"][!UpdateMeter *][!Redraw][!WriteKeyValue Variables HSpacing "4R"][!WriteKeyValue Variables VSpacing "r"]
ContextTitle2=Vertical Buttons
ContextAction2=[!SetVariable HSpacing "r"][!SetVariable VSpacing "4R"][!UpdateMeter *][!Redraw][!WriteKeyValue Variables HSpacing "r"][!WriteKeyValue Variables VSpacing "4R"]
; ========= Measures ==========
[mAccent]
Measure=Plugin
Plugin=SysColor
ColorType=DWM_COLOR
[MeasureFocus]
Measure=Plugin
Plugin=IsFullScreen
IfMatch=ffplay.exe
IfMatchAction=[!SetVariable ButtonAlpha 255]
IfNotMatchAction=[!SetVariable ButtonAlpha 128]
[MeasurePlaying]
Measure=Process
ProcessName=ffplay.exe
[MeasureQuit]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "q""][!DeActivateConfig]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasurePlayPause]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "{Space}""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureStepFrame]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "s""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureBack10]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "{Left}""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureAhead10]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "{Right}""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureWave]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "w""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureVolUp]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "0""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureVolDn]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "9""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
[MeasureMute]
Measure=String
String=[MeasureFocus]
IfMatch=ffplay.exe
IfMatchAction=["#@#SendKey\SendKey.exe "m""]
IfNotMatchAction=[]
IfMatchMode=1
UpdateDivider=-1
DynamicVariables=1
; ========= Meter Styles ==========
[StyleText]
FontWeight=700
FontSize=11
FontColor=[mAccent]
SolidColor=0,0,0,255
Padding=5,5,5,5
AntiAlias=1
[StyleButton]
ImageAlpha=#ButtonAlpha#
SolidColor=0,0,0,1
Padding=5,5,5,5
AntiAlias=1
W=#ButtonWidth#
H=#ButtonWidth#
X=#HSpacing#
Y=#VSpacing#
MouseLeaveAction=[!SetOption #CurrentSection# ImageTint "255,255,255"][!UpdateMeter #CurrentSection#][!Redraw]
; ========= Meters ==========
; Control Buttons
[HoverButtonControl]
Meter=Shape
X=0
Y=0
Shape=Rectangle 0,0,#ButtonWidth#,#ButtonWidth# | StrokeWidth 0 | Fill Color 0,0,0,1
MouseOverAction=[!ToggleMeterGroup Buttons][!UpdateMeter *][!Redraw]
DynamicVariables=1
[HoverButton]
Meter=Image
MeterStyle=StyleButton
ImageName=#@#Images\arrow-down-w
X=r
Y=r
ImageAlpha=255
MouseOverAction=[!SetOption #CurrentSection# ImageTint "[mAccent]"][!UpdateMeter #CurrentSection#][!Redraw]
DynamicVariables=1
[PauseButton]
Group=Buttons
Meter=Image
MeterStyle=StyleButton
ImageName=#@#Images\play-w
MouseOverAction=[!SetOption #CurrentSection# ImageTint "[mAccent]"][!UpdateMeter #CurrentSection#][!Redraw][!UpdateMeasure MeasurePlayPause]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[StepFrameButton]
Group=Buttons
Meter=Image
MeterStyle=StyleButton
ImageName=#@#Images\pause-w
MouseOverAction=[!SetOption #CurrentSection# ImageTint "[mAccent]"][!UpdateMeter #CurrentSection#][!Redraw][!UpdateMeasure MeasureStepFrame]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[Back10Button]
Group=Buttons
Meter=Image
MeterStyle=StyleButton
ImageName=#@#Images\previous-w
MouseOverAction=[!SetOption #CurrentSection# ImageTint "[mAccent]"][!UpdateMeter #CurrentSection#][!Redraw][!UpdateMeasure MeasureBack10]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[Ahead10Button]
Group=Buttons
Meter=Image
MeterStyle=StyleButton
ImageName=#@#Images\next-w
MouseOverAction=[!SetOption #CurrentSection# ImageTint "[mAccent]"][!UpdateMeter #CurrentSection#][!Redraw][!UpdateMeasure MeasureAhead10]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[QuitButton]
Group=Buttons
Meter=Image
MeterStyle=StyleButton
ImageName=#@#Images\stop-w
MouseOverAction=[!SetOption #CurrentSection# ImageTint "[mAccent]"][!UpdateMeter #CurrentSection#][!Redraw][!UpdateMeasure MeasureQuit]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[WaveButton]
Group=Buttons
Meter=Image
MeterStyle=StyleButton
ImageName=#@#Images\arrow-up-w
MouseOverAction=[!SetOption #CurrentSection# ImageTint "[mAccent]"][!UpdateMeter #CurrentSection#][!Redraw][!UpdateMeasure MeasureWave]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[VolumeUpDnButton]
Group=Buttons
Meter=Image
MeterStyle=StyleButton
ImageName=#@#Images\audio-high-w
MouseOverAction=[!SetOption #CurrentSection# ImageTint "[mAccent]"][!UpdateMeter #CurrentSection#][!Redraw]
MouseScrollUpAction=[!UpdateMeasure MeasureVolUp]
MouseScrollDownAction=[!UpdateMeasure MeasureVolDn]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1
[MuteButton]
Group=Buttons
Meter=Image
MeterStyle=StyleButton
ImageName=#@#Images\audio-mute-w
MouseOverAction=[!SetOption #CurrentSection# ImageTint "[&mAccent]"][!UpdateMeter #CurrentSection#][!Redraw][!UpdateMeasure MeasureMute]
Hidden=([MeasurePlaying]=-1)?
DynamicVariables=1