call rtezrequest("You are using workbench.library v"||wbversion||NL||"This scripts needs workbench.library v"||minversion||" or higher","_Thanks","IconSorter.rexx",)
EXIT
END
GETATTR OBJECT WINDOWS.ACTIVE
activeWin = result
GETATTR OBJECT WINDOW.ICONS.ALL.COUNT NAME '"'||activeWin||'"'
numofIcons = result
If numofIcons = 0 THEN EXIT
CALL _InitAll
/* write all icon informations in a seperate
** variable and get the max size from an icon.
*/
maxiconheight = 0
maxiconwidth = 0
do i = 0 to numofIcons-1
GETATTR OBJECT WINDOW.ICONS.ALL.i NAME '"'||activeWin||'"' STEM IconInfo.i
IF maxiconheight < IconInfo.i.height THEN maxiconheight = IconInfo.i.height
IF maxiconwidth < IconInfo.i.width THEN maxiconwidth = IconInfo.i.width
IF NameCheck = "YES" THEN DO
GETATTR APPLICATION.FONT.SCREEN.SIZE NAME '"'||IconInfo.i.name||'"' /* check the wide from iconname */
IF result > maxiconwidth then maxiconwidth = result
END
end
/* sorting icons */
a = 0 /* AppIcon */
d = 0 /* Drawer */
t = 0 /* Tool */
p = 0 /* Project */
g = 0 /* Garbage */
s = 0 /* Disk */
do i = 0 to numofIcons-1
SELECT
WHEN IconInfo.i.type = "DISK" THEN DO
s = s +1
DiskVar.s = i
END
WHEN IconInfo.i.type = "APPICON" THEN DO
a = a +1
AppIconVar.a = i
END
WHEN IconInfo.i.type = "DRAWER" THEN DO
d = d +1
drawerVar.d = i
END
WHEN IconInfo.i.type = "TOOL" THEN DO
t = t +1
toolVar.t = i
END
WHEN IconInfo.i.type = "PROJECT" THEN DO
p = p +1
projectVar.p = i
END
WHEN IconInfo.i.type = "GARBAGE" THEN DO
g = g +1
garbageVar.g = i
END
OTHERWISE
NOP
END
end
DiskVar.0 = s
DrawerVar.0 = d
ToolVar.0 = t
ProjectVar.0 = p
garbageVar.0 = g
AppIconVar.0 = a
/* how many icons per row? */
GETATTR OBJECT WINDOW.HEIGHT NAME '"'||activeWin||'"'