comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Transparent error handling Was: GLOBAL styles
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Transparent error handling Was: GLOBAL styles [message #15131] Sun, 25 April 1999 00:00
davidf is currently offline  davidf
Messages: 2866
Registered: September 1996
Senior Member
Martin Schultz (mgs@io.harvard.edu) writes:

> wouldn't it be nice to have a system variable that controls
> the display of messages throughout the session? I believe
> there are some people who prefer error messages displayed
> as dialog boxes, while others prefer a "unix like" message
> display in the log window. Currently this involves two
> different routines DIALOG_MESSAGE or MESSAGE...

This is a good idea. I like to write code that can be
executed everywhere. In particular, the code should work
on my display device, in the PostScript device, and in the
Z graphics buffer. But, of course, if that is to be the
case I can't use an error message (I.e, DIALOG_MESSAGE)
that opens a window. And yet, I prefer this kind of
error message when I am working at the display.

In the absence of this proposed system variable, here
is a little function, named ERROR_MESSAGE, that
allows me to format the error message as normal,
but uses DIALOG_MESSAGE or MESSAGE to display the
message, as appropriate for the current graphics
device. Setting the TRACEBACK keyword will allow
traceback information to be printed to the command
output window no matter how the error message is
displayed for the user.

It is called like this:

ok = Error_Message('Whoops. Error', /Traceback)

Cheers,

David

--
FUNCTION ERROR_MESSAGE, theMessage, Traceback=traceback

; This function displays an error message to the user by
; using DIALOG_MESSAGE if widgets are supported and MESSAGE
; otherwise. Set the TRACEBACK keyword to get traceback
; information from the error.

; Are widgets supported?

widgetsSupported = ((!D.Flags AND 65536L) NE 0)
IF widgetsSupported THEN answer = Dialog_Message(theMessage) ELSE BEGIN
Message, theMessage, /Continue, /NoPrint, /NoName, /NoPrefix
Help, Calls=callStack
callingRoutine = (Str_Sep(StrCompress(callStack[1])," "))[0]
Print, '%' + callingRoutine + ': ' + theMessage
answer = 'OK'
ENDELSE

; Provide traceback information if requested.

IF Keyword_Set(traceback) THEN BEGIN
Help, Calls=callStack
callingRoutine = (Str_Sep(StrCompress(callStack[1])," "))[0]
IF widgetsSupported THEN Print, '%' + callingRoutine + ': ' + theMessage
Print, 'Execution halted at: ', ' ', callStack[1]
numCalls = N_Elements(callStack)
IF numCalls GT 2 THEN FOR j=2,numCalls-1 DO Print, callStack[j]
ENDIF

RETURN, answer
END
--
David Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438 E-Mail: davidf@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
[Message index]
 
Read Message
Previous Topic: Re: Multiple widgetized windows in one application
Next Topic: WIDGET_TABLE does not allow editing

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 14:26:08 PDT 2025

Total time taken to generate the page: 0.33446 seconds