<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sciteco/src/interface-gtk.h, branch v2.5.2</title>
<subtitle>Scintilla-based Text Editor and COrrector</subtitle>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/'/>
<entry>
<title>interfaces have their own automake subdirectories and convenience libraries now</title>
<updated>2016-01-31T04:04:50+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2016-01-31T04:04:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=ea0179e342343f5fbefb265bde4dea0d475f0781'/>
<id>ea0179e342343f5fbefb265bde4dea0d475f0781</id>
<content type='text'>
 * use libtool convenience libraries as much as possible
   (for all static libraries except Scintilla)
 * improves separation of language and user interface implementations
   (e.g. the Gtk widgets are not interesting for the rest of SciTECO)
 * the Curses popup widget can now be factored out of interface-curses.cpp
 * some common CPPFLAGS are now defined by ./configure via AM_CPPFLAGS,
   so they don't have to be repeated in each submodule.
 * fixed building the Curses UI: GTK_FLOW_BOX_FALLBACK conditional
   must always be defined.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * use libtool convenience libraries as much as possible
   (for all static libraries except Scintilla)
 * improves separation of language and user interface implementations
   (e.g. the Gtk widgets are not interesting for the rest of SciTECO)
 * the Curses popup widget can now be factored out of interface-curses.cpp
 * some common CPPFLAGS are now defined by ./configure via AM_CPPFLAGS,
   so they don't have to be repeated in each submodule.
 * fixed building the Curses UI: GTK_FLOW_BOX_FALLBACK conditional
   must always be defined.
</pre>
</div>
</content>
</entry>
<entry>
<title>updated to Gtk+ 3 and revamped the Gtk interface's popup widget</title>
<updated>2016-01-31T01:21:02+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2016-01-31T00:55:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=ff17c72962d76986b48f3ab05e6ca9e7b3a4f78e'/>
<id>ff17c72962d76986b48f3ab05e6ca9e7b3a4f78e</id>
<content type='text'>
 * depend on Gtk+ 3.10. If necessary older versions should also
   be supportable. GtkOverlay was already introduced in v3.2
 * A fallback for GtkFlowBox is compiled in if the Gtk installation
   is too old. This applies even to Ubuntu 14.04 which still runs
   Gtk v3.10.
 * the threading the Gtk UI is left as it is for the time being
   even though the synchronization mechanism has been deprecated.
   Alternative approaches have to be tried out and benchmarked.
 * Completely revamped the GtkInfoPopup widget.
   It is now as powerful as the Curses UI's popup widget.
   * A GtkOverlay is used instead of the top-level window hack
     in the Gtk2 version.
   * GtkFlowBox is used to lay out the columns of the popup.
   * I had to work around restrictions of GtkScrolledWindow
     by writing my own poor-mans scrolled window which handles
     size requests correctly.
   * The popup window no longer overflows the screen size,
     instead we scroll.
   * Scrolling pagewise is finally supported. Wraps at the
     end of a list just like the Curses UI.
   * Instead of using only two stock icons, we now use
     GIO to get file and directory icons for the current theme.
     This looks even better.
   * The GtkFlowBox allows selections which can be used for mouse
     interaction later. But this is not yet implemented.
 * Theming of the popup widget and command line is still
   not performed correctly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * depend on Gtk+ 3.10. If necessary older versions should also
   be supportable. GtkOverlay was already introduced in v3.2
 * A fallback for GtkFlowBox is compiled in if the Gtk installation
   is too old. This applies even to Ubuntu 14.04 which still runs
   Gtk v3.10.
 * the threading the Gtk UI is left as it is for the time being
   even though the synchronization mechanism has been deprecated.
   Alternative approaches have to be tried out and benchmarked.
 * Completely revamped the GtkInfoPopup widget.
   It is now as powerful as the Curses UI's popup widget.
   * A GtkOverlay is used instead of the top-level window hack
     in the Gtk2 version.
   * GtkFlowBox is used to lay out the columns of the popup.
   * I had to work around restrictions of GtkScrolledWindow
     by writing my own poor-mans scrolled window which handles
     size requests correctly.
   * The popup window no longer overflows the screen size,
     instead we scroll.
   * Scrolling pagewise is finally supported. Wraps at the
     end of a list just like the Curses UI.
   * Instead of using only two stock icons, we now use
     GIO to get file and directory icons for the current theme.
     This looks even better.
   * The GtkFlowBox allows selections which can be used for mouse
     interaction later. But this is not yet implemented.
 * Theming of the popup widget and command line is still
   not performed correctly.
</pre>
</div>
</content>
</entry>
<entry>
<title>updated copyright to 2016</title>
<updated>2016-01-28T01:45:18+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2016-01-28T01:25:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=e3818dae4b4a5fa2af9c982a0b3a3cf4d15cb373'/>
<id>e3818dae4b4a5fa2af9c982a0b3a3cf4d15cb373</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>major GTK UI rewrite: use a separate execution thread</title>
<updated>2015-06-22T20:41:50+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2015-06-22T20:41:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=730f801f1d75bc247c86f76345e71f9ea128a07d'/>
<id>730f801f1d75bc247c86f76345e71f9ea128a07d</id>
<content type='text'>
 * the execution thread does not block the main thread (with
   the main loop).
 * therefore if SciTECO executes a long-running macro,
   the UI stays "responsive".
 * also this allows us to handle ^C interruptions.
   This is part of the solution to #4 for GTK+ UIs.
 * to speed up execution and avoid frequent UI redraws
   (now that we run concurrently, there are even more redraws),
   the view change is applied only after key presses.
 * also we freeze all UI updates on the view during SciTECO's
   key processing.
 * Closing the window, requests a graceful execution thread
   shut down. This may later be extended to allow programmable
   window close-behaviour using a special function key macro
   (e.g. mapped to the "Break" key).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * the execution thread does not block the main thread (with
   the main loop).
 * therefore if SciTECO executes a long-running macro,
   the UI stays "responsive".
 * also this allows us to handle ^C interruptions.
   This is part of the solution to #4 for GTK+ UIs.
 * to speed up execution and avoid frequent UI redraws
   (now that we run concurrently, there are even more redraws),
   the view change is applied only after key presses.
 * also we freeze all UI updates on the view during SciTECO's
   key processing.
 * Closing the window, requests a graceful execution thread
   shut down. This may later be extended to allow programmable
   window close-behaviour using a special function key macro
   (e.g. mapped to the "Break" key).
</pre>
</div>
</content>
</entry>
<entry>
<title>fixed compilation of GTK+ UI</title>
<updated>2015-06-22T14:55:49+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2015-06-22T14:55:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=6f48745171ab3ef898b24d8da9732c4f309b08c7'/>
<id>6f48745171ab3ef898b24d8da9732c4f309b08c7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>avoid frequent info line redraws in Curses and GTK+ UIs</title>
<updated>2015-03-10T03:51:20+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2015-03-10T03:26:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=e88f9bb28500bdf2bfe5106b565ab56a0b601239'/>
<id>e88f9bb28500bdf2bfe5106b565ab56a0b601239</id>
<content type='text'>
 * it is now redrawn once after each key press, even if the
   info line has not changed.
 * This is because Interface::update_info() is called very often
   in interactive mode, so it makes more sense to redraw it after user
   interaction (where even unnecessary delays are not noticed so easily),
   than thousands of times in a macro.
 * This is especially important since InterfaceCurses::update_info() now
   also sets the Window title on PDCurses - this is a very costly operation.
 * The same optimization was applied to InterfaceGtk where it is probably
   greatly responsible for the sluggishness of the UI.
   The GTK+ changes are currently UNTESTED.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * it is now redrawn once after each key press, even if the
   info line has not changed.
 * This is because Interface::update_info() is called very often
   in interactive mode, so it makes more sense to redraw it after user
   interaction (where even unnecessary delays are not noticed so easily),
   than thousands of times in a macro.
 * This is especially important since InterfaceCurses::update_info() now
   also sets the Window title on PDCurses - this is a very costly operation.
 * The same optimization was applied to InterfaceGtk where it is probably
   greatly responsible for the sluggishness of the UI.
   The GTK+ changes are currently UNTESTED.
</pre>
</div>
</content>
</entry>
<entry>
<title>keep rubbed out command line for later re-insertion and massive Cmdline cleanup/refactoring</title>
<updated>2015-03-01T17:20:27+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2015-03-01T16:56:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=83ebaea1abc39cae990e0fd22b6e4b428abfa95f'/>
<id>83ebaea1abc39cae990e0fd22b6e4b428abfa95f</id>
<content type='text'>
 * characters rubbed out are not totally removed from the command line,
   but only from the *effective* command line.
 * The rubbed out command line is displayed after the command line cursor.
   On Curses it is grey and underlined.
 * When characters are inserted that are on the rubbed out part of the command line,
   the cursor simply moves forward.
   NOTE: There's currently no immediate editing command for reinserting the
   next character/word from the rubbed out command line.
 * Characters resulting in errors are no longer simply discarded but rubbed out,
   so they will stay in the rubbed out part of the command line, reminding you
   which character caused the error.
 * Improved Cmdline formatting on Curses UI:
   * Asterisk is printed bold
   * Control characters are printed in REVERSE style, similar to what
     Scinterm does. The controll character formatting has thus been moved
     from macro_echo() in cmdline.cpp to the UI implementations.
 * Updated the GTK+ UI (UNTESTED): I did only, the most important API
   adaptions. The command line still does not use any colors.
 * Refactored entire command line handling:
   * The command line is now a class (Cmdline), and most functions
     in cmdline.cpp have been converted to methods.
   * Esp. process_edit_cmd() (now Cmdline::process_edit_cmd()) has been
     simplified. There is no longer the possibility of a buffer overflow
     because of static insertion buffer sizes
   * Cleaned up usage of the cmdline_pos variable (now Cmdline::pc) which
     is really a program counter that used a different origin as macro_pc
     which was really confusing.
   * The new Cmdline class is theoretically 8-bit clean. However all of this
     will change again when we introduce Scintilla views for the command line.
 * Added 8-bit clean (null-byte aware) versions of QRegisterData::set_string()
   and QRegisterData::append_string()
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * characters rubbed out are not totally removed from the command line,
   but only from the *effective* command line.
 * The rubbed out command line is displayed after the command line cursor.
   On Curses it is grey and underlined.
 * When characters are inserted that are on the rubbed out part of the command line,
   the cursor simply moves forward.
   NOTE: There's currently no immediate editing command for reinserting the
   next character/word from the rubbed out command line.
 * Characters resulting in errors are no longer simply discarded but rubbed out,
   so they will stay in the rubbed out part of the command line, reminding you
   which character caused the error.
 * Improved Cmdline formatting on Curses UI:
   * Asterisk is printed bold
   * Control characters are printed in REVERSE style, similar to what
     Scinterm does. The controll character formatting has thus been moved
     from macro_echo() in cmdline.cpp to the UI implementations.
 * Updated the GTK+ UI (UNTESTED): I did only, the most important API
   adaptions. The command line still does not use any colors.
 * Refactored entire command line handling:
   * The command line is now a class (Cmdline), and most functions
     in cmdline.cpp have been converted to methods.
   * Esp. process_edit_cmd() (now Cmdline::process_edit_cmd()) has been
     simplified. There is no longer the possibility of a buffer overflow
     because of static insertion buffer sizes
   * Cleaned up usage of the cmdline_pos variable (now Cmdline::pc) which
     is really a program counter that used a different origin as macro_pc
     which was really confusing.
   * The new Cmdline class is theoretically 8-bit clean. However all of this
     will change again when we introduce Scintilla views for the command line.
 * Added 8-bit clean (null-byte aware) versions of QRegisterData::set_string()
   and QRegisterData::append_string()
</pre>
</div>
</content>
</entry>
<entry>
<title>updated copyright to 2015</title>
<updated>2015-02-11T05:24:15+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2015-02-11T05:24:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=e7d275367c8f0ecbe7a47b00efa1d42c84ce09de'/>
<id>e7d275367c8f0ecbe7a47b00efa1d42c84ce09de</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Curses: support cycling through long lists of possible auto-completions and optimized screen refreshing/redrawing</title>
<updated>2014-12-09T01:46:34+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-12-09T01:46:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=613e8c91f082ca3cb64aa10063d3254100deac84'/>
<id>613e8c91f082ca3cb64aa10063d3254100deac84</id>
<content type='text'>
 * pressing e.g. TAB when the popup is showing a list of auto-completions
   will show the next page, eventually beginning at the first one again.
 * do not redraw curses windows in the UI methods directly. this resulted
   in flickering during command-line editing macros and ordinary macro calls
   because the physical screen was updated immediately.
   Instead, window refreshing and updated is done centrally in
   event_loop_iter() only after a key has been processed.
   Also we use wnoutrefresh() and doupdate() to send as little to the
   terminal (emulator) as possible.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * pressing e.g. TAB when the popup is showing a list of auto-completions
   will show the next page, eventually beginning at the first one again.
 * do not redraw curses windows in the UI methods directly. this resulted
   in flickering during command-line editing macros and ordinary macro calls
   because the physical screen was updated immediately.
   Instead, window refreshing and updated is done centrally in
   event_loop_iter() only after a key has been processed.
   Also we use wnoutrefresh() and doupdate() to send as little to the
   terminal (emulator) as possible.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make sure QRegister::view is properly initialized and cleaned up</title>
<updated>2014-11-17T02:56:42+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-11-16T22:46:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=2542eb02648294256a01ae4ecb6ac81bc8ab5094'/>
<id>2542eb02648294256a01ae4ecb6ac81bc8ab5094</id>
<content type='text'>
 * it must be initialized after the UI (Interface::main), so I added
   a View::initialize() function
 * the old initialize() method was renamed to setup()
 * use a global instance of QRegister::view so it is guaranteed to
   be destroyed only after any QRegisters that could still need it
 * Document API adapted to work with ViewCurrent references
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * it must be initialized after the UI (Interface::main), so I added
   a View::initialize() function
 * the old initialize() method was renamed to setup()
 * use a global instance of QRegister::view so it is guaranteed to
   be destroyed only after any QRegisters that could still need it
 * Document API adapted to work with ViewCurrent references
</pre>
</div>
</content>
</entry>
</feed>
