TO THE MACS

A Few Things That Work, Something That Doesn't, and a Little HyperTalking

Stan Krute

In case you didn't catch my first back in January, let me say it again: reviewing makes me uncomfortable. Creators put a lot of sweat into getting a product to market. Print is powerful stuff, and a bad review can do much harm. On the other hand, I like to share good news. So, in this column I'll talk about things I've used for a while and fundamentally like. Just call me Pollyana Krut.....

On objectivity: I hate to crush any world views, but it's a myth. Product reviews are inevitably subjective. The best I can do is let you in on some of the experiential baggage I filter through. Also, I know and/or have worked with some of the people whose goodies I'll be reviewing. I'll always mention any such connections. Just know it's done to help you weigh my opinions, not as name dropping.

QUED/M 2.04

DDJ ran a nice article by Levi Thomas and Nick Turner on programmers and their text editors last year (February 1987). The article suggested that programmers might be a bit like baby ducks, bonding strongly with the first warm editor they meet. So, to help you assess the forthcoming opinions, my first computer assisted writing was on IBM card punches and Teletype paper-printing terminals. Though primitive, both tools sported evocative sound effects.

Editing sounds have devolved, but text hacking's come a long way. I've done a lot of writing in succeeding decades, and currently work with several text editing programs. My current favorite is QUED/M 2.04. It gives me power, speed, ease of use, and a smooth-sloped learning curve. Though I briefly mentioned the product back in column 1, I'd like to give a few more details.

Got a bad case of featuritis? QUED/ M's got almost all the ones I've ever seen and/or wanted and a few more. A nonexhaustive list is:

And on and on. ... I sense QUED/M's designers have used a lot of text editors and Mac applications and have kept lists of features they've liked, detested, and wished for. And, unlike some applications that sport an abundance of commands and options, QUED/M's design and implementation seem clean, well organized, and intuitive.

There are three things I'd like in a future QUED/M:

Victor Romano programmed QUED/M 2.04. He and Jerry Lewak designed it. Jerry also wrote the manual. Two people, one fine text-editing product. Kudos, gentlemen, and thanks. I wish I had QUED/M in all my other computing worlds.

TMON 2.81

Here's more detail on another product I mentioned briefly back in column 1. TMON 2.81 is the Mac debugger I use all the time. It's small and rugged and works on a wide range of code resource types in a variety of complex environments.

TMON 2.81 provides a full range of standard debugging features. It runs in a simplified windowing environment that won't go down if your code munches critical parts of the Mac's regular windowing operations. In a variety of ways, you can:

There is one glaring omission in this version of TMON: though it won't blow when used with a 68020 or 68881, it won't disassemble non-68000 instructions or display non68000 registers. So you can't really debug anything involving 68020s, 68881s, 68851s, et al. Shame, shame.

TMON was originally developed as an in-house tool by ICOM Simulations, whose other products include the graphic adventures Deja Vu and Uninvited. Waldemar Horwat (not a pseudonym, he actually exists) wrote the bulk of the program, albeit at a frighteningly young age. Darin Adler, currently working for Apple's expanding Mac Tech Support team, did the set of command extensions (known as the User Area) that accompanies this version of the debugger. The new manual is quite good; Paul Snively wrote the users' guide section, and Waldemar wrote the technical reference part.

TMON may face some rough marketing pressures over the next few months as Think, Borland, and Apple bring out new source-level debuggers. TMON works primarily at the assembly level, though it has rudimentary source code label capabilities. But those other tools aren't out yet. And, even when they are, TMON should still be useful as a robust common denominator tool, especially when it's upgraded to full 680x0 support.

BFS Navigator

HFS Navigator is a small utility that Michael Kahl, chief programming force behind Lightspeed C, showed me on my September visit to Think central. It hooks into the Mac's standard file-opening and saving dialogs and lets you hop quickly to favorite directories on file opens and saves. It also finds files and directories and can create new directories on the fly.

That's not a bad set of features, but I already had desk accessories that pulled off the last three functions, and I've become quick and comfortable mousing up, down, and sideways through my carefully organized HFS directories. Sure, Navigator looked like a nice hack, but I didn't think I needed it.

I was (eventually) wrong. I tried Navigator for a week, gave it up, came back in a day, and now I'm hooked. You know how it is: a little taste of Mac ergonomics only makes you hunger for more, and HFS Navigator feeds the pangs.

A simple installation program lets you add Navigator to your HFS disk. Thereafter, whenever you mouse-press on the directory button in a standard HFS file dialog, HFS Navigator pops up a special menu of your favorite directories (see Figure 1, page 108). You just select the directory you want to go to, and you're there, without having to mouse up and down the branches of the HFS directory tree. The current directory, shown at the top of Navigator's pop-up menu, can either be added to or deleted from the list of favorites.

Figure 1: A click on the directory name box in a standard file dialog brings up HFS NAvigator;s handy list of favorite directories.

If you hold down the Option key when you mouse-press the standard file dialog's directory button, up comes the standard pop-up menu, showing the path to the current disk's root directory. And, if you hold down the Command key during the mouse-press, a master menu pops up that lets you find files and directories and create new folders (see Figure 2, page 108). Folder making at such an opportune moment is very useful.

Figure 2: Pressing the Command key causes Navigator to bring up its action menu.

I do have two things I'd like the makers to tweak, in the name of even greater egomania. First, as currently configured, the menu of favorite directories is limited to 16 entries. I keep bumping up against that ceiling. My solution would be to raise the limit and, to keep user access fast, arrange the entries in two dimensions, as a table rather than as a list. See Figure 3, page 113, for my vision.

Figure 3: Author's vision of an improved Navigator, stretching the user interface along an orthogonal path.

Second, I don't like having to hold down the Option or Command keys when I want the standard path-to-root or master pop-up menus. A possible solution would be to give a mouse-press on one side of the directory button to get the favorites, a press on the other side to get the path-to-root, and a press within a few pixels of the top of the directory button to bring up the master menu.

HFS Navigator has a competitor, FindSwell, but I haven't got my hands on it yet. When I do I'll report back. Meanwhile, as I said earlier, Navigator's got me hooked.

WYSIWYG Ain't

I do like to maintain a positive attitude. So view the next few paragraphs as an opportunity for fabulous personal financial growth. See a need and fill it, as the kitty litter and blue toilet water inventors say.

Here's the situation: I recently spent three weeks doing production desktop publishing with a friend who's a commercial printer. I was also involved in producing the first issue of another friend's desktop published magazine. And I just finished putting out my own little software company's latest quarterly catalog. In all three instances Macs were used, and the overall process and results were quite satisfying. But we repeatedly came up against an irritating and needless bugaboo, one that creates the incredible opportunity noted earlier.

WYSIWYG is a myth. What you see on the Macintosh screen is not what you get on the laser-printed page. Oh, it's close. Frustratingly close. But not close enough for real commercial production work. Hairlines vary in size. Text and graphic elements lose their relationships. Whole sentences can switch pages. On-screen measurements indicate you're controlling placement to four or five decimal places, and the finished result can vary by big pieces of inches. And this is true, to varying but never completely insignificant degrees, with every piece of desktop software we used. So you proof and kiudge and proof and kiudge until the result's acceptable.

There's no good reason for such behavior. These are computers, kids, and they're very good at arithmetic. The Mac has SANE, with ungodly levels of precision. If software SANE's too slow, you can write directly to the hardware. If Apple's LaserWriter driver doesn't work properly, just send PostScript out directly. If PostScript's the problem, learn how to work around it. But, please, somebody, do something. This is intolerable.

Deliver desktop publishing accuracy along with ease of use and automated power, and you'll get very rich. `Cos there are a lot of people out there doing this stuff, and they all know the truth: the WYSIWYG emperor's walking around stark jaybird nekkid!

Code Corner

I spent some time this last month wandering around HyperCard and HyperTalk. Serendipitous travel's my most fruitful learning mode. This month's code corner features a small toolkit I built to aid that exploration. Building and running it revealed some of HypesCard 1.0.1's contradictory qualities.

First, the script editing facilities can be politely described as primitive, but the graphics editing facilities are elegant.

Second, execution speed can be slow. Depending on the hardware, this month's project takes 0.5 to 4 minutes to copy less than 20 objects from one stack to another. Third, execution speed can be fast. My buddy Bruce The Q. Hammond built a 40,000 card HyperCard database (he likes to break and fix things). Searches over this multimegabyte file were in the sub-30-second range.

Fourth, HyperTalk syntax can be intuitive. Right from the start I could write large pieces of code without continual manual browsing. Fifth, HyperTalk syntax can be inconsistent for example, the usage of the word the. Sometimes it's optional, sometimes it's mandatory, sometimes it's forbidden. Aargh! Who can keep track?

Sixth, HyperCard can be used to build large, complex coordinating tools. Take a look at some of the commercial applications starting to appear.

And finally, HyperTalk can bog down while running through large amounts of complex code. Take a look at some of the commercial applications starting to appear.

Notice the seesaw here. It's good, it's bad. It's fun, it's irritating. It breaks Macintosh conventions, it extends the Macintosh metaphor. ..... .final judgments will obviously have to wait. Let's just hope Bill and his team keep at it `til they get it right. Meanwhile, on to the project.

Getting a Toehold

As I learned long ago from the Kernighan/Ritchie/Plauger crowd, the first thing you want to do in a new environment is build some simple tools, then lever yourself up into power and sophistication. HyperCard's no exception to the rule.

Whenever I started work on a new stack or card, I found myself spending quite a bit of time bringing in the basic buttons that let me hook into HyperCard's facilities. I'd find myself unable to go Home or without a menu bar. And I hate memorizing key combinations. So, I built a useful set of buttons that can be installed with one click and one paste-automatically. It's the Scouting Toolkit.

Toolkit Descriptions and Behaviors

Figure 4, page 113, shows the self- documenting card the toolkit lives on. Figure 5, page 113, identifies the 15 buttons and two (hidden) text fields that make up the domicile card's object world. All but one field and one button go with the toolkit when it travels to new stacks and cards. Figure 6, left, details the 12 icons used in the buttons. Listing One, page 72, gives complete descriptions and scripts for the card, its stack, the buttons, and the fields.

Figure 4: The Scouting Toolkit's card of residence.

Figure 5: Where the 15 buttons and 2 (hidden) fields live on the toolkit's residence card.

Figure 6: Design details of the 12 icons used in the Scouting toolkit.

Installing the toolkit on a new card is easy. First, make sure your Home card knows where the toolkit's stack lives. Then click on button 14. It copies itself to the clipboard. Now go to your target stack and card, and give a Paste command. As ceaselessly mentioned, the rest is automatic.

The toolkit proper contains eight major buttons, numbers 5 through 12. The top four let you toggle various environmental windows. The bottom four take you to useful places. The other toolkit buttons support the big eight.

The whole toolkit folds up and disappears if you click in its interior outside the buttons. lt reinflates when you click on its iconic remainder, button 13.

Like all good organisms, the toolkit knows when to fold its tent and scoot off into the night. Button number 1 removes all traces of the toolkit from a card, including itself. Snake tail swallowing is one useful byproduct of HyperTalk's ability to self-reference.

Trees Saved As Description's Delayed

I keep telling Tyler I'll cut down the size of these columns and their listings. And I'm trying. But once again I've exceeded my spatial budget. So you'll have to wait until next month for the remaining discussion of the Scouting Toolkit's objects and their operation.

Of course, Marvel and DC always come up with dramatic catchphrase hooks for their continued graphic stories. But all I can think of is this small section's subhead. Who ever said comic books ain't superior literature?

Wrap-up

I've worked without reader feedback on these first few columns--frightening but true. So, if you get a chance and have the interest, drop me a note detailing what you want to see more and less of.

Next time out, besides the project wrap-up: reader mail, Mac Expo, parentheses surrender, the Cambridge ambience, intelligent pictures, Microsoft madness. And, of course, another code project. See you in 31.

Vendors

HFS Navigator

Think Technologies 135 South Rd. Bedford, MA 01730 (800) 648-4465 (617) 275-4800 Reader Service No. 20

QUED/M 2.04

Paragon Concepts Inc. 4954 Sun Valley Rd. Del Mar, CA 92014 (619) 481-1477 Reader Service No. 21

TMON 2.81

ICOM Simulations Inc. 646 S. Wheeling Rd. Wheeling, IL 60090 (312) 520-4440 Reader Service No. 22

[LISTING ONE]





-------------------------------------------------------------

Scouting Toolkit
A Hypercard Project

Programmed and 1988 by Stan Krute
All rights reserved

-------------------------------------------------------------

Description Of Objects

-------------------------------------------------------------

The Stack
Description
The stack's name is "Scouting Toolkit"
It contains 1 background
It contains 1 card
The size of the stack is 20K
Script
The stack has no script

-------------------------------------------------------------

Background 1
Description
The background has no name
It's used by 1 card
Script
The background has no script

-------------------------------------------------------------

Card 1
Description
The card's name is "Scouting Toolkit"
It contains 17 buttons
It contains 2 fields
Script
---------------------------- openCard --------------------------
on openCard
  -- hide the menubar, and initialize a state variable for it
  global menubarState
  hide menubar
  put "hidden" into menubarState

  -- hide some windows
  hide message box
  hide tool window
  hide pattern window
end openCard

---------------------------- mouseUp --------------------------
on mouseUp
  -- redraw the toolkit buttons, in case some are hidden
  repeat with buttonNumber = 2 to 13
    show button buttonNumber
  end repeat
end mouseUp

-------------------------------------------------------------

Button 1
Description
The button's name is "Delete Scouting Toolkit"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30010
Its rectangle is 42 units wide, 42 unitshigh
The button's located at card location (36,292)
Its text properties are: System Font 12, Height 16, Align center
Script
------------------------------ mouseUp ------------------------------
on mouseUp
  -- make sure we don't mess up the supply card
  if short name of this card is not "Scouting Toolkit" then

    -- save and set the user level
    get userLevel
    put it into entryUserLevel
    set userLevel to 5

    -- show the watch cursor
    set cursor to 4

    -- make sure the kit buttons are showing
    show button "Scouting Toolkit Icon"
    click at loc of button "Scouting Toolkit Icon"

    -- set the tool
    choose button tool

    -- get rid of our toolkit
    click at loc of button "Home"
    doMenu "Clear Button"

    click at loc of button "Back"
    doMenu "Clear Button"

    click at loc of button "Next"
    doMenu "Clear Button"

    click at loc of button "Previous"
    doMenu "Clear Button"

    click at loc of button "Toggle Pattern Window"
    doMenu "Clear Button"

    click at loc of button "Toggle Tool Window"
    doMenu "Clear Button"

    click at loc of button "Toggle Message Box"
    doMenu "Clear Button"

    click at loc of button "Toggle Menubar"
    doMenu "Clear Button"

    choose field tool
    show card field "Copyright"
    click at loc of card field "Copyright"
    doMenu "Clear Field"
    choose button tool

    click at loc of button "Scouting Toolkit About"
    doMenu "Clear Button"

    click at loc of button "Scouting Toolkit"
    doMenu "Clear Button"

    click at loc of button "Scouting Toolkit Window"
    doMenu "Clear Button"

    show button "Scouting Toolkit Icon"
    click at loc of button "Scouting Toolkit Icon"
    doMenu "Clear Button"

    -- snake swallows tail
    click at loc of button "Delete Scouting Toolkit"
    doMenu "Clear Button"

    -- set the tool
    choose browse tool

    -- restore the cursor
    set cursor to 0

    -- restore the user level
    set userLevel to entryUserLevel

  else
    -- we're on the supply card, so it would be bad form to delete

    -- send a signal
    show card field "No Delete Here"

    -- wait a moment
    wait 1 seconds

    -- hide the signal
    hide card field "No Delete Here"
  end if
end mouseUp

-------------------------------------------------------------

 Button 2
Description
The button's name is "Scouting Toolkit Window"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has no icon
Its rectangle is 300 units wide, 182 units high
The button's located at card location (197,144)
Its text properties are: System Font 12, Height 16, Align center
Script
---------------------------- mouseUp ----------------------------
on mouseUp
  -- make a noise
  play "boing" "c"

  -- close the kit
  hideScoutingToolkit

  -- show the trigger
  show button "Scouting Toolkit Icon"
end mouseUp


----------------------- hideScoutingToolkit -----------------------
on hideScoutingToolkit
  -- hide the kit's buttons
  hide button "Home"
  hide button "Back"
  hide button "Next"
  hide button "Previous"
  hide button "Toggle Pattern Window"
  hide button "Toggle Tool Window"
  hide button "Toggle Message Box"
  hide button "Toggle Menubar"
  hide button "Scouting Toolkit About"
  hide button "Scouting Toolkit"
  hide button "Scouting Toolkit Window"
end hideScoutingToolkit

-------------------------------------------------------------

 Button 3
Description
The button's name is "Scouting Toolkit"
Its Show name property is true
Its Auto hilite property is true
Its style is opaque
It has no icon
Its rectangle is 120 units wide, 20 units high
The button's located at card location (296,160)
Its text properties are: System Font 12, Height 16, Align center
Script
------------------------------ mouseUp ------------------------------
on mouseUp
  -- pass the message through
  send mouseUp to button "Scouting Toolkit Window"
end mouseUp

-------------------------------------------------------------

 Button 4
Description
The button's name is "Scouting Toolkit About"
Its Show name property is false
Its Auto hilite property is true
Its style is transparent
It has an icon, ID# 30011
Its rectangle is 24 units wide, 22 units high
The button's located at card location (466,150)
Its text properties are: System Font 12, Height 16, Align center
Script
------------------------------- mouseUp -------------------------------
on mouseUp
  -- show the copyright notice
  show card field "Copyright"

  -- a little sound effect
  play "harpsichord" "c e g"

  -- wait for a mouse click
  wait until the mouseClick

  -- a little sound effect
  play "harpsichord" "g e c"

  -- hide the copyright notice
  hide card field "Copyright"
end mouseUp

-------------------------------------------------------------

 Button 5
Description
The button's name is "Toggle Menubar"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30009
Its rectangle is 42 units wide, 42 units high
The button's located at card location (225,193)
Its text properties are: System Font 12, Height 16, Align center
Script
---------------------------- mouseUp ----------------------------
on mouseUp
  -- no built-in check for visibility, so
  global menubarState

  -- toggle the menubar's visibility
  if menubarState is "hidden" then
    show menubar
    put "showing" into menubarState
  else
    hide menubar
    put "hidden" into menubarState
  end if
end mouseUp

-------------------------------------------------------------

 Button 6
Description
The button's name is "Toggle Message Box"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30008
Its rectangle is 42 units wide, 42 units high
The button's located at card location (292,193)
Its text properties are: System Font 12, Height 16, Align center
Script
---------------------------- mouseUp ----------------------------
on mouseUp
  -- toggle the message window's visibility
  if the visible of message box is true then
    hide the message box
  else
    show the message box
  end if
end mouseUp

-------------------------------------------------------------

 Button 7
Description
The button's name is "Toggle Tool Window"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30007
Its rectangle is 42 units wide, 42 units high
The button's located at card location (359,193)
Its text properties are: System Font 12, Height 16, Align center
Script
---------------------------- mouseUp ----------------------------
on mouseUp
  -- toggle the tool palette window's visibility
  if the visible of tool window is true then
    hide tool window
  else
    show tool window
  end if
end mouseUp

-------------------------------------------------------------

Button 8
Description
The button's name is "Toggle Pattern Window"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30006
Its rectangle is 42 units wide, 42 units high
The button's located at card location (426,193)
Its text properties are: System Font 12, Height 16, Align center
Script
---------------------------- mouseUp ----------------------------
on mouseUp
  -- toggle the pattern palette's window's visibility
  if the visible of pattern window is true then
    hide pattern window
  else
    show pattern window
  end if
end mouseUp

-------------------------------------------------------------

Button 9
Description
The button's name is "Previous"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30001
Its rectangle is 42 units wide, 42 units high
The button's located at card location (225,259)
Its text properties are: System Font 12, Height 16, Align center
Script
---------------------------- mouseUp ----------------------------
on mouseUp
  -- move to the previous card
  doMenu "Prev"
end mouseUp

-------------------------------------------------------------

Button 10
Description
The button's name is "Next"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30002
Its rectangle is 42 units wide, 42 units high
The button's located at card location (292,259)
Its text properties are: System Font 12, Height 16, Align center
Script
---------------------------- mouseUp ----------------------------
on mouseUp
  -- move to the next card
  doMenu "Next"
end mouseUp

-------------------------------------------------------------

Button 11
Description
The button's name is "Back"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30003
Its rectangle is 42 units wide, 42 units high
The button's located at card location (359,259)
Its text properties are: System Font 12, Height 16, Align center
Script
---------------------------- mouseUp ----------------------------
on mouseUp
  -- go to the last card visited
  doMenu "Back"
end mouseUp

-------------------------------------------------------------

Button 12
Description
The button's name is "Home"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30005
Its rectangle is 42 units wide, 42 units high
The button's located at card location (426,259)
Its text properties are: System Font 12, Height 16, Align center
Script
---------------------------- mouseUp ----------------------------
on mouseUp
  -- go home
  visual effect iris close
  doMenu "Home"
end mouseUp

-------------------------------------------------------------

Button 13
Description
The button's name is "Scouting Toolkit Icon"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30004
Its rectangle is 42 units wide, 42 units high
The button's located at card location (178,83)
Its text properties are: System Font 12, Height 16, Align center
Script
------------------------------- mouseUp -------------------------------
on mouseUp
  -- make a noise
  play "boing" "e"

  -- hide this button
  hide button "Scouting Toolkit Icon"

  -- show the toolkit
  showScoutingToolkit
end mouseUp


------------------------- showScoutingToolkit -------------------------
on showScoutingToolkit
  -- show the toolkit's buttons
  show button "Toggle Menubar"
  show button "Scouting Toolkit Window"
  show button "Scouting Toolkit About"
  show button "Scouting Toolkit"
  show button "Toggle Message Box"
  show button "Toggle Tool Window"
  show button "Toggle Pattern Window"
  show button "Previous"
  show button "Next"
  show button "Back"
  show button "Home"
end showScoutingToolkit

-------------------------------------------------------------

Button 14
Description
The button's name is "Duplicate Scouting Toolkit"
Its Show name property is false
Its Auto hilite property is true
Its style is shadow
It has an icon, ID# 30000
Its rectangle is 42 units wide, 42 units high
The button's located at card location (460,12)
Its text properties are: System Font 12, Height 16, Align center
Script
------------------------------ newButton ------------------------------
on newButton
  -- make sure we don't mess up the supply card
  if short name of this card is not "Scouting Toolkit" then

    -- save and set the user level
    get userLevel
    put it into entryUserLevel
    set userLevel to 5

    -- set the cursor to the watch
    set cursor to 4

    -- set the tool
    choose button tool

    -- for all the buttons in the set
    repeat with buttonNumber = 1 to 13

      -- remember where we are (the target card)
      push card

      -- hide screen commotion
      set lockScreen to true

      -- go to the supply card
      go to card "Scouting Toolkit" of stack "Scouting Toolkit"

      -- select the button
      click at loc of button buttonNumber

      -- copy the button
      doMenu "Copy Button"

      -- return to the target card
      pop card

      -- show screen commotion
      set lockScreen to false

      -- paste the button
      doMenu "Paste Button"

    end repeat

    -- copy the copyright notice
    copyCopyrightField

    -- get rid of this duplication button
    choose button tool
    click at loc of button "Duplicate Scouting Toolkit"
    doMenu "Cut Button"

    -- move two buttons
    drag from loc of button "Scouting Toolkit Icon" to loc of button "Back"
    hide button "Scouting Toolkit Icon"
    drag from loc of button "Delete Scouting Toolkit" to loc of button "Home"

    -- hide the toolkit
    choose browse tool
    click at loc of button "Scouting Toolkit Window"

    -- restore the user level
    set userLevel to entryUserLevel
  end if
end newButton

-------------------------- copyCopyrightField --------------------------
on copyCopyrightField
  -- save our location
  push card

  -- hide screen commotion
  set lockScreen to true

  -- go to the supply card
  go to card "Scouting Toolkit" of stack "Scouting Toolkit"

  -- set tool
  choose field tool

  -- select the field
  show card field "Copyright"
  click at loc of card field "Copyright"

  -- copy the button
  doMenu "Copy Field"

  -- hide the field
  hide card field "Copyright"

  -- and get the field's contents
  get card field "Copyright"

  -- return to the target card
  pop card

  -- show screen commotion
  set lockScreen to false

  -- paste the field, fill it up, and hide it
  doMenu "Paste Field"
  put It into card field "Copyright"
  hide card field "Copyright"
end copyCopyrightField

-------------------------------- mouseUp --------------------------------
on mouseUp
  -- make sure we're at the supply card
  if short name of this card is "Scouting Toolkit" then

    -- show the watch cursor
    set cursor to 4

    -- copy the button
    choose button tool
    click at loc of button "Duplicate Scouting Toolkit"
    doMenu "Copy Button"

    -- restore tool
    choose browse tool
  end if
end mouseUp

-------------------------------------------------------------

Button 15
Description
The button's name is "Copyright"
Its Show name property is false
Its Auto hilite property is true
Its style is transparent
It has an icon, ID# 30000
Its rectangle is 70 units wide, 13 units high
The button's located at card location (0,52)
Its text properties are: System Font 12, Height 16, Align center
Script
------------------------------- mouseUp -------------------------------
on mouseUp
  -- pass message on to the toolkit's About button
  send mouseUp to button "Scouting Toolkit About"
end mouseUp

-------------------------------------------------------------

 Card Field 1
Description
The field's name is "Copyright"
It's hiddden
Its Lock text property is true
Its Show lines property is false
Its Wide margins property is false
Its style is rectangle
Its rectangle is 286 units wide, 129 units high
The field's located at card location (204,190)
Its text properties are: Geneva 12, Height 16, Align center
Contents
"1987 by Stan Krute's Camp Creek Institute.
All rights reserved.
Call or write for details:
18617 Camp Creek Road
Hornbrook, California96044
[916] 475-3428"
Script
The field has no script

-------------------------------------------------------------

Card Field 2
Description
The field's name is "No Delete Here"
It's hiddden
Its Lock text property is true
Its Show lines property is false
Its Wide margins property is false
Its style is opaque
Its rectangle is 39 units wide, 39 units high
The field's located at card location (37,293)
Its text properties are: Geneva 9, Height 12, Align center
Contents
"Not Here,
Though."
Script
The field has no script

-------------------------------------------------------------