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ébastien Loisel
On 2/16/06, *Sebastien Loisel* <address@hidden
<mailto:address@hidden>> 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ébastien Loisel
On 2/16/06, *David Bateman* < address@hidden
<mailto:address@hidden>> wrote:
Sebastien,
Ok, I took a really quick look at this.
* Firstly have you tried starting octave-gui.exe in an
rxvt? The output
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 commands
including most notably "help" as it makes a system call to
texinfo..
* The readline line completion in octave allows you to start
typing then
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 in
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
<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 starts
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 and
stuff. Right now, as an example, it prints the return code of
octave_main, which is 1.
Cheers,
Sebastien Loisel
--
David
Bateman address@hidden
<mailto:address@hidden>
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