This is a simple GUI timer that can count up and down, and play sound when reaches 0.
The timer shows hours, minutes and seconds from left to right. You can set the time by clicking on the section of the timer and typing in the numbers.
On the right side there are three buttons:
- Top button, starts the timer counting up.
- Bottom button, starts the timer counting down.
- Middle button pauses the timer, or if long pressed rests to the value that was set before the countdown started.
When the timer reaches zero it plays a sound. Unless specified otherwise it would be the melno.wav file in the "current directory". In this alarm state all controls are disabled except the middle button which will stop the sound and reset the timer when pressed.
There a usual concept of focus that works with mouse and keyboard controls for it. Tab and Shift+Tab keys will move the focus between the controls. When focused on a section of time display you can input a number. When focused on a button you can press it with the Space key (long press would also work).
Note that you can start several instances of the application at the same time, they don't remember any state and should not interfere with each other.
When starting the application from command line there are 8 positional parameters that you can specify:
- The name of the audio file to be played when timer reaches 0 (default: ./melno.wav). Currently only WAV format is supported. You can specify an empty string to disable sound.
- The hours to set the timer to (default: 0).
- The minutes to set the timer to (default: 0).
- The seconds to set the timer to (default: 0).
- The primary/foreground color of the UI, specified as a number/code. (default: 0x009dff).
- The secondary/background color of the UI, specified as a number/code. (default: 0x000000).
- The frame time in milliseconds (default: 33).
- The frame time when the application is minimized, in milliseconds (default: 256)
Any invalid input (non existent files, wrong file formats, wrong number formats, etc.) will gracefully crash the application.
The audio file is loaded into memory in its entirety when the application starts, so be careful with large files.
Below are build instructions for GNU systems (including cygwin on Windows), primarily using make
. If that does not suit your needs it should not be hard to set this project up with your favorite build system IDE. See the dependencies in the next section.
Basic setup
Compile and run
More on some of these makeshift tools
libsdl2
libsimple_graphical
libsimple_interactive
libsimple_musical
libsimple_geom
libsimple_support
libsimple_sdlcore
cpp_tools
The SDL2 headers are expected to be in a directory named SDL2. libsimple are all static libraries. cpp_tools is only necessary for building with GNU make as outlined in the previous section.
There are also source archives in releases, which have all the simple libraries included, so using that you won't have to individually setup those.
COPYRIGHT and LICENSE apply to all the files in this repository unless otherwise noted in the files themselves.