From graphics-request at octave dot org Thu Feb 16 12:40:26 2006 Subject: Re: Second time's a charm From: Sebastien Loisel To: David dot Bateman at motorola dot com Cc: octave maintainers mailing list , octave-graphics Date: Thu, 16 Feb 2006 19:38:44 +0100 ------=_Part_8128_29685656.1140115124471 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline I've just confirmed that the octave embedding example http://octave.sourceforge.net/octave_embed.tar.gz has the exact same problem. So this isn't a QT issue. S=E9bastien Loisel On 2/16/06, Sebastien Loisel wrote: > > David, > > Only in windows could this happen. It appears that the cout and cerr that > my Octave GUI program sees are *not the same* as the cout and cerr that > liboctave sees. I have absolutely no idea why this is. I've linked a > "console version" of Octave GUI to see if it would help, no go. I'm able = to > grab the octave_stdout, but when I grab cerr and cout, it's only grabbed > inside my code, and not inside liboctave. Ergo, they're different symbols= . > > I can't fix this without help. If you don't know how to fix it, I'll go > trolling on Windows C++ forums somewhere. > > While we could rename cerr to octave_stderr everywhere, maybe this > function would solve the problem too: > > ostream &get_liboctave_cerr() { return cerr; } > > (making sure of course it's not inline otherwise I'll get the wrong > symbol.) > > In fact, would you mind testing that last idea? > > Cheers, > > S=E9bastien Loisel > > On 2/16/06, David Bateman wrote: > > > > Sebastien, > > > > Ok, I took a really quick look at this. > > > > * Firstly have you tried starting octave-gui.exe in an rxvt? The outpu= t > > you are trying to capture is echoed in the rxvt terminal rather than > > your application. > > * Commands such as "ls" that use a system call open a cmd.exe window > > briefly when they probably shouldn't. This will happen for many command= s > > including most notably "help" as it makes a system call to texinfo.. > > * The readline line completion in octave allows you to start typing the= n > > do upper-arrow to get the previous commands that started with the same > > characters. > > * You don't appear to be using the octave history file, this is > > important as it allows use of the history between sessions. To address > > this and the above point, why not use the function > > std::string gnu_readline (const std::string&, bool) from src/input.cc i= n > > octave. You might also be able to use other parts of the command_editor > > class to get the output right, though you might need to set > > command_editor::terminal_cols correctly. Check liboctave/cmd-edit.h > > * You don't respect the PS1 variable for the prompt in the GUI. > > > > I still haven't looked at the bug with octave_init yet, so the above is > > just first impressions.. Looks good and extremely rapid progress.. > > > > Cheers > > David > > > > Sebastien Loisel wrote: > > > > > David, > > > > > > Ok, now I've autoconfiscated octave-gui and you should be able to > > > build it. If you have QT4.1 problems though, you're going to have to > > > sort those out... :-/ Over here, everything compiles and the > > > mainwindow comes up so it's now at the same state as it was > > > pre-autoconfiscation (octave still doesn't init right.) > > > > > > The tarball is here: > > > http://www.math.mcgill.ca/loisel/octave-gui-beta.tar.gz > > > > > > I strongly advise everyone but David to stay away from this. > > > > > > Building is standard, but it's in maintainer mode. Here's what I do. > > > > > > 1) Fire up an appropriate shell. I've got "shell.bat" and > > > "shell-x64.bat" (for Windows XP x64) in that directory for that > > > purpose. It's basically the setup from your octave.bat, then it start= s > > > sh.exe from mingw. > > > > > > 2) cd to the octave-gui-0.4 directory. > > > > > > 3) > > > $ aclocal > > > $ autoconf > > > $ automake > > > $ ./configure > > > $ make > > > > > > 4) ./octave-gui > > > > > > After a 5 second pause (or so), a window will pop up. > > > > > > I haven't tested, but I don't think stdout/stderr work. So if you're > > > going to debug, you have to use some other way. To help you out, I've > > > declared the following global variable: > > > > > > string david_output; > > > > > > If you stick anything in there, it'll appear in the mainwindow when > > > the mainwindow first appears. Otherwise I think you can open files an= d > > > stuff. Right now, as an example, it prints the return code of > > > octave_main, which is 1. > > > > > > Cheers, > > > > > > Sebastien Loisel > > > > > > > > > -- > > David Bateman David dot Bateman at motorola dot com > > Motorola Labs - Paris +33 1 69 35 48 04 (Ph) > > Parc Les Algorithmes, Commune de St Aubin +33 6 72 01 06 33 (Mob) > > 91193 Gif-Sur-Yvette FRANCE +33 1 69 35 77 01 (Fax) > > > > The information contained in this communication has been classified as: > > > > [x] General Business Information > > [ ] Motorola Internal Use Only > > [ ] Motorola Confidential Proprietary > > > > > ------=_Part_8128_29685656.1140115124471 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline I've just confirmed that the octave embedding example http://octave.sourceforge.net/octa= ve_embed.tar.gz has the exact same problem. So this isn't a QT issue.
S=E9bastien Loisel

On 2/16/06, = Sebastien Loisel <sloisel@gmail dot com> wrote:
David,

Only in windows could this happen. It appears that the cout a= nd cerr that my Octave GUI program sees are *not the same* as the cout and = cerr that liboctave sees. I have absolutely no idea why this is. I've linke= d a "console version" of Octave GUI to see if it would help, no g= o. I'm able to grab the octave_stdout, but when I grab cerr and cout, it's = only grabbed inside my code, and not inside liboctave. Ergo, they're differ= ent symbols.

I can't fix this without help. If you don't know how to fix it, I'l= l go trolling on Windows C++ forums somewhere.

While we could rename= cerr to octave_stderr everywhere, maybe this function would solve the prob= lem too:

ostream &get_liboctave_cerr() { return cerr; }

(making s= ure of course it's not inline otherwise I'll get the wrong symbol.)

= In fact, would you mind testing that last idea?

Cheers,

S=E9bastien Loisel


On 2/16/06, David Bateman < David dot Bateman at motorola dot com> wrote:
Sebastien,

Ok, I took a really quick look at this.

* Firstly = have you tried starting octave-gui.exe in an rxvt?  The outputyou are trying to capture is echoed in the rxvt terminal rather than
yo= ur application.
* Commands such as "ls" that use a system call open a cmd.exe= window
briefly when they probably shouldn't. This will happen for many = commands
including most notably "help" as it makes a system ca= ll to texinfo..
* The readline line completion in octave allows you to start typing the= n
do upper-arrow to get the previous commands that started with the same=
characters.
* You don't appear to be using the octave history file, = this is
important as it allows use of the history between sessions. To address<= br>this and the above point, why not use the function
std::string gnu_re= adline (const std::string&, bool) from src/input.cc in
octave. You m= ight also be able to use other parts of the command_editor
class to get the output right, though you might need to set
command_= editor::terminal_cols correctly. Check liboctave/cmd-edit.h
* You don't = respect the PS1 variable for the prompt in the GUI.

I still haven't = looked at the bug with octave_init yet, so the above is
just first impressions.. Looks good and extremely rapid progress..
<= br>Cheers
David

Sebastien Loisel wrote:

> David,
>= ;
> Ok, now I've autoconfiscated octave-gui and you should be able to
> build it. If you have QT4.1 problems though, you're going to have = to
> sort those out... :-/ Over here, everything compiles and the
= > mainwindow comes up so it's now at the same state as it was
> pr= e-autoconfiscation (octave still doesn't init right.)
>
> The tarball is here:
> http://www.math.mcgill.ca/loisel/oct= ave-gui-beta.tar.gz
>
> I strongly advise everyone but David to stay away from= this.
>
> Building is standard, but it's in maintainer mode. Here's = what I do.
>
> 1) Fire up an appropriate shell. I've got "= shell.bat" and
> "shell-x64.bat" (for Windows XP x64) = in that directory for that
> purpose. It's basically the setup from your octave.bat, then it st= arts
> sh.exe from mingw.
>
> 2) cd to the octave-gui-0.4= directory.
>
> 3)
> $ aclocal
> $ autoconf
> $ automake
> $ ./configure
> $ make
>
> 4) ./o= ctave-gui
>
> After a 5 second pause (or so), a window will pop= up.
>
> I haven't tested, but I don't think stdout/stderr work= . So if you're
> going to debug, you have to use some other way. To help you out, I= 've
> declared the following global variable:
>
> string = david_output;
>
> If you stick anything in there, it'll appear = in the mainwindow when
> the mainwindow first appears. Otherwise I think you can open files= and
> stuff. Right now, as an example, it prints the return code of<= br>> octave_main, which is 1.
>
> Cheers,
>
> Se= bastien Loisel
>


--
David Bateman      =             &nb= sp;            =  David dot Bateman at motorola dot = com
Motorola Labs - Paris         =             &nb= sp;  +33 1 69 35 48 04 (Ph)
Parc Les Algorithmes, Commune de S= t Aubin    +33 6 72 01 06 33 (Mob)
91193 Gif-Sur-Yvette FRANCE       &n= bsp;          +33 1 69 35= 77 01 (Fax)

The information contained in this communication has bee= n classified as:

[x] General Business Information
[ ] Motorola In= ternal Use Only
[ ] Motorola Confidential Proprietary



------=_Part_8128_29685656.1140115124471--