[comp.sys.amiga] Printer icon

rosenber@ra.abo.fi (Robin Rosenberg INF) (10/30/90)

In article <15446@cbmvax.commodore.com>, ken@cbmvax.commodore.com (Ken Farinsky - CATS) writes:
> In article <1990Oct26.202218.23039@cunixf.cc.columbia.edu> es1@cunixb.cc.columbia.edu (Ethan Solomita) writes:
> >In article <29244@pasteur.Berkeley.EDU> navas@cory.Berkeley.EDU writes:
> >>And as an author of YAWBR (Jazzbench), I wouldn't mind putting in a few of
> >>my own:
> >>	4.  No access to devices like prt: par: ser: pipe:, etc.
> >	It would be TRIVIAL to create an icon that would copy the
> >file. Under 2.0 you can open a window or an icon which will
> >recognize when an icon is dropped on it...Use AppIcon and do it!
> This kind-of assumes a very simple file structure (can you say ASCII?).
> You could make your program more complicated and have it handle IFF files,
> but what would you do with word processor data files, 3-D objects,
> postscript, and the like?  What happens when you copy a SMUS file to ser:?
> This all works only if you have very simple data files or a very smart
> program.

 The printer icon is the most interesting one. Dropping an icon on the
printer and get the file printer. It's a very appealing approach, with
the drawback just noted; How does the printer know how to do it. The
real answer is of course that only the application that created it
(and perhaps a few other programs) knows it. The only information
available is the Default Tool in the icon that belongs to the file.

There might be a way. Start the application and give it a message
telling it to print the file and exit. The command can be passes as an
ARexx message (or two).

Launch the application.
Send the command 'Print' via ARexx
Send the command 'Quit'.
Finished.

A few things needs to be standardized.
1. Can the application receive messages?
2. What is the name of the rexx port?

Suggested solution(s) to
1) This is tricky. I know of no way. So why not take a chance. Let
   the printer launch the application and IF a rexx port comes up
   with a name according to (2) then send the commands. IF no port
   comes up within some period of time. Just skip it.

2) The rexx port has the same name as the Application.
   or A tooltype says REXXPORT=name_of_rexxport. The latter applies
   if present.

With a scheme like this, even some of TODAY's programs 'could happen'
to work, and it would be very easy to incorporate the capability in
future programs.  Of course if the printer can't find a rexx port to
send commands to, the application that was launched will just sit
there, waiting for the user to quit it manually, no harm done.

If the application doesn't understand the PRINT or QUIT commands.
Still no harm done. Perhaps the application doesn't support printing.

Comments, flames >nil:,  ideas?

------
	Robin Rosenberg

lindwall@babymilo.ucsd.edu (John Lindwall) (10/30/90)

In article <400@ra.abo.fi> rosenber@ra.abo.fi (Robin Rosenberg INF) writes:
> [How will a print-service icon know file formats?, Good suggestion to use
>  Arexx to send print message to appropriate application]
>
>A few things needs to be standardized.
>1. Can the application receive messages?
>2. What is the name of the rexx port?
>
>Suggested solution(s) to
>1) This is tricky. I know of no way. So why not take a chance. Let
>   the printer launch the application and IF a rexx port comes up
>   with a name according to (2) then send the commands. IF no port
>   comes up within some period of time. Just skip it.

Or perhaps, create a Rexx-port name-server, which maintains a list of
(<Application-name> <Arexx-port>) bindings.

To refine the idea:  Since there is no standard
for naming of rexx commands, a generic 'print' command will not always
have the desired effect.  Therefore, I submit the (grandiose, naive, etc)
idea of having the applications submit their (<AppName><PortName>) pair
along with mappings of common functions, (e.g.  Print, Display, ???).

Thus when I run SuperWordProcessor, it contacts the name-server and tells
it:
	"I am SuperWordProcessor, my Arexx port is called FooPort.
	   I support printing with the command 'DumpThisJunk'
	   I support file display with the command 'ShowThisJunk'
	   I support functionX with the command 'DO_X_OnThisJunk'
	etc..."

>
>2) The rexx port has the same name as the Application.
>   or A tooltype says REXXPORT=name_of_rexxport. The latter applies
>   if present.

But many (most?) applications do not do consistent naming in this way,
a more complex scheme should be considered.  Or else, enforce the naming
convention (but as I've learned Amiga-types don't like standardization :) )

>Comments, flames >nil:,  ideas?

Good thinking, I hope we see more discussion on this topic.  Using Arexx
to its potential is a dream of mine.
-- 
John Lindwall			lindwall@ucsd.edu
"Oh look at me! I'm all flooby! I'll be a son of a gun!" -- Flaming Carrot

peter@sugar.hackercorp.com (Peter da Silva) (10/30/90)

[how does the printer program know how to print a file]
> real answer is of course that only the application that created it
> (and perhaps a few other programs) knows it. The only information
> available is the Default Tool in the icon that belongs to the file.

First cut: it's easy enough to tell if a file is ASCII text or IFF FORM,
so start out with print-text and print-ILBM options. If these checks
fail look up DefaultTool in s:printer.rc. It should have a format like:

TOOL Deluxe Snail
	launch work:applications/deluxe_snail/snailprint
	send 'print format=standard' to REXX 'snailprint'
END
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

FelineGrace@cup.portal.com (Dana B Bourgeois) (11/01/90)

Ummmm...maybe I missed it, but did anyone mention how it is done in the
Apple world?  And why it doesn't work here?

If you say "multi-tasking" then is it in System 7 and again: how?

Dana Bourgeois @ cup.portal.com