═══ 1. About ICONTOOL ═══ ICONTOOL by Henk Kelder ICONTOOL allows you to do the following things:  Change an objects icon by dropping an icon on it.  Change the name shown on the workplace shell without changing the name on disk.  Copy and move non-abstract files and directories.  Delete objects.  Extract icons from objects.  Open objects and change objects settings.  Allows to modify some extended attributes for files  Allows you to query the setupstring for objects See the following for more information: Disclaimer General information Changing directories and drives Manipulating files Changing object titles Extracting icons Setting the default icon Abstract objects Known problems in ICONTOOL ICONTOOL.TXT ═══ 2. General Help ═══ Use this choice to get general help for the program. General help provides general information about the Association editor. ═══ 3. Extended ═══ Use this choice to obtain information on how to use the Help facility. ═══ 4. Index ═══ Use this choice to display the help index. The help index lists the titles of the help information that is available. ═══ 5. Tutorial of Keys ═══ Use this choice to see a list of keys and a description of the function of the keys. ═══ 6. Information ═══ This dialog displays information about the application, such as version number and the author. ═══ 6.1. Keys Help ═══ ICONTOOLs conforms itself to the general usage of keys for folders. If you need information about these keys, select an icon on your desktop and select Keys Help from the menu. ═══ 7. Disclaimer ═══ I allow you to use and distribute ICON.EXE freely under the condition that I am in no way responsible for any damage or loss you may suffer. Henk Kelder ═══ 8. General information ═══ ICON.EXE was written in 'plain old' C using the C/2 Set compiler and OS/2 2.0 toolkit. No 'SOM' programming was used. All information about abstract objects is gotten out (hacked) off the ini-files. Clearly the latter is fully UNDOCUMENTED ! (but it seems to work reasonally well.) ICON.EXE is a PM program for OS/2 2.0 that I initially wrote because I did not like the complex way to set an icon for a workplace shell object and other objects (read: files and directories) on my harddisk and of attached network drives. Furthermore, since the workplace shell claims to support drag-drop operations I wanted to experiment with this. Why shouldn't I be able to drag an iconfile and drop it on something else so that the icon would be assigned to this something else. Initialy I tried to write it so it would show icons only and one could then drag the icon on an object on the desktop. Unfortunately the desktop itself doesn't seem to follow the specifications for drag-drop operations completely. The solutions for this was that ICONTOOL allows you to open two windows and you can do draging and dropping between these two windows. ═══ 9. Changing directories and drives ═══ When ICONTOOL is configured to show drives and/or directories you can simply change to these drives and/or directories by selecting 'open' or by double clicking on them. ICONTOOL will no open a new folder but will replace the contents of the open window. ═══ 10. Manipulating files or directories ═══ Although not it main purpose, you could also use this program to do the following operations on most objects: Copy files You can copy a file or directory the by dragging it to another location while you keep the control-button pressed. This can be the second window ICONTOOL allows you to open, but it can also be a workplace shell folder. You cannot copy abstract objects with ICONTOOL! Move files You can move a file or directory by dragging it to another location without pressing any keys. This can be the second window ICONTOOL allows you to open, but it can also be a workplace shell folder. You cannot move abstract objects with ICONTOOL! Make shadows of files or directories You can make a shadow of a file by dragging it to another location while pressing the control and shift key. This can not be the second window ICONTOOL allows you to open, but it can be a workplace shell folder. You cannot make shadows of abstract objects with ICONTOOL! Note: The here mentioned key combinations can be different on your desktop if you have changed the defaults. Related information: Abstract objects ═══ 11. Changing object titles ═══ When the program allowed me to do this I found that I would also like to change the titles of objects WITHOUT changing the underlying fysical filename of an object. I found the the workplace shell uses the .LONGNAME extended attribute, if present, as a title. It was no big deal to show these .LONGNAME ea's. (It is an option you can set under 'Open->Settings'.) If ICON.EXE shows longnames, one can change the names as one would change the name of objects on the desktop. Please remember that only the .LONGNAME extented attribute is changed and NOT the fysical filename. You can change names by using the standard way to rename workplace shell objects (alt and leftmouse button or shift-f9). ═══ 12. Extracting icons ═══ Another nice feature would be the possibility to 'extract' an icon to an iconfile. When this option is chosen the program first looks if there is an .ICON ea and if so writes this ea as a file to disk. If there is no .ICON ea the iconfile is constucted from the icon bitmap as it is visible on the screen. In the latter case the iconfile only contains a bitmap for the device it is extracted from. You can extract an icon from an object by selecting the extract option from the objects popup menu. ═══ 13. Setting the default icon ═══ Setting the default icon means that the .ICON ea is removed. You can set the default icon for an object by selecting the default option from the objects popup menu. ═══ 14. Abstract objects ═══ Wat is an abstract object? An abstract object is an object that is defined in your ini-files. Non-abstract are always present on a disk as a file or a directory. An example of an abstract object is the color palette. Icons shown for abstract objects ICONTOOL also displays abstract objects. In some cases the icon for an abstract object is somewere deep in an OS/2 dll. In such a case I'm not able to determine the icon and a questionmark icon is shown. Opening abstract objects With ICONTOOL you can open all abstract objects with the exception of the color palette. This is that the api-call I use to open abstract objects (WinSetObjectData(hObject, "OPEN=DEFAULT") resets a color palette object to a 5 by 4 palette all of them being a 'New scheme'. Deleting abstract objects ICONTOOL allows you to delete abstract objects, including non-deleteable objects ═══ 15. Known problems ═══ When draging-dropping to another application (e.g. the workplace shell itself) the graphical display gets distorded. This is due to a bug in OS/2 itself, don't call me, call IBM ! This problem only appears in the original OS/2 2.0 GA version. ICON.EXE terminates or causes your desktop to hang when starting in WINOS2 Program in early OS/2 2.00.1 BETA version. It works properly in GA, GA+SP, BETA 2.1, OS/2 2.1, 2.11 en OS/2 3.0 versions. ═══ 16. ICONTOOL.TXT ═══ === DISCLAIMER === I allow you to use and distribute ICON.EXE freely under the condition that I am in no way responsible for any damage or loss you may suffer. Henk Kelder, hkelder@capgemini.nl === NOTES ON ICONTOOL === General ICON.EXE was written in 'plain old' C using the C/2 Set compiler and OS/2 2.0 toolkit. No 'Som' programming was used. All information about abstract objects is gotten out (hacked) off the ini-files. Clearly the latter is fully UNDOCUMENTED ! (but it seems to work reasonally well.) Drag-drop of icons ICON.EXE is a PM program for OS/2 2.0 that I initially wrote because I did not like the complex way to set an icon for a workplace shell object and other objects (read: files and directories) on my harddisk of attached network drives. Furthermore, since the workplace shell claims to support drag-drop operations I wanted to experiment with this. Why shouldn't I be able to drag an iconfile and drop it on something else so that the icon would be assigned to this something else. Initialy I tried to write it so it would show icons only and one could then drag the icon on an object on the desktop. Unfortunately the desktop itself doesn't seem to follow the specifications for drag-drop operations completely. The solutions for this was that ICONTOOL allows you to open two windows and you can do draging and dropping between these two windows. Changing directories or drives (open other folders) When icontool is configured to show drives and/or directories you can simply change to these drives and/or directories by selecting 'open' or by double clicking on them. Icontool will no open a new folder but will replace the contents of the open window. Copying, moving and deleting of objects Although not it main purpose, you could also use this program to do these operations on most objects. Changing object titles When the program allowed me to do this I found that I would also like to change the titles of objects WITHOUT changing the underlying fysical filename of an object. I found the the workplace shell uses the .LONGNAME extended attribute, if present, as a title. It was no big deal to show these .LONGNAME ea's. (It is an option you can set under 'Open->Settings'.) If ICON.EXE shows longnames, one can change the names as one would change the name of objects on the desktop. Please remember that only the .LONGNAME extented attribute is changed and NOT the fysical filename. Extracting Icons Another nice feature would be the possibility to 'extract' an icon to an iconfile. When this option is chosen the program first looks if there is an an .ICON ea and if so writes this ea as a file to disk. If there is no .ICON ea the iconfile is constucted from the icon bitmap as it is visible on the screen. In the latter case the iconfile only contains a bitmap for the device it is extracted from. Setting default Icon Setting the default icon means that the .ICON ea is removed. Abstract objects ICONTOOL also displays abstract objects. In some cases the icon for an abstract object is somewere deep in an OS/2 dll. In such a case I'm not able to determine the icon and a questionmark icon is shown. With Icontool you can open all abstract objects with the exception of the color palette. This is because the api-call I use to open abstract objects (WinSetObjectData(hObject, "OPEN=DEFAULT") resets a color palette object to a 5 by 4 palette all of them being a 'New scheme'. Known problems: - When draging-dropping to another application (e.g. the workplace shell itself) the graphical display gets distorded. This is due to a bug in OS/2 itself, don't call me, call IBM ! This problem occurs only in the original first release of OS/2 2.0 (GA version). - For testing reasons a lot of error and/or warning message are build in. Normally you should not see them, but on the Novell Network I work with myself I sometimes see 'Not enoug memory' messages. These messages result from the Novell Requestor for OS/2 2.0 reporting very L A R G E extended attribute sizes. So don't call me, call Novell ! Updates in version 1.5: - This version now supports OS/2 2.00.1 beta (32 bits GRE) - Also, the mechanism for reading extended attributes has been improved. This was needed because the new 2.00.1 (or 2.01 BETA) appearantly has a bug that returns un incorrect size for extented attributes when using DosQueryPathInfo. Appearantly this same bug appears to be in the Novell Netware Requester, since I haven't seen the problem mentioned above after I made the changes. - Known problems: ICON.EXE terminates or causes your desktop to hang when starting in WINOS/2 Program in the early 2.00.1 BETA version. It works properly in GA version. Updates in version 1.6: - Icon.exe now works properly after the service pack (October 1992) has been installed!. Updates in version 1.61: - ICON.EXE allows the user to specify a directory where extracted icons will be placed. (open->settings) - ICON.EXE now works properly with OS/2 2.1 BETA. (Released december '92) Updates in version 1.70: - ICON.EXE now works properly with OS/2 2.1 BETA (Released march '93) Update in version 1.80: - ICON.EXE now works with OS/2 3.0 (or WARP) - ICON.EXE allows you to modify several extended attributes. Update in version 1.90: - ICON.EXE now utilizes WPTOOLS.DLL to query object settings, both formatted and unformatted. - ICON.EXE still works very nice with WARP 4. Update in version 1.91: - Didn't recoqnize objecthandles with a 4 in the hiword as an file system object.