/*==================================================================
  ==================================================================
  ==	XMusic -- An Interactive Interface to Csound		  ==
  ==       Copyright (C) 1988 by George D. Drapeau                ==
  ==                  All Rights Reserved                         ==
  ==================================================================
  ==================================================================
*/
/* $Log:	toolPalette.c,v $
 * Revision 1.2  89/08/06  18:15:00  drapeau
 * Changed calls from XCreatePixmapFromBitmapData to
 * XCreateBitmapFromData.
 * Also, eliminated several extraneous variables and
 * function calls.
 *  */

#include <stdio.h>
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>
#include <X11/Box.h>
#include <X11/Command.h>
#define USEBITMAPS
#include "defs.h"
#include "externs.h"


Widget	sineCommand,envCommand,sumCommand,ampCommand;		    /* Widgets used by all functions in this file */
Widget	paramCommand,noiseCommand,eqCommand;
Widget	boxWidget;

void CreateToolPalette()					    /* This function is responsible for creating the... */
{								    /* ...palette of Command buttons used by XMusic.  */
  static 	Arg commandArgs[3] =				    /* Default widths and heights for Command buttons */
    {
      {XtNwidth,(Dimension)TOOLSIZE},
      {XtNheight,(Dimension)TOOLSIZE},
      {XtNtitle,(XtArgVal)"XMusic:Tools"}
    };

  Arg		toolArgs[2];
  Dimension	commandWidth,commandHeight;

  commandWidth = (Dimension)(1.25*sine64_width);
  commandHeight = (Dimension)(8.5*sine64_height);
  XtSetArg(commandArgs[0],XtNwidth,commandWidth);
  XtSetArg(commandArgs[1],XtNheight,commandHeight);
  
  
  toolPalette	= XtCreatePopupShell("toolPalette",		    /* Create a Popup shell for the Tool Palette */
				     shellWidgetClass,
				     topLevelShell,
				     commandArgs,XtNumber(commandArgs));

  boxWidget	= XtCreateManagedWidget("tools",		    /* Create a box to hold several Command widgets */
					boxWidgetClass,		    /* This is a Box Widget */
					toolPalette,		    /* This widget is a child of Tool Palette Popup shell */
					NULL,NULL);
  
  XtSetArg(toolArgs[0],XtNwidth,(Dimension)sine64_width+4);
  XtSetArg(toolArgs[1],XtNheight,(Dimension)sine64_height+4);
  sineCommand	= XtCreateManagedWidget("sineTool",		    /* Create the command button widgets */
					commandWidgetClass,
					boxWidget,
					toolArgs,XtNumber(toolArgs));
  envCommand	= XtCreateManagedWidget("envTool",		    
					commandWidgetClass,
					boxWidget,
					toolArgs,XtNumber(toolArgs));
  sumCommand	= XtCreateManagedWidget("sumTool",		   
					commandWidgetClass,
					boxWidget,
					toolArgs,XtNumber(toolArgs));
  ampCommand	= XtCreateManagedWidget("ampTool",		  
					commandWidgetClass,
					boxWidget,
					toolArgs,XtNumber(toolArgs));
  paramCommand	= XtCreateManagedWidget("paramTool",		  
					commandWidgetClass,
					boxWidget,
					toolArgs,XtNumber(toolArgs));
  eqCommand	= XtCreateManagedWidget("eqTool",		  
					commandWidgetClass,
					boxWidget,
					toolArgs,XtNumber(toolArgs));
  noiseCommand	= XtCreateManagedWidget("noiseTool",		  
					commandWidgetClass,
					boxWidget,
					toolArgs,XtNumber(toolArgs));
  XtAddCallback(sineCommand,XtNcallback,SineCallback,NULL);	    /* Add callbacks for the tools in the palette */
  XtAddCallback(envCommand,XtNcallback,EnvCallback,NULL);
  XtAddCallback(sumCommand,XtNcallback,SumCallback,NULL);
  XtAddCallback(ampCommand,XtNcallback,AmpCallback,NULL);
  XtAddCallback(paramCommand,XtNcallback,ParamCallback,NULL);
  XtAddCallback(eqCommand,XtNcallback,EQCallback,NULL);
  XtAddCallback(noiseCommand,XtNcallback,NoiseCallback,NULL);
}								    /* end function CreateToolPalette */



void CreateToolPixmaps()
{
  Arg			argList[1],paletteArgs[2];
  Window		xmusicWin;

  xmusicWin = XtWindow(topLevelShell);				    /* ...later use in creating Pixmaps */
  
  sineMap	= XCreateBitmapFromData(dpy,xmusicWin,	    /* Create pixmaps for tools in the palette */
					sine64_bits,sine64_width,sine64_height);
  envMap	= XCreateBitmapFromData(dpy,xmusicWin,
					env64_bits,env64_width,env64_height);
  sumMap	= XCreateBitmapFromData(dpy,xmusicWin,
					sum64_bits,sum64_width,sum64_height);
  ampMap	= XCreateBitmapFromData(dpy,xmusicWin,
					amp64_bits,amp64_width,amp64_height);
  paramMap	= XCreateBitmapFromData(dpy,xmusicWin,
					param64_bits,param64_width,param64_height);
  eqMap		= XCreateBitmapFromData(dpy,xmusicWin,
					eq64_bits,eq64_width,eq64_height);
  noiseMap	= XCreateBitmapFromData(dpy,xmusicWin,
					noise64_bits,noise64_width,noise64_height);

  XtSetArg(argList[0],XtNbitmap,sineMap);			    /* Use bitmaps for the Command widgets instead of labels */
  XtSetValues(sineCommand,argList,XtNumber(argList));		    /* Change the Command widgets with the values just set. */

  XtSetArg(argList[0],XtNbitmap,envMap);
  XtSetValues(envCommand,argList,XtNumber(argList));

  XtSetArg(argList[0],XtNbitmap,sumMap);
  XtSetValues(sumCommand,argList,XtNumber(argList));

  XtSetArg(argList[0],XtNbitmap,ampMap);
  XtSetValues(ampCommand,argList,XtNumber(argList));

  XtSetArg(argList[0],XtNbitmap,paramMap);
  XtSetValues(paramCommand,argList,XtNumber(argList));

  XtSetArg(argList[0],XtNbitmap,eqMap);
  XtSetValues(eqCommand,argList,XtNumber(argList));

  XtSetArg(argList[0],XtNbitmap,noiseMap);
  XtSetValues(noiseCommand,argList,XtNumber(argList));
}								    /* end function CreateToolPixmaps */
