/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* SetWindow - Set the ToolWindow for an ICON                            */
/* (c) Copyright 1986 John A. Toebes, VIII   All rights reserved         */
/*     120-H Northington Place,   Cary NC 27511   (919) 469-4210         */
/*  This program may be used and modified for any purpose so long as     */
/*  this copyright notice remains with the code and the program is not   */
/*  sold and no charge is made for its use.                              */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

/* To use:
   1) Compile and link as any other program
   2) Issue command to modify whatever Icon you wish to
        SetWindow <icon> <window specifications>
*/

#include <stdio.h>
#include <exec/types.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <workbench/startup.h>

int IconBase;
extern struct WBStartup *WBenchMsg;

main(argc,argv)
int argc;
char *argv[];
{
	struct DiskObject *diskobj, *GetDiskObject();
	char *savewindow;

	/* make sure we ran from CLI */
	if (argc == 0) exit(1);

	/* make sure we have enough parms */
	if (argc != 2 && argc != 3)
		{
		printf("Usage: %s <icon> [<windowspec>]\n", argv[0]);
		exit(2);
		}

	if ( (IconBase = OpenLibrary( ICONNAME, 1)) == NULL)
		exit(2);

	/* get the icon from disk */
	if ( (diskobj = GetDiskObject(argv[1])) == NULL)
		{
		printf("Cannot read icon for %s\n", argv[1]);
		CloseLibrary( IconBase );
		exit(3);
		}

	/* remember what the previous window was */
	savewindow = diskobj->do_ToolWindow;

	/* set it to what was requested */
	diskobj->do_ToolWindow = (argc > 2) ? argv[2] : NULL;

	/* write the corrected ICON to disk */
	if (!PutDiskObject( argv[1], diskobj))
		printf("Cannot write new icon - code %d\n", IoErr() );

	/* restore the oldwindow and free the object */
	diskobj->do_ToolWindow = savewindow;
	FreeDiskObject( diskobj );

	CloseLibrary( IconBase );
}
