TweetFollow Us on Twitter

Clipboard 2
Volume Number:1
Issue Number:6
Column Tag:BASIC

The Clipboard

By Dave Kelly

One of the features that makes the Macintosh unique from other computers is the use of the clipboard. The clipboard adds flexibility to the Mac user interface. With it you can exchange data from one application to another. Anyone who has worked with MacPaint or MacWrite is familar with the operation of the clipboard. What you cut or copy is saved in the clipboard allowing you to paste it somewhere else! But how do you deal with the clipboard from your own programs? That is the subject we want to explore this month.

Support of the clipboard is another feature of the Macintosh user interface that was left out of MSBASIC version 1.0 but fortunately is easily used in version 2.0. Most of the features that we will use here will only work for version 2.0. There are a few things you should keep in mind when writing programs to use the clipboard.

First, there are three different ways which BASIC can address the clipboard file. Use the OPEN statement with one of the following statements for the filename:

“CLIP:” for transferring data from programs that have tabular data, like Multiplan or Chart.

“CLIP:TEXT” for transfering text to and from word processors and other programs.

“CLIP:PICTURE” for transferring picture data to and from MacPaint or other programs.

Files that are OPENed to this device, using the mode indicated above, will read/write data directly from/to the Clipboard File stored on the system disk.

The sample program ‘Show Clip’ shows how the clipboard could be read within an application and displayed. You have probably seen many applications that give the user the option to “Show Clipboard”. The program will check to see if the clipboard contains picture data or text and will read the data accordingly and display it in the window. This routine is an example to show how to read from the clipboard, but could be used in your own application to produce the “Show Clipboard” option.

When you make use of EDIT FIELDs in your programs you should keep the Edit menu active so that your EDIT FIELD can be fully edited using the cut, copy and paste feature of the Edit menu. This way the clipboard is being used without having to do a whole lot of programing; however the operation is still manual. The user must decide what to select and copy or cut it into the EDIT FIELD. The same is true for inserting text with the paste option.

If the file is opened to “CLIP:” or “CLIP:TEXT”, the data is read sequentially from the clipboard file. There are actually two clipboard areas. One is the clipboard file and the other is a temporary area in memory. That’s why sometimes the disk turns on when you cut or copy something and other times it doesn’t.

To write text to the clipboard:

• Open the clipboard with OPEN “CLIP:” FOR OUTPUT AS #1 or equivalent.

• Use Write #1 or Print #1 to write your variable to the clipboard file.

• CLOSE #1 to close the file.

To read from the clipboard:

• Open the clipboard with OPEN “CLIP:” FOR OUTPUT AS #1 or equivalent.

• Use INPUT #1 to read variables from the clipboard file.

• CLOSE #1 to close the file.

See the program for an example of this.

You should remember to use the proper format when storing data in the clipboard so that other applications may use the data. For example, the text that a word processor uses would contain format control characters imbedded in the text. These kind of characters should only be left in the text stored in the clipboard if you know that the program that will be reading it will use them. Some things might not matter what format they are stored in and the data can be formatted once it has been read into the new application. Most of the applications available will tell you how the data is formatted, so if you know what the data will be used in, there won’t be any problem. Some help on transfering files to and from the clipboard and other applications can be found on page 55 of the BASIC manual.

Copying pictures is just about as easy as text. To transfer something to MacPaint:

• Use the PICTURE ON statement to record the graphics statements.

• Issue all the graphics statements you need to produce the picture. You don’t have to draw it to record it as a picture.

• Use PICTURE OFF to stop recording graphics.

A good example of this is found in the BASIC manual page 205.

• Next open the clipboard file with OPEN “CLIP:PICTURE” FOR OUTPUT AS #1 (or equavalent statement)

• Send the picture to the clipboard with PRINT #1,PICTURE$

• Close the file: CLOSE #1

Next you can either exit BASIC and paste the picture into MacPaint or save the picture in the Scrapbook to use later.

To transfer MacPaint pictures to BASIC:

• Put the MacPaint picture in the Clipboard

• Open the clipboard file with OPEN “CLIP:PICTURE” FOR INPUT AS #1 (or equavalent statement)

• Transfer the picture to a string variable (called image$ in this case): image$=INPUT$(LOF(1),1)

• Close the file: CLOSE #1

• Draw the Picture to the screen exactly the way it was recored: PICTURE,image$

See the program for an example of reading a picture from the clipboard.

To determine if the data in the clipboard is picture or text we can use the BASIC statement LOF. LOF(1) will return the length of the specified file (in this case our file is “CLIP:”. If the result turns out to be zero, it means that either the data is a picture or the clipboard is empty. So next just read whatever picture Is stored, if any. If the clipboard is empty, the resulting string variable will also be empty.

There is one more way to store text or graphics in the clipboard. I’m not sure that there is a good reason to want to do this though. Using a screen GET, a portion of the screen can be copied into a non-string variable array. This variable can be written to the clipboard for later use. You can then read the clipboard and use a screen PUT, to place the data back on the screen. The screen GET and PUT commands are much more useful in moving sections of the screen image. Since the array used is not a string, it is not in the proper format for MacPaint or for PICTURE statements. I tried to use screen GET and PUT to read the picture of Professor Mac found in last month’s Screen Poke article. The problem is that when the image is directly poked on the screen, BASIC doesn’t recognize it as being anything useful. You can’t record pokes with the PICTURE ON/OFF feature of BASIC. Perhaps one of our readers knows how to change the data from a screen GET format to MacPaint picture format. For most programs you will want to use the other methods mentioned anyway.

In conclusion, figure 1 shows the different ways that data can be stored in the clipboard. Most of these methods are explained fairly well in the BASIC 2.0 manual. (ref. pg. 55-58 for more information on tranfering data between BASIC and other programs. Note there is an error on page 58 where it says PICTURE$,IMAGE$ should be PICTURE, IMAGE$. Also see pg. 205 for PICTURE statement.)

‘     Show Clip
‘     By Dave Kelly
‘     ©MACTUTOR 1985

‘Set up windows
WINDOW 1,”Output Window”, (2,40)-(510,200),1
WINDOW 2,”Clipboard File”,  (2,220)-(510,340),1
WINDOW CLOSE 2
‘Set up menus
MENU 4,0,0,””
MENU 5,0,1,”Windows”
MENU 5,1,1,”Output Window”
MENU 5,2,1,”Show Clipboard”
MENU 5,3,1,”Quit”
ON MENU GOSUB handlemenu
MENU ON
ON DIALOG GOSUB handlewindow
DIALOG ON
EDIT FIELD 1,””,(150,42)-(365,120),1
show:GOTO show:GOSUB showclipboard
handlemenu:  ‘Menu handler
number=MENU(0)
IF number<>5 THEN RETURN
item=MENU(1):MENU
IF item=1 THEN WINDOW 1
IF item=2 THEN GOSUB showclipboard
IF item=3 THEN WINDOW CLOSE 2:WINDOW CLOSE 1:MENU RESET: END
RETURN
handlewindow:  ‘Menu handler
stat=DIALOG(0)
IF stat=3 THEN WINDOW DIALOG(3)
IF stat=4 THEN WINDOW CLOSE DIALOG(4)
RETURN
showclipboard:
WINDOW 2:CLS
DIALOG STOP:MENU STOP
‘Read text from clipboard
OPEN “CLIP:TEXT” FOR INPUT AS #1
IF LOF(1)=0 THEN CLOSE #1:GOTO   do.picture
LOCATE 1,1
WHILE NOT EOF(1)
        INPUT #1,a$:PRINT a$
WEND
CLOSE #1:DIALOG ON:MENU ON
RETURN
do.picture:  ‘Read picture from Clipboard
DIALOG STOP:MENU STOP
OPEN “CLIP:PICTURE” FOR INPUT AS #1
        image$=INPUT$(LOF(1),1)
        PICTURE,image$
CLOSE #1:DIALOG ON:MENU ON:RETURN

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

Go from lowly lizard to wicked Wyvern in...
Do you like questing, and do you like dragons? If not then boy is this not the announcement for you, as Loongcheer Game has unveiled Quest Dragon: Idle Mobile Game. Yes, it is amazing Square Enix hasn’t sued them for copyright infringement, but... | Read more »
Aether Gazer unveils Chapter 16 of its m...
After a bit of maintenance, Aether Gazer has released Chapter 16 of its main storyline, titled Night Parade of the Beasts. This big update brings a new character, a special outfit, some special limited-time events, and, of course, an engaging... | Read more »
Challenge those pesky wyverns to a dance...
After recently having you do battle against your foes by wildly flailing Hello Kitty and friends at them, GungHo Online has whipped out another surprising collaboration for Puzzle & Dragons. It is now time to beat your opponents by cha-cha... | Read more »
Pack a magnifying glass and practice you...
Somehow it has already been a year since Torchlight: Infinite launched, and XD Games is celebrating by blending in what sounds like a truly fantastic new update. Fans of Cthulhu rejoice, as Whispering Mist brings some horror elements, and tests... | Read more »
Summon your guild and prepare for war in...
Netmarble is making some pretty big moves with their latest update for Seven Knights Idle Adventure, with a bunch of interesting additions. Two new heroes enter the battle, there are events and bosses abound, and perhaps most interesting, a huge... | Read more »
Make the passage of time your plaything...
While some of us are still waiting for a chance to get our hands on Ash Prime - yes, don’t remind me I could currently buy him this month I’m barely hanging on - Digital Extremes has announced its next anticipated Prime Form for Warframe. Starting... | Read more »
If you can find it and fit through the d...
The holy trinity of amazing company names have come together, to release their equally amazing and adorable mobile game, Hamster Inn. Published by HyperBeard Games, and co-developed by Mum Not Proud and Little Sasquatch Studios, it's time to... | Read more »
Amikin Survival opens for pre-orders on...
Join me on the wonderful trip down the inspiration rabbit hole; much as Palworld seemingly “borrowed” many aspects from the hit Pokemon franchise, it is time for the heavily armed animal survival to also spawn some illegitimate children as Helio... | Read more »
PUBG Mobile teams up with global phenome...
Since launching in 2019, SpyxFamily has exploded to damn near catastrophic popularity, so it was only a matter of time before a mobile game snapped up a collaboration. Enter PUBG Mobile. Until May 12th, players will be able to collect a host of... | Read more »
Embark into the frozen tundra of certain...
Chucklefish, developers of hit action-adventure sandbox game Starbound and owner of one of the cutest logos in gaming, has released their roguelike deck-builder Wildfrost. Created alongside developers Gaziter and Deadpan Games, Wildfrost will... | Read more »

Price Scanner via MacPrices.net

13-inch M2 MacBook Airs in stock today at App...
Apple has 13″ M2 MacBook Airs available for only $849 today in their Certified Refurbished store. These are the cheapest M2-powered MacBooks for sale at Apple. Apple’s one-year warranty is included,... Read more
New today at Apple: Series 9 Watches availabl...
Apple is now offering Certified Refurbished Apple Watch Series 9 models on their online store for up to $80 off MSRP, starting at $339. Each Watch includes Apple’s standard one-year warranty, a new... Read more
The latest Apple iPhone deals from wireless c...
We’ve updated our iPhone Price Tracker with the latest carrier deals on Apple’s iPhone 15 family of smartphones as well as previous models including the iPhone 14, 13, 12, 11, and SE. Use our price... Read more
Boost Mobile will sell you an iPhone 11 for $...
Boost Mobile, an MVNO using AT&T and T-Mobile’s networks, is offering an iPhone 11 for $149.99 when purchased with their $40 Unlimited service plan (12GB of premium data). No trade-in is required... Read more
Free iPhone 15 plus Unlimited service for $60...
Boost Infinite, part of MVNO Boost Mobile using AT&T and T-Mobile’s networks, is offering a free 128GB iPhone 15 for $60 per month including their Unlimited service plan (30GB of premium data).... Read more
$300 off any new iPhone with service at Red P...
Red Pocket Mobile has new Apple iPhones on sale for $300 off MSRP when you switch and open up a new line of service. Red Pocket Mobile is a nationwide MVNO using all the major wireless carrier... Read more
Clearance 13-inch M1 MacBook Airs available a...
Apple has clearance 13″ M1 MacBook Airs, Certified Refurbished, available for $759 for 8-Core CPU/7-Core GPU/256GB models and $929 for 8-Core CPU/8-Core GPU/512GB models. Apple’s one-year warranty is... Read more
Updated Apple MacBook Price Trackers
Our Apple award-winning MacBook Price Trackers are continually updated with the latest information on prices, bundles, and availability for 16″ and 14″ MacBook Pros along with 13″ and 15″ MacBook... Read more
Every model of Apple’s 13-inch M3 MacBook Air...
Best Buy has Apple 13″ MacBook Airs with M3 CPUs in stock and on sale today for $100 off MSRP. Prices start at $999. Their prices are the lowest currently available for new 13″ M3 MacBook Airs among... Read more
Sunday Sale: Apple iPad Magic Keyboards for 1...
Walmart has Apple Magic Keyboards for 12.9″ iPad Pros, in Black, on sale for $150 off MSRP on their online store. Sale price for online orders only, in-store price may vary. Order online and choose... Read more

Jobs Board

DMR Technician - *Apple* /iOS Systems - Haml...
…relevant point-of-need technology self-help aids are available as appropriate. ** Apple Systems Administration** **:** Develops solutions for supporting, deploying, Read more
Omnichannel Associate - *Apple* Blossom Mal...
Omnichannel Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Operations Associate - *Apple* Blossom Mall...
Operations Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Cashier - *Apple* Blossom Mall - JCPenney (...
Cashier - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Blossom Mall Read more
IT Systems Engineer ( *Apple* Platforms) - S...
IT Systems Engineer ( Apple Platforms) at SpaceX Hawthorne, CA SpaceX was founded under the belief that a future where humanity is out exploring the stars is Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.