digitalmars.D.learn - Listener output
- Barry Denton (12/12) Apr 18 2008 I have a Listener added to a button as so :-
- Bill Baxter (11/27) Apr 18 2008 That's a Tango thing. Functions like formatln must have all '{' chars
- Jarrett Billingsley (11/22) Apr 18 2008 Tango's formatting uses a pair of curly braces like "{}". Your output i...
- Barry Denton (9/39) Apr 19 2008 Thanks but this did not work .Did I mess it up?
- Barry Denton (16/57) Apr 19 2008 Tried this but still there
- Bill Baxter (12/73) Apr 19 2008 The problem is in dwt's dwt/widgets/Event.d, toString method:
- Barry Denton (9/39) Apr 19 2008 Oh and output seems to be generated by the selection itself
- Barry Denton (6/24) Apr 19 2008 Ended up using Tango book solution for current date display -Time too co...
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 '}'} 1/ Can anybody see why I get this message? Also "System.currentTimeMillis()"is a C style request . 2/ is there a similar request in D for a Linux machine?
Apr 18 2008
Barry Denton wrote: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 '}'}That's a Tango thing. Functions like formatln must have all '{' chars escaped in the format string. So you or DWT are using a tango string formatter somewhere you or DWT should probably not be. It should be print() instead. Yet another reason I don't love Tango for output.1/ Can anybody see why I get this message? Also "System.currentTimeMillis()"is a C style request .Looks more Java-style to me...2/ is there a similar request in D for a Linux machine?probably something in tango.time.Time. How about this: tango.time.Time.Clock.now.time? And if that doesn't work stick a few extra .time's .clock's or .now's on the end and see if it does. ;-) --bb
Apr 18 2008
"Barry Denton" <basse42 yahoo.com> wrote in message news:fubgb0$22go$1 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.
Apr 18 2008
Jarrett Billingsley Wrote:"Barry Denton" <basse42 yahoo.com> wrote in message news:fubgb0$22go$1 digitalmars.com...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);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.
Apr 19 2008
Barry Denton Wrote:Jarrett Billingsley Wrote: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}"Barry Denton" <basse42 yahoo.com> wrote in message news:fubgb0$22go$1 digitalmars.com...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);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.
Apr 19 2008
Barry Denton wrote:Barry Denton Wrote: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? --bbJarrett Billingsley Wrote: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}"Barry Denton" <basse42 yahoo.com> wrote in message news:fubgb0$22go$1 digitalmars.com...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);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.
Apr 19 2008
Jarrett Billingsley Wrote:"Barry Denton" <basse42 yahoo.com> wrote in message news:fubgb0$22go$1 digitalmars.com...Oh and output seems to be generated by the selection itself The output from the above is C3dwt7widgets5Event5Eventevent PS5tango4time9WallClock9WallClockclock [ 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=1752657025 data={null} x=0 y=0 width=0 height=0 detail=0} (note there is no output for event.stringof or for clock.stringof -a blank line So I'l try formating the event and seeI 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.
Apr 19 2008
Barry Denton Wrote: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 '}'} 1/ Can anybody see why I get this message? Also "System.currentTimeMillis()"is a C style request . 2/ is there a similar request in D for a Linux machine?Ended up using Tango book solution for current date display -Time too complex import tango.time.WallClock; import tango.text.locale.Locale; auto layout = new Locale; Stdout.print(layout ("{:ddd, dd MMMM yyyy HH':'mm':'ss z}", WallClock.now)).newline;
Apr 19 2008