Archive for Wallpaper Cycler

Wallpaper Cycler: Bug Fixes and New Features

The following new features have been implemented in Wallpaper Cycler:

  • Non-existing wallpapers are shown in red in the details view. In the thumbnails view they are shown with a red sign + “Not valid” as thumbnail.
    (NOTE: this is not implemented for URL wallpapers because checking if an URL wallpaper is still valid would slow WPC down too much when browsing the categories)
  • A wallpaper object in a layout can now be linked to a random wallpaper from a selected search folder.
  • When you specify a text color for a specific wallpaper, this text color is now also used as default color when rendering text on your layout. Previously the default layout text color was always white.
    (NOTE: When you specify “Automatic” as text color for your wallpaper then Wallpaper Cycler will still use white as default color for layout text because the text color is calculated after the desktop has been rendered and that color is then used for the icons on your desktop.)
  • A “Rename Wallpaper…” option has been added to the menu when you right click a wallpaper in Wallpaper Cycler. This allows you to rename the wallpaper in your list AND on your harddisk. 
    This provides a more complete wallpaper management program without the need to go digging through foders and files looking for files to rename or edit, externally to Wallpaper Cycler.
  • Every object in a layout can now have a Link Target. This can be an executable, document, URL, … When you click or double click (configurable) that object on your desktop the Link Target is executed.
    Example of use: put a link to http://www.nuonsoft.com/blog/ on your desktop. When you click that text object that site is openend in your default webbrowser. The screenshot below shows an example that uses Link Targets.
    (NOTE: When using URLs as Link Targets for layout objects and you use Internet Explorer and you want the links to open in a new window instead of reusing an existing IE window, in IE go to “Tools > Internet Options > Advanced” and disable “Reuse windows for launching shortcuts”.)

Link Target Examples

 I also made the following bug fixes for Wallpaper Cycler:

  • When one user in Windows XP or later was running WPC and a second user with Fast User Switching would start WPC, the second user would get an “Unable to initialize RPC. The Wallpaper Cycler screen saver will not work.” error. This is now fixed and all users that login to the machine at the same time will have a working screensaver.
  • The Calendar Notes Editor didn’t work correctly when opened by double clicking on calendar notes objects on the desktop.
  • The random selection algorithm for selecting wallpapers for a wallpaper object set to random in a layout could show often the same image in previous versions of Wallpaper Cycler. In the new version, WPC remembers which wallpapers have already been shown and takes this into account for selecting a random wallpaper for those wallpaper layout objects.
    It works by assigning a flag to each wallpaper. When a wallpaper is chosen, this flag is set to true. So, when you have some smaller wallpaper objects on your layout, WPC will try to select wallpapers that have this flag set to false. When all flags are set to true, WPC will reset the flags to false. In this way, you will have different images most of the time, unless there are not enough images available in the category or when WPC has to reset the flags in the middle of rendering the layout. For example: suppose you have 4 wallpaper objects on your layout. Suppose that after chosing a wallpaper for 2 objects, WPC detects that all flags are set to true. Because of this WPC will reset the flags to false, and then the chance exists that it might select a duplicate image for the 2 other wallpaper objects.

Wallpaper Cycler: Vista Gadget & COM DLL

Windows Vista Gadget

I created a small and simple Windows Vista Gadget to control Wallpaper Cycler. This gadget uses the COM .NET DLL explained below. The little gadget allows you to start/stop cycling, go to previous/next wallpaper and toggle slideshow mode on and off. You can see the little gadget on the following screenshot.

Windows Vista Gadget

COM .NET DLL

I have implemented a small COM .NET DLL which exports some functions that you can use for controlling Wallpaper Cycler. The COM object requires the .NET framework version 2. The following functions are available:

  • bool StartCycling()
  • bool StopCycling()
  • bool NextWallpaper()
  • bool PreviousWallpaper()
  • bool ToggleSlideshowMode()
  • bool ToggleMainWindow()
  • int GetNumberOfSecondsTillNextCycle()
  • bool IsCycling()

This COM object can be used in any programming language that supports COM. For example, in Javascript it can be used as follows:

<script type="text/javascript">
var gWPC = new ActiveXObject("WallpaperCyclerCOM.Controller");
var success = gWPC.StartCycling();
</script>

Wallpaper Cycler: Search Folders

The implementation of Search Folders is finished. Search Folders are a powerful tool to create dynamic “categories”. You cannot directly add wallpapers to a search folder. The wallpapers in a search folder are retrieved from all the wallpapers in your wallpaper list that match certain criteria. The following criteria are available:

  • Find All Wallpapers: Find all wallpapers in your wallpaper list. All wallpapers will match this condition.
  • Find Tags: Only wallpapers with a specific tag or with multiple tags will match this condition. You can specify multiple tags for this condition. A wallpaper will match when it has all these tags. So when you specify multiple tags for this condition you have to interpret it as an AND operator on these tags. If you want to create an OR combination of tags you have to use the boolean OR operator which is explained below.
  • Find Text: Find wallpapers with a certain piece of text in their filename or foldername.
  • Find Enabled or Disabled Wallpapers: Find wallpapers that are in an enabled or disabled category.
  • Find Cycled To (or not) Wallpapers: Find wallpapers that have already been cycled to or that haven’t yet been cycled to.
  • Boolean Operator: Boolean combination (And, Or, Not) of several other search commands. Boolean conditions can be nested.

For example, you could create a search folder that will display all landscape wallpapers (= wallpapers with landscape tag) and that have the text “city-trip” somewhere in their name.

Wallpaper Cycler: Bug Fixes and New Features

The following new features have been implemented in Wallpaper Cycler:

  • New “Open Image With…” when right clicking an image in the main window of Wallpaper Cycler. This will open the selected image in a user defined program.
  • Find & Replace: This allows you to find part of a wallpaper name and replace it with something else. This feature is especially useful when you’ve moved your wallpapers from for example d:\data\wallpapers to e:\wallpapers. In that case you can Find & Replace all “d:\data\wallpapers” and replace it with “e:\wallpapers”.
  • Wallpaper Cycler now has “Global” statistics and “WCL” statistics:
    • “Global” Statistics:
      • The number of times the wallpaper on your desktop has been cycled.
      • The number of times Wallpaper Cycler has cycled the image in the screensaver.
      • The total number of cycles skipped due to CPU load monitoring.
    • “WCL” statistics:
      • 20 Most used wallpapers.
      • 20 Least used wallpapers.
      • Usage of all wallpapers.
  • The layout editor now remembers if “Snap to grid” option is enabled or not.
  • Objects in a layout can now be locked to prevent moving and resizing.
  • In the screensaver you can now press the “left-arrow” key on your keyboard to go back to the previous image. (Note: you can go back only 1 step).
  • The calendar object in a layout can now display days with notes with different formatting than other days.
  • The calendar object in a layout can now display the header of the current day with different formatting than other header cells.
  • You can now change the location of the “NuonSoft WPC Wallpaper.bmp” that is generated by Wallpaper Cycler.
  • “Post Cycling Script”: This is a Windows Scripting file for example JScript or VBScript that will be executed after cycling the wallpaper. The one and only parameter to this script is the name of the file to which Wallpaper Cycler has rendered the desktop.
    As an example a “Microsoft Powerdesk Powertool.js” script is installed in the “Post Cycling Scripts” subfolder of the Wallpaper Cycler installation folder. This script makes sure that when Wallpaper Cycler changes the wallpaper that it will be changed on all desktops of the MS Powerdesk Powertool. This example script can also be seen below.
// This WSH file can be used by NuonSoft Wallpaper Cycler as
// a "Post Cycling Command" to make Wallpaper Cycler compatible
// with the Microsoft Powerdesk Powertoy (multiple desktops).
// When this WSH is configured as a Post Cycling Command
// Wallpaper Cycler will change the wallpaper on all desktops.   

var args = WScript.Arguments;
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var TemporaryFolder=2;
var tempfolder = fso.GetSpecialFolder(TemporaryFolder);
if (args.length != 1)
{
 WScript.Echo("Missing parameter");
}
else
{
 // MS Powerdesk Powertool stores its wallpapers in the temp folder
 // with MSVDM-DesktopX.bmp as name where X=0...3
 for (i=0; i<4; i++)
  fso.CopyFile(args(0), tempfolder + "\" + "MSVDM-Desktop" + i + ".bmp");
}

Wallpaper Cycler: Bug Fixes and New Features

The following new features have been implemented in Wallpaper Cycler:

  • Some new calendar templates will be included in the next release of Wallpaper Cycler.
  • On a clean installation, Wallpaper Cycler will set “db” as default extension to skip during folder synchronization. “db” is the extension of files used by Windows Explorer for its thumbnail files.
  • The screensaver will now remember the name of the layout last used so that layout cycling can continue from there on the next run.
  • It is now visually more clear which day is selected in the yellow calendar on the right of the calendar notes editor. The currently selected day is shown in light red as can be seen in the screenshot below.

Calendar Notes Editor

I also made the following bug fixes for Wallpaper Cycler:

  • Deleting wallpapers in the “Finding non-existing images” dialog while the main window is still generating thumbnails for the listview might crash Wallpaper Cycler in certain cases.
  • Crash in CalculateDesktopBackColor: this crash often was noticed when you have a few icons on your desktop and you were playing a fullscreen game on a resolution lower than your desktop resolution.
  • Sometimes there was a division by 0 when getting a random wallpaper.
  • When closing the layout editor, a random layout was selected in the main list instead of the one that was edited.
  • Duplicates in feeds-menu when having title + description of a specific feed item on the desktop. Now only one is shown in the feeds-menu.
  • Typo in OSD: “Start Cyling” should be “Start Cycling”.
  • When a wallpaper object in a layout is outside the screenarea you got an “out of memory” message when using that layout.
  • If a timelimit on a parent category enables that parent category, the children categories were not enabled.
  • “Move up/down wallpapers” was enabled when “My Wallpapers” was selected, however in the “My Wallpapers” category you cannot change anything.
  • On several places there was “SatErday” instead of “SatUrday”.

Wallpaper Cycler: Bug Fixes and New Features

The following new features have been implemented in Wallpaper Cycler:

  • When browsing for a Calendar or Calendar Notes Template, a small preview bitmap is shown in the open dialog.
  • The bar on the right of the main window will now change depending on whether a layout or wallpaper is selected.
  • Shortcut (Ctrl+Enter) for quickly opening the properties of the selected category or layout category.
  • New stretching mode: “Stretch to fill”.
    Depending on monitor resolution/aspect ratio this will stretch to width or to height.
  • “Restore and stop cycling” hotkey.

I also made the following bug fixes for Wallpaper Cycler:

  • When configuring non-overlapping time limits on all categories, shutting down WPC during 1 time limit, rebooting WPC during another time limit would wrongly disable all categories instead of disabling the category with the old time limit and enabling the category with the new time limit.
    Original description of bug-report:
    I’m having issues with Wallpaper Cycler. I basically have the following lists:
        6am-8am “Dawn”
        8am-12pm “Morning”
        12pm-6pm “Afternoon”
        6pm-8pm “Evening”
        8pm-5am “Night”
    But for some reason EVERY time I start my computer, regardless of the time of day, I get the error that no wallpaper lists are active. I have to open wallpaper cycler, activate all the lists, then manually start the cycle.
  • Crash when specifying an outside border for an object and setting that object at position (0,0). 
  • Added the name of the layout to the following message that can appear to make it more descriptive:
    “Unable to get wallpaper for wallpaper object with name “Copy of Wallpaper Object 1″ in layout with name “layout 1″.”
  • Fixed the issue that you got a message like “Unable to get wallpaper for wallpaper object with name “Wallpaper Object 1″.” when using a wallpaper object in a layout and set it to “Random wallpaper from same category” and the category only had 1 wallpaper in it.

Wallpaper Cycler: Task-Based Wizard

Today I started working on a task-based wizard that will be shown when you open the main window of Wallpaper Cycler. Of course you can disable this window with the checkbox in the lower left corner of the window.

This window will show some common tasks. The first task will be “The Basics of Wallpaper Cycler”. This task will explain the concepts of wallpapers, categories and layouts in Wallpaper Cycler and how they all work together. This will just be a brief explanation which you can read in just 1 minute or less. Links will be provided to more detailed information about the different parts.

Two other tasks will be “Add Wallpapers” and “Add New Layout”. These will guide you with a wizard to add new wallpapers respectively add a new layout and will also briefly explain you how to perform these tasks directly from the main window of Wallpaper Cycler instead of using this wizard.

All this should help people that are using Wallpaper Cycler for the first time to get a better understanding of how everything works and to get more out of Wallpaper Cycler.

An initial screenshot of the main window of this task-based wizard can be seen below.

Tasks Wizard

Wallpaper Cycler & Windows Vista

The last couple of days I have been working on fixing Windows Vista related issues in Wallpaper Cycler. Currently most Windows Vista issues have been resolved and the current internal build of Wallpaper Cycler seems to be stable on Windows Vista. Most important issue was that the “BrowserBar” on the right of the main window would often go into an infinite drawing loop. There were also issues with using the Internet Explorer 7 component of Vista in the Manage RSS Feeds dialog of Wallpaper Cycler.

In between, I also have updated the help file some more to reflect all new features that have been implemented in Wallpaper Cycler.

However, there is still a lot of work to be done for the next release so I cannot yet put a date on it…

Wallpaper Cycler: Bug Fixes and New Features

The following new features have been implemented in Wallpaper Cycler:

  • Generation of thumbnails is much faster now. Thumbnails are generated between 3 and 4 times faster.
  • New “CaptionBar” with details about the selected category or layout category. Right click the CaptionBar to configure what information should be visible in the CaptionBar and what not. An example of the CaptionBar can be seen in the screenshot below:

CaptionBar

  • Option to expand/collapse all wallpaper/layout categories. 
  • Redesigned the properties dialog for wallpaper categories as can be seen in the following screenshot:

Category Properties

I also made the following bug fixes for Wallpaper Cycler:

  • Wallpaper Cycler should not crash anymore with hardware DEP enabled.
  • Linear gradients didn’t always render properly.
  • Rotation for linear gradients didn’t work properly.
  • “Time Synchronization Result” balloon contains a more clear message now and only shows 2 digits after the comma.
  • “Folder Synchronization Result” balloon contains a more clear message now and you can click it to get the synchronization details.
  • Redraw bugs in thumbnail listview when resizing window.

Wallpaper Cycler: Smart Orientation

The Smart Orientation feature allows you to tell Wallpaper Cycler to only use wallpapers with certain tags when the primary monitor is in landscape or portrait mode. The Tags Support feature of Wallpaper Cycler has built-in support for the tags Landscape, Portrait and Square. When you import an image into Wallpaper Cycler, it will get one of these 3 tags automatically. This in combination with the Smart Orientation feature makes it very easy to configure Wallpaper Cycler for support of rotating monitors or tablets.

The following is a screenshot from the configuration of the Smart Orientation feature:

Smart Orientation

Tags (including the Landscape, Portrait and Square tags) can also be assigned to layouts. Everything works together as follows. Let Wallpaper Cycler automatically assign Landscape, Portrait or Square to new wallpapers. Configure the Smart Orientation feature to only use Landscape or Square tagged wallpapers when the primary monitor is in landscape mode and only Portrait or Square tagged wallpapers when the primary monitor is in portrait mode. Then you can create different layouts for landscape and portrait and assign the appropriate tags to your layouts. When Wallpaper Cycler will cycle the wallpaper, it will first check the current orientation of your primary monitor. Based on that and based on the Smart Orientation configuration, it will select wallpapers with the correct tags for that orientation of your monitor. Then it will try to find layouts with tags that match tags of your wallpaper and use that layout to render your wallpaper.

As you can see, Tags support together with the Smart Orientation feature is a powerful combination.

Wallpaper Cycler: Bug Fixes and New Features

The following new features have been implemented in Wallpaper Cycler:

  • WPC now remembers which wallpaper categories and layout categories are expanded or not.
  • Added option for auto-save after auto-sync.
  • Double click on the “time until next cycle” pane in the statusbar will open the cycling settings dialog.
  • A red “Skipped Cycles” pane in the statusbar will display the number of skipped cycles due to CPU load monitoring once a cycle has been skipped. When you double click that pane, the CPU load monitoring settings dialog appears.
  • The thumbnails in the listview don’t display black bars anymore if the aspect ratio of the image doesn’t match the listview image aspect ratio.
  • New fields for a Calendar Notes Template: Author Name, Author Email, Author Website and Theme Description, just like it already existed for Calendar Templates.
  • In the screensaver you can now press the “right-arrow” key on your keyboard to advance to the next image.
  • Nicer alpha blended selection of thumbnails on Windows XP or later. This can be seen in the screenshot below
    Alpha blended selection

I also made the following bug fixes for Wallpaper Cycler:

  • Fixed an infinite loop on certain jpg images.
  • Properly handle context menus in the tree and the wallpaper list on the main window with shift+f10.
  • Fixed a crash that happened sometimes when calculating desktop icon background color.

Wallpaper Cycler: “Give Tags Hotkey” Feature

I just finished implementing the “Give Tags Hotkey” feature in NuonSoft Wallpaper Cycler. With this feature you can define system wide hotkeys to give certain tags to the current wallpaper on your desktop. Multiple tags can be configured for each hotkey. You can define as many of these hotkeys as you want. The following is a screenshot of the configuration page for this new feature.

Give Tags Hotkey Configuration

A “Give Tags hotkey” can also be configured to show a menu with all your tags. With this menu you can quickly add/remove tags to/from the current wallpaper. When you configure such a hotkey a menu like the following will be shown:

Give Tags Menu Hotkey

Wallpaper Cycler: Tag Support

In this post I’m going to describe the new Tag Support in the upcoming version of Wallpaper Cycler. Tags can be assigned to individual wallpapers, layouts, categories and/or layout categories. Wallpaper Cycler supports the notion of tag inheritance. For example: if you specify a tag on an individual wallpaper and on the category of that wallpaper, the wallpaper will have both tags. By allowing you to specify tags on layouts and/or layout categories, you can create layouts that will only be used for wallpapers with a specific tag. With this you can for example assign tags Landscape and Portrait to your wallpapers and create a different layout to be used for landscape or portrait wallpapers.

It’s very easy to specify tags for a wallpaper or layout. You can quickly select the tags you want with the new Tags section in the bar on the right of the main window which you can see in the screenshot below.

Tags section

This tags section allows you to place a checkmark in front of the tags that you want for the selected wallpaper(s) and you can also use that section to quickly type in new tags separated by a comma. The “Show tags details…” link will open a new window that will show you all the tags and all inherited tags of the selected wallpaper(s). You can also configure the size of this tags section to fit your liking.

There is also a tags editor which looks like in the following screenshot:

Tags editor

The tags editor allows you to add new tags, delete existing tags, rename existing tags or to combine several tags into one new tag. All changes done in this tags editor will automatically be reflected on all places in Wallpaper Cycler where tags are used.

Wallpaper objects in a layout can now be configured to display a random wallpaper with a specific tag.

Wallpaper Cycler includes the following predefined tags: Landscape, Portrait and Square. One of these will automatically be assigned to new wallpapers. These tags are also used in a new feature called “Smart Orientation” which I will explain in another post.

Wallpaper Cycler: Bug Fixes and New Features

The following new features have been implemented in Wallpaper Cycler: 

  • Option to disable the synchronization results balloon.
  • Weekend coloring for the calendar notes bar.
  • New “Delete Wallpapers” which removes selected wallpapers from the list + deletes them physically. The “Delete Wallpapers” from previous version is now called “Remove Wallpapers From List”.
  • Restructured the tray menu.

Wallpaper Cycler now includes the following extra hotkeys:

  • A hotkey to toggle desktop icons. 
  • A hotkey “Open current wallpaper” + tray menu item
  • A hotkey “Open current wallpaper in Explorer” + tray menu item
  • A hotkey “Remove current wallpaper from list and Cycle” + tray menu item
  • A hotkey “Delete current wallpaper and Cycle” + tray menu item

I also made the following bug fixes today for Wallpaper Cycler:

  • If you started a folder synchronize manually and at the same time WPC starts synchronizing automatically, all new images were added twice.
  • Cycle at times were not always working.
  • Mutual exclusive ‘cycle at’ or ‘cycle with delay’ -> you cannot enable both anymore to prevent problems.
  • The “Remove” button for cycle-at-times was only enabled when more than 1 item was selected.

Wallpaper Cycler: “Move To Category Hotkey” Feature

I just finished implementing the “Move To Category Hotkey” feature in NuonSoft Wallpaper Cycler. With this feature you can define system wide hotkeys to move the current wallpaper on your desktop to a predefined wallpaper category. You can define as many of these hotkeys as you want. The following is a screenshot of the configuration page for this new feature.

Move To Category Hotkey Configuration

A “Move To Category hotkey” can also be configured to show a hierarchical menu of all your categories from which you select the category to which you want to move the current wallpaper. When you configure such a hotkey a menu like the following will be shown:

Move To Category Menu Hotkey