Re: Second time's a charm

Sebastien Loisel <[email protected]> Thu, 16 Feb 2006 19:38:44 +0100
Newsgroups gmane.comp.gnu.octave.graphics,gmane.comp.gnu.octave.maintainers
Message-ID <[email protected]>
------=_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 <[email protected]> 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 <[email protected]> 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                                [email protected]
> > 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 <a href=3D"http://oct=
ave.sourceforge.net/octave_embed.tar.gz">http://octave.sourceforge.net/octa=
ve_embed.tar.gz</a> has the exact same problem. So this isn't a QT issue.<b=
r>
<br>S=E9bastien Loisel<br><br><div><span class=3D"gmail_quote">On 2/16/06, =
<b class=3D"gmail_sendername">Sebastien Loisel</b> &lt;<a href=3D"mailto:sl=
[email protected]">[email protected]</a>&gt; wrote:</span><blockquote class=
=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, 204, 204); margin=
: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
David,<br><br>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 &quot;console version&quot; 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.
<br><br>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.<br><br>While we could rename=
 cerr to octave_stderr everywhere, maybe this function would solve the prob=
lem too:
<br><br>ostream &amp;get_liboctave_cerr() { return cerr; }<br><br>(making s=
ure of course it's not inline otherwise I'll get the wrong symbol.)<br><br>=
In fact, would you mind testing that last idea?<br><br>Cheers,<br><br>
S=E9bastien Loisel
<div><span class=3D"e" id=3D"q_10973f9a4c4f9c4e_1"><br><br><div><span class=
=3D"gmail_quote">On 2/16/06, <b class=3D"gmail_sendername">David Bateman</b=
> &lt;<a href=3D"mailto:[email protected]" target=3D"_blank" oncli=
ck=3D"return top.js.OpenExtLink(window,event,this)">
[email protected]</a>&gt; wrote:</span><blockquote class=3D"gmail_=
quote" style=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt =
0pt 0.8ex; padding-left: 1ex;">
Sebastien,<br><br>Ok, I took a really quick look at this.<br><br>* Firstly =
have you tried starting octave-gui.exe in an rxvt?&nbsp;&nbsp;The output<br=
>you are trying to capture is echoed in the rxvt terminal rather than<br>yo=
ur application.
<br>* Commands such as &quot;ls&quot; that use a system call open a cmd.exe=
 window<br>briefly when they probably shouldn't. This will happen for many =
commands<br>including most notably &quot;help&quot; as it makes a system ca=
ll to texinfo..
<br>* The readline line completion in octave allows you to start typing the=
n<br>do upper-arrow to get the previous commands that started with the same=
<br>characters.<br>* You don't appear to be using the octave history file, =
this is
<br>important as it allows use of the history between sessions. To address<=
br>this and the above point, why not use the function<br>std::string gnu_re=
adline (const std::string&amp;, bool) from src/input.cc in<br>octave. You m=
ight also be able to use other parts of the command_editor
<br>class to get the output right, though you might need to set<br>command_=
editor::terminal_cols correctly. Check liboctave/cmd-edit.h<br>* You don't =
respect the PS1 variable for the prompt in the GUI.<br><br>I still haven't =
looked at the bug with octave_init yet, so the above is
<br>just first impressions.. Looks good and extremely rapid progress..<br><=
br>Cheers<br>David<br><br>Sebastien Loisel wrote:<br><br>&gt; David,<br>&gt=
;<br>&gt; Ok, now I've autoconfiscated octave-gui and you should be able to
<br>&gt; build it. If you have QT4.1 problems though, you're going to have =
to<br>&gt; sort those out... :-/ Over here, everything compiles and the<br>=
&gt; mainwindow comes up so it's now at the same state as it was<br>&gt; pr=
e-autoconfiscation (octave still doesn't init right.)
<br>&gt;<br>&gt; The tarball is here:<br>&gt; <a href=3D"http://www.math.mc=
gill.ca/loisel/octave-gui-beta.tar.gz" target=3D"_blank" onclick=3D"return =
top.js.OpenExtLink(window,event,this)">http://www.math.mcgill.ca/loisel/oct=
ave-gui-beta.tar.gz
</a><br>&gt;<br>&gt; I strongly advise everyone but David to stay away from=
 this.
<br>&gt;<br>&gt; Building is standard, but it's in maintainer mode. Here's =
what I do.<br>&gt;<br>&gt; 1) Fire up an appropriate shell. I've got &quot;=
shell.bat&quot; and<br>&gt; &quot;shell-x64.bat&quot; (for Windows XP x64) =
in that directory for that
<br>&gt; purpose. It's basically the setup from your octave.bat, then it st=
arts<br>&gt; sh.exe from mingw.<br>&gt;<br>&gt; 2) cd to the octave-gui-0.4=
 directory.<br>&gt;<br>&gt; 3)<br>&gt; $ aclocal<br>&gt; $ autoconf<br>

&gt; $ automake<br>&gt; $ ./configure<br>&gt; $ make<br>&gt;<br>&gt; 4) ./o=
ctave-gui<br>&gt;<br>&gt; After a 5 second pause (or so), a window will pop=
 up.<br>&gt;<br>&gt; I haven't tested, but I don't think stdout/stderr work=
. So if you're
<br>&gt; going to debug, you have to use some other way. To help you out, I=
've<br>&gt; declared the following global variable:<br>&gt;<br>&gt; string =
david_output;<br>&gt;<br>&gt; If you stick anything in there, it'll appear =
in the mainwindow when
<br>&gt; the mainwindow first appears. Otherwise I think you can open files=
 and<br>&gt; stuff. Right now, as an example, it prints the return code of<=
br>&gt; octave_main, which is 1.<br>&gt;<br>&gt; Cheers,<br>&gt;<br>&gt; Se=
bastien Loisel
<br>&gt;<br><br><br>--<br>David Bateman&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;<a href=3D"mailto:[email protected]" target=3D"_blank" oncli=
ck=3D"return top.js.OpenExtLink(window,event,this)">David.Bateman@motorola.=
com</a><br>
Motorola Labs - Paris&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;+33 1 69 35 48 04 (Ph)<br>Parc Les Algorithmes, Commune de S=
t Aubin&nbsp;&nbsp;&nbsp;&nbsp;+33 6 72 01 06 33 (Mob)
<br>91193 Gif-Sur-Yvette FRANCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+33 1 69 35=
 77 01 (Fax)<br><br>The information contained in this communication has bee=
n classified as:<br><br>[x] General Business Information<br>[ ] Motorola In=
ternal Use Only
<br>[ ] Motorola Confidential Proprietary<br><br></blockquote></div><br>

</span></div></blockquote></div><br>

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