[comp.sources.x] v10i071: xrolo -- an XView rolodex, Patch1, Part01/01

luis@rice.edu (Luis Soltero) (11/16/90)

Submitted-by: luis@rice.edu (Luis Soltero)
Posting-number: Volume 10, Issue 71
Archive-name: xrolo/patch1
Patch-To: xrolo: Volume 9, Issue 84-86

        this version only runs under X and the XView toolkit or
        OpenWindows version 1.1 and up.

        Added print button and X resource to set default print command.

        Fixed problems with selection service.

        Added file name query panel for Save/Load to/from named file.
        The old method of using the selection service to enter file
        names is still supported.  Query Panel only appears if there is
        no text in the selection service.

        Added ability to go to selection in list by clicking on the
        entry and <SHIFT>-click on listbutton.

        Added capital insensitive search and X resource to set the
        default search mode.

        Changed the find button icon.

        Changed panel layout to be more space efficient.

#! /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 archive 1 (of 1)."
# Contents:  find.icon print.icon xrolo.patch1
# Wrapped by luis@oort on Thu Nov 15 13:39:08 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'find.icon' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'find.icon'\"
else
echo shar: Extracting \"'find.icon'\" \(589 characters\)
sed "s/^X//" >'find.icon' <<'END_OF_FILE'
X/* Format_version=1, Width=32, Height=32, Depth=1, Valid_bits_per_item=16
X */
X	0x1010,0x0000,
X	0x0810,0x0000,
X	0x0808,0x0000,
X	0x0404,0x0000,
X	0x0404,0x0000,
X	0x0402,0x0000,
X	0x0401,0x0000,
X	0x0200,0x8000,
X	0x0100,0x8000,
X	0x0100,0x4000,
X	0x0200,0x2000,
X	0x0400,0x2000,
X	0x081C,0x1000,
X	0x08F2,0x0800,
X	0x0F11,0x0800,
X	0x0020,0x8400,
X	0x0041,0x4200,
X	0x0082,0x2100,
X	0x0084,0x2100,
X	0x0108,0x1080,
X	0x0210,0x0840,
X	0x0220,0x0440,
X	0xC240,0x02C3,
X	0xE38C,0x3107,
X	0xF03E,0x7C0F,
X	0x7EFF,0xFF7E,
X	0x1FF3,0xCFF8,
X	0x07C3,0xC3E0,
X	0x0003,0xC000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000
END_OF_FILE
if test 589 -ne `wc -c <'find.icon'`; then
    echo shar: \"'find.icon'\" unpacked with wrong size!
fi
# end of 'find.icon'
fi
if test -f 'print.icon' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'print.icon'\"
else
echo shar: Extracting \"'print.icon'\" \(589 characters\)
sed "s/^X//" >'print.icon' <<'END_OF_FILE'
X/* Format_version=1, Width=32, Height=32, Depth=1, Valid_bits_per_item=16
X */
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0FFF,0xFFF8,
X	0x0800,0x0008,
X	0x0FFF,0xFFF8,
X	0x0804,0x8010,
X	0x0807,0x8020,
X	0x0800,0x0040,
X	0x0FFF,0xFF80,
X	0x0200,0x0080,
X	0x02FF,0xFE80,
X	0x0200,0x0080,
X	0x1EFF,0xFE80,
X	0x1200,0x0080,
X	0x1EFF,0xFE80,
X	0x0200,0x0080,
X	0x01FF,0xFF80,
X	0x01C0,0x0380,
X	0x0080,0x0100,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000,
X	0x0000,0x0000
END_OF_FILE
if test 589 -ne `wc -c <'print.icon'`; then
    echo shar: \"'print.icon'\" unpacked with wrong size!
fi
# end of 'print.icon'
fi
if test -f 'xrolo.patch1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xrolo.patch1'\"
else
echo shar: Extracting \"'xrolo.patch1'\" \(39562 characters\)
sed "s/^X//" >'xrolo.patch1' <<'END_OF_FILE'
X*** Imakefile	Thu Nov 15 13:04:24 1990
X--- ../v2.2/Imakefile	Fri Nov  9 15:59:45 1990
X***************
X*** 14,21 ****
X  # patching ol_button.c. see README for details.
X  # LOCAL_LIBRARIES = -lxview -lolgx
X  
X             SRCS = main.c panel.c cards.c popup.c
X!            OBJS = main.o panel.o cards.o popup.o
X         INCLUDES = -I$$OPENWINHOME/include
X          DEFINES = -DSTANDALONE
X  
X--- 14,22 ----
X  # patching ol_button.c. see README for details.
X  # LOCAL_LIBRARIES = -lxview -lolgx
X  
X+ 		CDEBUGFLAGS = -g
X             SRCS = main.c panel.c cards.c popup.c
X!            OBJS = main.o panel.o cards.o popup.o 
X         INCLUDES = -I$$OPENWINHOME/include
X          DEFINES = -DSTANDALONE
X  
X*** Patchlevel	Thu Nov 15 13:04:26 1990
X--- ../v2.2/Patchlevel	Thu Nov 15 13:01:10 1990
X***************
X*** 1,4 ****
X! Rolo, release 2.0, patch level 1
X  
X  Patch 1:
X    main.c:
X--- 1,27 ----
X! Rolo, release 2.0, patch level 2
X! 
X! Patch 2:
X! 	this version only runs under X and the XView toolkit or
X! 	OpenWindows version 1.1 and up.
X! 
X! 	Added print button and X resource to set default print command.
X! 
X! 	Fixed problems with selection service.
X! 
X! 	Added file name query panel for Save/Load to/from named file.
X! 	The old method of using the selection service to enter file
X! 	names is still supported.  Query Panel only appears if there is
X! 	no text in the selection service.
X! 
X! 	Added ability to go to selection in list by clicking on the
X! 	entry and <SHIFT>-click on listbutton.
X! 
X! 	Added capital insensitive search and X resource to set the
X! 	default search mode.
X! 
X! 	Changed the find button icon.
X! 
X! 	Changed panel layout to be more space efficient.
X  
X  Patch 1:
X    main.c:
X*** buttons1.icon	Thu Nov 15 13:04:29 1990
X--- ../v2.2/buttons1.icon	Wed Nov  7 10:20:34 1990
X***************
X*** 1,34 ****
X  /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X   */
X! 	0x3FFF,0xFFFC,0x3FFF,0xFFFC,0x7FFF,0xFFFE,0x7FFF,0xFFFE,
X! 	0xE000,0x0007,0xE000,0x0007,0xC000,0x0003,0xC000,0x0003,
X! 	0xC001,0x8003,0xC000,0x0003,0xC003,0xC003,0xC000,0x0003,
X! 	0xC007,0xE003,0xC000,0x0003,0xC00F,0xF003,0xC000,0x0003,
X! 	0xC01F,0xF803,0xC000,0x0003,0xC03F,0xFC03,0xC000,0x0003,
X! 	0xC07F,0xFE03,0xC7FF,0xFFF3,0xC0FF,0xFF03,0xC400,0x0013,
X! 	0xC1FF,0xFF83,0xC400,0x0013,0xC3FF,0xFFC3,0xC400,0x0013,
X! 	0xC7FF,0xFFE3,0xC4A1,0x8893,0xCFFF,0xFFF3,0xC4D2,0x4893,
X! 	0xCFFF,0xFFF3,0xC493,0x8A93,0xCFFF,0xFFF3,0xC492,0x0A93,
X! 	0xC00F,0xF003,0xC491,0xC513,0xC00F,0xF003,0xC400,0x0013,
X! 	0xC00F,0xF003,0xC470,0x0713,0xC00F,0xF003,0xC400,0x0013,
X! 	0xC00F,0xF003,0xC7FF,0xFFF3,0xC00F,0xF003,0xC000,0x0003,
X! 	0xC00F,0xF003,0xC000,0x0003,0xC00F,0xF003,0xC000,0x0003,
X! 	0xC00F,0xF003,0xC000,0x0003,0xC00F,0xF003,0xC000,0x0003,
X! 	0xC000,0x0003,0xC000,0x0003,0xE000,0x0007,0xE000,0x0007,
X! 	0x7FFF,0xFFFE,0x7FFF,0xFFFE,0x3FFF,0xFFFC,0x3FFF,0xFFFC,
X! 	0x3FFF,0xFFFC,0x3FFF,0xFFFC,0x7FFF,0xFFFE,0x7FFF,0xFFFE,
X! 	0xE000,0x0007,0xE000,0x0007,0xC000,0x0003,0xC000,0x0003,
X! 	0xC00F,0xF003,0xC00F,0xF003,0xC00F,0xF003,0xC030,0x0C03,
X! 	0xC00F,0xF003,0xC043,0xC203,0xC00F,0xF003,0xC082,0x4103,
X! 	0xC00F,0xF003,0xC060,0x0603,0xC00F,0xF003,0xC05F,0xFA03,
X! 	0xC00F,0xF003,0xC040,0x0203,0xC00F,0xF003,0xC04A,0x5203,
X! 	0xC00F,0xF003,0xC04A,0x5203,0xC00F,0xF003,0xC04A,0x5203,
X! 	0xCFFF,0xFFF3,0xC04A,0x5203,0xCFFF,0xFFF3,0xC04A,0x5203,
X! 	0xCFFF,0xFFF3,0xC04A,0x5203,0xC7FF,0xFFE3,0xC04A,0x5203,
X! 	0xC3FF,0xFFC3,0xC04A,0x5203,0xC1FF,0xFF83,0xC04A,0x5203,
X! 	0xC0FF,0xFF03,0xC04A,0x5203,0xC07F,0xFE03,0xC04A,0x5203,
X! 	0xC03F,0xFC03,0xC04A,0x5203,0xC01F,0xF803,0xC04E,0x7203,
X! 	0xC00F,0xF003,0xC040,0x0203,0xC007,0xE003,0xC060,0x0603,
X! 	0xC003,0xC003,0xC01F,0xF803,0xC001,0x8003,0xC000,0x0003,
X! 	0xC000,0x0003,0xC000,0x0003,0xE000,0x0007,0xE000,0x0007,
X! 	0x7FFF,0xFFFE,0x7FFF,0xFFFE,0x3FFF,0xFFFC,0x3FFF,0xFFFC
X--- 1,66 ----
X  /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X   */
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0001,0x8000,0x0000,0x0000,
X! 	0x0003,0xC000,0x0000,0x0000,
X! 	0x0007,0xE000,0x0000,0x0000,
X! 	0x000F,0xF000,0x0000,0x0000,
X! 	0x001F,0xF800,0x0000,0x0000,
X! 	0x003F,0xFC00,0x0000,0x0000,
X! 	0x007F,0xFE00,0x07FF,0xFFF0,
X! 	0x00FF,0xFF00,0x0400,0x0010,
X! 	0x01FF,0xFF80,0x0400,0x0010,
X! 	0x03FF,0xFFC0,0x0400,0x0010,
X! 	0x07FF,0xFFE0,0x04A1,0x8890,
X! 	0x0FFF,0xFFF0,0x04D2,0x4890,
X! 	0x0FFF,0xFFF0,0x0493,0x8A90,
X! 	0x0FFF,0xFFF0,0x0492,0x0A90,
X! 	0x000F,0xF000,0x0491,0xC510,
X! 	0x000F,0xF000,0x0400,0x0010,
X! 	0x000F,0xF000,0x0470,0x0710,
X! 	0x000F,0xF000,0x0400,0x0010,
X! 	0x000F,0xF000,0x07FF,0xFFF0,
X! 	0x000F,0xF000,0x0000,0x0000,
X! 	0x000F,0xF000,0x0000,0x0000,
X! 	0x000F,0xF000,0x0000,0x0000,
X! 	0x000F,0xF000,0x0000,0x0000,
X! 	0x000F,0xF000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x000F,0xF000,0x000F,0xF000,
X! 	0x000F,0xF000,0x0030,0x0C00,
X! 	0x000F,0xF000,0x0043,0xC200,
X! 	0x000F,0xF000,0x0082,0x4100,
X! 	0x000F,0xF000,0x0060,0x0600,
X! 	0x000F,0xF000,0x005F,0xFA00,
X! 	0x000F,0xF000,0x0040,0x0200,
X! 	0x000F,0xF000,0x004A,0x5200,
X! 	0x000F,0xF000,0x004A,0x5200,
X! 	0x000F,0xF000,0x004A,0x5200,
X! 	0x0FFF,0xFFF0,0x004A,0x5200,
X! 	0x0FFF,0xFFF0,0x004A,0x5200,
X! 	0x0FFF,0xFFF0,0x004A,0x5200,
X! 	0x07FF,0xFFE0,0x004A,0x5200,
X! 	0x03FF,0xFFC0,0x004A,0x5200,
X! 	0x01FF,0xFF80,0x004A,0x5200,
X! 	0x00FF,0xFF00,0x004A,0x5200,
X! 	0x007F,0xFE00,0x004A,0x5200,
X! 	0x003F,0xFC00,0x004A,0x5200,
X! 	0x001F,0xF800,0x004E,0x7200,
X! 	0x000F,0xF000,0x0040,0x0200,
X! 	0x0007,0xE000,0x0060,0x0600,
X! 	0x0003,0xC000,0x001F,0xF800,
X! 	0x0001,0x8000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000
X*** buttons2.icon	Thu Nov 15 13:04:29 1990
X--- ../v2.2/buttons2.icon	Wed Nov  7 10:37:05 1990
X***************
X*** 1,34 ****
X  /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X   */
X! 	0x3FFF,0xFFFC,0x3FFF,0xFFFC,0x7FFF,0xFFFE,0x7FFF,0xFFFE,
X! 	0xE000,0x0007,0xE000,0x0007,0xC000,0x0003,0xC000,0x0003,
X! 	0xC000,0x5403,0xC00F,0xE003,0xC000,0xAA03,0xC03F,0xF803,
X! 	0xC001,0x5103,0xC03F,0xF803,0xC002,0xA083,0xC07F,0xFC03,
X! 	0xC005,0x4043,0xC07C,0x7C03,0xC00A,0x8023,0xC078,0x3C03,
X! 	0xC015,0x0013,0xC030,0x3C03,0xC02A,0x0023,0xC000,0x3C03,
X! 	0xC054,0x0043,0xC000,0x7C03,0xC0A8,0x0083,0xC001,0xF803,
X! 	0xC054,0x0103,0xC003,0xF003,0xC02A,0x0203,0xC003,0xE003,
X! 	0xCFFF,0xFFF3,0xC007,0xC003,0xC800,0x0013,0xC007,0x8003,
X! 	0xC800,0x0013,0xC007,0x8003,0xC80F,0xF013,0xC007,0x8003,
X! 	0xC808,0x1013,0xC007,0x8003,0xC808,0x1013,0xC003,0x0003,
X! 	0xC80F,0xF013,0xC000,0x0003,0xC800,0x0013,0xC000,0x0003,
X! 	0xC810,0x0813,0xC003,0x0003,0xC80F,0xF013,0xC007,0x8003,
X! 	0xC800,0x0013,0xC007,0x8003,0xCFFF,0xFFF3,0xC003,0x0003,
X! 	0xC000,0x0003,0xC000,0x0003,0xE000,0x0007,0xE000,0x0007,
X! 	0x7FFF,0xFFFE,0x7FFF,0xFFFE,0x3FFF,0xFFFC,0x3FFF,0xFFFC,
X! 	0x3FFF,0xFFFC,0x3FFF,0xFFFC,0x7FFF,0xFFFE,0x7FFF,0xFFFE,
X! 	0xE000,0x0007,0xE000,0x0003,0xC000,0x0003,0xC000,0x0003,
X! 	0xCC00,0x0003,0xC000,0x0003,0xCFFC,0x0003,0xC000,0x0003,
X! 	0xCF1F,0xFC03,0xCFFF,0xFFC3,0xCF1C,0xE3E3,0xCC00,0x0043,
X! 	0xCF1C,0xE323,0xCFFF,0xFFE3,0xCCE0,0xE323,0xCE00,0x0023,
X! 	0xCCE3,0x1F23,0xCFFF,0xFFF3,0xCCE3,0x1CE3,0xCF00,0x0013,
X! 	0xCF1F,0x1CE3,0xCFFF,0xFFFB,0xCF1C,0xE0E3,0xCF00,0x000B,
X! 	0xCF1C,0xE323,0xCF00,0x000B,0xCCE0,0xE323,0xCF22,0x010B,
X! 	0xCCE3,0x1F23,0xCF20,0x3BCB,0xCCE3,0x1CE3,0xCF26,0x410B,
X! 	0xCF1F,0x1CE3,0xCF22,0x310B,0xCF1C,0xE0E3,0xCF22,0x090B,
X! 	0xCFFC,0xE323,0xC722,0x70CB,0xCC03,0xFF23,0xC700,0x000B,
X! 	0xCC00,0x03E3,0xC300,0x000B,0xCC00,0x0003,0xC318,0x018B,
X! 	0xCC00,0x0003,0xC100,0x000B,0xCC00,0x0003,0xC1FF,0xFFFB,
X! 	0xCC00,0x0003,0xC000,0x0003,0xCC00,0x0003,0xC000,0x0003,
X! 	0xC000,0x0003,0xC000,0x0003,0xE000,0x0007,0xE000,0x0007,
X! 	0x7FFF,0xFFFE,0x7FFF,0xFFFE,0x3FFF,0xFFFC,0x3FFF,0xFFFC
X--- 1,66 ----
X  /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X   */
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x5400,0x000F,0xE000,
X! 	0x0000,0xAA00,0x003F,0xF800,
X! 	0x0001,0x5100,0x003F,0xF800,
X! 	0x0002,0xA080,0x007F,0xFC00,
X! 	0x0005,0x4040,0x007C,0x7C00,
X! 	0x000A,0x8020,0x0078,0x3C00,
X! 	0x0015,0x0010,0x0030,0x3C00,
X! 	0x002A,0x0020,0x0000,0x3C00,
X! 	0x0054,0x0040,0x0000,0x7C00,
X! 	0x00A8,0x0080,0x0001,0xF800,
X! 	0x0054,0x0100,0x0003,0xF000,
X! 	0x002A,0x0200,0x0003,0xE000,
X! 	0x0FFF,0xFFF0,0x0007,0xC000,
X! 	0x0800,0x0010,0x0007,0x8000,
X! 	0x0800,0x0010,0x0007,0x8000,
X! 	0x080F,0xF010,0x0007,0x8000,
X! 	0x0808,0x1010,0x0007,0x8000,
X! 	0x0808,0x1010,0x0003,0x0000,
X! 	0x080F,0xF010,0x0000,0x0000,
X! 	0x0800,0x0010,0x0000,0x0000,
X! 	0x0810,0x0810,0x0003,0x0000,
X! 	0x080F,0xF010,0x0007,0x8000,
X! 	0x0800,0x0010,0x0007,0x8000,
X! 	0x0FFF,0xFFF0,0x0003,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0C00,0x0000,0x0000,0x0000,
X! 	0x0FFC,0x0000,0x0000,0x0000,
X! 	0x0F1F,0xFC00,0x07FF,0xFFC0,
X! 	0x0F1C,0xE3E0,0x0400,0x0040,
X! 	0x0F1C,0xE320,0x07FF,0xFFE0,
X! 	0x0CE0,0xE320,0x0600,0x0020,
X! 	0x0CE3,0x1F20,0x07FF,0xFFF0,
X! 	0x0CE3,0x1CE0,0x0700,0x0010,
X! 	0x0F1F,0x1CE0,0x07FF,0xFFF8,
X! 	0x0F1C,0xE0E0,0x0700,0x0008,
X! 	0x0F1C,0xE320,0x0700,0x0008,
X! 	0x0CE0,0xE320,0x0722,0x0108,
X! 	0x0CE3,0x1F20,0x0720,0x3BC8,
X! 	0x0CE3,0x1CE0,0x0726,0x4108,
X! 	0x0F1F,0x1CE0,0x0722,0x3108,
X! 	0x0F1C,0xE0E0,0x0722,0x0908,
X! 	0x0FFC,0xE320,0x0722,0x70C8,
X! 	0x0C03,0xFF20,0x0700,0x0008,
X! 	0x0C00,0x03E0,0x0300,0x0008,
X! 	0x0C00,0x0000,0x0318,0x0188,
X! 	0x0C00,0x0000,0x0100,0x0008,
X! 	0x0C00,0x0000,0x01FF,0xFFF8,
X! 	0x0C00,0x0000,0x0000,0x0000,
X! 	0x0C00,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000,
X! 	0x0000,0x0000,0x0000,0x0000
X*** help.h	Thu Nov 15 13:04:31 1990
X--- ../v2.2/help.h	Thu Nov 15 13:22:25 1990
X***************
X*** 56,62 ****
X  on this button deletes the card which is\n\
X  currently displayed.  Deleted cards are not\n\
X  lost, they are saved on a stack of deleted\n\
X! cards and may be retreived any time before\n\
X  Rolo exits.  The alternate selections on the\n\
X  menu for the Trash button may be used to\n\
X  undelete any card which was previously deleted.\n\
X--- 56,62 ----
X  on this button deletes the card which is\n\
X  currently displayed.  Deleted cards are not\n\
X  lost, they are saved on a stack of deleted\n\
X! cards and may be retrieved any time before\n\
X  Rolo exits.  The alternate selections on the\n\
X  menu for the Trash button may be used to\n\
X  undelete any card which was previously deleted.\n\
X***************
X*** 92,97 ****
X--- 92,101 ----
X  your cards.  The card numbers to the left of\n\
X  each line can be used to jump directly to that\n\
X  card with the slider in the control panel.\n\
X+ Alternately, the user can click on the \n\
X+ desired entry followed by a <SHIFT>-click \n\
X+ on the list button (or use the list button \n\
X+ menu) to bring up the selected card.\n\
X  \n\
X  FILE BUTTON\n\
X     This button loads and saves your rolodex\n\
X***************
X*** 132,137 ****
X--- 136,152 ----
X  \n",
X  
X  "\
X+ PRINT BUTTON\n\
X+    This button is used to print. A normal click\n\
X+ causes Rolo to print the current record. \n\
X+ Alternate selections will cause Rolo to print\n\
X+ all the entries in the current sorted order\n\
X+ or set the print command. The default print\n\
X+ command is \"lpr\".  A user can customize\n\
X+ the default printer command by creating an\n\
X+ X resource entry called\n\
X+      \"xrolo.PrintCommand\".\n\
X+ \n\
X  FIND BUTTON\n\
X     This button searches for a regular expression\n\
X  in your cards.  This can be used to find any\n\
X***************
X*** 151,157 ****
X  a card, only the text of the card as a whole.\n\
X  Note: \"Regular expressions\" are the kind used\n\
X  by egrep(1), which are not the same as the\n\
X! shell meta-characters.\n\
X  \n\
X  SLIDER\n\
X     The slider item on the control panel may\n\
X--- 166,179 ----
X  a card, only the text of the card as a whole.\n\
X  Note: \"Regular expressions\" are the kind used\n\
X  by egrep(1), which are not the same as the\n\
X! shell meta-characters. By default xrolo will\n\
X! do a case insensitive (or \"sloppy\") regular\n\
X! regular expression search.  The deafult search\n\
X! mode may be changed by selecting \"Egrep Regex\n\
X! Match\" from the find menu or by setting the X\n\
X! resource \n\
X!     xrolo.SloppyRegexMatch\n\
X! to 1 or 0\n\
X  \n\
X  SLIDER\n\
X     The slider item on the control panel may\n\
X***************
X*** 159,165 ****
X  drag the bar back and forth until the number\n\
X  of the card you wish to see is displayed to\n\
X  the left of the slider, then release the\n\
X! mouse button.\n\
X  \n\
X  \n",
X  
X--- 181,189 ----
X  drag the bar back and forth until the number\n\
X  of the card you wish to see is displayed to\n\
X  the left of the slider, then release the\n\
X! mouse button. Alternately, the record number\n\
X! may be entered directly by typing in the\n\
X! current record field\n\
X  \n\
X  \n",
X  
X***************
X*** 170,175 ****
X--- 194,202 ----
X  \n\
X     March  1987, version 1.0\n\
X     August 1988, version 2.0\n\
X+ \n\
X+    Ported to OpenWindows by  Luis Soltero\n\
X+    (luis@rice.edu) November 1990\n\
X  \n\
X     Thanks to S. Page (spage@sun.com) and\n\
X  Mike Ekberg (mae@sun.com) at Sun for changes\n\
X*** main.c	Thu Nov 15 13:04:32 1990
X--- ../v2.2/main.c	Thu Nov  8 17:24:57 1990
X***************
X*** 140,145 ****
X--- 140,148 ----
X  		TEXTSW_CONTENTS,	"Rolo - by Ron Hitchens",
X  		0);
X  
X+ 	/* clear the X cut buffer */
X+ 	textsw_set_selection(rolocard, 0, 0, 1);
X+ 
X  	window_fit (frame);
X  
X  	p = check_args (argc, argv);
X*** panel.c	Thu Nov 15 13:04:42 1990
X--- ../v2.2/panel.c	Thu Nov 15 12:40:52 1990
X***************
X*** 40,47 ****
X--- 40,49 ----
X  #include <xview/panel.h>
X  #include <xview/textsw.h>
X  #include <xview/seln.h>
X+ #include <xview/notice.h>
X  #include <sys/param.h>
X  #include <ctype.h>
X+ #include <alloca.h>
X  
X  #include "defs.h"
X  #include "help.h"
X***************
X*** 104,114 ****
X  
X    done_button (), done_n_save(), done_n_save_exit(), done_n_exit(),
X    find_button (), find_button_forward(), find_button_reverse(),
X  
X! list_button (), help_button (),
X    slider_proc (), button_event(), goto_card (),
X    no_comprendo ();
X  
X  static char		*get_selection ();
X  
X  
X--- 106,120 ----
X  
X    done_button (), done_n_save(), done_n_save_exit(), done_n_exit(),
X    find_button (), find_button_forward(), find_button_reverse(),
X+   turn_on_sloppy(), turn_off_sloppy(),
X  
X!   print_button(), print_entry(), print_all(), set_print_command(),
X! 
X!   list_button_main(), list_goto_button(), list_button (), help_button (),
X    slider_proc (), button_event(), goto_card (),
X    no_comprendo ();
X  
X+ static Menu_item list_menu, find_menu;
X  static char		*get_selection ();
X  
X  
X***************
X*** 117,122 ****
X--- 123,136 ----
X  #include "buttons1.icon"
X  };
X  
X+ static u_short printer_image[] = {
X+ #include "print.icon"   
X+ };
X+ 
X+ static u_short find_image[] = {
X+ #include "find.icon"
X+ };
X+ 
X  /* drawer (file), "?" (help), flag (finished) and list */
X  static u_short		buttons2_image [] = {
X  #include "buttons2.icon"
X***************
X*** 166,175 ****
X  
X  	frame = _frame;
X  	panel = xv_create (frame, PANEL,
X! 		PANEL_LAYOUT,		PANEL_HORIZONTAL,
X! /*		PANEL_EVENT_PROC,	button_event, */
X! 		PANEL_ITEM_X_GAP,	10,
X! 		PANEL_ITEM_Y_GAP,	9,
X  		0);
X  
X  	/* 1st row */
X--- 180,188 ----
X  
X  	frame = _frame;
X  	panel = xv_create (frame, PANEL,
X! 					   PANEL_LAYOUT, PANEL_HORIZONTAL,
X! 					   WIN_COLUMN_GAP, 15,
X! 					   WIN_ROW_GAP, 25,
X  		0);
X  
X  	/* 1st row */
X***************
X*** 195,200 ****
X--- 208,214 ----
X  		PANEL_LABEL_IMAGE,	pr_region(buttons1_image, 64, 0, 0, 32, 32),
X  		PANEL_ITEM_MENU,	tmpmenu,
X  		PANEL_NOTIFY_PROC,	prev_button,
X+         XV_Y, xv_row(panel, 0),
X  		0);
X  
X  	tmpmenu = menu_create (
X***************
X*** 205,210 ****
X--- 219,225 ----
X  		PANEL_LABEL_IMAGE,	pr_region (buttons1_image, 64, 32, 0, 32, 32),
X  		PANEL_ITEM_MENU,	tmpmenu,
X  		PANEL_NOTIFY_PROC,	new_button,
X+         XV_Y, xv_row(panel, 0),
X  		0);
X  
X  	tmpmenu =  xv_create (NULL, MENU,
X***************
X*** 237,250 ****
X  		PANEL_LABEL_IMAGE,	pr_region (buttons1_image, 64, 32, 32, 32, 32),
X  		PANEL_ITEM_MENU, tmpmenu,
X  		PANEL_NOTIFY_PROC,	delete_button,
X  		0);
X  
X! 	tmpmenu = menu_create (
X  						   MENU_ACTION_ITEM, "Show Index List of Cards",  list_button,
X  						   NULL);
X  	(void) xv_create (panel, PANEL_BUTTON,
X  		PANEL_LABEL_IMAGE,	pr_region(buttons2_image, 64, 32, 32, 32, 32),
X! 		PANEL_ITEM_MENU,	tmpmenu,
X  		0);
X  
X  	tmpmenu = menu_create (
X--- 252,275 ----
X  		PANEL_LABEL_IMAGE,	pr_region (buttons1_image, 64, 32, 32, 32, 32),
X  		PANEL_ITEM_MENU, tmpmenu,
X  		PANEL_NOTIFY_PROC,	delete_button,
X+         XV_Y, xv_row(panel, 0),
X  		0);
X  
X! 	list_menu = menu_create (
X  						   MENU_ACTION_ITEM, "Show Index List of Cards",  list_button,
X+ 							
X+ 							MENU_ITEM,
X+ 							MENU_STRING, "(S) Go to Selected Entry",
X+ 							MENU_NOTIFY_PROC, list_goto_button,
X+ 							MENU_INACTIVE, TRUE,
X+ 							NULL,
X+ 
X  						   NULL);
X  	(void) xv_create (panel, PANEL_BUTTON,
X  		PANEL_LABEL_IMAGE,	pr_region(buttons2_image, 64, 32, 32, 32, 32),
X! 		PANEL_ITEM_MENU,	list_menu,
X! 		PANEL_NOTIFY_PROC, list_button_main,
X!         XV_Y, xv_row(panel, 0),
X  		0);
X  
X  	tmpmenu = menu_create (
X***************
X*** 274,283 ****
X  						   NULL);
X  
X  	(void) xv_create (panel, PANEL_BUTTON,
X! 		PANEL_LABEL_IMAGE,	pr_region(buttons2_image, 64, 0, 0, 32, 32),
X! 		PANEL_NOTIFY_PROC,	file_button,
X! 		PANEL_ITEM_MENU, tmpmenu,
X! 		0);
X  
X  	tmpmenu = menu_create (
X  						   MENU_ACTION_ITEM, "Display Help Message", help_button, 
X--- 299,310 ----
X  						   NULL);
X  
X  	(void) xv_create (panel, PANEL_BUTTON,
X! 					  PANEL_LABEL_IMAGE,	pr_region(buttons2_image, 64, 0, 0, 32, 32),
X! 					  PANEL_NOTIFY_PROC,	file_button,
X! 					  PANEL_ITEM_MENU, tmpmenu,
X! 					  XV_X, xv_col(panel, 0),
X! 					  XV_Y, xv_row(panel, 1),
X! 					  0);
X  
X  	tmpmenu = menu_create (
X  						   MENU_ACTION_ITEM, "Display Help Message", help_button, 
X***************
X*** 286,291 ****
X--- 313,319 ----
X  	(void) xv_create (panel, PANEL_BUTTON,
X  		PANEL_LABEL_IMAGE,	pr_region(buttons2_image, 64, 32, 0, 32, 32),
X  		PANEL_ITEM_MENU,	tmpmenu,
X+         XV_Y, xv_row(panel, 1),
X  		0);
X  
X  	tmpmenu = menu_create (
X***************
X*** 305,312 ****
X--- 333,367 ----
X  		PANEL_LABEL_IMAGE,	pr_region(buttons2_image, 64, 0, 32, 32, 32),
X  		PANEL_NOTIFY_PROC,	done_button,
X  		PANEL_ITEM_MENU,	tmpmenu,
X+         XV_Y, xv_row(panel, 1),
X  		0);
X  
X+ 	tmpmenu = menu_create(
X+ 						  MENU_ACTION_ITEM, 
X+ 						  "Print Entry",
X+ 						  print_entry,
X+ 
X+ 						  MENU_ACTION_ITEM, 
X+ 						  "Print All",
X+ 						  print_all,
X+ 
X+ 						  MENU_ACTION_ITEM,
X+ 						  "Set Print Command",
X+ 						  set_print_command,
X+ 						  NULL);
X+ 
X+ 	(void) xv_create(panel, PANEL_BUTTON,
X+ 					 PANEL_LABEL_IMAGE, xv_create(NULL, SERVER_IMAGE,
X+ 												  XV_WIDTH, 32,
X+ 												  XV_HEIGHT, 32,
X+ 												  SERVER_IMAGE_BITS,
X+ 												  printer_image,
X+ 												  NULL),
X+ 					 PANEL_NOTIFY_PROC, print_button,
X+ 					 PANEL_ITEM_MENU, tmpmenu,
X+ 					 XV_Y, xv_row(panel, 1),
X+ 
X+ 					 NULL);
X  	/*
X  	 * Tighten up the window around the buttons in the first row, this
X  	 * will be the width of the panel window, so we save that size for
X***************
X*** 323,351 ****
X  	 */
X  	xv_set (panel, PANEL_ITEM_X_GAP, 8, 0);
X  
X! 	tmpmenu = menu_create (
X! 						   MENU_ACTION_ITEM,
X! 						   "    Find Regular Expression, Forward",
X! 						   find_button_forward,
X  						   
X! 						   MENU_ACTION_ITEM,
X! 						   "(S) Find Regular Expression, Reverse", 
X! 						   find_button_reverse, 
X  						   NULL);
X  
X  	(void) xv_create (panel, PANEL_BUTTON,
X! 		PANEL_LABEL_STRING, "Find", 
X! 		PANEL_ITEM_MENU,	tmpmenu, 
X! 		PANEL_NOTIFY_PROC,	find_button,
X! 		0);
X  
X  	regex_item = xv_create (panel, PANEL_TEXT,
X! 		PANEL_BLINK_CARET,		TRUE,
X! 		PANEL_LABEL_STRING,		"",
X! 		PANEL_VALUE_DISPLAY_LENGTH,	panel_columns - 10,
X! 		PANEL_VALUE_STORED_LENGTH,	80,
X! 		PANEL_NOTIFY_PROC,	find_button,
X! 		0);
X  
X  	/*
X  	 * Begin the third row, squeeze the inter-item gap back down so that
X--- 378,450 ----
X  	 */
X  	xv_set (panel, PANEL_ITEM_X_GAP, 8, 0);
X  
X! #define SLOPPY_EXPR_STR	  "Sloppy Regex Match"
X! #define EGREP_EXPR_STR	  "Egrep(1) Regex Match"
X! 
X! 	tmpmenu = menu_create(
X! 						  MENU_ITEM,
X! 						  MENU_STRING,
X! 						  SLOPPY_EXPR_STR,
X! 						  MENU_NOTIFY_PROC,
X! 						  turn_on_sloppy,
X! 						  NULL,
X! 						  
X! 						  MENU_ITEM,
X! 						  MENU_STRING,
X! 						  EGREP_EXPR_STR,
X! 						  MENU_NOTIFY_PROC,
X! 						  turn_off_sloppy,
X! 						  NULL,
X! 
X! 						  NULL);
X! 
X! 	find_menu = menu_create (
X! 							 MENU_ACTION_ITEM,
X! 							 "    Find Regular Expression, Forward",
X! 							 find_button_forward,
X  						   
X! 							 MENU_ACTION_ITEM,
X! 							 "(S) Find Regular Expression, Reverse", 
X! 							 find_button_reverse, 
X! 							 
X! 							 MENU_CLIENT_DATA, 
X! 							 defaults_get_integer("xrolo.sloppyregexmatch",
X! 												  "xrolo.SloppyRegexMatch",
X! 												  1), /* sloppy regex by */
X! 							                          /* default */
X! 
X! 							 MENU_ITEM,
X! 							 MENU_STRING, 
X! 							 defaults_get_integer("xrolo.sloppyregexmatch",
X! 												  "xrolo.SloppyRegexMatch",
X! 												  1) 
X! 							 ? SLOPPY_EXPR_STR : EGREP_EXPR_STR,
X! 							 MENU_CLIENT_DATA, 1, 
X! 							 MENU_PULLRIGHT, tmpmenu,
X! 							 NULL,
X! 						   
X  						   NULL);
X  
X  	(void) xv_create (panel, PANEL_BUTTON,
X! 					  PANEL_LABEL_IMAGE, xv_create(NULL, SERVER_IMAGE,
X! 												   XV_WIDTH, 32,
X! 												   XV_HEIGHT, 32,
X! 												   SERVER_IMAGE_BITS,
X! 												   find_image,
X! 												   NULL),
X! 					  PANEL_ITEM_MENU,	find_menu, 
X! 					  PANEL_NOTIFY_PROC,	find_button,
X! 					  NULL);
X  
X  	regex_item = xv_create (panel, PANEL_TEXT,
X! 							PANEL_BLINK_CARET,		TRUE,
X! 							PANEL_LABEL_STRING,		"Find Expression:",
X! 							PANEL_VALUE_DISPLAY_LENGTH,	panel_width - 344,
X! 							XV_X, xv_col(panel, 0),
X! 							XV_Y, xv_row(panel, 2),
X! 							PANEL_VALUE_STORED_LENGTH,	80,
X! 							PANEL_NOTIFY_PROC,	find_button,
X! 							0);
X  
X  	/*
X  	 * Begin the third row, squeeze the inter-item gap back down so that
X***************
X*** 361,377 ****
X  				0);
X  
X  	slider_item = xv_create (panel, PANEL_SLIDER,
X! 		PANEL_MIN_VALUE,	0,
X! 		PANEL_MAX_VALUE,	1,
X! 		PANEL_VALUE,		1,
X! 		/* This slider width is temp, recomputed later */
X! 		PANEL_SLIDER_WIDTH, 500,
X! 		PANEL_SHOW_RANGE,	FALSE,
X! 		PANEL_SHOW_VALUE,	TRUE,
X! 		PANEL_NOTIFY_LEVEL,	PANEL_DONE,
X! 		PANEL_NOTIFY_PROC,	slider_proc,
X! 		PANEL_ITEM_MENU, tmpmenu,
X! 		0);
X  
X  	/*
X  	 * Adjust the position of the text item slightly for better aesthetic
X--- 460,475 ----
X  				0);
X  
X  	slider_item = xv_create (panel, PANEL_SLIDER,
X! 							 PANEL_MIN_VALUE,	0,
X! 							 PANEL_MAX_VALUE,	1,
X! 							 PANEL_VALUE,		1,
X! 							 PANEL_SLIDER_WIDTH, panel_width - 80, 
X! 							 PANEL_SHOW_RANGE,	FALSE,
X! 							 PANEL_SHOW_VALUE,	TRUE,
X! 							 PANEL_NOTIFY_LEVEL,	PANEL_DONE,
X! 							 PANEL_NOTIFY_PROC,	slider_proc,
X! 							 PANEL_ITEM_MENU, tmpmenu,
X! 							 0);
X  
X  	/*
X  	 * Adjust the position of the text item slightly for better aesthetic
X***************
X*** 757,762 ****
X--- 855,920 ----
X  	need_save = TRUE;
X  }
X  
X+ static Frame file_frame;
X+ static Panel file_panel;
X+ static Panel_item file_item;
X+ static char FileName[256];
X+ static int FileLoad;
X+ static void file_ok_proc()
X+ {
X+ 	strcpy(FileName, xv_get(file_item, PANEL_VALUE));
X+ 	xv_set(file_frame, WIN_SHOW, FALSE, NULL);
X+ 	FileLoad ? do_read_rolo(FileName) : do_write_rolo(FileName);
X+ }
X+ static void file_cancel_proc()
X+ {
X+ 	xv_set(file_frame, WIN_SHOW, FALSE, NULL);
X+ }
X+ 
X+ static void do_create_file_frame(item, event)
X+ Panel_item item;
X+ Event      *event;
X+ {
X+ 	file_frame = xv_create(frame, FRAME,
X+ 							XV_LABEL, "Set File Name",
X+ 							FRAME_SHOW_LABEL, TRUE,
X+ 							NULL);
X+ 	file_panel = xv_create(file_frame, PANEL, NULL);
X+ 	file_item = xv_create(file_panel, PANEL_TEXT,
X+ 							 XV_X, 4,
X+ 							 XV_Y, 4,
X+ 							 PANEL_LABEL_STRING, "File Name:", 
X+ 							 PANEL_VALUE_STORED_LENGTH, 256,
X+ 							 PANEL_VALUE_DISPLAY_LENGTH, 40,
X+ 							 NULL);
X+ 	xv_create(file_panel, PANEL_BUTTON,
X+ 			  PANEL_LABEL_STRING, "   OK   ",
X+ 			  XV_X, 450,
X+ 			  XV_Y, 4,
X+ 			  PANEL_NOTIFY_PROC, file_ok_proc,
X+ 			  NULL);
X+ 	xv_create(file_panel, PANEL_BUTTON,
X+ 			  PANEL_LABEL_STRING, "Cancel",
X+ 			  XV_X, 450,
X+ 			  XV_Y, 35,
X+ 			  PANEL_NOTIFY_PROC, file_cancel_proc,
X+ 			  NULL);
X+ 	window_fit(file_panel);
X+ 	window_fit(file_frame);
X+ }
X+ 
X+ static void get_file_name(fileload)
X+ int fileload;
X+ {
X+ 	static int firsttime = 1;
X+ 	if (firsttime) {
X+ 		do_create_file_frame();
X+ 		firsttime = 0;
X+ 	}
X+ 	FileLoad = fileload;
X+ 	xv_set(file_frame, WIN_SHOW, TRUE, NULL);
X+ }
X+ 
X  static void file_button_load (item, event)
X  Panel_item	item;
X  Event		*event;
X***************
X*** 768,777 ****
X  	}
X  	save_card (current);
X  	filename = get_selection ();
X! 	if (filename == NULL) {
X  		msg ("No active selection, need a filename to load from");
X  		return;
X  	}
X  	if (filename_ok (filename) == FALSE) {
X  		return;
X  	}
X--- 926,948 ----
X  	}
X  	save_card (current);
X  	filename = get_selection ();
X! 	if ( filename == NULL ) {
X! 		get_file_name(1);
X! 		return;
X! 	} else if ( !confirm("Load from file %s?", filename) ) {
X! 		return;
X! 	}
X! 	
X! 	if (filename == NULL || filename[0] == '\0' ) {
X  		msg ("No active selection, need a filename to load from");
X  		return;
X  	}
X+ 	do_read_rolo(filename);
X+ }
X+ 
X+ do_read_rolo(filename)
X+ char *filename;
X+ {
X  	if (filename_ok (filename) == FALSE) {
X  		return;
X  	}
X***************
X*** 781,786 ****
X--- 952,965 ----
X  	read_rolo (filename);
X  }
X  
X+ do_write_rolo(filename)
X+ char *filename;
X+ {
X+ 	if (filename_ok (filename) == FALSE) {
X+ 		return;
X+ 	}
X+ 	write_rolo (filename);
X+ }
X  static void file_button_save_to_file (item, event)
X  Panel_item	item;
X  Event		*event;
X***************
X*** 792,805 ****
X  	}
X  	save_card (current);
X  	filename = get_selection ();
X! 	if (filename == NULL) {
X! 		msg ("No active selection, need a filename to save to");
X  		return;
X  	}
X! 	if (filename_ok (filename) == FALSE) {
X  		return;
X  	}
X! 	write_rolo (filename);
X  }
X  
X  /*ARGSUSED*/
X--- 971,987 ----
X  	}
X  	save_card (current);
X  	filename = get_selection ();
X! 	if (filename == NULL ) {
X! 		get_file_name(0);
X  		return;
X+ 	} else if ( !confirm("Save to file %s?", filename) ) {
X+ 		return;
X  	}
X! 	if (filename == NULL || filename[0] == '\0' ) {
X! 		msg ("No active selection, need a filename to save to");
X  		return;
X  	}
X! 	do_write_rolo(filename);
X  }
X  
X  /*ARGSUSED*/
X***************
X*** 925,930 ****
X--- 1107,1214 ----
X  
X  
X  /*
X+  * Notification proc for print.
X+  */
X+ static char Print_Command[256] = "lpr";
X+ static int First_Print_Call = 1;
X+ 
X+ get_print_resource()
X+ {
X+ 	strcpy(Print_Command, 
X+ 		   defaults_get_string("xrolo.printcommand","xrolo.PrintCommand", Print_Command));
X+ 	First_Print_Call = 0;
X+ }
X+ 
X+ static void print_button(item, event)
X+ Panel_item item;
X+ Event      *event;
X+ {
X+ }
X+ 
X+ static void print_entry(item, event)
X+ Panel_item item;
X+ Event      *event;
X+ {
X+ 	FILE *fp = popen(Print_Command, "w");
X+ 	if (First_Print_Call)
X+ 	  get_print_resource();
X+ 	save_card(current);
X+ 	fprintf(fp, "%s\n", current->c_text);
X+ 	pclose(fp);
X+ }
X+ 
X+ static void print_all(item, event)
X+ Panel_item item;
X+ Event      *event;
X+ {
X+ 	struct card *p;
X+ 	int i;
X+ 	FILE *fp = popen(Print_Command, "w");
X+ 	if (First_Print_Call)
X+ 	  get_print_resource();
X+ 	save_card(current);
X+ 	for (p = first, i =0; p != NULL_CARD; i++, p=p->c_next)
X+ 	  fprintf(fp, "Record # %d \n%s\n\n", i, p->c_text);
X+ 	pclose(fp);
X+ }
X+ 
X+ static Frame print_frame;
X+ static Panel print_panel;
X+ static Panel_item Command_item;
X+ 
X+ static void ok_proc()
X+ {
X+ 	strcpy(Print_Command, xv_get(Command_item,PANEL_VALUE));
X+ 	xv_set(print_frame, WIN_SHOW, FALSE, NULL);
X+ }
X+ 
X+ static void cancel_proc()
X+ {
X+ 	xv_set(print_frame, WIN_SHOW, FALSE, NULL);
X+ }
X+ 
X+ static void set_print_command(item, event)
X+ Panel_item item;
X+ Event      *event;
X+ {
X+ 	static int firsttime = 1;
X+ 	if ( firsttime ) {
X+ 		firsttime = 0;
X+ 		if (First_Print_Call)
X+ 		  get_print_resource();
X+ 		print_frame = xv_create(frame, FRAME,
X+ 								XV_LABEL, "Set Print Command",
X+ 								FRAME_SHOW_LABEL, TRUE,
X+ 								NULL);
X+ 		print_panel = xv_create(print_frame, PANEL, NULL);
X+ 		Command_item = xv_create(print_panel, PANEL_TEXT,
X+ 								 XV_X, 4,
X+ 								 XV_Y, 4,
X+ 								 PANEL_LABEL_STRING, "Print Command:", 
X+ 								 PANEL_VALUE, Print_Command,
X+ 								 PANEL_VALUE_STORED_LENGTH, 256,
X+ 								 PANEL_VALUE_DISPLAY_LENGTH, 40,
X+ 								 NULL);
X+ 		xv_create(print_panel, PANEL_BUTTON,
X+ 				  PANEL_LABEL_STRING, "   OK   ",
X+ 				  XV_X, 450,
X+ 				  XV_Y, 4,
X+ 				  PANEL_NOTIFY_PROC, ok_proc,
X+ 				  NULL);
X+ 		xv_create(print_panel, PANEL_BUTTON,
X+ 				  PANEL_LABEL_STRING, "Cancel",
X+ 				  XV_X, 450,
X+ 				  XV_Y, 35,
X+ 				  PANEL_NOTIFY_PROC, cancel_proc,
X+ 				  NULL);
X+ 		window_fit(print_panel);
X+ 		window_fit(print_frame);
X+ 	}
X+ 	xv_set(Command_item, PANEL_VALUE, Print_Command);
X+ 	xv_set(print_frame, WIN_SHOW, TRUE, 0);
X+ }
X+ 
X+ /*
X   *	Notification proc for both the "Find" button and text item for
X   *	the search pattern.  This proc will be called from the pattern item
X   *	if you type return.  If this proc is called, and there is an active
X***************
X*** 931,936 ****
X--- 1215,1240 ----
X   *	selection, that will be used as the search pattern.  The selection
X   *	will also be inserted into the pattern item if it is currently empty.
X   */
X+ static void to_sloppy(str)
X+ char *str;
X+ {
X+ 	char tmpstr[MAX_SELN_LEN];
X+ 	char *ptr1 = str;
X+ 	char *ptr2 = tmpstr;
X+ 	while ( *ptr1 != '\0' ) {
X+ 		if ( isalpha(*ptr1) ) {
X+ 			*ptr2++ = '[';
X+ 			*ptr2++ = isupper(*ptr1) ? 
X+ 			  tolower(*ptr1) : toupper(*ptr1);
X+ 			*ptr2++ = *ptr1++;
X+ 			*ptr2++ = ']';
X+ 		} else {
X+ 			*ptr2++ = *ptr1++;
X+ 		}
X+ 	}
X+ 	*ptr2 ='\0';
X+ 	strcpy(str, tmpstr);
X+ }
X  
X  static  int in_find_button;
X  static	char	*e, regbuf [MAX_SELN_LEN];
X***************
X*** 938,943 ****
X--- 1242,1249 ----
X  init_find_button()
X  {
X  	static		int bozo = 0;
X+ 	int sloppy;
X+ 
X  	save_card (current);
X  
X  	/* if selection active, use it */
X***************
X*** 954,959 ****
X--- 1260,1268 ----
X  		(void) strcpy (regbuf, (char *) xv_get(regex_item, PANEL_VALUE));
X  	}
X  
X+ 	/* clear the X cut buffer */
X+ 	textsw_set_selection(rolocard, 0, 0, 1);
X+ 
X  	if (strlen (regbuf) == 0) {
X  		if (bozo) {
X  			msg ("Enter an expression to search for");
X***************
X*** 965,970 ****
X--- 1274,1284 ----
X  	}
X  
X  	bozo = 0;
X+ 
X+ 	sloppy = xv_get(find_menu, MENU_CLIENT_DATA);
X+ 	if ( sloppy ) {
X+ 		to_sloppy(regbuf);
X+ 	}
X  	e = re_comp (regbuf);
X  	if (e != NULL) {
X  		msg ("Regular Expression error: %s", e);
X***************
X*** 1029,1055 ****
X  
X  	if (value_from_mask(event) == SHIFT_CLICK) {		/* search backwards */
X  		find_button_reverse(item,event);
X! 	} else {
X! 		find_button_forward(item,event);
X  	}
X- 	in_find_button = 1;
X  }
X  
X  
X  /*
X   *	Notification proc for the "List" button.  The text window is used
X   *	to display the first non-blank line of each card.
X   */
X  
X  /*ARGSUSED*/
X! static
X! void
X! list_button (item, event)
X  	Panel_item	item;
X  	Event		*event;
X  {
X  	struct card 	*p;
X  
X  	save_card (current);			/* save off pending changes */
X  
X  	textsw_reset (rolocard, 0, 0);		/* clear the text window */
X--- 1343,1426 ----
X  
X  	if (value_from_mask(event) == SHIFT_CLICK) {		/* search backwards */
X  		find_button_reverse(item,event);
X! 		in_find_button = 1;
X  	}
X  }
X  
X+ static void turn_on_sloppy(item, event)
X+ Panel_item	item;
X+ Event		*event;
X+ {
X+ 	Menu_item find_item = xv_find(find_menu, MENUITEM, 
X+ 								  MENU_CLIENT_DATA, 1, NULL);
X+ 	if ( find_item == NULL ) {
X+ 		confirm("turn_on_sloppy: Bad news!");
X+ 		return;
X+ 	}
X+ 	xv_set(find_item, MENU_STRING, SLOPPY_EXPR_STR, NULL);
X+ 	xv_set(find_menu, MENU_CLIENT_DATA, 1);
X+ }
X  
X+ static void turn_off_sloppy(item, event)
X+ Panel_item	item;
X+ Event		*event;
X+ {
X+ 	Menu_item find_item = xv_find(find_menu, MENUITEM, 
X+ 								  MENU_CLIENT_DATA, 1, NULL);
X+ 	if ( find_item == NULL ) {
X+ 		confirm("turn_off_sloppy: Bad news!");
X+ 		return;
X+ 	}
X+ 	xv_set(find_item, MENU_STRING, EGREP_EXPR_STR, NULL);
X+ 	xv_set(find_menu, MENU_CLIENT_DATA, 0);
X+ }
X+ 
X  /*
X   *	Notification proc for the "List" button.  The text window is used
X   *	to display the first non-blank line of each card.
X   */
X  
X+ static void (*def_notify_proc)() = NULL; 
X+ static int in_list_button;
X+ 
X+ static void list_button_main(item, event)
X+ Panel_item item;
X+ Event *event;
X+ {
X+ 	Menu_item  list_item = xv_find(list_menu, MENUITEM, 
X+ 							 MENU_NOTIFY_PROC, list_goto_button, NULL);
X+ 	if (event_action(event) == ACTION_MENU )
X+ 	  return;
X+ 
X+ 	if (value_from_mask (event) == SHIFT_CLICK ) {
X+ 		if (xv_get(list_item, MENU_INACTIVE) == FALSE) {
X+ 			list_goto_button(item, event);
X+ 			in_list_button = 1;
X+ 			return;
X+ 		}
X+ 	}
X+ }
X+ 
X  /*ARGSUSED*/
X! static void list_button (item, event)
X  	Panel_item	item;
X  	Event		*event;
X  {
X  	struct card 	*p;
X+ 	void notify_proc();
X+ 	Menu_item list_item;
X  
X+ 	if (in_list_button || def_notify_proc != NULL) {
X+ 		in_list_button = 0;
X+ 		return;
X+ 	}
X+ 	if (def_notify_proc == NULL )
X+ 	  def_notify_proc = (void (*)())xv_get(rolocard, TEXTSW_NOTIFY_PROC);
X+ 	
X+ 	list_item = xv_find(list_menu, MENUITEM, MENU_NOTIFY_PROC,
X+ 						list_goto_button, NULL);	
X+ 	xv_set(list_item, MENU_INACTIVE, FALSE, NULL);
X+ 
X  	save_card (current);			/* save off pending changes */
X  
X  	textsw_reset (rolocard, 0, 0);		/* clear the text window */
X***************
X*** 1076,1085 ****
X--- 1447,1502 ----
X  
X  	current = NULL_CARD;			/* indicate no card displayed */
X  	update_num_display (LISTALLCARDS);
X+ 
X+ 	xv_set(rolocard, TEXTSW_NOTIFY_PROC, notify_proc, NULL);
X+ 	
X  }
X  
X+ static void list_goto_button(item, event)
X+ Panel_item item;
X+ Event      *event;
X+ {
X+ 	int i = xv_get(rolocard, TEXTSW_INSERTION_POINT);
X+ 	int len = xv_get(rolocard, TEXTSW_LENGTH);
X+ 	int cardindex;
X+ 	char *c = (char *)alloca(len+1);
X+ 	
X+ 	xv_get(rolocard, TEXTSW_CONTENTS, 0, c, len);
X+ 	if (c[i] == '\n') i--;
X+ 	while ( c[i] != '\n'  && i != 0 )
X+ 	  i--;
X+ 	if (c[i] == '\n' ) i++;
X+ 	sscanf(c+i,"%d", &cardindex);
X+ 	turn_off_goto_button();
X+ 	goto_card(cardindex);
X+ }
X  
X+ void notify_proc(textsw, attributes)
X+ Textsw textsw;
X+ Attr_avlist attributes;
X+ {
X+ 	Attr_avlist attrs;
X+ 	void (*def_not_proc)() = def_notify_proc;
X+ 	for ( attrs = attributes; *attrs; attrs = attr_next(attrs) ) {
X+ 		if ( *attrs == TEXTSW_ACTION_USING_MEMORY ) {
X+ 			turn_off_goto_button();
X+ 		}
X+ 	}
X+ 	def_not_proc(rolocard, attributes);
X+ }
X  
X+ turn_off_goto_button()
X+ {
X+ 	Menu_item item = xv_find(list_menu, MENUITEM, 
X+ 							 MENU_NOTIFY_PROC, list_goto_button, NULL);
X+ 	if ( def_notify_proc != NULL ) {
X+ 		xv_set(rolocard, TEXTSW_NOTIFY_PROC, def_notify_proc, NULL);
X+ 		def_notify_proc = NULL;
X+ 	}
X+ 	xv_set(item, MENU_INACTIVE, TRUE, NULL);
X+ }
X+ 
X+ 
X  /*
X   *	Notification proc for the "Help" button.  The text window is used to
X   *	display a help message.  The text of the help message is defined
X***************
X*** 1110,1115 ****
X--- 1527,1533 ----
X  
X    	current = NULL_CARD;			/* indicate no card displayed */
X    	update_num_display (HELPDISPLAYED);	/* set title bar */
X+ 
X  }
X  
X  
X***************
X*** 1163,1169 ****
X  	xv_set (slider_item,
X  		PANEL_MIN_VALUE,	1,
X  		PANEL_MAX_VALUE,	i,
X- /*		PANEL_SLIDER_WIDTH,	panel_width - 15 + xv_cols (-delta), */
X  		0);
X  }
X  
X--- 1581,1586 ----
X***************
X*** 1376,1389 ****
X   *	current primary selection to get.
X   */
X  
X! static
X! char *
X  get_selection()
X  {
X! 	Seln_holder	holder;
X  	Seln_request	*buffer;
X  	static char 	sel_text [MAX_SELN_LEN + 1];
X- 	static notfirsttime = 0;
X  	Xv_server server = (Xv_server)xv_get(xv_get(frame, XV_SCREEN), SCREEN_SERVER);
X  	
X  	holder = selection_inquire (server, SELN_PRIMARY);
X--- 1793,1804 ----
X   *	current primary selection to get.
X   */
X  
X! static char *
X  get_selection()
X  {
X! 	static Seln_holder	holder;
X  	Seln_request	*buffer;
X  	static char 	sel_text [MAX_SELN_LEN + 1];
X  	Xv_server server = (Xv_server)xv_get(xv_get(frame, XV_SCREEN), SCREEN_SERVER);
X  	
X  	holder = selection_inquire (server, SELN_PRIMARY);
X***************
X*** 1391,1397 ****
X  
X  	(void) strcpy (sel_text, buffer->data + sizeof (SELN_REQ_CONTENTS_ASCII));
X  
X! 	if (strlen (sel_text) == 0 || !notfirsttime++) {
X  		/* empty string is no sel. */
X  		return (NULL);
X  	}
X--- 1806,1812 ----
X  
X  	(void) strcpy (sel_text, buffer->data + sizeof (SELN_REQ_CONTENTS_ASCII));
X  
X! 	if (strlen (sel_text) == 0 ) {
X  		/* empty string is no sel. */
X  		return (NULL);
X  	}
X*** xrolo.man	Thu Nov 15 13:04:35 1990
X--- ../v2.2/xrolo.man	Thu Nov 15 13:25:44 1990
X***************
X*** 96,101 ****
X--- 96,105 ----
X  your cards.  The card numbers to the left of
X  each line can be used to jump directly to that
X  card with the slider in the control panel.
X+ Alternately, the user can click on the 
X+ desired entry followed by a <SHIFT>-click
X+ on the list button (or use the list button 
X+ menu) to bring up the selected card.
X  .TP
X  FILE BUTTON
X  This button loads and saves your rolodex
X***************
X*** 148,153 ****
X--- 152,170 ----
X  saves any pending changes if SunTools
X  forces it to exit.
X  .TP
X+ PRINT BUTTON
X+ This button is used to print. A normal click
X+ causes 
X+ .I Rolo 
X+ to print the current record. 
X+ Alternate selections will cause Rolo to print
X+ all the entries in the current sorted order
X+ or set the print command. The default print
X+ command is "lpr".  A user can customize
X+ the default printer command by creating an
X+ X resource entry called
X+      xrolo.PrintCommand.
X+ .TP
X  FIND BUTTON
X  This button searches for a regular expression
X  in your cards.  This can be used to find any
X***************
X*** 168,174 ****
X  .br
X  Note: "Regular expressions" are the kind used
X  by egrep(1), which are not the same as the
X! shell meta-characters.
X  .TP
X  SLIDER
X  The slider item on the control panel may
X--- 185,198 ----
X  .br
X  Note: "Regular expressions" are the kind used
X  by egrep(1), which are not the same as the
X! shell meta-characters. By default xrolo will
X! do a case insensitive (or "sloppy") regular
X! regular expression search.  The deafult search
X! mode may be changed by selecting "Egrep Regex
X! Match" from the find menu or by setting the X
X! resource
X!     xrolo.SloppyRegexMatch
X! to 1 or 0.
X  .TP
X  SLIDER
X  The slider item on the control panel may
X***************
X*** 194,199 ****
X--- 218,226 ----
X  .br
X     Version 1.0, March  1987
X     Version 2.0, August 1988
X+ 
X+    Ported to OpenWindows by  Luis Soltero
X+    (luis@rice.edu) November 1990
X  
X  Thanks to S. Page (spage@sun.com) and
X  Mike Ekberg (mae@sun.com) at Sun for
END_OF_FILE
if test 39562 -ne `wc -c <'xrolo.patch1'`; then
    echo shar: \"'xrolo.patch1'\" unpacked with wrong size!
fi
# end of 'xrolo.patch1'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0

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