Listener output

Barry Denton basse42 at yahoo.com
Tue Apr 22 15:22:34 PDT 2008


Bill Baxter Wrote:

> Barry Denton wrote:
> > Bill Baxter Wrote:
> > 
> >> Barry Denton wrote:
> >>> Barry Denton Wrote:
> >>>
> >>>> Jarrett Billingsley Wrote:
> >>>>
> >>>>> "Barry Denton" <basse42 at yahoo.com> wrote in message 
> >>>>> news:fubgb0$22go$1 at digitalmars.com...
> >>>>>> I have a Listener added to a button as so :-
> >>>>>>
> >>>>>> button.addListener(DWT.Selection, new class Listener {
> >>>>>>        void handleEvent(Event event) {
> >>>>>>            itemWords [5] = "item has changed " ;//~ 
> >>>>>> System.currentTimeMillis();
> >>>>>>            minitable.clear(5);  }  });
> >>>>>>
> >>>>>> When pressed the button outputs this:-
> >>>>>>
> >>>>>> Event {missing or misplaced '}'}Event {type=13 Button {Change item} 
> >>>>>> time=1679601378 data={null} x=0 y=0 width=0 height=0 detail=0}
> >>>>>> .
> >>>>>> Now all is as it should be except for the  {missing or misplaced '}'}
> >>>>> Tango's formatting uses a pair of curly braces like "{}".  Your output is 
> >>>>> supposed to go "{Event {type=13....", but Tango sees the opening '{', tries 
> >>>>> to parse it as a format specifier, and fails, leaving you with an error 
> >>>>> message embedded in the output.
> >>>>>
> >>>>> The question I have is: where is this output being generated?  This code 
> >>>>> doesn't seem to generate it.
> >>>>>
> >>>>> I ask because it's a simple fix: instead of doing something like 
> >>>>> "Stdout.formatln(x.toString())", just use "Stdout.formatln("{}", x)", that 
> >>>>> is, escape the string by making it a parameter to be formatted. 
> >>>>>
> >>>>>
> >>>> Thanks but this did not work .Did I mess it up?
> >>>>  button.addListener(DWT.Selection, new class Listener {
> >>>>         void handleEvent(Event event) {
> >>>>             itemWords [5] = ("item has changed " ~ clock.stringof~"  "~ cast(char)clock);
> >>>>             Stdout.formatln("{}""{}" ,event.mangleof, event.stringof).newline;
> >>>>             Stdout.formatln("{}""{}" ,clock.mangleof, clock.stringof).newline;
> >>>>             Stdout.print(itemWords).newline;
> >>>>             minitable.clear(5); 
> >>>>
> >>> Tried this but still there
> >>>
> >>> button.addListener(DWT.Selection, new class Listener {
> >>>         void handleEvent(Event event) {
> >>>             itemWords [5] = ("item has changed " ~ clock.stringof~"  "~ cast(char)clock);
> >>>             Stdout.formatln("{}""{}" ,event.mangleof, event.stringof).newline;
> >>>             Stdout.formatln("{}""{}" ,clock.mangleof, clock.stringof).newline;
> >>>             Stdout.formatln("{}",event);
> >>>             Stdout.print(itemWords).newline;
> >>>             minitable.clear(5); 
> >>> Output
> >>> C3dwt7widgets5Event5Eventevent
> >>>
> >>> PS5tango4time9WallClock9WallClockclock
> >>>
> >>> Event {missing or misplaced '}'}Event {type=13 Button {Change item at index 5} time=1753196186 data={null} x=0 y=0 width=0 height=0 detail=0}
> >>> [ item 0  , item 1  , item 2  , item 3  , item 4  , item has changed clock  , item 6  , item 7  , item 8  , item 9   ]
> >>> Event {missing or misplaced '}'}Event {type=36 Table {} time=1753196186 data={null} x=0 y=0 width=0 height=0 detail=0}
> >>>
> >> The problem is in dwt's dwt/widgets/Event.d, toString method:
> >>
> >> override public char[] toString () {
> >>      return Format( "Event {type={} {} time={} data={} x={} y={} 
> >> width={} height={} detail={}}",
> >>          type, widget, time, data, x, y, width, height, detail ); 
> >> //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ 
> >> //$NON-NLS-6$ //$NON-NLS-7$
> >> }
> >>
> >> It needs to escape the first and last '{'s.
> >> Can you fix it, Frank?
> >>
> >> --bb
> > Will result be rest of  fields then filled in ?
> 
> I dunno.  Looks like Frank checked in the fix.  Just update and try it.
> 
> --bb
Sorry for being pest but it  not working
Frank escape the first curly bracket but that fixed nothing 
Problems seem with Event . Does not fill in fields as should  when pass event.
I see missing bracket is not really important . My mistake .
Important get return of needed fields which cannot happen.


More information about the Digitalmars-d-dwt mailing list