Brad Wardell's views about technology, politics, religion, world affairs, and all sorts of politically incorrect topics.
The power of DesktopX continues...
Published on September 6, 2004 By Draginol In OS Customization

So it was kind of bugging me. I kept hearing how DesktopX couldn't do fancy icon labels. DesktopX certainly was capable of it. We just hadn't built in the feature into DesktopX.  So I decided I would make it so that people could have big friendly icons on their desktop with fancy labels.

So here's how I did it:

First: I realized that I would need 3 objects:

    Object 1: The pretty icon.
    Object 2: The pretty label background
    Object 3: The label text itself.

Secondly, since the goal was to make is to that other users could just right click on something and clone it to have more, I couldn't refer to specific object names. I would have to deal with them through parents. So I made the label background the parent of the label text but the child of the fancy icon.  That way I could have the label text communicate with its parent and its parent's parent (got that?).

In DesktopX, you get to an object's parent's object info like this: object.parent.object.  If you think that's a bit strange looking, imagine getting to the parent objects's parent: object.parent.object.parent.object.  Woha.  But that's how it's done.

So for the label background I made a single .PNG image in Corel Photopaint. Basically it was a square with two circle masks but I got my fancy image going that looked close to screenshots I've seen of other fancy labels on the Mac and elsewhere.

Then for the label text I wrote this code:

'Called when the script is executed
Sub Object_OnScriptEnter
   If Object.PersistStorage("Label") = "" Then Object.Text = "Label"
   Object.State = "labelchangel"
End Sub

Function Object_OnLButtonDown(x, y)
   szLabel = Inputbox("Enter Label", szText)
   Object.Text = szLabel
   Object_OnLButtonDown = False
   Object.state = "labelchange"
End Function

Sub Object_OnStateChange(state)
   If state = "labelchange" Then
       Object.Parent.Object.Width = Object.Width + 12
       Object.Parent.Object.Left = (Object.Parent.Object.Parent.Object.Left +
          Object.Parent.Object.Parent.Object.Width/2 - Object.Parent.Object.Width/2)
       Object.Left = Object.Parent.Object.Left + 6
       Object.Parent.Object.Top = Object.Parent.Object.Parent.Object.Bottom + 6
       Object.Top = Object.Parent.Object.Top + 2

       Object.PersistStorage("Label") = Object.Text

    End If

End Sub

 

Very straight forward. I used the documentation at: https://www.stardock.com/products/desktopx/Docs/22/ScriptingGuide.htm to figure out how to do this.

So basically the way I made it work is that I used "persistent storage" so that it will remember the label I type in.  Then, when I click on the actual label have it bring up a message box to change the text.  I found a "bug" in DesktopX in that I need to actually change the state for it to recognize that the size has changed.  So I created a "labelchange" state in the labeltext object and change the state to that. Then in there I do some work to size the background and move it so that it is positioned correctly under the parent object.  Plus I wanted to make sure that if I make my icon really big or small it'll still center right.

I can also change the color of the labels just by right clicking on the label background and going to the appearance tab on the state page and changing the hue.  And if I want more, I just right click and choose clone.

The whole thing took about 5 minutes (took longer to create this little report).

Download it now: https://www.wincustomize.com/skins.asp?library=3&SkinID=3609

Makes sure you have DesktopX 2.2 or later installed.


Comments
on Sep 06, 2004
Can this type of functionality be added to IconX in the future? The ability to have fancy labels?
on Sep 06, 2004
That's the plan.
on Sep 06, 2004
Funny how you stated on Aqua-Soft how AveDesk has no impact on development of your products. Then you turn around and rip one of its functions for your own competing software. Nice job hypocrite.
on Sep 06, 2004
No, I said that Avedesk had no impact on our product release schedule. Troll.
on Sep 07, 2004
BTW there were a lot of labeling tools before avedesk and well to end the point this is Apple for once not AveDesk. Troll indeed
on Sep 07, 2004
Indeed. And Stardock Object Desktop for OS/2, back in 1994 let usrs replace their icon text labels as well.