# R A I N L E N D A R

Version 0.18

Info:
| Rainlendar is a very customizable calendar that resides on your desktop and shows the days of the current month. The calendar can use different skins to fit your taste (and theme). You can use different fonts and colors, select the background image or even make the calendar's background transparent. All the customization can be done with a simple GUI. The calendar can also synchronize the events with a server, which will allow you to use it e.g. at home and at work. There are plenty of other features too. Check the rest of this document for details.
Install:
| If you are in doubt, just get the installer version of Rainlendar from my web page (http://www.iki.fi/rainy) and run it. If you dislike installers, you can also get the zipped archive and uncompress it to some folder. Rainlendar is ready to be used after that. Installing for Litestep Rainlendar works also as Litestep's plugin. To install in Litestep grap the zip archive and just copy the Rainlendar.dll and the skin & language folders to your Litestep directory (e.g. C:\Litestep\). You don't need the Rainlendar.exe if you are using Rainlendar as Litestep plugin. After copying, open your step.rc and add following line: LoadModule C:\Litestep\Rainlendar.dll ... and recycle. If that doesn't work, check the config part of this document for additional step.rc commands that you might need. You can also put the Rainlendar in other folder if you like, just make sure that the LoadModule path points to the correct place (as well as other Rainlendar specific step.rc commands). Uninstalling If you installed Rainlendar with the installer you can uninstall it from the "Add or Remove Programs". Otherwise just delete all the files you uncompressed from the zip-file (make sure that Rainlendar isn't running when doing that). Setting up Rainlendar for multiple users It is possible to set Rainlendar up in such way that different users have their own settings and events. However this needs some tweaking to get it work correctly. First of all you need to create separate folders for each user and copy the Rainlendar.ini file to each them. The Rainlendar.exe must be started with the folder name give to it as argument. E.g. If you have created a folders called Bill and Bob and copied the Rainlendar.ini file to both of them, you can open the command prompt and start Bill's Rainlendar like this "Rainlendar.exe Bill" (you need to be in the Rainlendar's folder when doing that). Note that if you created the folders to some other place that under the Rainlendar folder, you need to use full path names. If you don't like the idea of using command prompt to start Rainlendar you can create a shortcuts instead. To do this, create a shortcut from Rainlendar.exe (right click on it and select Create Shortcut), open the shortcut's properties and add the name of your personal folder after the Rainlendar.exe in the target editbox. Also make sure that the "Start in" points to the correct folder (i.e. the place where Rainlendar.exe is).
Config:
| General Settings The basic configuration of the calendar is done from a GUI which you open from the popup-menu. The settings are saved in a Rainlendar.ini-file when you press the OK-button. The configuration dialog only has the general, layout and server settings. The skin settings can be found from the "Edit Current Skin..."-menuitem. General Event The event text can be shown in a tooltip when the mouse goes over an event day. Also a messagebox can be shown when Rainlendar is started on a day that has an event or when the day changes to a event day. Any command (or !Bang) can be executed on an event day (Leave the textbox empty if you don't want to execute anything). You can use %m to insert the event text in the command. Show Outlook appointments If selected the appointments from the Outlook is shown in the calendar like normal events. At the moment the Outlook's events are read-only in Rainlendar and therefore they cannot be edited or deleted. You need to use Outlook if you want to change something. Also, Outlook has more options to define repeating events than Rainlendar, so some appointments might not be shown in the correct place. The Outlook's appointments use a profile callend "Outlook" incase you want to customize their appearance. Start hidden If selected Rainlendar starts hidden. Be careful with this setting as the window can only be shown with !Bang-commands or hotkeys. This setting can be removed manually by removing StartHidden=1 line from the Rainlendar.ini file. Start weekdays from Monday If selected the first weekday in calendar is Monday. Otherwise it's Sunday. Disable hotkeys If selected the keyboard shortcuts are disabled. Use window name Names the window (as "Rainlendar") if enabled. BTW the class name of the window is also "Rainlendar", if you need that to make Rainlendar sticky in virtual desktop managers. Poll wallpaper changes If Rainlendar doesn't automatically notice wallpaper changes (as it should), you can enable this feature. When enabled Rainlendar checks once per second if the name of the wallpaper has been changed and if it has, the calendar is automatically refreshed. Snap to screen edges If selected the window will snap to the edges of the screen. You can deactivate the snapping by holding CTRL-key down while dragging the window. Use native Windows transparency If selected the calendar will use the native Windows transparency for its alphablended window. Otherwise the alphablending is done manually. Native transparency works only with Windows 2000 and XP. Note that native transparency cannot be used if the window is set OnDesktop. Refresh when screen resolution changes If selected the calendar is automatically refreshed when the screen resolution is changed. Note that this may cause issues with some DirectX games and applications. Week containing Jan 1st is the first week of the year This is an alternative week numbering that is used in some countries. Normally the week 1 is the one containing year's first Thursday. Use separator in tooltips If selected a horizontal line is drawn between the events in the tooltip. Layout Position The horizontal and vertical position of the calendar-window relative to top left corner. The width and height of the window is calculated automatically from the background size and from the items inside the window. The OnBottom makes the window to stay behind other windows when it's activated with mouse. Normal is a normal Z-positioning of the window and OnTop makes the calendar to stay on top of other windows. The OnDesktop setting is similar to OnBottom except that it makes a child window of the desktop. The benefit from this is that the calendar will be visible event if Explorer's "Show Desktop" command is issued. There are also few negative side-effects from using this (e.g. the keyboard shortcuts do not work and the calendar disappears from time to time especially when new skin is selected). The OnDesktop only works with Explorer shell. Other settings If "Movable window" is selected, the calendar can be moved with the mouse. Please note that if the background has an alpha mask or the desktop is copied behind the calendar, the moving is really slow and can cause problems with some graphics cards. So, I'd suggest to use this feature only with non-alpha backgrounds or with native transparency. The "Hide on mouse over" hides the calendar when the mouse is over the window. The calendar will reappear once the mouse is moved off the window. You can disable this feature temporarily by holding shift, alt or control button down while moving the mouse. "Remember dialog positions" will save the place (and size) where a dialog was closed last time and open it in the same location in the next time. With "Make negative coordinates relative to bottom right corner" enabled you can position the calendar e.g. to the bottom right corner and keep it there event if you change the screen resolutions. Note that if you have enabled "Movable window" the negative coordinates are converted to positive when the window is moved. Layout This defines how many months are shown in the calendar at the same time. You can set the horizontal and vertical count for the months as well as the the number of previous months are displayed. The "Start from January" option shows January always as the first month. This is useful if you want to show all year at the same time on the desktop. Hotkeys This page enables to add hotkeys to various actions. The hotkeys are global so it's not necessary to have Rainlendar activated when pressing the keys. It's adviced not to use too simple hotkeys (like Shift + A) since that would execute the hotkey every time you write capital A letter. S erver Enable server synconization If selected the events are syncronized with the server. Please note that the client-server syncronization is still an experimental feature. So, unless you know a little about how client-server TCP connections work and how your network is set up, perhaps you should skip this feature. Of course nothing prevents you from trying, after all the worst thing that can happen is that your harddrive corrupts and you lose all your data (just kidding, that should almost never happen :-) Ok, now that I've scared away most of the potential users, I can give some details about this feature. Address This is the address of the the computer that runs the RainlendarServer. You can use the IP number or the network name if the machine has one. Note that there is no public server that you can connect to (as far as I know), so you need to run the RainlendarServer on your own computer. Port The is the port that the Rainlendar tries to connect to. You can use any port you wish, just make sure that it's the same what RainlendarServer is listening. ID The ID is the identification for your events. The server will use the ID to store and retrieve the events. So, you can use the same server to store different events from clients by giving different IDs. Please note that there is no security checks or authentication of any kind, so basically anyone who can access to the server from network can read and modify your events. If you are running Linux version of the server, the ID is case sensitive. Update This defines how often the events are requested from the server. You can set this to zero to disable the automatic requests. Request events on startup If selected, the events are requested from the server when Rainlendar starts. Sync event before editing If selected, the event is synced with the server before you can edit it. Note that this does not guarantee that your modifications do not overwrite someone else's modifications if several people are sharing the same events (but it makes the chance smaller). Sync Now When clicked, all the events are sent immediately to the server and server's events are requested back. This is useful when testing the network connection. The status of the connection is displayed in the listbox above the button. The most important thing you should check is that the network thread completes successfully. If that doesn't happen it means that the thread hangs for some reason and the allocated resources are not free'ed. In that case I suggest that you write a comprehensive bug-report and send it to me. It is also possible that the server locks up sometimes (especially if you click the Sync Now-button repeatedly). The server will in that state just inform that it's busy and cannot serve you at the moment. If that happens you should just wait a while as the server should reset itself in couple of minutes automatically (if it doesn't, restart it manually and write a comprehensive bug-report :-). Skinning Settings The skin files can be edited from the GUI or poking directly to the ini-files. Check Skinning.txt for more info. Step.rc These are Litestep specific settings that are placed in the step.rc file. Remember to put the paths inside quotes if you have spaces in them! RainlendarPath This defines the path to the Rainlendar.ini file, which contains the general settings. RainlendarEventsPath This defines the path to the Events.ini file, which contains the user defined events. If this is not defined the RainlendarPath is used instead. RainlendarSkinsPath This defines the folder where the skin subfolders are. If this is not defined the RainlendarPath is used instead. RainlendarLanguagesPath This defines the folder where the language files are. If this is not defined a Language-folder under the RainlendarPath is used instead. RainlendarCurrentSkin The name of current skin. This can be used to force the use of some skin. This overrides the settings in Rainlendar.ini. You must also define RainlendarCurrentSkinIni. RainlendarCurrentSkinIni The name of current skin ini-file.
Bangs:
| The Rainlendar can be controlled also with Litestep !Bang-commands. You can also give the !bangs as command line arguments for Rainlendar.exe (note that this does not work if Rainlendar is OnDesktop). !RainlendarShow [Activate] Displays the Rainlendar-window. If the parameter is given the window is activated and put on top of the other windows (this doesn't work if OnBottom window position is selected). !RainlendarHide Hides the Rainlendar-window. !RainlendarToggle Toggles the Rainlendar-window. !RainlendarConfig Opens the config-dialog. !RainlendarEditSkin Opens the edit skin -dialog. !RainlendarRefresh Refreshes the Rainlendar-window. !RainlendarQuit Quits Rainlendar. !RainlendarShowNext Shows the next month. !RainlendarShowPrev Shows the previous month. !RainlendarShowMonth [Month] [Year] Shows the given month. If Year is not given the current year is used. If the month is also omitted then the current month is shown. !RainlendarShowCurrent Shows the today's month. !RainlendarLsBoxHook The !bang to put Rainlendar in a lsBox. !RainlendarMove [X] [Y] Moves the calendar window to a new position. !RainlendarZPos [ZPOS] Changes the Z-position of the window. Values for ZPOS are: 0 = OnBottom, 1 = Normal, 2 = OnTop, 3 = OnDesktop.
Legal:
| This program is free software. It is released under GNU General Public License as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Please note that this software is still in beta-state and is most likely to have defects and may not work as it should. Use it at your own risk. The author is not responsible for any damage, direct or indirect, that this software may cause. This product includes software developed by Lee Patterson (http://ssobjects.sourceforge.net/).
Contact:
| The latest version will be found from my homepage at: http://www.iki.fi/~rainy/ You may also send comments and bug-reports to author: rainy@iki.fi Please put the name of the product (i.e. Rainlendar) in the subject-field of the mail. It may be useful if you write the version of the product also. If you are reporting a bug, please try to be as exact as possible when describing the symptoms. Also some details of your system (like OS version, Litestep build, and so on) might be helpful. It might also be helpful if you include the log-file that Rainlendar creates when sending bug-reports. On standalone version you can activate the log-file by creating an empty file called Rainlendar.log into the same forder where Rainlendar.dll is. If Rainlendar is ran as Litestep's plugin the log is written with into the Litestep's logfile (just activate it in your step.rc). Also check the Rainlendar's section in the Forum. It might already contain answers to your questions.
History:
| 4 OCT 2003 (Version 0.18 ß) It wasn't possible to add new events on days that already had repeating events. Fixed. Improved the support for Outlook. It's still far from perfect though. Added EventDrawAlways for profiles. Added word wrapping to the tooltips. No GUI for it yet, but add ToolTipMaxWidth=500 to Rainlendar.ini to limit the tooltip window's width to 500 pixels. The skin-list is now updated when the calendar is refreshed. The Language-folders path defaults now to the folder where Rainlendar.dll is located. Automatic refresh after suspend mode should work again. Added priority system which defines what to display when a single day has several events. 23 AUG 2003 (Version 0.17.1 ß) Months in the context menu and some other texts weren't translated. Fixed. Some texts weren't translated at all or were wrong. Fixed. 9 AUG 2003 (Version 0.17 ß) OnDestop radiobutton wasn't in the same group as other. Fixed. Enlarged the dialogs a bit so that localized strings will fit better. The DLL doesn't assume that its name is "Rainlendar.dll" anymore. Newlines are removed from the event messages in the All Events -dialog. Profiles and ordinals can be also localized. The Outlook sync rate is now user definable and it can be also updated manually. The window is not activated anymore during refresh (Note that Outlook sync does still activate the window). Server synchronization got stuck if there were no events to be sent. Fixed. Yearly Outlook appintments were displayed in every 12 years in Rainlendar. Fixed. The current year can be changed with up and down keys. Added support for XP styles. Rewrote the Edit Event -dialog. Double click on the All events -dialog allows editing of the selected event. Added new option: Remember dialog positions. Bottom right corner relative negative coordinates are now optional. Native transparency is disabled if OnDesktop is selected and vice versa (they are incompatible settings). Deleted events weren't propagated to other clients. Fixed. Rainlendar shouldn't crash anymore if one of the images is missing. The message box wasn't shown when day changed. Fixed. 15 JUN 2003 (Version 0.16 ß) Negative y-coords didn't work. Fixed. Added an option to show Outlook appointments in the calendar. The background was clipped when native transparency was not used. Fixed. "!RainlendarShow Activate" didn't work if executed with Rainlendar.exe. Fixed. Added an option to start the week numbering from the week that contains January 1st. Snapping should work now on all monitors. Added option to sync with the server before adding/editing an event. Added an error message if the server has a newer version of an event than the one sent to it. The calendar is refreshed automatically after Windows returns from suspend state. Switching on the native transparency while the calendar is set OnDesktop should work a bit better now. The events for the same day are now sorted, so they should be always in the same order. Added option to use separator line between events in the tooltip. Added a dialog that shows all the events at the same time. Added support for external language files for easier localization. Stretching non-alpha backgrounds messed up the alpha channel. Fixed. Added possiblity to show several months at the same time. 3 FEB 2003 (Version 0.15 ß) Added !RainlendarMove and !RainlendarZPos bangs. Fixed a bug that crashed the program if server name was empty. Made the refresh on screen resolution optional, since it caused problems with some games. The size of the today-image wasn't included in the window size calculation so part of the image was clipped in few skins. Fixed. 23 NOV 2002 (Version 0.14 ß) The skins are loaded from the skins-subfolder by default. The events path now defaults to the same folder where the Rainlendar.ini file is. Fixed a bug that put wrong week number if the first day of the month was sunday. Fixed a bug that sometimes caused multiplication of events when they were deleted. Added support for icons in event profiles (check the shadow3-skin for examples). Added PNG support for easier alpha transparency handling. Improved the wallpaper polling routine; now it checks the timestamp too. Added support for native Win2k/XP transparency. Use Window Name -option was broken. Fixed. Fixed a bug that caused a wrong day to be selected sometimes when the calendar was double clicked. Added support for solid background with an optional bevel edge. Added OnDesktop option to keep the calendar visible even with Explorer's "Show Desktop" feature. 24 AUG 2002 (Version 0.13 ß) Messages are trimmed before they are sent to the server (to keep them below 1000 chars). Removed mouse hooking code due to compatibility problems. Added support for Litestep logging so it's easier to find bugs. Fixed a bug that caused Litestep to crash after recycle. Changing the months should be a bit faster now. Added "Copy to Clipboard" button in the server config dialog. 10 AUG 2002 (Version 0.12 ß) The window is now opened below all other windows when the position is set OnBottom. Added an option to snap the window on the screen edges when it is moved. Added !RainlendarLsBoxHook. Fixed a bug that left the 'm' on the line when %m was used in the "Execute on event". Added repeating events for daily, weekly, monthly and annual events. Added profiles for event customization (check skinning.txt for more info). Tooltip color & font can be changed from the skin settings. !RainlendarShow can be executed with "activate" argument, which activates the window and puts it on top of other windows (doesn't work with OnBottom). 11 JUN 2002 (Version 0.11 ß) Fixed a bug that set the dates to start from wrong day when the day changed. Moving transparent window should be slightly faster now. It was not possible to change the typeface of the fonts. Fixed. Week numbers were not put in all lines that had days. Fixed. Added possibility to set the separation (i.e. the space between) of the numbers in days, today, event, year and week numbers. Separated the general settings and skin settings in different ini files. The skin settings override the general settings. Now it is possible to change the skin from the context menu. Negative coordinates are saved as zero to prevent the window to be placed off screen. The GUI is back. You can once more change the skinning settings with it. Added RainlendarSkinsPath step.rc command which defines the path for the skins. Added RainlendarCurrentSkin and RainlendarCurrentSkinIni which will select the given skin. Added !RainlendarEditSkin bang, which will open the skin editor dialog. 3 JUN 2002 (Version 0.10 ß) Removed all MFC code from the Rainlendar.dll. Added RainlendarEventsPath step.rc command. The Rainlendar.ini file is only saved if it hasn't been changed by the user (this prevents overwriting manual modifications to the Rainlendar.ini). Rainlendar is not anymore dependant on lsapi.dll. It only uses lsapi.dll's functions if ran as Litestep plugin. Removed all skinning stuff from the GUI. 2 MAR 2002 (Version 0.9 ß) Added support for distribution of Rainlendar's events. Check the Server part in the documentation for more info. The calendar is automatically refreshed when the screen resolution changes. Multimonitor functions are only used if the the OS supports them. Fixed a bug with stretched wallpapers having noise pixels in the calendar window. Now it is possible to use Rainlendar.exe to send the !bangs to the calendar (Only Rainlendar's !bangs work). The items can be aligned a bit more freely on the calendar. This might affect existing configs, so check the Align-widget if something is in wrong place. The background image can now be automatically stretched or tiled if it's too small for the calendar. Added option to check if the name of the wallpaper has been changed since last refresh. And if it has, the calendar is automatically refreshed. Added an About-dialog. Rainlendar supports now Litestep's $evar$-variables The calendar window can be moved with the mouse. Note that moving alphamasked calendar might cause problems with some gfx-cards. Added support for OnTop, OnBottom and Normal positioning of the window. Added support for transparency, which is based on window regions. Use magic pink color (FF00FF) in the background picture for transparent pixels (Note that you cannot use alphamask with the background). Added an option to hide the window automatically when mouse is over the calendar (like in Rainmeter). 15 JAN 2002 (Version 0.8 ß) Fixed a bug that prevented Rainlendar to find all its files if the command line argument was surrounded with quotes. Changed the way the calendar is refreshed. Now it works even if there are other windows over it during the refreshing. Now it is possible to define custom color/bitmap for different events. Added possibility to show the event texts in the calendar window. Fixed a memory leak during the refresh. Added week numbers. They are calculated according to the ISO 8601-standard, so in countries that do not follow international standards (like in the U.S.) the week numbers might be incorrect. The bitmap rasterized years are now placed in correct position. By default Rainlendar.exe tries to load the configuration from a folder called Default. So, now it can be started without the need to give any arguments to the exe. Removed the start delay option as it is quite unnecessary at the moment (let me know if someone wants it back :-). 26 DEC 2001 (Version 0.7 ß) Now linked dynamically against MFC. You need might need to update your MFC42.DLL to run this. Fixed small gfx-bugs in the dialogs. The window name is now optional and can be disabled from the config-dialog. The Quit button is grayed out if Rainlendar is ran as Litestep plug-in. Added Wharf-interface so Rainlendar can be put inside a lsBox. 3 DEC 2000 (Version 0.6 ß) Added new menu item to jump to the current month and a equivalent !bang for it (!RainlendarShowCurrent) Added possibility disable hotkeys from the config. Added hotkeys for changing the months. Note that key presses must be clean, i.e. modifiers (alt, shift, ...) cannot be used. This prevents accidental keypresses with vwm. Also note that that the calendar window must be active for hotkeys to work. Rainlendar's window now has a name "Rainlendar" 2 OCT 2000 (Version 0.5 ß) Fixed to work with the latest lsapi.dll's. Rainlendar.exe now accepts quoted path as argument. Fixed a bug that prevented the background image to display fully. 4 JULY 2000 (Version 0.4 ß) Months can now cycled with cursor-keys. Added few bangs: !RainlendarShow, !RainlendarHide, !RainlendarToggle, !RainlendarRefresh, !RainlendarConfig, !RainlendarQuit, !RainlendarShowNext, !RainlendarShowPrev, !RainlendarShowMonth [Month] [Year] Added possibility to start the calendar hidden. Changed the double buffering to full window version. This should reduce flickering. 13 MAY 2000 (Version 0.3 ß) Changed the way how days are calculated. Added possibility to display the current event in a MessageBox. Added possibility execute a command (or !Bang) on a event-day. You can use %m for the event-message. Added event days to display important dates. Doubleclick on a day to insert a text. Added new tab in config-dialog to set the appearance of event days. Alpha-Bitmaps can now have full path as well. Displayed month can be selected form the context- menu. 6 APRIL 2000 (Version 0.2 ß) Removed the Reload-menuitem. RefreshDelay moved to the ini-file. There is no GUI for setting it, so you'll have to edit the ini-file by hand. Month & weekday names are now in the ini-file for localization purposes. Changed the way alpha-transparency is calculated. Magic Pink works now for the background too. Auto-refreshes when the day changes. 26 MARCH 2000 (Version 0.1 ß) Initial Betarelease