TweetFollow Us on Twitter

Jan 95 Tips
Volume Number:11
Issue Number:1
Column Tag:Tips & Tidbits

Tips & Tidbits

By Scott T Boyd, Editor

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

TIP OF THE MONTH

Using IOStreams with THINK’s Console

The C++ IOStreams library provides many advantages over the old stdio library in C++. But, one thing I missed from the old stdio library in THINK C (not part of the standard) is using console windows from C++ streams. I wanted to be able to use something like:

 myWindow << myData1 << myData2;

which is more convenient than the fprintf(window, ) form of the old stdio library. It wasn’t immediately obvious if this would work with streams. After a little exploring, it turned out to be pretty easy. Two lines of code is all it takes to create a console window and make it part of a stream.

    // create a std I/O buffer for stream using a console window (created by calling fopenc())
 stdiobuf w1(fopenc());

    // create the stream using the buffer from above
 ostream wout((streambuf *)&w1);

The first line creates a console by calling fopenc() and passes it to the stdiobuf constructor. The console window is used as the FILE * for the stdiobuf instance. Then, we create an output stream (ostream) passing a pointer to a streambuf (in this case a subclass of it, stdiobuf). That’s all. The short program below shows how to create one window and to send output to it using our created stream and our own window. It also sends output to the standard out stream (cout) as a way to differentiate the two.

WindStream.cp

#include <console.h>
#include <stdiostr.h>

void main(void)
{
    // set options for my stream window: 40 columns and title
 console_options.left = 10;
 console_options.ncols = 40;
 console_options.title = "\pMy Window/Stream";

    // create a std I/O buffer for stream using a console window (created by calling fopenc())
 stdiobuf w1(fopenc());

    // create the stream using the buffer from above
 ostream wout((streambuf *)&w1);

    // now we can use wout as an output window...
 wout << "Hello World" << endl;

    // This will go to the standard output console
 console_options.left = 300;
 console_options.title = "\pSystem Console";
 cout << "This is the standard output buffer" << endl;
}

- Manuel A. Pérez, Arlington, VA

Fast Apple Event Factoring

When writing a factored application, that is, an application that sends Apple events to itself in response to user interface actions, writing the send routines can be as difficult as writing the receivers.

This needn’t be the case if you use Jens Alfke’s most excellent AEGizmo’s package. To use it, you write a printf-like string and pass it with arguments to AEBuild. This string can be a little obscure, so here’s the tip: put an AEPrint in the Apple event handler, write an AppleScript equivalent and fire it from the AppleScript editor. AEPrint will print a descriptor that, with a small amount of editing, can be pasted into the factor routine and passed to AEBuild. Making an application recordable takes about ten minutes. Honest!

- Chris Sears, sears@netcom.com

MPW Goes Into The Trash

If you use MPW regularly, sooner or later you will delete a file and really wish you hadn’t. MPW’s Delete command is as unforgiving as its counterparts in DOS and Unix - as soon as you delete something, it’s gone. You can’t just drag deleted files out of the trash.

Be prepared. You can modify MPW’s Delete command so it behaves in a more Finder-like way. With these changes, MPW won’t really delete files, it will move them to the Trash (just as you would do if you were using the Finder). Nothing will really be deleted until you explicitly empty the trash.

First, add this line to MPW’s Startup file (or any UserStartup file):

Alias Delete Move_To_Trash

If you have other aliases established which invoke the Delete command (such as the unix alias rm or the DOS alias del), change them to invoke Move_To_Trash instead.

Next, create this Move_To_Trash file in your MPW Scripts folder:

 
Set Echo 0
 If {#}!=0 # if arg count is not zero
  Set Exit 0

  # Create one uniquely named folder in trash can
  Set folder_name "{Boot}"Trash:MPW.deleted.`date -n`
  NewFolder "{folder_name}"   Dev:Null

  # Move specified items to trash
  For file_name in {"Parameters"}
   Move -y "{file_name}" "{folder_name}"   Dev:Null
  End

  # Leave environment as we found it
  Unset file_name folder_name
  Set Exit 1
 End

Caveats:

1) This is reasonable protection against hastily entered Delete commands, but nothing is fool-proof (because fools can be so clever).

2) None of the built in Delete command line options are correctly supported by Move_To_Trash. If you have MPW scripts that invoke the Delete command with options, you will have to modify the scripts. One method would be remove these options from the script entirely, and just rely on Move_To_Trash. Alternately, you could add these commands at the start and end of your script:

 # First line of script
 # restore built in Delete command
   Unalias Delete

 # Last line of script
 # restore modified Delete command
   Alias Delete Move_To_Trash

If you’re lucky, you’ll spend the few minutes it takes to set this up, then never have to think about it again. But someday you may be glad you took the time. As for me, I wish I had thought of this yesterday morning, before I accidentally deleted 5 hours of work.

- Lee David Rimar
Absoft Corporation

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

How to evolve Eevee in Pokemon GO
By now, almost everyone should be hip to how to evolve Pokemon in Pokemon GO (and if not, there's a guide for that). Just gather enough candy of the appropriate type, feed them all to the Pokemon, and evolution happens. It's a miracle that would... | Read more »
CSR Racing 2: Guide to all game modes
It might not seem like there are all that many ways to go fast in a straight line, but CSR Racing 2 begs to differ. [Read more] | Read more »
Bulb Boy (Games)
Bulb Boy 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Multi-award winning 2D point & click horror adventure about a boy with a glowing head. | Read more »
5 top free emoji keyboard apps
If we're not at peak emoji yet as a society, it feels like we definitely should be. The emoji concept has gone far beyond what anyone in Japan could have envisioned when the people there unleashed it on an unsuspecting world, but the West has... | Read more »
How to unlock more characters in Disney...
One of the big charms of Disney Emoji Blitz is seeing a wide variety of beloved Disney and Pixar characters transformed into smiling emojis. Even someone like the sneaky Randall from Monsters Inc., who probably never cracked a smile on film, is... | Read more »
Cubway (Games)
Cubway 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Cubway is a journey with an abstract story of lifecycle of rebirth, called Samsara. Guide the cube through the long way full of dangers... | Read more »
Colorcube (Games)
Colorcube 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Turn pieces and blend colours in this minimal yet visually stunning puzzler.Over 200 handcrafted and challenging levels. Features... | Read more »
Doodle God Griddlers (Games)
Doodle God Griddlers 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
Crusader Kings: Chronicles (Games)
Crusader Kings: Chronicles 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Crusader Kings: Chronicles is an interactive text based game that puts you in the shoes of Guy de Rose as you make... | Read more »
Roads of Rome: New Generation (Games)
Roads of Rome: New Generation 1.0 Device: iOS Universal Category: Games Price: $5.99, Version: 1.0 (iTunes) Description: | Read more »

Price Scanner via MacPrices.net

27-inch iMacs on sale for $200 off MSRP
Amazon has 27″ iMacs on sale for $200 off MSRP including free shipping: - 27″ 3.3GHz iMac 5K: $2099 $200 off MSRP - 27″ 3.2GHz/1TB Fusion iMac 5K: $1799.99 $200 off MSRP - 27″ 3.2GHz/1TB HD iMac 5K... Read more
Mac Pros on sale for $200 off MSRP
B&H Photo has Mac Pros on sale for $200 off MSRP. Shipping is free, and B&H charges sales tax in NY only: - 3.7GHz 4-core Mac Pro: $2799, $200 off MSRP - 3.5GHz 6-core Mac Pro: $3799, $200... Read more
Save up to $600 with Apple refurbished Mac Pr...
Apple has Certified Refurbished Mac Pros available for up to $600 off the cost of new models. An Apple one-year warranty is included with each Mac Pro, and shipping is free. The following... Read more
Apple price trackers, updated continuously
Scan our Apple Price Trackers for the latest information on sales, bundles, and availability on systems from Apple’s authorized internet/catalog resellers. We update the trackers continuously: - 15″... Read more
13-inch 2.5GHz MacBook Pro (Apple refurbished...
Apple has Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.5GHz MacBook Pros... Read more
21-inch iMacs on sale for up to $120 off MSRP
B&H Photo has 21″ iMacs on sale for up to $120 off MSRP including free shipping plus NY sales tax only: - 21″ 3.1GHz iMac 4K: $1379 $120 off MSRP - 21″ 2.8GHz iMac: $1199.99 $100 off MSRP - 21″ 1... Read more
Charitybuzz Set to Auction Unique Apple-1 Com...
Offering an opportunity to own the computer that sparked a revolution, on Monday, July 25, leading online charity auction platform Charitybuzz will auction what is claimed to be the world’s most... Read more
MacBook Airs on sale for up to $150 off MSRP
Amazon has 11″ and 13″ MacBook Airs on sale for up to $150 off MSRP for a limited time. Shipping is free: - 13″ 1.6GHz/128GB MacBook Air (sku MMGF2LL/A): $899.99 $100 off MSRP - 13″ 1.6GHz/256GB... Read more
Apple refurbished 13-inch Retina MacBook Pros...
Apple has Certified Refurbished 13″ Retina MacBook Pros available for up to $270 off the cost of new models. An Apple one-year warranty is included with each model, and shipping is free: - 13″ 2.7GHz... Read more
Apple refurbished 11-inch MacBook Airs availa...
Apple has Certified Refurbished 11″ MacBook Airs (the latest models), available for up to $170 off the cost of new models. An Apple one-year warranty is included with each MacBook, and shipping is... Read more

Jobs Board

*Apple* Retail - Multiple Positions, Willow...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Evangelist - JAMF Software (United S...
The Apple Evangelist is responsible for building and cultivating strategic relationships with Apple 's small and mid-market business development field teams. This Read more
*Apple* Solutions Consultant - APPLE (United...
Job Summary As an Apple Solutions Consultant, you'll be the link between our future customers and our products. You'll showcase your entrepreneurial spirit as you Read more
*Apple* Professional Learning Specialist - A...
Job Summary The Apple Professional Learning Specialist is a full-time position for one year with Apple in the Phoenix, AZ area. This position requires a high Read more
*Apple* Picker - Apple Hill Orchard (United...
Apple Hill Orchard, Co. Rte. 21,Whitehall, NY 9/7/16-10/228/16. Pick fresh market or processing apples Productivity of 60 boxes and 80 boxes processing fruit per Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.