v10i091: boss -- transfer data from Casio BOSS to workstations, Patch1, Part01/01

Chuck Musciano chuck at melmac.harris-atd.com
Sat Dec 1 19:25:35 AEST 1990


Submitted-by: chuck at melmac.harris-atd.com (Chuck Musciano)
Posting-number: Volume 10, Issue 91
Archive-name: boxx/patch1
Patch-To: boxx: Volume 10, Issue 3-8

     This is the first patch to Boss, bringing Boss to version 1.0a.
     
     This patch fixes a few minor bugs in Boss, adds an "About Boss..."
window and the ability to send mail to the developer, and provides a
warning when users attempt to download data to the BOSS at 9600 baud.

Chuck Musciano				ARPA  : chuck at trantor.harris-atd.com
Harris Corporation 			Usenet: ...!uunet!x102a!trantor!chuck
PO Box 37, MS 3A/1912			AT&T  : (407) 727-6131
Melbourne, FL 32902			FAX   : (407) 729-2537

A good newspaper is never good enough,
	but a lousy newspaper is a joy forever.		-- Garrison Keillor

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  patch
# Wrapped by chuck at melmac on Fri Nov 30 08:46:05 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patch' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patch'\"
else
echo shar: Extracting \"'patch'\" \(65348 characters\)
sed "s/^X//" >'patch' <<'END_OF_FILE'
X*** Makefile.orig	Fri Nov 30 08:44:04 1990
X--- Makefile	Thu Nov  1 16:19:05 1990
X***************
X*** 8,13 ****
X--- 8,16 ----
X  # Where to install the help file
X  HELPDIR		= /usr/local/lib/help
X  
X+ # Your system mailer
X+ MAILER		= /usr/ucb/mail
X+ 
X  # Where you installed Open Windows
X  OPENWINHOME	= /usr/openwin
X  
X***************
X*** 15,30 ****
X  LDFLAGS		= -L$(OPENWINHOME)/lib
X  
X  # Where your XView include files are installed
X! CPPFLAGS	= -I$(OPENWINHOME)/include
X  
X! OFILES	= 	boss.o boss_ui.o calentool.o casio_master.o casio_slave.o \
X! 		database.o do_clear.o do_load.o do_port.o do_schedule.o do_store.o \
X! 		expand.o misc.o object.o packet.o parse.o print.o \
X! 		record.o window_misc.o
X  
X  OPTIONS		= -O
X  
X! CPPFLAGS	= -I$(OPENWINHOME)/include
X  LDFLAGS		= -L$(OPENWINHOME)/lib
X  LDLIBS		= -lxview -lolgx -lX
X  
X--- 18,34 ----
X  LDFLAGS		= -L$(OPENWINHOME)/lib
X  
X  # Where your XView include files are installed
X! CPPFLAGS	= -I$(OPENWINHOME)/include -DMAILER=\"$(MAILER)\"
X  
X! OFILES		= about.o boss.o boss_ui.o busy.o calentool.o casio_master.o casio_slave.o \
X! 		  database.o do_clear.o do_load.o do_port.o do_schedule.o do_store.o \
X! 		  expand.o filename_completion.o list_misc.o misc.o object.o packet.o \
X! 		  parse.o pinned_menu_notify.o place_dialog.o print.o \
X! 		  record.o send_mail.o window_misc.o
X  
X  OPTIONS		= -O
X  
X! CPPFLAGS	= -I$(OPENWINHOME)/include -DMAILER=\"$(MAILER)\"
X  LDFLAGS		= -L$(OPENWINHOME)/lib
X  LDLIBS		= -lxview -lolgx -lX
X  
X*** Imakefile.orig	Fri Nov 30 08:44:07 1990
X--- Imakefile	Thu Nov  1 16:19:05 1990
X***************
X*** 2,22 ****
X  
X  HELPDIR		= /usr/local/lib/help
X  
X  LOCAL_LIBRARIES = -lxview -lolgx $(XLIB)
X  
X  LDOPTIONS	= -L$(OPENWINHOME)/lib
X  
X! CFLAGS		= -O -I$(OPENWINHOME)/include
X  
X! SRCS		= boss.c boss_ui.c calentool.c casio_master.c casio_slave.c \
X  		  database.c do_clear.c do_load.c do_port.c do_schedule.c do_store.c \
X! 		  expand.c misc.c object.c packet.c parse.y print.c \
X! 		  record.c window_misc.c
X  
X! OBJS		= boss.o boss_ui.o calentool.o casio_master.o casio_slave.o \
X  		  database.o do_clear.o do_load.o do_port.o do_schedule.o do_store.o \
X! 		  expand.o misc.o object.o packet.o parse.o print.o \
X! 		  record.o window_misc.o
X  
X  ComplexProgramTarget(boss)
X  
X--- 2,24 ----
X  
X  HELPDIR		= /usr/local/lib/help
X  
X+ MAILER		= /usr/ucb/mail
X+ 
X  LOCAL_LIBRARIES = -lxview -lolgx $(XLIB)
X  
X  LDOPTIONS	= -L$(OPENWINHOME)/lib
X  
X! CFLAGS		= -O -I$(OPENWINHOME)/include -DMAILER=\"$(MAILER)\"
X  
X! SRCS		= about.c boss.c boss_ui.c busy.c calentool.c casio_master.c casio_slave.c \
X  		  database.c do_clear.c do_load.c do_port.c do_schedule.c do_store.c \
X! 		  expand.c filename_completion.c list_misc.c misc.c object.c packet.c parse.y pinned_menu_notify.c place_dialog.c print.c \
X! 		  record.c send_mail.c window_misc.c
X  
X! SRCS		= about.o boss.o boss_ui.o busy.o calentool.o casio_master.o casio_slave.o \
X  		  database.o do_clear.o do_load.o do_port.o do_schedule.o do_store.o \
X! 		  expand.o filename_completion.o list_misc.o misc.o object.o packet.o parse.o pinned_menu_notify.o place_dialog.o print.o \
X! 		  record.o send_mail.o window_misc.o
X  
X  ComplexProgramTarget(boss)
X  
X*** boss.info.orig	Fri Nov 30 08:44:09 1990
X--- boss.info	Fri Nov 30 08:15:32 1990
X***************
X*** 7,13 ****
X  Boss 1.0 provides an interface between your workstation and a Casio BOSS Digital Diary.  Using Boss 1.0, you can load and store data to and from your Casio BOSS.
X  # 
X  :file_button
X! The "File" button provides access to the basic Boss functions: loading and storing data, as well as converting schedule items to other formats.
X  # 
X  :view_button
X  The "View" button provides access to the "Clear entries" dialog box.
X--- 7,13 ----
X  Boss 1.0 provides an interface between your workstation and a Casio BOSS Digital Diary.  Using Boss 1.0, you can load and store data to and from your Casio BOSS.
X  # 
X  :file_button
X! The "File" button provides access to the basic Boss functions: loading and storing data, as well as converting schedule items to other formats.  You can also read about the history of Boss, and send mail to the developer.
X  # 
X  :view_button
X  The "View" button provides access to the "Clear entries" dialog box.
X***************
X*** 150,152 ****
X--- 150,227 ----
X  # 
X  :schedule_accept
X  When you click the "Schedule" button, the schedule items held in Boss memory will be converted to the desired format.  Certain files may be modified during the conversion.
X+ # 
X+ :about_controls
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_1
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_5
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_6
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_7
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_8
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_9
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_11
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_12
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_13
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_14
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_16
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_17
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_18
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_19
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :msg_20
X+ This window gives you some details about the development of boss, encourages you to correspond with the developer to improve future versions of boss, and delineates the restrictions placed on the boss source code.
X+ # 
X+ :send_mail
X+ Clicking this button will open another window in which you can compose and send mail to the developer of boss.
X+ # 
X+ :mail_controls
X+ This window allows you to send mail concerning boss to its developer.  You are encouraged to send comments and suggestions in order to make boss a better tool.
X+ # 
X+ :msg_21
X+ This window allows you to send mail concerning boss to its developer.  You are encouraged to send comments and suggestions in order to make boss a better tool.
X+ # 
X+ :msg_22
X+ This window allows you to send mail concerning boss to its developer.  You are encouraged to send comments and suggestions in order to make boss a better tool.
X+ # 
X+ :address
X+ This choice item lets you select the address to which your mail will be sent.  If your machine understands Internet-style addresses, you should use the first choice item.  If you are a UUCP-based site, you should use the second item.  If neither address works, use the third item to enter a valid address.
X+ # 
X+ :other_address
X+ This text field is used to enter an e-mail address to which your mail will be sent.  It should only be used if the two default addresses do not work from your site.
X+ # 
X+ :mail_controls1
X+ This window allows you to send mail concerning boss to its developer.  You are encouraged to send comments and suggestions in order to make boss a better tool.
X+ # 
X+ :accept_send
X+ Clicking this button will send your mail message to boss's developer.
X+ # 
X+ :cancel_mail
X+ Clicking this button cancels the message you were going to send.
X*** about.c.orig	Fri Nov 30 08:44:10 1990
X--- about.c	Thu Nov  1 16:15:59 1990
X***************
X*** 0 ****
X--- 1,56 ----
X+ /************************************************************************/
X+ /*	Copyright 1990 by Chuck Musciano and Harris Corporation		*/
X+ /*									*/
X+ /*	Permission to use, copy, modify, and distribute this software	*/
X+ /*	and its documentation for any purpose and without fee is	*/
X+ /*	hereby granted, provided that the above copyright notice	*/
X+ /*	appear in all copies and that both that copyright notice and	*/
X+ /*	this permission notice appear in supporting documentation, and	*/
X+ /*	that the name of Chuck Musciano and Harris Corporation not be	*/
X+ /*	used in advertising or publicity pertaining to distribution	*/
X+ /*	of the software without specific, written prior permission.	*/
X+ /*	Chuck Musciano and Harris Corporation make no representations	*/
X+ /*	about the suitability of this software for any purpose.  It is	*/
X+ /*	provided "as is" without express or implied warranty.		*/
X+ /*									*/
X+ /*	This code contains data and information that is proprietary	*/
X+ /*	to Casio Corporation.  You may be subject to legal action if	*/
X+ /*	this information is released without explicit permission from	*/
X+ /*	Casio.								*/
X+ /************************************************************************/
X+ 
X+ /************************************************************************/
X+ /*									*/
X+ /*	about.c		display a little information window		*/
X+ /*									*/
X+ /************************************************************************/
X+ 
X+ #include	<stdio.h>
X+ #include	<sys/param.h>
X+ #include	<sys/types.h>
X+ #include	<xview/xview.h>
X+ #include	<xview/panel.h>
X+ #include	"boss_ui.h"
X+ 
X+ #include	"manifest.h"
X+ 
X+ PUBLIC	boss_base_objects	*boss_base;
X+ 
X+ PRIVATE	boss_about_objects	*dialog = NULL;
X+ 
X+ /************************************************************************/
X+ EXPORT	Menu_item	popup_about_boss(item, op)
X+ 
X+ Menu_item	item;
X+ Menu_generate	op;
X+ 
X+ {
X+ 	if (op == MENU_NOTIFY) {
X+ 	   if (dialog == NULL) {
X+ 	      dialog = boss_about_objects_initialize(NULL, boss_base->base);
X+ 	      place_dialog(boss_base->base, dialog->about);
X+ 	      }
X+ 	   xv_set(dialog->about, XV_SHOW, TRUE, NULL);
X+ 	   }
X+ 	return item;
X+ }
X*** boss_ui.c.orig	Fri Nov 30 08:44:12 1990
X--- boss_ui.c	Fri Nov 30 08:15:35 1990
X***************
X*** 1,24 ****
X- /************************************************************************/
X- /*	Copyright 1990 by Chuck Musciano and Harris Corporation		*/
X- /*									*/
X- /*	Permission to use, copy, modify, and distribute this software	*/
X- /*	and its documentation for any purpose and without fee is	*/
X- /*	hereby granted, provided that the above copyright notice	*/
X- /*	appear in all copies and that both that copyright notice and	*/
X- /*	this permission notice appear in supporting documentation, and	*/
X- /*	that the name of Chuck Musciano and Harris Corporation not be	*/
X- /*	used in advertising or publicity pertaining to distribution	*/
X- /*	of the software without specific, written prior permission.	*/
X- /*	Chuck Musciano and Harris Corporation make no representations	*/
X- /*	about the suitability of this software for any purpose.  It is	*/
X- /*	provided "as is" without express or implied warranty.		*/
X- /*									*/
X- /*	This code contains data and information that is proprietary	*/
X- /*	to Casio Corporation.  You may be subject to legal action if	*/
X- /*	this information is released without explicit permission from	*/
X- /*	Casio.								*/
X- /************************************************************************/
X- 
X  /*
X   * boss_ui.c - User interface object initialization functions.
X   * This file was generated by `gxv' from `boss.G'.
X--- 1,3 ----
X***************
X*** 52,57 ****
X--- 31,37 ----
X  	extern Menu_item	load_dialog();
X  	extern Menu_item	store_dialog();
X  	extern Menu_item	schedule_dialog();
X+ 	extern Menu_item	popup_about_boss();
X  	Xv_opaque	obj;
X  	
X  	obj = xv_create(XV_NULL, MENU_COMMAND_MENU,
X***************
X*** 71,76 ****
X--- 51,61 ----
X  			MENU_STRING, "Schedule Appointments...",
X  			MENU_GEN_PROC, schedule_dialog,
X  			NULL,
X+ 		MENU_ITEM,
X+ 			XV_KEY_DATA, INSTANCE, ip,
X+ 			MENU_STRING, "About Boss...",
X+ 			MENU_GEN_PROC, popup_about_boss,
X+ 			NULL,
X  		MENU_DEFAULT, 2,
X  		MENU_GEN_PIN_WINDOW, (Xv_opaque) ip[0], "File",
X  		NULL);
X***************
X*** 207,213 ****
X  		XV_KEY_DATA, INSTANCE, ip,
X  		XV_WIDTH, 256,
X  		XV_HEIGHT, 88,
X! 		XV_LABEL, "Boss 1.0",
X  		FRAME_CLOSED, FALSE,
X  		FRAME_SHOW_FOOTER, FALSE,
X  		FRAME_SHOW_RESIZE_CORNER, FALSE,
X--- 192,198 ----
X  		XV_KEY_DATA, INSTANCE, ip,
X  		XV_WIDTH, 256,
X  		XV_HEIGHT, 88,
X! 		XV_LABEL, "Boss 1.0a",
X  		FRAME_CLOSED, FALSE,
X  		FRAME_SHOW_FOOTER, FALSE,
X  		FRAME_SHOW_RESIZE_CORNER, FALSE,
X***************
X*** 1552,1557 ****
X--- 1537,2362 ----
X  		XV_HEIGHT, 20,
X  		PANEL_LABEL_STRING, "Schedule",
X  		PANEL_NOTIFY_PROC, accept_schedule,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Initialize an instance of object `about'.
X+  */
X+ boss_about_objects *
X+ boss_about_objects_initialize(ip, owner)
X+ 	boss_about_objects	*ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	if (!ip && !(ip = (boss_about_objects *) calloc(1, sizeof (boss_about_objects))))
X+ 		return (boss_about_objects *) NULL;
X+ 	if (!ip->about)
X+ 		ip->about = boss_about_about_create(ip, owner);
X+ 	if (!ip->about_controls)
X+ 		ip->about_controls = boss_about_about_controls_create(ip, ip->about);
X+ 	if (!ip->msg_1)
X+ 		ip->msg_1 = boss_about_msg_1_create(ip, ip->about_controls);
X+ 	if (!ip->msg_5)
X+ 		ip->msg_5 = boss_about_msg_5_create(ip, ip->about_controls);
X+ 	if (!ip->msg_6)
X+ 		ip->msg_6 = boss_about_msg_6_create(ip, ip->about_controls);
X+ 	if (!ip->msg_7)
X+ 		ip->msg_7 = boss_about_msg_7_create(ip, ip->about_controls);
X+ 	if (!ip->msg_8)
X+ 		ip->msg_8 = boss_about_msg_8_create(ip, ip->about_controls);
X+ 	if (!ip->msg_9)
X+ 		ip->msg_9 = boss_about_msg_9_create(ip, ip->about_controls);
X+ 	if (!ip->msg_11)
X+ 		ip->msg_11 = boss_about_msg_11_create(ip, ip->about_controls);
X+ 	if (!ip->msg_12)
X+ 		ip->msg_12 = boss_about_msg_12_create(ip, ip->about_controls);
X+ 	if (!ip->msg_13)
X+ 		ip->msg_13 = boss_about_msg_13_create(ip, ip->about_controls);
X+ 	if (!ip->msg_14)
X+ 		ip->msg_14 = boss_about_msg_14_create(ip, ip->about_controls);
X+ 	if (!ip->msg_16)
X+ 		ip->msg_16 = boss_about_msg_16_create(ip, ip->about_controls);
X+ 	if (!ip->msg_17)
X+ 		ip->msg_17 = boss_about_msg_17_create(ip, ip->about_controls);
X+ 	if (!ip->msg_18)
X+ 		ip->msg_18 = boss_about_msg_18_create(ip, ip->about_controls);
X+ 	if (!ip->msg_19)
X+ 		ip->msg_19 = boss_about_msg_19_create(ip, ip->about_controls);
X+ 	if (!ip->msg_20)
X+ 		ip->msg_20 = boss_about_msg_20_create(ip, ip->about_controls);
X+ 	if (!ip->message6)
X+ 		ip->message6 = boss_about_message6_create(ip, ip->about_controls);
X+ 	if (!ip->message7)
X+ 		ip->message7 = boss_about_message7_create(ip, ip->about_controls);
X+ 	if (!ip->send_mail)
X+ 		ip->send_mail = boss_about_send_mail_create(ip, ip->about_controls);
X+ 	return ip;
X+ }
X+ 
X+ /*
X+  * Create object `about' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_about_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, FRAME_CMD,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_WIDTH, 509,
X+ 		XV_HEIGHT, 392,
X+ 		XV_LABEL, "Boss: About Boss",
X+ 		XV_SHOW, FALSE,
X+ 		FRAME_SHOW_FOOTER, FALSE,
X+ 		FRAME_SHOW_RESIZE_CORNER, FALSE,
X+ 		FRAME_CMD_PUSHPIN_IN, TRUE,
X+ 		NULL);
X+ 	xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `about_controls' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_about_controls_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:about_controls",
X+ 		XV_X, 0,
X+ 		XV_Y, 0,
X+ 		XV_WIDTH, WIN_EXTEND_TO_EDGE,
X+ 		XV_HEIGHT, WIN_EXTEND_TO_EDGE,
X+ 		WIN_BORDER, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_1' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_1_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_1",
X+ 		XV_X, 222,
X+ 		XV_Y, 14,
X+ 		XV_WIDTH, 65,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "Boss 1.0a",
X+ 		PANEL_LABEL_BOLD, TRUE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_5' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_5_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_5",
X+ 		XV_X, 202,
X+ 		XV_Y, 30,
X+ 		XV_WIDTH, 104,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "Copyright 1990",
X+ 		PANEL_LABEL_BOLD, TRUE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_6' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_6_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_6",
X+ 		XV_X, 117,
X+ 		XV_Y, 46,
X+ 		XV_WIDTH, 274,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "Chuck Musciano and Harris Corporation",
X+ 		PANEL_LABEL_BOLD, TRUE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_7' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_7_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_7",
X+ 		XV_X, 185,
X+ 		XV_Y, 62,
X+ 		XV_WIDTH, 135,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "All Rights Reserved",
X+ 		PANEL_LABEL_BOLD, TRUE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_8' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_8_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_8",
X+ 		XV_X, 14,
X+ 		XV_Y, 94,
X+ 		XV_WIDTH, 474,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "Boss was written using Sun's Devguide interface builder and the XView OPEN",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_9' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_9_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_9",
X+ 		XV_X, 14,
X+ 		XV_Y, 110,
X+ 		XV_WIDTH, 354,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "LOOK toolkit.  It was initially released in October of 1990.",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_11' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_11_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_11",
X+ 		XV_X, 14,
X+ 		XV_Y, 142,
X+ 		XV_WIDTH, 454,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "I welcome comments, criticism, suggestions, and bug reports.  Many of the",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_12' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_12_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_12",
X+ 		XV_X, 14,
X+ 		XV_Y, 158,
X+ 		XV_WIDTH, 457,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "features in this version of boss were added as the result of a user request. ",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_13' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_13_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_13",
X+ 		XV_X, 14,
X+ 		XV_Y, 174,
X+ 		XV_WIDTH, 467,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "User feedback is the single best driving force in the evolution of my tools.  I ",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_14' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_14_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_14",
X+ 		XV_X, 14,
X+ 		XV_Y, 190,
X+ 		XV_WIDTH, 205,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "look forward to hearing from you!",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_16' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_16_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_16",
X+ 		XV_X, 14,
X+ 		XV_Y, 222,
X+ 		XV_WIDTH, 460,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "Boss has been placed in the public domain, but the copyright on the source",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_17' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_17_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_17",
X+ 		XV_X, 14,
X+ 		XV_Y, 238,
X+ 		XV_WIDTH, 472,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "code is retained by myself and Harris Corporation, my employer.  This means",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_18' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_18_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_18",
X+ 		XV_X, 14,
X+ 		XV_Y, 254,
X+ 		XV_WIDTH, 460,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "that you can give the source code to anyone but you cannot sell any part of",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_19' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_19_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_19",
X+ 		XV_X, 14,
X+ 		XV_Y, 270,
X+ 		XV_WIDTH, 455,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "the source code, nor can you incorporate any part of the source code into a",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_20' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_msg_20_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_20",
X+ 		XV_X, 14,
X+ 		XV_Y, 286,
X+ 		XV_WIDTH, 476,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "product which is subsequently sold.  In addition, certain portions of this code ",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `message6' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_message6_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_X, 14,
X+ 		XV_Y, 302,
X+ 		XV_WIDTH, 442,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "contain information proprietary to Casio Corporation and cannot be sold",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `message7' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_message7_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_X, 14,
X+ 		XV_Y, 318,
X+ 		XV_WIDTH, 317,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "without explicit permission from Casio Corporation.",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `send_mail' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_about_send_mail_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	extern void		popup_send_mail();
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_BUTTON,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:send_mail",
X+ 		XV_X, 215,
X+ 		XV_Y, 352,
X+ 		XV_WIDTH, 78,
X+ 		XV_HEIGHT, 20,
X+ 		PANEL_LABEL_STRING, "Send Mail",
X+ 		PANEL_NOTIFY_PROC, popup_send_mail,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Initialize an instance of object `mail'.
X+  */
X+ boss_mail_objects *
X+ boss_mail_objects_initialize(ip, owner)
X+ 	boss_mail_objects	*ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	if (!ip && !(ip = (boss_mail_objects *) calloc(1, sizeof (boss_mail_objects))))
X+ 		return (boss_mail_objects *) NULL;
X+ 	if (!ip->mail)
X+ 		ip->mail = boss_mail_mail_create(ip, owner);
X+ 	if (!ip->mail_controls)
X+ 		ip->mail_controls = boss_mail_mail_controls_create(ip, ip->mail);
X+ 	if (!ip->msg_21)
X+ 		ip->msg_21 = boss_mail_msg_21_create(ip, ip->mail_controls);
X+ 	if (!ip->msg_22)
X+ 		ip->msg_22 = boss_mail_msg_22_create(ip, ip->mail_controls);
X+ 	if (!ip->address)
X+ 		ip->address = boss_mail_address_create(ip, ip->mail_controls);
X+ 	if (!ip->other_address)
X+ 		ip->other_address = boss_mail_other_address_create(ip, ip->mail_controls);
X+ 	if (!ip->message)
X+ 		ip->message = boss_mail_message_create(ip, ip->mail);
X+ 	if (!ip->mail_controls1)
X+ 		ip->mail_controls1 = boss_mail_mail_controls1_create(ip, ip->mail);
X+ 	if (!ip->accept_send)
X+ 		ip->accept_send = boss_mail_accept_send_create(ip, ip->mail_controls1);
X+ 	if (!ip->cancel_mail)
X+ 		ip->cancel_mail = boss_mail_cancel_mail_create(ip, ip->mail_controls1);
X+ 	return ip;
X+ }
X+ 
X+ /*
X+  * Create object `mail' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_mail_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	extern void	done_mail();
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, FRAME_CMD,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_WIDTH, 506,
X+ 		XV_HEIGHT, 338,
X+ 		XV_LABEL, "Boss: Send mail",
X+ 		XV_SHOW, FALSE,
X+ 		FRAME_SHOW_FOOTER, FALSE,
X+ 		FRAME_SHOW_RESIZE_CORNER, FALSE,
X+ 		FRAME_CMD_PUSHPIN_IN, FALSE,
X+ 		FRAME_DONE_PROC, done_mail,
X+ 		NULL);
X+ 	xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `mail_controls' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_mail_controls_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:mail_controls",
X+ 		XV_X, 0,
X+ 		XV_Y, 0,
X+ 		XV_WIDTH, WIN_EXTEND_TO_EDGE,
X+ 		XV_HEIGHT, 92,
X+ 		WIN_BORDER, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_21' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_msg_21_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_21",
X+ 		XV_X, 14,
X+ 		XV_Y, 14,
X+ 		XV_WIDTH, 478,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "Your feedback is appreciated.  To ensure that your message reaches me, check",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `msg_22' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_msg_22_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_MESSAGE,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:msg_22",
X+ 		XV_X, 14,
X+ 		XV_Y, 30,
X+ 		XV_WIDTH, 395,
X+ 		XV_HEIGHT, 13,
X+ 		PANEL_LABEL_STRING, "that the \"To\" address is valid for your site before clicking \"Send\".",
X+ 		PANEL_LABEL_BOLD, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `address' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_address_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	extern int		handle_address();
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_CHOICE, PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:address",
X+ 		XV_X, 14,
X+ 		XV_Y, 64,
X+ 		XV_WIDTH, 278,
X+ 		XV_HEIGHT, 23,
X+ 		PANEL_VALUE_X, 43,
X+ 		PANEL_VALUE_Y, 64,
X+ 		PANEL_LAYOUT, PANEL_HORIZONTAL,
X+ 		PANEL_CHOICE_NROWS, 1,
X+ 		PANEL_LABEL_STRING, "To:",
X+ 		PANEL_NOTIFY_PROC, handle_address,
X+ 		PANEL_CHOICE_STRINGS,
X+ 			"chuck at trantor.harris-atd.com",
X+ 			"uunet!trantor.harris-atd.com!chuck",
X+ 			"Other:",
X+ 			0,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `other_address' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_other_address_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_TEXT,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:other_address",
X+ 		XV_X, 105,
X+ 		XV_Y, 69,
X+ 		XV_WIDTH, 385,
X+ 		XV_HEIGHT, 15,
X+ 		PANEL_VALUE_X, 114,
X+ 		PANEL_VALUE_Y, 69,
X+ 		PANEL_LAYOUT, PANEL_HORIZONTAL,
X+ 		PANEL_VALUE_DISPLAY_LENGTH, 47,
X+ 		PANEL_VALUE_STORED_LENGTH, 256,
X+ 		PANEL_READ_ONLY, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `message' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_message_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, TEXTSW,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_X, 0,
X+ 		XV_Y, 92,
X+ 		XV_WIDTH, WIN_EXTEND_TO_EDGE,
X+ 		XV_HEIGHT, 188,
X+ 		OPENWIN_SHOW_BORDERS, TRUE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `mail_controls1' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_mail_controls1_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:mail_controls1",
X+ 		XV_X, 0,
X+ 		XV_Y, 280,
X+ 		XV_WIDTH, WIN_EXTEND_TO_EDGE,
X+ 		XV_HEIGHT, WIN_EXTEND_TO_EDGE,
X+ 		WIN_BORDER, FALSE,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `accept_send' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_accept_send_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	extern void		send_mail();
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_BUTTON,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:accept_send",
X+ 		XV_X, 193,
X+ 		XV_Y, 18,
X+ 		XV_WIDTH, 48,
X+ 		XV_HEIGHT, 20,
X+ 		PANEL_LABEL_STRING, "Send",
X+ 		PANEL_NOTIFY_PROC, send_mail,
X+ 		NULL);
X+ 	return obj;
X+ }
X+ 
X+ /*
X+  * Create object `cancel_mail' in the specified instance.
X+ 
X+  */
X+ Xv_opaque
X+ boss_mail_cancel_mail_create(ip, owner)
X+ 	caddr_t		ip;
X+ 	Xv_opaque	owner;
X+ {
X+ 	extern void		cancel_mail();
X+ 	Xv_opaque	obj;
X+ 	
X+ 	obj = xv_create(owner, PANEL_BUTTON,
X+ 		XV_KEY_DATA, INSTANCE, ip,
X+ 		XV_HELP_DATA, "boss:cancel_mail",
X+ 		XV_X, 253,
X+ 		XV_Y, 18,
X+ 		XV_WIDTH, 59,
X+ 		XV_HEIGHT, 20,
X+ 		PANEL_LABEL_STRING, "Cancel",
X+ 		PANEL_NOTIFY_PROC, cancel_mail,
X  		NULL);
X  	return obj;
X  }
X*** boss_ui.h.orig	Fri Nov 30 08:44:16 1990
X--- boss_ui.h	Fri Nov 30 08:15:29 1990
X***************
X*** 1,24 ****
X- /************************************************************************/
X- /*	Copyright 1990 by Chuck Musciano and Harris Corporation		*/
X- /*									*/
X- /*	Permission to use, copy, modify, and distribute this software	*/
X- /*	and its documentation for any purpose and without fee is	*/
X- /*	hereby granted, provided that the above copyright notice	*/
X- /*	appear in all copies and that both that copyright notice and	*/
X- /*	this permission notice appear in supporting documentation, and	*/
X- /*	that the name of Chuck Musciano and Harris Corporation not be	*/
X- /*	used in advertising or publicity pertaining to distribution	*/
X- /*	of the software without specific, written prior permission.	*/
X- /*	Chuck Musciano and Harris Corporation make no representations	*/
X- /*	about the suitability of this software for any purpose.  It is	*/
X- /*	provided "as is" without express or implied warranty.		*/
X- /*									*/
X- /*	This code contains data and information that is proprietary	*/
X- /*	to Casio Corporation.  You may be subject to legal action if	*/
X- /*	this information is released without explicit permission from	*/
X- /*	Casio.								*/
X- /************************************************************************/
X- 
X  #ifndef	boss_HEADER
X  #define	boss_HEADER
X  
X--- 1,3 ----
X***************
X*** 159,162 ****
X--- 138,213 ----
X  extern Xv_opaque	boss_schedule_dialog_schedule_format_create();
X  extern Xv_opaque	boss_schedule_dialog_appt_file_create();
X  extern Xv_opaque	boss_schedule_dialog_schedule_accept_create();
X+ 
X+ typedef struct {
X+ 	Xv_opaque	about;
X+ 	Xv_opaque	about_controls;
X+ 	Xv_opaque	msg_1;
X+ 	Xv_opaque	msg_5;
X+ 	Xv_opaque	msg_6;
X+ 	Xv_opaque	msg_7;
X+ 	Xv_opaque	msg_8;
X+ 	Xv_opaque	msg_9;
X+ 	Xv_opaque	msg_11;
X+ 	Xv_opaque	msg_12;
X+ 	Xv_opaque	msg_13;
X+ 	Xv_opaque	msg_14;
X+ 	Xv_opaque	msg_16;
X+ 	Xv_opaque	msg_17;
X+ 	Xv_opaque	msg_18;
X+ 	Xv_opaque	msg_19;
X+ 	Xv_opaque	msg_20;
X+ 	Xv_opaque	message6;
X+ 	Xv_opaque	message7;
X+ 	Xv_opaque	send_mail;
X+ } boss_about_objects;
X+ 
X+ extern boss_about_objects	*boss_about_objects_initialize();
X+ 
X+ extern Xv_opaque	boss_about_about_create();
X+ extern Xv_opaque	boss_about_about_controls_create();
X+ extern Xv_opaque	boss_about_msg_1_create();
X+ extern Xv_opaque	boss_about_msg_5_create();
X+ extern Xv_opaque	boss_about_msg_6_create();
X+ extern Xv_opaque	boss_about_msg_7_create();
X+ extern Xv_opaque	boss_about_msg_8_create();
X+ extern Xv_opaque	boss_about_msg_9_create();
X+ extern Xv_opaque	boss_about_msg_11_create();
X+ extern Xv_opaque	boss_about_msg_12_create();
X+ extern Xv_opaque	boss_about_msg_13_create();
X+ extern Xv_opaque	boss_about_msg_14_create();
X+ extern Xv_opaque	boss_about_msg_16_create();
X+ extern Xv_opaque	boss_about_msg_17_create();
X+ extern Xv_opaque	boss_about_msg_18_create();
X+ extern Xv_opaque	boss_about_msg_19_create();
X+ extern Xv_opaque	boss_about_msg_20_create();
X+ extern Xv_opaque	boss_about_message6_create();
X+ extern Xv_opaque	boss_about_message7_create();
X+ extern Xv_opaque	boss_about_send_mail_create();
X+ 
X+ typedef struct {
X+ 	Xv_opaque	mail;
X+ 	Xv_opaque	mail_controls;
X+ 	Xv_opaque	msg_21;
X+ 	Xv_opaque	msg_22;
X+ 	Xv_opaque	address;
X+ 	Xv_opaque	other_address;
X+ 	Xv_opaque	message;
X+ 	Xv_opaque	mail_controls1;
X+ 	Xv_opaque	accept_send;
X+ 	Xv_opaque	cancel_mail;
X+ } boss_mail_objects;
X+ 
X+ extern boss_mail_objects	*boss_mail_objects_initialize();
X+ 
X+ extern Xv_opaque	boss_mail_mail_create();
X+ extern Xv_opaque	boss_mail_mail_controls_create();
X+ extern Xv_opaque	boss_mail_msg_21_create();
X+ extern Xv_opaque	boss_mail_msg_22_create();
X+ extern Xv_opaque	boss_mail_address_create();
X+ extern Xv_opaque	boss_mail_other_address_create();
X+ extern Xv_opaque	boss_mail_message_create();
X+ extern Xv_opaque	boss_mail_mail_controls1_create();
X+ extern Xv_opaque	boss_mail_accept_send_create();
X+ extern Xv_opaque	boss_mail_cancel_mail_create();
X  #endif
X*** busy.c.orig	Fri Nov 30 08:44:17 1990
X--- busy.c	Tue Oct 23 08:03:24 1990
X***************
X*** 0 ****
X--- 1,65 ----
X+ /************************************************************************/
X+ /*	Copyright 1988-1990 by Chuck Musciano and Harris Corporation	*/
X+ /*									*/
X+ /*	Permission to use, copy, modify, and distribute this software	*/
X+ /*	and its documentation for any purpose and without fee is	*/
X+ /*	hereby granted, provided that the above copyright notice	*/
X+ /*	appear in all copies and that both that copyright notice and	*/
X+ /*	this permission notice appear in supporting documentation, and	*/
X+ /*	that the name of Chuck Musciano and Harris Corporation not be	*/
X+ /*	used in advertising or publicity pertaining to distribution	*/
X+ /*	of the software without specific, written prior permission.	*/
X+ /*	Chuck Musciano and Harris Corporation make no representations	*/
X+ /*	about the suitability of this software for any purpose.  It is	*/
X+ /*	provided "as is" without express or implied warranty.  This 	*/
X+ /*	software may not be sold without the prior explicit permission	*/
X+ /*	of Harris Corporation.						*/
X+ /************************************************************************/
X+ 
X+ /************************************************************************/
X+ /*									*/
X+ /*	busy.c	turn frame busy attribute on and off			*/
X+ /*									*/
X+ /************************************************************************/
X+ 
X+ #include	<stdio.h>
X+ #include	<xview/xview.h>
X+ #include	<xview/panel.h>
X+ 
X+ #include	"manifest.h"
X+ 
X+ /************************************************************************/
X+ PRIVATE	set_busy(base, busy, skip)
X+ 
X+ Frame	base;
X+ int	busy;
X+ Frame	skip;
X+ 
X+ {	Frame	subframe;
X+ 	int	i;
X+ 
X+ 	for (i = 1; subframe = (Frame) xv_get(base, FRAME_NTH_SUBFRAME, i); i++)
X+ 	   if (subframe != skip)
X+ 	      if (xv_get(subframe, XV_SHOW))
X+ 	         xv_set(subframe, FRAME_BUSY, busy, NULL);
X+ 	xv_set(base, FRAME_BUSY, busy, NULL);
X+ }
X+ 
X+ /************************************************************************/
X+ EXPORT	lets_get_busy(base, busy, skip)
X+ 
X+ Frame	base;
X+ int	busy;
X+ Frame	skip;
X+ 
X+ {	static	int	depth = 0;
X+ 
X+ 	if (busy) {
X+ 	   if (depth == 0)
X+ 	      set_busy(base, TRUE, skip);
X+ 	   depth++;
X+ 	   }
X+ 	else if (depth > 0)
X+ 	   if (--depth == 0)
X+ 	      set_busy(base, FALSE, NULL);
X+ }
X*** do_load.c.orig	Fri Nov 30 08:44:24 1990
X--- do_load.c	Wed Oct 24 08:18:56 1990
X***************
X*** 108,114 ****
X  	FILE	*f;
X  	object	*o, *obj;
X  
X! 	lets_get_busy(TRUE, NULL);
X  	xv_set(item, PANEL_NOTIFY_STATUS, XV_ERROR, 0);
X  
X  	if (((int) xv_get(dialog->source, PANEL_VALUE)) == FROM_BOSS) {
X--- 108,114 ----
X  	FILE	*f;
X  	object	*o, *obj;
X  
X! 	lets_get_busy(boss_base->base, TRUE, NULL);
X  	xv_set(item, PANEL_NOTIFY_STATUS, XV_ERROR, 0);
X  
X  	if (((int) xv_get(dialog->source, PANEL_VALUE)) == FROM_BOSS) {
X***************
X*** 166,170 ****
X  	   else
X  	      error("Could not read from %s", p);
X  	   }
X! 	lets_get_busy(FALSE, NULL);
X  }
X--- 166,170 ----
X  	   else
X  	      error("Could not read from %s", p);
X  	   }
X! 	lets_get_busy(boss_base->base, FALSE, NULL);
X  }
X*** do_schedule.c.orig	Fri Nov 30 08:44:26 1990
X--- do_schedule.c	Wed Oct 24 08:18:49 1990
X***************
X*** 223,233 ****
X  
X  {	int	result, format;
X  
X! 	lets_get_busy(TRUE, NULL);
X  	if ((format = (int) xv_get(dialog->schedule_format, PANEL_VALUE)) == CALENTOOL)
X  	   result = convert_to_calentool();
X  	else if (format == CALENDAR_MANAGER)
X  	   result = convert_to_calendar_manager();
X  	xv_set(item, PANEL_NOTIFY_STATUS, result, NULL);
X! 	lets_get_busy(FALSE, NULL);
X  }
X--- 223,233 ----
X  
X  {	int	result, format;
X  
X! 	lets_get_busy(boss_base->base, TRUE, NULL);
X  	if ((format = (int) xv_get(dialog->schedule_format, PANEL_VALUE)) == CALENTOOL)
X  	   result = convert_to_calentool();
X  	else if (format == CALENDAR_MANAGER)
X  	   result = convert_to_calendar_manager();
X  	xv_set(item, PANEL_NOTIFY_STATUS, result, NULL);
X! 	lets_get_busy(boss_base->base, FALSE, NULL);
X  }
X*** do_store.c.orig	Fri Nov 30 08:44:27 1990
X--- do_store.c	Fri Nov  2 10:04:49 1990
X***************
X*** 30,38 ****
X--- 30,40 ----
X  #include	<sys/types.h>
X  #include	<xview/xview.h>
X  #include	<xview/panel.h>
X+ #include	<xview/notice.h>
X  #include	"boss_ui.h"
X  
X  #include	"manifest.h"
X+ #include	"packet.h"
X  #include	"object.h"
X  #include	"globals.h"
X  
X***************
X*** 109,120 ****
X  	object	*obj;
X  	char	*path;
X  
X! 	lets_get_busy(TRUE, NULL);
X  	xv_set(item, PANEL_NOTIFY_STATUS, XV_ERROR, 0);
X  
X  	if ((which = (int) xv_get(dialog->store_data, PANEL_VALUE)) == 0)
X  	   xv_set(item, PANEL_NOTIFY_STATUS, XV_OK, 0);
X  	else if (((int) xv_get(dialog->dest, PANEL_VALUE)) == TO_BOSS) {
X  	   if (open_casio(port_file, baud_rate, parity)) {
X  	      if (start_session()) {
X  	         for (i = 0; i < MAX_OBJECT_KINDS; i++)
X--- 111,138 ----
X  	object	*obj;
X  	char	*path;
X  
X! 	lets_get_busy(boss_base->base, TRUE, NULL);
X  	xv_set(item, PANEL_NOTIFY_STATUS, XV_ERROR, 0);
X  
X  	if ((which = (int) xv_get(dialog->store_data, PANEL_VALUE)) == 0)
X  	   xv_set(item, PANEL_NOTIFY_STATUS, XV_OK, 0);
X  	else if (((int) xv_get(dialog->dest, PANEL_VALUE)) == TO_BOSS) {
X+ 	   if (baud_rate == BAUD_9600) {
X+ 	      i = notice_prompt(boss_base->base, NULL,
X+ 	                           NOTICE_MESSAGE_STRINGS, "Storing data to the BOSS at 9600 baud is known",
X+ 	                           			   "to be unreliable.  You should reduce the baud",
X+ 	                             			   "rate to 4800 or lower before proceeding.",
X+ 	                             			   " ",
X+ 	                             			   "Do you wish to continue?",
X+ 	                             			   NULL,
X+ 	                           NOTICE_BUTTON_YES, "Continue",
X+ 	                           NOTICE_BUTTON_NO, "Cancel",
X+ 	                        0);
X+ 	      if (i == NOTICE_NO) {
X+ 	         lets_get_busy(boss_base->base, FALSE, NULL);
X+ 	         return;
X+ 	         }
X+ 	      }
X  	   if (open_casio(port_file, baud_rate, parity)) {
X  	      if (start_session()) {
X  	         for (i = 0; i < MAX_OBJECT_KINDS; i++)
X***************
X*** 160,164 ****
X  	      xv_set(item, PANEL_NOTIFY_STATUS, XV_OK, 0);
X  	      }
X  	   }
X! 	lets_get_busy(FALSE, NULL);
X  }
X--- 178,182 ----
X  	      xv_set(item, PANEL_NOTIFY_STATUS, XV_OK, 0);
X  	      }
X  	   }
X! 	lets_get_busy(boss_base->base, FALSE, NULL);
X  }
X*** expand.c.orig	Fri Nov 30 08:44:28 1990
X--- expand.c	Fri Jun  8 11:35:59 1990
X***************
X*** 1,5 ****
X  /************************************************************************/
X! /*	Copyright 1990 by Chuck Musciano and Harris Corporation		*/
X  /*									*/
X  /*	Permission to use, copy, modify, and distribute this software	*/
X  /*	and its documentation for any purpose and without fee is	*/
X--- 1,5 ----
X  /************************************************************************/
X! /*	Copyright 1988-1990 by Chuck Musciano and Harris Corporation	*/
X  /*									*/
X  /*	Permission to use, copy, modify, and distribute this software	*/
X  /*	and its documentation for any purpose and without fee is	*/
X***************
X*** 11,22 ****
X  /*	of the software without specific, written prior permission.	*/
X  /*	Chuck Musciano and Harris Corporation make no representations	*/
X  /*	about the suitability of this software for any purpose.  It is	*/
X! /*	provided "as is" without express or implied warranty.		*/
X! /*									*/
X! /*	This code contains data and information that is proprietary	*/
X! /*	to Casio Corporation.  You may be subject to legal action if	*/
X! /*	this information is released without explicit permission from	*/
X! /*	Casio.								*/
X  /************************************************************************/
X  
X  #include	<sys/types.h>
X--- 11,19 ----
X  /*	of the software without specific, written prior permission.	*/
X  /*	Chuck Musciano and Harris Corporation make no representations	*/
X  /*	about the suitability of this software for any purpose.  It is	*/
X! /*	provided "as is" without express or implied warranty.  This 	*/
X! /*	software may not be sold without the prior explicit permission	*/
X! /*	of Harris Corporation.						*/
X  /************************************************************************/
X  
X  #include	<sys/types.h>
X*** filename_completion.c.orig	Fri Nov 30 08:44:28 1990
X--- filename_completion.c	Tue Oct 23 08:20:50 1990
X***************
X*** 0 ****
X--- 1,52 ----
X+ /************************************************************************/
X+ /*	Copyright 1988-1990 by Chuck Musciano and Harris Corporation	*/
X+ /*									*/
X+ /*	Permission to use, copy, modify, and distribute this software	*/
X+ /*	and its documentation for any purpose and without fee is	*/
X+ /*	hereby granted, provided that the above copyright notice	*/
X+ /*	appear in all copies and that both that copyright notice and	*/
X+ /*	this permission notice appear in supporting documentation, and	*/
X+ /*	that the name of Chuck Musciano and Harris Corporation not be	*/
X+ /*	used in advertising or publicity pertaining to distribution	*/
X+ /*	of the software without specific, written prior permission.	*/
X+ /*	Chuck Musciano and Harris Corporation make no representations	*/
X+ /*	about the suitability of this software for any purpose.  It is	*/
X+ /*	provided "as is" without express or implied warranty.  This 	*/
X+ /*	software may not be sold without the prior explicit permission	*/
X+ /*	of Harris Corporation.						*/
X+ /************************************************************************/
X+ 
X+ /************************************************************************/
X+ /*									*/
X+ /*	filename_completion.c	completion handler for text items	*/
X+ /*									*/
X+ /************************************************************************/
X+ 
X+ #include	<stdio.h>
X+ #include	<sys/param.h>
X+ #include	<sys/types.h>
X+ #include	<xview/xview.h>
X+ #include	<xview/panel.h>
X+ 
X+ #include	"manifest.h"
X+ 
X+ /************************************************************************/
X+ EXPORT	Panel_setting	filename_completion(item, event)
X+ 
X+ Panel_item	item;
X+ Event		*event;
X+ 
X+ {	char	*p, *expand_filename();
X+ 
X+ 	switch (event_action(event)) {
X+ 	   case '\n' :
X+ 	   case '\r' :
X+ 	   case ' '  : if ((p = expand_filename((char *) xv_get(item, PANEL_VALUE))) == NULL)
X+ 	   		  window_bell(xv_get(item, XV_OWNER));
X+ 	   	       else
X+ 	   	          xv_set(item, PANEL_VALUE, p, 0);
X+ 	   	       return(PANEL_NONE);
X+ 	   case '\t' : return(event_shift_is_down(event)? PANEL_PREVIOUS : PANEL_NEXT);
X+ 	   default   : return(panel_text_notify(item, event));
X+ 	   }
X+ }
X*** list_misc.c.orig	Fri Nov 30 08:44:31 1990
X--- list_misc.c	Fri Nov  9 11:11:30 1990
X***************
X*** 0 ****
X--- 1,85 ----
X+ /************************************************************************/
X+ /*	Copyright 1988-1990 by Chuck Musciano and Harris Corporation	*/
X+ /*									*/
X+ /*	Permission to use, copy, modify, and distribute this software	*/
X+ /*	and its documentation for any purpose and without fee is	*/
X+ /*	hereby granted, provided that the above copyright notice	*/
X+ /*	appear in all copies and that both that copyright notice and	*/
X+ /*	this permission notice appear in supporting documentation, and	*/
X+ /*	that the name of Chuck Musciano and Harris Corporation not be	*/
X+ /*	used in advertising or publicity pertaining to distribution	*/
X+ /*	of the software without specific, written prior permission.	*/
X+ /*	Chuck Musciano and Harris Corporation make no representations	*/
X+ /*	about the suitability of this software for any purpose.  It is	*/
X+ /*	provided "as is" without express or implied warranty.  This 	*/
X+ /*	software may not be sold without the prior explicit permission	*/
X+ /*	of Harris Corporation.						*/
X+ /************************************************************************/
X+ 
X+ /************************************************************************/
X+ /*									*/
X+ /*	list_utils.c	other tools for manipulating panel settings	*/
X+ /*									*/
X+ /************************************************************************/
X+ 
X+ #include	<stdio.h>
X+ #include	<sys/param.h>
X+ #include	<sys/types.h>
X+ #include	<xview/xview.h>
X+ #include	<xview/panel.h>
X+ 
X+ #include	"manifest.h"
X+ 
X+ /************************************************************************/
X+ EXPORT	int	list_count(item)
X+ 
X+ Panel_item	item;
X+ 
X+ {	int	i, count, rows;
X+ 
X+ 	rows = (int) xv_get(item, PANEL_LIST_NROWS);
X+ 	for (i = count = 0; i < rows; i++)
X+ 	   if (xv_get(item, PANEL_LIST_SELECTED, i))
X+ 	      count++;
X+ 	return(count);
X+ }
X+ 
X+ /************************************************************************/
X+ EXPORT	empty_list(item)
X+ 
X+ Panel_item	item;
X+ 
X+ {	int	row;
X+ 
X+ 	row = (int) xv_get(item, PANEL_LIST_NROWS);
X+ 	for ( ; row > 0; row--)
X+ 	   xv_set(item, PANEL_LIST_DELETE, row - 1, NULL);
X+ }
X+ 
X+ /************************************************************************/
X+ EXPORT	clear_list(item)
X+ 
X+ Panel_item	item;
X+ 
X+ {	int	i, row;
X+ 
X+ 	row = (int) xv_get(item, PANEL_LIST_NROWS);
X+ 	for (i = 0; i < row; i++)
X+ 	   if (xv_get(item, PANEL_LIST_SELECTED, i))
X+ 	      xv_set(item, PANEL_LIST_SELECT, i, FALSE, NULL);
X+ }
X+ 
X+ /************************************************************************/
X+ EXPORT	int	first_selected(item)
X+ 
X+ Panel_item	item;
X+ 
X+ {	int	i, row;
X+ 
X+ 	row = (int) xv_get(item, PANEL_LIST_NROWS);
X+ 	for (i = 0; i < row; i++)
X+ 	   if (xv_get(item, PANEL_LIST_SELECTED, i))
X+ 	      return(i);
X+ 	return(0);
X+ }
X+ 	   
X*** misc.c.orig	Fri Nov 30 08:44:33 1990
X--- misc.c	Fri Nov  2 07:34:57 1990
X***************
X*** 204,206 ****
X--- 204,220 ----
X  	   }
X  	return(c);
X  }
X+ 
X+ /************************************************************************/
X+ EXPORT	int	is_empty(s)
X+ 
X+ char	*s;
X+ 
X+ {
X+ 	if (s == NULL)
X+ 	   return(TRUE);
X+ 	for (; *s; s++)
X+ 	   if (!isspace(*s))
X+ 	      return(FALSE); 
X+ 	return(TRUE);
X+ }
X*** patchlevel.h.orig	Fri Nov 30 08:44:38 1990
X--- patchlevel.h	Fri Nov 30 08:12:35 1990
X***************
X*** 22,26 ****
X--- 22,32 ----
X  /************************************************************************/
X  /*									*/
X  /*	0	15 Oct 90	Initial release				*/
X+ /*				comp.sources.x: Volume 10, Issues 3-8	*/
X+ /*									*/
X+ /*	1	 1 Dec 90	Restructured code for maintainability	*/
X+ /*				Added "About Boss..."			*/
X+ /*				Added warning about downloads at 9600	*/
X+ /*				   baud					*/
X  /*									*/
X  /************************************************************************/
X*** pinned_menu_notify.c.orig	Fri Nov 30 08:44:39 1990
X--- pinned_menu_notify.c	Tue Oct 23 08:03:27 1990
X***************
X*** 0 ****
X--- 1,52 ----
X+ /************************************************************************/
X+ /*	Copyright 1988-1990 by Chuck Musciano and Harris Corporation	*/
X+ /*									*/
X+ /*	Permission to use, copy, modify, and distribute this software	*/
X+ /*	and its documentation for any purpose and without fee is	*/
X+ /*	hereby granted, provided that the above copyright notice	*/
X+ /*	appear in all copies and that both that copyright notice and	*/
X+ /*	this permission notice appear in supporting documentation, and	*/
X+ /*	that the name of Chuck Musciano and Harris Corporation not be	*/
X+ /*	used in advertising or publicity pertaining to distribution	*/
X+ /*	of the software without specific, written prior permission.	*/
X+ /*	Chuck Musciano and Harris Corporation make no representations	*/
X+ /*	about the suitability of this software for any purpose.  It is	*/
X+ /*	provided "as is" without express or implied warranty.  This 	*/
X+ /*	software may not be sold without the prior explicit permission	*/
X+ /*	of Harris Corporation.						*/
X+ /************************************************************************/
X+ 
X+ /************************************************************************/
X+ /*									*/
X+ /*	pinned_menu_notify.c	GUIDE callback for pinned menus		*/
X+ /*									*/
X+ /************************************************************************/
X+ 
X+ #include	<stdio.h>
X+ #include	<sys/param.h>
X+ #include	<sys/types.h>
X+ #include	<xview/xview.h>
X+ 
X+ #include	"manifest.h"
X+ 
X+ /************************************************************************/
X+ EXPORT	void	pinned_menu_notify(menu, item)
X+ 
X+ Menu		menu;
X+ Menu_item	item;
X+ 
X+ {	Xv_opaque	pin_window	 = (Xv_opaque) xv_get(menu, MENU_PIN_WINDOW);
X+ 	void		(*menu_notify)() = (void (*)()) xv_get(menu, MENU_GEN_PROC);
X+ 	void		(*item_notify)() = (void (*)()) xv_get(item, MENU_GEN_PROC);
X+ 	
X+ 	if (pin_window && xv_get(pin_window, XV_SHOW)) {
X+ 	   if (menu_notify)
X+ 	      (*menu_notify)(menu, MENU_NOTIFY);
X+ 	   if (item_notify)
X+ 	      (*item_notify)(item, MENU_NOTIFY);
X+ 	   if (item_notify)
X+ 	      (*item_notify)(item, MENU_NOTIFY_DONE);
X+ 	   if (menu_notify)
X+ 	      (*menu_notify)(menu, MENU_NOTIFY_DONE);
X+ 	}
X+ }
X*** place_dialog.c.orig	Fri Nov 30 08:44:40 1990
X--- place_dialog.c	Thu Nov 29 15:18:03 1990
X***************
X*** 0 ****
X--- 1,69 ----
X+ /************************************************************************/
X+ /*	Copyright 1988-1990 by Chuck Musciano and Harris Corporation	*/
X+ /*									*/
X+ /*	Permission to use, copy, modify, and distribute this software	*/
X+ /*	and its documentation for any purpose and without fee is	*/
X+ /*	hereby granted, provided that the above copyright notice	*/
X+ /*	appear in all copies and that both that copyright notice and	*/
X+ /*	this permission notice appear in supporting documentation, and	*/
X+ /*	that the name of Chuck Musciano and Harris Corporation not be	*/
X+ /*	used in advertising or publicity pertaining to distribution	*/
X+ /*	of the software without specific, written prior permission.	*/
X+ /*	Chuck Musciano and Harris Corporation make no representations	*/
X+ /*	about the suitability of this software for any purpose.  It is	*/
X+ /*	provided "as is" without express or implied warranty.  This 	*/
X+ /*	software may not be sold without the prior explicit permission	*/
X+ /*	of Harris Corporation.						*/
X+ /************************************************************************/
X+ 
X+ /************************************************************************/
X+ /*									*/
X+ /*	place_dialog.c	position a dialog box at the right place	*/
X+ /*									*/
X+ /************************************************************************/
X+ 
X+ #include	<stdio.h>
X+ #include	<sys/param.h>
X+ #include	<sys/types.h>
X+ #include	<xview/xview.h>
X+ #include	<X11/Xutil.h>
X+ 
X+ #include	"manifest.h"
X+ 
X+ /************************************************************************/
X+ EXPORT	void	place_dialog(base, dialog)
X+ 
X+ Xv_opaque	base;
X+ Xv_opaque	dialog;
X+ 
X+ {	Rect		br, dr, sr;
X+ 	XWMHints	*hints;
X+ 
X+ 	sr = *((Rect *) xv_get(base, WIN_SCREEN_RECT));
X+ 	frame_get_rect(base, &br);
X+ 	frame_get_rect(dialog, &dr);
X+ 	if (rect_right(&br) + dr.r_width < sr.r_width) {
X+ 	   dr.r_left = rect_right(&br);
X+ 	   dr.r_top = br.r_top;
X+ 	   }
X+ 	else if (dr.r_width <= br.r_left) {
X+ 	   dr.r_left = br.r_left - dr.r_width;
X+ 	   dr.r_top = br.r_top;
X+ 	   }
X+ 	else {
X+ 	   dr.r_left = br.r_left + 32;
X+ 	   dr.r_top = br.r_top + 32;
X+ 	   }
X+ 	if (dr.r_top + dr.r_height > sr.r_height)
X+ 	   dr.r_top = sr.r_height - dr.r_height;
X+ 	if (dr.r_top < 0)
X+ 	   dr.r_top = 0;
X+ 	frame_set_rect(dialog, &dr);
X+ 
X+ 	hints = XGetWMHints(xv_get(dialog, XV_DISPLAY), xv_get(dialog, XV_XID));
X+ 	hints->flags |= StateHint;
X+ 	hints->initial_state = NormalState;
X+ 	XSetWMHints(xv_get(dialog, XV_DISPLAY), xv_get(dialog, XV_XID), hints);
X+ 	XFree(hints);
X+ }
X+ 
X*** send_mail.c.orig	Fri Nov 30 08:44:44 1990
X--- send_mail.c	Thu Nov 29 15:58:19 1990
X***************
X*** 0 ****
X--- 1,146 ----
X+ /************************************************************************/
X+ /*	Copyright 1990 by Chuck Musciano and Harris Corporation		*/
X+ /*									*/
X+ /*	Permission to use, copy, modify, and distribute this software	*/
X+ /*	and its documentation for any purpose and without fee is	*/
X+ /*	hereby granted, provided that the above copyright notice	*/
X+ /*	appear in all copies and that both that copyright notice and	*/
X+ /*	this permission notice appear in supporting documentation, and	*/
X+ /*	that the name of Chuck Musciano and Harris Corporation not be	*/
X+ /*	used in advertising or publicity pertaining to distribution	*/
X+ /*	of the software without specific, written prior permission.	*/
X+ /*	Chuck Musciano and Harris Corporation make no representations	*/
X+ /*	about the suitability of this software for any purpose.  It is	*/
X+ /*	provided "as is" without express or implied warranty.		*/
X+ /*									*/
X+ /*	This code contains data and information that is proprietary	*/
X+ /*	to Casio Corporation.  You may be subject to legal action if	*/
X+ /*	this information is released without explicit permission from	*/
X+ /*	Casio.								*/
X+ /************************************************************************/
X+ 
X+ /************************************************************************/
X+ /*									*/
X+ /*	send_mail.c	display a little information window		*/
X+ /*									*/
X+ /************************************************************************/
X+ 
X+ #include	<stdio.h>
X+ #include	<sys/param.h>
X+ #include	<sys/types.h>
X+ #include	<xview/xview.h>
X+ #include	<xview/panel.h>
X+ #include	<xview/textsw.h>
X+ #include	"boss_ui.h"
X+ 
X+ #include	"manifest.h"
X+ 
X+ #define		VERSION			"1.0a"
X+ 
X+ PUBLIC	boss_base_objects	*boss_base;
X+ 
X+ PRIVATE	boss_mail_objects	*dialog = NULL;
X+ 
X+ /************************************************************************/
X+ EXPORT	popup_send_mail(item, event)
X+ 
X+ Panel_item	item;
X+ Event		*event;
X+ 
X+ {
X+ 	if (dialog == NULL) {
X+ 	   dialog = boss_mail_objects_initialize(NULL, boss_base->base);
X+ 	   place_dialog(boss_base->base, dialog->mail);
X+ 	   xv_set(dialog->other_address, WIN_SHOW, FALSE, NULL);
X+ 	   }
X+ 	xv_set(dialog->mail, XV_SHOW, TRUE, NULL);
X+ 	xv_set(item, PANEL_NOTIFY_STATUS, XV_OK, 0);
X+ }
X+ 
X+ /************************************************************************/
X+ EXPORT	void	handle_address(item, value, event)
X+ 
X+ Panel_item	item;
X+ int		value;
X+ Event		*event;
X+ 
X+ {
X+ 	if (value == 2) {
X+ 	   xv_set(dialog->other_address, WIN_SHOW, TRUE, NULL);
X+ 	   panel_paint(dialog->address, PANEL_NO_CLEAR);
X+ 	   panel_paint(dialog->other_address, PANEL_NO_CLEAR);
X+ 	   }
X+ 	else {
X+ 	   xv_set(dialog->other_address, WIN_SHOW, FALSE, NULL);
X+ 	   panel_paint(dialog->address, PANEL_NO_CLEAR);
X+ 	   }
X+ }
X+ 
X+ /************************************************************************/
X+ EXPORT	void	done_mail(frame)
X+ 
X+ Frame		frame;
X+ 
X+ {
X+ 	textsw_reset(dialog->message, 0, 0);
X+ 	xv_set(frame, XV_SHOW, FALSE, 0);
X+ }
X+ 
X+ /************************************************************************/
X+ EXPORT	void	send_mail(item, event)
X+ 
X+ Panel_item	item;
X+ Event		*event;
X+ 
X+ {	char	cmd[1024], *buf;
X+ 	int	val, size;
X+ 	FILE	*pipe;
X+ 
X+ 	xv_set(item, PANEL_NOTIFY_STATUS, XV_ERROR, 0);
X+ 	val = (int) xv_get(dialog->address, PANEL_VALUE);
X+ 	if (val != 2)
X+ 	   sprintf(cmd, "%s %s", MAILER, xv_get(dialog->address, PANEL_CHOICE_STRING, val));
X+ 	else {
X+ 	   buf = (char *) xv_get(dialog->other_address, PANEL_VALUE);
X+ 	   if (is_empty(buf)) {
X+ 	      error("You must specify an alternate address before sending your message");
X+ 	      return;
X+ 	      }
X+ 	   else
X+ 	      sprintf(cmd, "%s %s", MAILER, buf);
X+ 	   }
X+ 	size = (int) xv_get(dialog->message, TEXTSW_LENGTH);
X+ 	if (size == 0) {
X+ 	   error("Please type a message before sending the mail");
X+ 	   return;
X+ 	   }
X+ 	if ((pipe = popen(cmd, "w")) == NULL) {
X+ 	   error("Could not invoke \"%s\" to send mail", cmd);
X+ 	   return;
X+ 	   }
X+ 	lets_get_busy(boss_base->base, TRUE, NULL);
X+ 	buf = (char *) malloc(size);
X+ 	xv_get(dialog->message, TEXTSW_CONTENTS, 0, buf, size);
X+ 	fprintf(pipe, "Subject: Boss %s comment\n\n", VERSION);
X+ 	if (fwrite(buf, 1, size, pipe) != size) {
X+ 	   error("Could not write message to the mailer");
X+ 	   free(buf);
X+ 	   return;
X+ 	   }
X+ 	pclose(pipe);
X+ 	free(buf);
X+ 	textsw_reset(dialog->message, 0, 0);
X+ 	lets_get_busy(boss_base->base, FALSE, NULL);
X+ 	xv_set(item, PANEL_NOTIFY_STATUS, XV_OK, 0);
X+ }
X+ 
X+ /************************************************************************/
X+ EXPORT	void	cancel_mail(item, event)
X+ 
X+ Panel_item	item;
X+ Event		*event;
X+ 
X+ {
X+ 	textsw_reset(dialog->message, 0, 0);
X+ 	xv_set(item, PANEL_NOTIFY_STATUS, XV_OK, 0);
X+ }
X*** window_misc.c.orig	Fri Nov 30 08:44:45 1990
X--- window_misc.c	Tue Oct 23 14:17:46 1990
X***************
X*** 51,182 ****
X  		         NOTICE_BUTTON_YES, "OK",
X  		      0);
X  }
X- 
X- /************************************************************************/
X- EXPORT	void	pinned_menu_notify(menu, item)
X- 
X- Menu		menu;
X- Menu_item	item;
X- 
X- {	Xv_opaque	pin_window	 = (Xv_opaque) xv_get(menu, MENU_PIN_WINDOW);
X- 	void		(*menu_notify)() = (void (*)()) xv_get(menu, MENU_GEN_PROC);
X- 	void		(*item_notify)() = (void (*)()) xv_get(item, MENU_GEN_PROC);
X- 	
X- 	if (pin_window && xv_get(pin_window, XV_SHOW)) {
X- 	   if (menu_notify)
X- 	      (*menu_notify)(menu, MENU_NOTIFY);
X- 	   if (item_notify)
X- 	      (*item_notify)(item, MENU_NOTIFY);
X- 	   if (item_notify)
X- 	      (*item_notify)(item, MENU_NOTIFY_DONE);
X- 	   if (menu_notify)
X- 	      (*menu_notify)(menu, MENU_NOTIFY_DONE);
X- 	}
X- }
X- 
X- /************************************************************************/
X- EXPORT	Panel_setting	filename_completion(item, event)
X- 
X- Panel_item	item;
X- Event		*event;
X- 
X- {	char	*p, *expand_filename();
X- 
X- 	switch (event_action(event)) {
X- 	   case '\n' :
X- 	   case '\r' :
X- 	   case ' '  : if ((p = expand_filename((char *) xv_get(item, PANEL_VALUE))) == NULL)
X- 	   		  window_bell(xv_get(item, XV_OWNER));
X- 	   	       else
X- 	   	          xv_set(item, PANEL_VALUE, p, 0);
X- 	   	       return(PANEL_NONE);
X- 	   case '\t' : return(event_shift_is_down(event)? PANEL_PREVIOUS : PANEL_NEXT);
X- 	   default   : return(panel_text_notify(item, event));
X- 	   }
X- }
X- 
X- /************************************************************************/
X- EXPORT	void	place_dialog(base, dialog)
X- 
X- Xv_opaque	base;
X- Xv_opaque	dialog;
X- 
X- {	Rect	br, dr, sr;
X- 
X- 	sr = *((Rect *) xv_get(base, WIN_SCREEN_RECT));
X- 	frame_get_rect(base, &br);
X- 	frame_get_rect(dialog, &dr);
X- 	if (rect_right(&br) + dr.r_width < sr.r_width) {
X- 	   dr.r_left = rect_right(&br);
X- 	   dr.r_top = br.r_top;
X- 	   }
X- 	else if (dr.r_width <= br.r_left) {
X- 	   dr.r_left = br.r_left - dr.r_width;
X- 	   dr.r_top = br.r_top;
X- 	   }
X- 	else {
X- 	   dr.r_left = br.r_left + 32;
X- 	   dr.r_top = br.r_top + 32;
X- 	   }
X- 	frame_set_rect(dialog, &dr);
X- }
X- 
X- /************************************************************************/
X- EXPORT	int	list_count(item)
X- 
X- Panel_item	item;
X- 
X- {	int	i, count, rows;
X- 
X- 	rows = (int) xv_get(item, PANEL_LIST_NROWS);
X- 	for (i = count = 0; i < rows; i++)
X- 	   if (xv_get(item, PANEL_LIST_SELECTED, i))
X- 	      count++;
X- 	return(count);
X- }
X- 
X- /************************************************************************/
X- EXPORT	empty_list(item)
X- 
X- Panel_item	item;
X- 
X- {	int	row;
X- 
X- 	row = (int) xv_get(item, PANEL_LIST_NROWS);
X- 	for ( ; row > 0; row--)
X- 	   xv_set(item, PANEL_LIST_DELETE, row - 1, NULL);
X- }
X- 
X- /************************************************************************/
X- PRIVATE	set_busy(busy, skip)
X- 
X- int	busy;
X- Frame	skip;
X- 
X- {	Frame	subframe;
X- 	int	i;
X- 
X- 	for (i = 1; subframe = (Frame) xv_get(boss_base->base, FRAME_NTH_SUBFRAME, i); i++)
X- 	   if (subframe != skip)
X- 	      if (xv_get(subframe, XV_SHOW))
X- 	         xv_set(subframe, FRAME_BUSY, busy, NULL);
X- 	xv_set(boss_base->base, FRAME_BUSY, busy, NULL);
X- }
X- 
X- /************************************************************************/
X- EXPORT	lets_get_busy(busy, skip)
X- 
X- int	busy;
X- Frame	skip;
X- 
X- {	static	int	depth = 0;
X- 
X- 	if (busy) {
X- 	   if (depth == 0)
X- 	      set_busy(TRUE, skip);
X- 	   depth++;
X- 	   }
X- 	else if (depth > 0)
X- 	   if (--depth == 0)
X- 	      set_busy(FALSE, NULL);
X- }
X--- 51,53 ----
END_OF_FILE
if test 65348 -ne `wc -c <'patch'`; then
    echo shar: \"'patch'\" unpacked with wrong size!
fi
# end of 'patch'
fi
echo shar: End of shell archive.
exit 0

Chuck Musciano				ARPA  : chuck at trantor.harris-atd.com
Harris Corporation 			Usenet: ...!uunet!x102a!trantor!chuck
PO Box 37, MS 3A/1912			AT&T  : (407) 727-6131
Melbourne, FL 32902			FAX   : (407) 729-2537

A good newspaper is never good enough,
	but a lousy newspaper is a joy forever.		-- Garrison Keillor

dan
----------------------------------------------------
O'Reilly && Associates   argv at sun.com / argv at ora.com
Opinions expressed reflect those of the author only.
--
dan
----------------------------------------------------
O'Reilly && Associates   argv at sun.com / argv at ora.com
Opinions expressed reflect those of the author only.



More information about the Comp.sources.x mailing list