[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Carriage Returns in IDL Text Widget



Dan Fletcher <djfletcher@ucdavis.edu> writes:

> Hello:
> 
> I've searched through Google groups and seen this question asked a
> number of times, but I haven't seen an answer anywhere and I'm hoping
> someone out there can help me. I have a Text Widget and want to write
> some info to it. I can't seem to send it a carriage return, so all of
> the text winds up on one line and out of the space supplied by the
> widget.
> 
> Here's the widget definition (I've also tried it with the /WRAP keyword
> and have had the same problem).
> 
>   WID_TEXT_FILEPROPS = Widget_Text(WID_BASE_LEFT,  $
>       UNAME='WID_TEXT_FILEPROPS' ,XOFFSET=8 ,YOFFSET=21  $
>       ,SCR_XSIZE=168 ,SCR_YSIZE=163 ,XSIZE=20 ,YSIZE=1)
> 
> and here's the code I'm using to write to it:
> 
>   TextString='File: '+EEGFileName + STRING(13B)+STRING(10B)
> 
>   WIDGET_CONTROL,widget_info(Event.top,
> FIND_BY_UNAME='WID_TEXT_FILEPROPS'),SET_VALUE=TextString,/APPEND
> 
>   TextString="Sampling Rate:
> "+STRING(EEGFile.DataBlockSampleRate(0,0))+" Hz"
> 
>   WIDGET_CONTROL,widget_info(Event.top,
> FIND_BY_UNAME='WID_TEXT_FILEPROPS'),SET_VALUE=TextString,/APPEND
> 
> 
> Any suggestions would be greatly appreciated. This is driving me crazy!
> 

Hmmm. Seems like the Expert Programmer Association's pres is on vacation 
or in his annual tennis tournament ;-) I'm not sure if I can really help
you, but I would start looking at those keywords to Widget_Text. I would 
think that with All_Events=1 you can get each and every keystroke. Then
you can track things along the lines of:

   CASE StrUpCase(eventCategory) OF
      ;; Gaining or loosing focus
      'WIDGET_KBRD_FOCUS' : BEGIN
         RETURN, self->HandleFocusEvents(event)
      END

      ;; Change the cursor position or select part of the string
      'WIDGET_TEXT_SEL' : BEGIN
      END 

      ;; Insertion of a single character
      'WIDGET_TEXT_CH' : BEGIN
         ;; TAB or RETURN key
         IF event.ch EQ 9B OR event.ch EQ 10B THEN BEGIN ;; <===
            self->MoveTab
            RETURN, 0   ;; event
         ENDIF
         RETURN, self->HandleInsertEvents(event)
      END 

      ;; Insertion of a string
      'WIDGET_TEXT_STR' : BEGIN
         RETURN, self->HandleInsertEvents(event)
      END

      ;; Delete a character or string
      'WIDGET_TEXT_DEL' : BEGIN
         RETURN, self->HandleDeleteEvents(event)
      END

      ELSE: BEGIN
         self->ErrorMessage, 'Unknown event catagory : '+ $
            eventCategory
      ENDELSE 
   ENDCASE 

This is an excerpt from a widget object.

Good luck,

Martin


-- 
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
[[ Dr. Martin Schultz   Max-Planck-Institut fuer Meteorologie    [[
[[                      Bundesstr. 55, 20146 Hamburg             [[
[[                      phone: +49 40 41173-308                  [[
[[                      fax:   +49 40 41173-298                  [[
[[ martin.schultz@dkrz.de                                        [[
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[