DesktopX: Creating a Shortcut (Advanced)

From WinCustomize Wiki

Jump to: navigation, search


Create a shortcut with DesktopX (Advanced)
Original Author:Quentin94
Date Created:17 July, 2007
Application:DesktopX
Programs Used:DesktopX


This tutorial will show you how create an advanced shortcut in DesktopX. It will have more options than the basic DesktopX shortcut object. I'll show you how to create the object and script. You'll need a little knowledge of scripting and DesktopX. To make it, I have read RomanDA's tutorials which you can find here: RomanDA articles

You should, at each step of this tutorial, see the picture for more information.


Contents

[edit] Create the Object

First right click on DesktopX Builder systray icon and select "create object"...

Right click on the system tray icon
Right click on the system tray icon

Summary Information

Then, in the object's properties in the "Summary" tab, enter the author name (guess it's you). Set the width to 50 and height to "follow aspect ratio". This is so that all the pictures of your shortcut will only be 50px). Finally, set the object ID.

Summary tab
Summary tab
Summary tab2
Summary tab2

Add a Custom file

No no, it's not finished yet. Now you need to add the main picture of your object. Go to "custom files" in the "Summary" tab and then click "add". Browse for your picture. Here it's the earth. (Note: Remember the full name of the image file, you'll need it in future.)

Here it's "Blue + Black Internet 1.png"

Custom files
Custom files
Custom files2
Custom files2

Add States

Now, you'll add some states. In the "States" tab, click on add.

States tab
States tab

Then, select "mouse away", "mouse over", " mouse down", and "Nothing". To make the "Nothing" state simply edit the name of the state.

Add a custom state
Add a custom state

In these states, change the appearance to the same picture that you embedded earlier. ("Blue + Black Internet 1.png") It can be found in the drop down menu.

Add the state's picture
Add the state's picture

Then, add some effects in the "color" tab. Here I set the brightness to 50 on "mouse over" and 30 on "mouse down", same for the contrast.

Set colors/brightness/contrast
Set colors/brightness/contrast
Set colors/brightness/contrast 2
Set colors/brightness/contrast 2
Set colors/brightness/contrast 3
Set colors/brightness/contrast 3
Set colors/brightness/contrast 4
Set colors/brightness/contrast 4

Apply and save. In case of an error you should keep a good copy of the object.

Apply the changes
Apply the changes


[edit] Create the Script

First go to Object Properties and in the "General" tab click on "new" script.

Add new script
Add new script

The first part of the script are the OnScriptEnter, OnScriptExit functions. These will be called on when the widget first runs and when the widget closes. This script will call other functions for saving and loading user settings explained later.

SCRIPT CODE
 


'Call on script enter
Sub Object_OnScriptEnter
Call LoadSettings()
Object.SetTimer 1000, 2000
Call setinfo
End Sub

'Call on script exit
Sub Object_OnScriptExit
Call SaveSettings()
object.KillTimer 1000
End Sub


[edit] Right Click Menu

How the right click menu will look
How the right click menu will look
Files dialog window
Files dialog window


This script for the right click menu will allow the user to choose an image for the shortcut's icon, and the ability to choose between a file, folder or url as the shortcut's target.

SCRIPT CODE
 


Dim foldername
Dim Icon
Dim target

'Function to set the right click on the object
Function Object_OnRButtonUp(x,y,dragged)
If Not dragged Then
Dim menu
Set menu = DesktopX.CreatePopupMenu
menu.AppendMenu 0, 1, "Select Icon"
menu.AppendMenu 0, 2, "Select File"
menu.AppendMenu 0, 3, "Select Folder"
menu.AppendMenu 0, 4, "Select URL"
Dim rtn
rtn = menu.TrackPopupMenu(0, System.CursorX, System.CursorY)
Select Case rtn
Case 1
Object.States("Mouse away").picture="Blue + Black Internet 1.png"
Object.States("Mouse over").picture="Blue + Black Internet 1.png"
Object.States("Mouse down").picture="Blue + Black Internet 1.png"
Set Sh = CreateObject("WScript.Shell")
On Error Resume Next
Foldername = Desktopx.ExecutableDirectory
Icon = System.FileOpenDialog("Select a Picture....", "", Folder, "Pictures: jpg,bmp,png|*.jpg;*.bmp;*.png", 0)
If Icon<>"" Then
Object.States("Mouse away").picture=icon
Object.States("Mouse over").picture=icon
Object.States("Mouse down").picture=icon
End If
Set Sh = Nothing
Case 2
Object.States("Nothing").picture="Blue + Black Internet 1.png"
Set Sh = CreateObject("WScript.Shell")
On Error Resume Next
Foldername = Desktopx.ExecutableDirectory
target = object.command
x = (System.FileOpenDialog("Select a File...", "", Folder, "All files|*.*", 0))
If x <> "" Then
Object.States("Nothing").picture = x
End If
Set Sh = Nothing
Case 3
Object.States("Nothing").picture="Blue + Black Internet 1.png"
Set Sh = CreateObject("WScript.Shell")
On Error Resume Next
target = object.command
x = (System.FolderDialog("Select a Folder...", "",&H4000))
If x <> "" Then
Object.States("Nothing").picture = x
End If
Set Sh = Nothing
Case 4
Object.States("Nothing").picture="Blue + Black Internet 1.png"
Set Sh = CreateObject("WScript.Shell")
On Error Resume Next
target = object.command
Dim Input
Input = InputBox("Enter URL: ex: 'http://www.wincustomize.com' or an email ex: 'mailto:quentin94.website@free.fr'", "Select URL...")
x= Input
If x <> "" Then
Object.States("Nothing").picture = x
End If
Set Sh = Nothing
End Select
Set menu = nothing
End If
If rtn <> 5 Then
Object_OnRButtonUp=True
End If
End Function

You can see the entire right-click menu code above. I'll explain some of the parts.

Case 1 is the part of the code that changes the picture of the shortcut on all object states: "mouse away", "mouse over", and "mouse down". (Note: "nothing" state will be for another function)

"System.FileOpenDialog" will open a dialog window to choose the file. "Select a Picture...." will be the title of the dialog window. "Pictures: jpg,bmp,png|*.jpg;*.bmp;*.png" will allow the user to browse for those types of files only.

The first line in case 2,3, and 4, will reset the original target in case of an error.

Object.States("Nothing").picture="Blue + Black Internet 1.png"

As you can see in the excerpt above and in the following code excerpts, the file or folder the user selects as a target is set as the "Nothing" state's picture. To explain the trick of this method and the "Nothing" state, we basically use the "Nothing" state's picture to store the target address whether it's an actual image file or not. Anytime the target is called it will be called from the "Nothing" state's picture. The target is also set as the object.command.

Case 2 will open the file dialog:

x = (System.FileOpenDialog("Select a File...", "", Folder, "All files|*.*", 0))
If x <> "" Then
Object.States("Nothing").picture = x
End If


Files dialog window
Files dialog window

Case 3 will open the folder file dialog:

x = (System.FolderDialog("Select a Folder...", "",&H4000))
If x <> "" Then <br>
Object.States("Nothing").picture = x
End If
Folders dialog window
Folders dialog window

Case 4 will open the URL/EMAIL inputbox:

Dim Input
Input = InputBox("Enter URL: ex: 'http://www.wincustomize.com' or an email ex: 'mailto:quentin94.website@free.fr'", "Select URL...")
x= Input
If x <> "" Then 
Object.States("Nothing").picture = x
End If
Input box
Input box

[edit] Save/Load User Settings

This is where you'll save and load the information of the object stored in the "dim" variables 'foldername', 'Icon', 'target'.

SCRIPT CODE
 


'will save the stteings of the object
Function SaveSettings()
Set Sh = CreateObject("WScript.Shell")
Sh.RegWrite "HKCU\SOFTWARE\desktopx\iconchanger\folder", foldername
Sh.RegWrite "HKCU\SOFTWARE\desktopx\iconchanger\icon", Icon
Sh.RegWrite "HKCU\SOFTWARE\desktopx\iconchanger\target", target
Sh.RegWrite "HKCU\SOFTWARE\desktopx\iconchanger\x", x
Set Sh = Nothing
End Function

'will load the settings
Function LoadSettings()
foldername = Desktopx.ExecutableDirectory
On Error Resume Next
Set Sh = CreateObject("WScript.Shell")
FolderName = Sh.RegRead("HKCU\SOFTWARE\desktopx\iconchanger\folder")
Icon = Sh.RegRead("HKCU\SOFTWARE\desktopx\iconchanger\icon")
target = Sh.RegRead("HKCU\SOFTWARE\desktopx\iconchanger\target")
x = Sh.RegRead("HKCU\SOFTWARE\desktopx\iconchanger\x")
Set Sh = Nothing
Err.Clear
End Function


[edit] Tooltip

In this code you'll script the object's tooltip:

SCRIPT CODE
 

'will call on a fix time setinfo
Sub Object_OnTimer1000
Call setinfo
End Sub

'will when call set the tooltips with the complet address of the shortcut
Sub setinfo
object.ToolTipText=(Object.States("Nothing").picture)
End Sub


[edit] Launch the Shortcut

This script will launch the shortcut when you left click on the object. If it's an image it will open it on your default picture's editor. The address of the shortcut is on the "Nothing" state:

"target = Object.States("Nothing").picture"
SCRIPT CODE
 


'function to set the left click on the object
Function Object_OnLButtonUp(x,y,dragged)
If Not dragged Then
On Error Resume Next
Set Sh = CreateObject("WScript.Shell")
target = Object.States("Nothing").picture
Sh.Run (Chr(34)& target & Chr(34))
Set Sh = Nothing
End If
End Function





Well now you'll need to save your work and export it as object/widget or gadget or add it to a theme. Whatever you want!

I hope this tutorial has been helpful.


-Quentin