R A I N L E N D A R

Version 0.9

Info:
 
 
 
 
 
 
Rainlendar is a very customizable calendar that resides on your desktop and shows the days of the current month. The application is a Litestep plugin, but it can be used without the Litestep as well. You can use it even with the normal Explorer-shell if you like.

The calendar can be customized to fit your taste (and theme). You can use different fonts and colors, select the background image or just use copy of the current wallpaper. All customization can be made with a GUI, so no hassle with cryptic configuration-files or registry entries.

 
Install:
 
 
 
 
 
 
Installing for Litestep

To install just copy the Rainlendar.dll and the example folder (Default) to your Litestep directory (e.g. C:\Litestep\). You don't need the Rainlendar.exe if you are using Rainlendar as Litestep plugin. Also do not copy the included lsapi.dll over your original file as Litestep might not work after that (or at least it might become unstable). After copying, open your step.rc and add following lines:

LoadModule C:\Litestep\Rainlendar.dll
RainlendarPath C:\Litestep\Default\

... and recycle. Set the paths to point where you copied the files. RainlendarPath points to the folder where Rainlendar.ini-file is located. All files in the ini-file are also relative to that folder unless you are using absolute pathnames.

Installing for some other shell (like Explorer)

Copy all the stuff in the zip-file to some location (e.g. C:\Program files\Rainlendar\) and run Rainlendar.exe.

When Rainlendar is ran directly from the exe, it loads the configuration file from a folder called Default. You can also use different folder by giving its name as a command line argument for Rainlendar.exe. Probably the easiest way to to do that is to create a shortcut for the Rainlendar.exe and modify it. Add in the target-file after the Rainlendar.exe the path where the Rainlendar.ini is located (i.e. just the path, not the ini-file!). E.g.

"C:\Program files\Rainlendar\Rainlendar.exe" "C:\Program files\Rainlendar\Default\"

If you want Rainlendar to start every time Windows starts, move the shortcut to your startup-folder. To do that right-click on the Start-button and select Open. Go to Programs\Startup and move the shortcut of Rainlendar.exe there.

Uninstalling

To uninstall, just delete all the files you uncompressed from the zip-file (make sure that Rainlendar isn't running when doing that). If you copied the shortcut to your startup-folder, delete that also.
 

 
Config:
 
 
 
 
 
 
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. All the images can have pink (#FF00FF) as transparency or use real alpha-map. The items (numbers) in the image can be placed either horizontally or vertically. The correct placement is determined from the dimensions of the image (i.e. whichever is bigger: height or width). The images must be cropped so that they don't hold any extra space and their width (or height) must be divisional with the number of items in the image. Only BMP-files are supported for now (PNG might also work on recent Litestep builds).

Please note that if you disable all items on the calendar the window won't have any size and it will be impossible to quit it. You'll have to kill the process in order to quit the program.

Here is some info what everything means:

General

Position
The horizontal and vertical position of the calendar-window relative to top left corner. The coordinates can also be negative in which case the position is relative to bottom right 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.

If "Movable window" is selected, the calendar can be moved with the mouse. Please note that if the bacgroud 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.

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 of control button down while moving the mouse.

Background
The filename of the background picture to use behind the calendar. You can also select if you want the image to be tiled or stretched if it's too small for the calendar window. It's also possible to grab the desktop behind the calendar and use it as background.

Start hidden
If selected Rainlendar starts hidden. Be careful with this setting as the window can only be shown with !Bang-commands. 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.

Days

Enable days
If selected the days will be drawn on the calendar.

Position & Size
Position and the size of the area where the days will be drawn. Tha area will be divided in 7 columns and 6 rows. The coordinates are relative to the top left corner of the calendar window.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the days are drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw the days. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the numbers. The bitmap can be composed of 10 or 32 numbers. If 10 numbers is used they must be defined from 0 to 9. With 32 numbers they are defined from 0 to 31 (Note tha the 0-number is never used, so it may hold anything). All the numbers must be same size.

Don't display event days
Skips the event days when drawing the days. This is useful for example when using different font to display the event days.

Don't display today's day
Skips the current day when drawing the days. This is useful for example when using different font to display the current day.

Today

Enable todays
If selected the today's number/image will be drawn on the calendar.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the today is drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw today's number. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the numbers. The bitmap can be composed of 1, 10 or 32 numbers. If the whole image is used to show today (e.g. it's a circle that will be drawn over the today's number), then select 1. If 10 numbers are used they must be defined from 0 to 9. With 32 numbers they are defined from 0 to 31 (Note tha the 0-number is never used, so it may hold anything). All the numbers must be same size.

Weekdays

Enable weekdays
If selected the weekdays will be drawn on the calendar. Note that the weekdays are placed automatically over the days, so you must set the Y-coordinate for the days more than 0 or you won't see the weekdays.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the weekdays are drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw the weekdays. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the weekdays. The bitmap must be composed of 7 items (the names of the days). The weekdays start always from Sunday, even if you have selected Start weekdays from Monday from the general-tab. All the weekdays must be same size.

Week Numbers

Enable week numbers
If selected the week numbers will be drawn on the calendar.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the today is drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw today's number. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the numbers. The bitmap can be composed of 10 or 54 numbers. If 10 numbers are used they must be defined from 0 to 9. With 54 numbers they are defined from 0 to 53 (Note tha the 0-number is never used, so it may hold anything). All the numbers must be same size.

Months

Enable month
If selected the current month will be drawn on the calendar. 

Position
Position where the current month will be drawn. The position depends on the alignment, so for example if the align is set to center the X-coordinate defines the center position of the month. The coordinates are relative to the top left corner of the calendar window.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the month is drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw the month. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the months. The bitmap must be composed of 12 items (the names of the months). All the months must be same size.

Year

Enable year
If selected the current year will be drawn on the calendar. 

Position
Position where the current year will be drawn. The position depends on the alignment, so for example if the align is set to center the X-coordinate defines the center position of the month. The coordinates are relative to the top left corner of the calendar window.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the year is drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw the year. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the year. The bitmap must be composed of 10 numbers from 0 to 9. All the numbers must be same size.

Event Days

Enable event days
If selected the event days will be drawn on the calendar.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the event days are drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw event days' numbers. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the numbers. The bitmap can be composed of 1, 10 or 32 numbers. If the whole image is used to show the event days, then select 1. If 10 numbers are used they must be defined from 0 to 9. With 32 numbers they are defined from 0 to 31 (Note tha the 0-number is never used, so it may hold anything). All the numbers must be same size.

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. You can also display the actual event texts in the calendar window.

Server

Enable server synconization
If selected the events are syncronized with the server. Please note that the client-server syncronization  is highly experimental and complitely untested (well, it works on my system :-). 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 RainlendarServer listens. You can use any port you wish.

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 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 and write a comprehensive bug-report :-).
 

 
Bangs:
 
 
 
 
 
 
The Rainlendar can be controlled also with Litestep !Bang-commands. You can also give the !bangs as command line arguments for Rainlendar.exe.

!RainlendarShow
Displays the Rainlendar-window.

!RainlendarHide
Hides the Rainlendar-window.

!RainlendarToggle
Toggles the Rainlendar-window.

!RainlendarConfig
Opens the config-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.

 

 
Legal:
 
 
 
 
 
 
This program is free software. Like Litestep, 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.

 

 
History:
 
 
 
 
 
 

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 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