Short: Screen clock with calendar Author: Kim Fastrup Larsen Uploader: kimflarsen hotmail com (Kim Fastrup Larsen) Type: util/time Version: 1.5.3 Architecture: m68k-amigaos >= 2.0 New in version 1.5.3: --------------------- - Now includes Turkish translation by Serkan Dursun. - If the format does not include seconds, ScreenTime will now only refresh when the current minute changes in order to minimize CPU and blitter usage. What is ScreenTime? ------------------- ScreenTime is a commodity that will display the current time on the Workbench or any other public screen. By default, ScreenTime will open a small borderless window on top of the screen bar, adopting the font and colors of the screen to make it look like it's part of it, but the position, font or colors can all be configured using tool types or Shell argu- ments. When running on Workbench 2, ScreenTime will use a simple hh:mm:ss format. On Workbench 2.1 or later, you can choose between a number of formats defined by your locale that show different combinations of time and date, or you can create your own custom format that can also include things like day of the week and week number. A calendar for the current month can be brought up by click- ing on the clock, or using a configurable hot key, and from here the user can browse through past and future months. ScreenTime requires Kickstart 2 or later. Full source code is included. Installation ------------ To have ScreenTime start automatically whenever you boot your system, simply run the installer included. This will install ScreenTime in SYS:WBStartup, or update it there if it is already installed. Updating in this manner will not replace the icon, so you will not lose your current configu- ration. The installer will also install language files for existing languages. ScreenTime currently supports English, Danish, German, Greek and Italian and Turkish. Operation --------- Clicking the clock will bring up a calendar for the current month. You can also define a global hot key for bringing up the calendar (more on this below). A pair of buttons allow you to browse through other months. Alternatively, you can use the left and right arrow keys on your keyboard for the same purpose. Click the clock again or press Esc (or the global hot key) to dismiss the calendar. You can run multiple instances of ScreenTime at the same time if you want the time displayed on several screens at once, but only one for each screen. Each instance will be given a different commodity name that includes the screen name so that they can be told apart in Commodities Exchange. To remove an instance of ScreenTime, run it again (using the same screen specification) or use Commodities Exchange. You can also quit from the menu when the calendar is open. Note that if you change your system time, it can happen that the clock stops updating due to the manner in which it waits for the system time to change. The program is still running just fine, but it might be waiting for a moment in time that is now far in the future. If this happens, you will need to restart the program or use Commodities Exchange to de- and reactivate it. Configuration ------------- If you start ScreenTime from the Workbench or by placing it in WBStartup, you configure it through tool types. If you start it from a Shell or the User-Startup, you use command line arguments. You specify the desired format using the FORMAT tool type or argument. There are six different locale-defined formats to choose from: TIME DATE DATETIME SHORTTIME SHORTDATE SHORTDATETIME What you get in each case depends on your locale. Some of them may give the same result in some locales. By default, ScreenTime will use the TIME format, equivalent to using FORMAT=TIME You can also create your own custom format. For example, FORMAT=%a %q:%M will show the abbreviated week day, followed by a space, followed by the hour (in 24-hour format), followed by a colon, followed by the minutes. You can include any characters in the string, but every ap- pearance of a % character followed by a single letter is taken as a command to insert a particular element of the current time into the string at that position - to display an actual % character, use %%. The commands available are defined by the locale. They are: %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s You specify which public screen you want the time displayed on by using the PUBSCREEN tool type or Shell argument. Use MARGIN_TOP and MARGIN_RIGHT to specify the position of ScreenMenu's window. The default values are 1 and 30, re- spectively. Use FONT_NAME and FONT_SIZE to specify the font. The font name must include the .font suffix, as in FONT_NAME=topaz.font FONT_SIZE=8 If no font is specified, ScreenMenu will use the screen font. Likewise, if no size is specified, the size of the screen font will be adopted. You can specify the colors to be used with TEXT_COLOR and BACKGROUND_COLOR. If left unspecified, ScreenTime will adopt the colors of the screen bar. If the value of a color is a simple number, it indicates a pen number, for example: TEXT_COLOR=1 The pens are defined by the screen on which the clock is displayed. For the Workbench screen, you can use the Palette system preferences tool to define pens. On Kickstart 3 and later, you can specify colors using RGB values. These are specified with a # followed by a hexadeci- mal number, which can be either 3 or 6 digits. For example, TEXT_COLOR=#f50 This sets red to f, green to 5 and blue to 0. For full 24-bit precision on AGA systems, you can use 6 dig- its, using a pair of digits for each of red, green and blue. For example, TEXT_COLOR=#fa520a This sets red to fa, green to 52 and blue to 0a. For RGB values, ScreenTime will attempt to obtain a shared pen from the screen on which it is displayed. How successful this will be depends on how many pens the screen is sharing and how many of those are already in use by other programs. In any case, you will get the closest possible color to your specification, or the default pen if it was not possible to get a shared pen. You can specify the position of the calendar using CALENDAR_X and CALENDAR_Y. If you specify a position that is outside the bounds of the screen, it will be adjusted to place the calendar along the edge. By default, the calendar will be positioned just below the screen bar at the right edge of the screen. You can define a global hot key for bringing up the calendar using CALENDAR_POPKEY. By default, no hot key is defined. You can specify the font to be used for the calendar with CALENDAR_FONT_NAME and CALENDAR_FONT_SIZE. The default is to use the screen font. The colors used for rendering the calendar can be specified with CALENDAR_TEXT_COLOR and CALENDAR_BACKGROUND_COLOR. If left unspecified, the standard text and background pens from the system preferences are used. Using TODAY_COLOR, you can specify an alternative color with which to highlight the current date. Furthermore, you can choose a rendering style with a combination of the following tool types or Shell arguments: TODAY_INVERSED TODAY_BOLD TODAY_ITALIC TODAY_UNDERLINED These take a YES/NO value, for example: TODAY_BOLD=YES The default behavior is to render the current date in in- verse using the same color as the rest of the calendar. If you do not wish to use inverse rendering, you must therefore disable it, like this: TODAY_INVERSED=NO There are abbreviations available for some of the command line arguments when using a Shell or the User-Startup. They are as follows: TOP for MARGIN_TOP RT for MARGIN_RIGHT FNAM for FONT_NAME FSIZ for FONT_SIZE COL for TEXT_COLOR BG for BACKGROUND_COLOR CALX for CALENDAR_X CALY for CALENDAR_Y CALKEY for CALENDAR_POPKEY CALFNAM for CALENDAR_FONT_NAME CALFSIZ for CALENDAR_FONT_SIZE CALCOL for CALENDAR_TEXT_COLOR CALBG for CALENDAR_BACKGROUND_COLOR TODCOL for TODAY_COLOR TODINV for TODAY_INVERSED TODBOL for TODAY_BOLD TODITA for TODAY_ITALIC TODUND for TODAY_UNDERLINED Miscellaneous ------------- Thank you to Stefan Haubenthal for the German translation, to Samir Hawamdeh for the Italian translation, to Anthony Iliakis for the Greek translation, to Serkan Dursun for the Turkish translation, and to the various people who gave sug- gestions and feedback that helped me improve ScreenTime! Check out some of my other Amiga software on Aminet: Harmonics - mus/edit/harmonics.lha - A simple additive synthesizer. KoalaView - gfx/show/KoalaView.lha - View and convert Commodore 64 images with authentic looking colors. Labyrinth - game/misc/labyrinth64.lha - Remake of the Commodore 64 game Labyrinth published by Commodore in 1983. Space Invaders - game/shoot/spaceinv.lha - Arcade perfect and system friendly. ToolsMenu - util/cdity/ToolsMenu.lha - Add tools and projects to the Workbench menu, using a simple interface similar to FKey. History: -------- 1.5.3 (Feb 24, 2023) - Now includes Turkish translation by Serkan Dursun. - If the format does not include seconds, ScreenTime will now only refresh when the current minute changes in order to minimize CPU and blitter usage. 1.5.2 (Feb 3, 2023) - Now includes Greek translation courtesy of Anthony Iliakis. - Minor optimizations. 1.5.1 (Dec 2, 2022) - Calendar code no longer relies on the Standard C Library time functions, but uses the utility.library and handwrit- ten code instead, thereby avoiding problems with broken implementations of mktime, as well as hopefully ensuring that the program will keep working for the rest of this century. 1.5 (Nov 18, 2022) - Added options to control the calendar font and colors, as well as the rendering style of the current date. - Colors can now be specified using RGB values on Kickstart 3 and later. - Fixed: Some memory related to the calendar hot key did not get released on program exit. 1.4.1 (Mar 19, 2022) - Fixed an Enforcer hit if the user activated the calendar with the global hot key while the clock window was closed in response to the Workbench screen being closed. 1.4 (Jan 6, 2022) - If screennotify.library is available, a clock on the Work- bench screen will now automatically close and reopen when the Workbench needs to close and reopen its screen. - The user can now define a global hot key for bringing up the calendar. - The calendar window now sports a menu. - Now comes with an install script. 1.3 (Feb 1, 2021) - The placement of the calendar can now be specified with tool types or Shell arguments. - The calendar can now be dismissed by pressing the Esc key. - Added abbreviations for several of the Shell arguments. - Added the DONOTWAIT tool type to the program icon. 1.2.2 (Mar 31, 2020): - Fixed a bug in the calendar where, if you were on the last day of the month, the next and previous month would be incorrectly rendered. 1.2.1 (Jan 24, 2020): - Tried to make the calendar layout routines more compatible with certain patches or versions of the AmigaOS that mess with window title bars and cause problems when precalcu- lating the size of windows that do not have titles. - Removed the spacing added in 1.2 since it might not be de- sirable when using alternative colors, and since it can be added manually using the format string anyway. - Now includes Italian translation by Samir Hawamdeh. 1.2 (Jan 16, 2020) - Clicking the clock now pops up a calendar for the current month. Months can be browsed using buttons or the arrow keys. Click the clock again to close the calendar. - Added a bit of spacing at the left edge of the clock to cover very long screen titles. - Now includes German translation by Stefan Haubenthal. 1.1 (Dec 17, 2019) - Added options to specify position, font and colors. 1.0 (Dec 8, 2019) - Initial release.