GUI terminal widget: Difference between revisions

Jump to navigation Jump to search
(→‎Open questions: Categories.)
(9 intermediate revisions by 2 users not shown)
Line 2: Line 2:


Way back in January 2012, jwe [https://lists.gnu.org/archive/html/octave-maintainers/2012-01/msg00416.html posted the following message] about changing the terminal widget in the GUI to handle input differently.
Way back in January 2012, jwe [https://lists.gnu.org/archive/html/octave-maintainers/2012-01/msg00416.html posted the following message] about changing the terminal widget in the GUI to handle input differently.
This question was [https://lists.gnu.org/archive/html/octave-maintainers/2019-05/msg00115.html addressed again in May 2019].


Jwe included a simple example written with gtkmm to illustrate the idea of having the terminal widget in the GUI be in control of input and output and feed lines of text to the interpreter.
Jwe included a simple example written with gtkmm to illustrate the idea of having the terminal widget in the GUI be in control of input and output and feed lines of text to the interpreter.
Line 12: Line 13:
See the [https://hg.octave.org/jwe-qt-gui-with-push-parser/file/tip/NOTES NOTES file] for build instructions.
See the [https://hg.octave.org/jwe-qt-gui-with-push-parser/file/tip/NOTES NOTES file] for build instructions.
That file also contains the following list of open questions that will need to be resolved if we are going to attempt a switch.
That file also contains the following list of open questions that will need to be resolved if we are going to attempt a switch.


== Open questions ==
== Open questions ==
Line 42: Line 42:


# The system function may need to be modified so that external programs that expect to be running in a terminal will continue to work properly.  On Unixy systems, this job can be done with ptys.  I guess Windows systems can use a hidden console?  But if these things are required, are we more or less back to were we were before since we used a pty and hidden console to implement the terminal widgets?  I believe the Emacs start-process function must do similar things, so we might be able to reuse that code.
# The system function may need to be modified so that external programs that expect to be running in a terminal will continue to work properly.  On Unixy systems, this job can be done with ptys.  I guess Windows systems can use a hidden console?  But if these things are required, are we more or less back to were we were before since we used a pty and hidden console to implement the terminal widgets?  I believe the Emacs start-process function must do similar things, so we might be able to reuse that code.
=== [[International Characters Support]] ===
# Does GNU Readline support Unicode input?  What are the limiting factors to support Unicode?
#* '''MAYBE.''' If correctly configured, reasonably recent versions of GNU readline support 8bit characters if LC_CTYPE is set to a UTF-8 locale. Versions 6.1 and newer versions should be working if the user didn't override "meta-flag", "convert-meta", or "output-meta" (maybe also others). It is unclear from the documentation whether this also means support for all UTF-8 characters (including multibyte characters). But bash uses readline and it supports UTF-8. So it should be possible.
#* '''MAYBE.''' Setting LC_CTYPE to a UTF-8 locale is invalid on Windows but we could set the necessary flags manually.
#** Can we manage this problem in current MXE builds?
# Can the open bugs be resolved with the new solution?
#* {{bug|56173}} (probably unrelated)
#* {{bug|47571}} (probably resolved)
#* {{bug|43099}} (probably resolved)
=== Alternatives ===
# [https://github.com/jupyter/qtconsole qtconsole]
#* (+) Fancy interactive features including plots
#* (+) Contains history and a pager
#* (-) Written in Python
# [https://github.com/lxqt/qtermwidget qtermwidget]
#* (+) Reusable component (less Octave code) as shared and development library [https://packages.debian.org/stretch/libqtermwidget5-0 Debian],  [https://software.opensuse.org/package/libqtermwidget5-0 openSUSE].
#* (+) Contains history (and a pager?)
#* (+) Written in C++
#* (-) AFAIK, the current implementation was forked from this implementation some years ago. It deviated quite substantially which makes merging difficult and which might suggest that the original implementation doesn't fit our needs (confirmation needed).
#* (-) Not cross-platform ([https://github.com/lxqt/qtermwidget/issues/240 no Windows support]).
[[Category:Development]]
216

edits

Navigation menu