texmacs-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Texmacs-dev] Abstract graphical user interface for TeXmacs


From: Joris van der Hoeven
Subject: [Texmacs-dev] Abstract graphical user interface for TeXmacs
Date: Fri, 2 Nov 2007 17:27:12 +0100
User-agent: Mutt/1.5.9i

Hi all,

On the CVS version of TeXmacs, I just completed the abstraction of
the graphical user interface for TeXmacs. This should make it relatively
easy to port TeXmacs to other operating systems (Windows, MacOS)
and use standard toolkit libraries (Qt, Gtk, Aqua, etc.)
for a more native look and feel.

The code has been reorganized as follows:

  1) Abstract layers in src/Graphics/Gui and src/Graphics/Renderer.
  2) The old X11 interface in src/Plugins/X11.
  3) The default TeXmacs widget library in src/Plugins/Widkit.

The font system in src/Graphics/Fonts and src/Graphics/Bitmap_fonts
will be reorganized later.

There are three ways in which external plug-ins can provide
functionality to TeXmacs:

  1) By providing a new implementation of renderer.hpp, you can connect
     your favorite graphics library (e.g. Cairo) to TeXmacs.
  2) By providing implementations of gui.hpp, window.hpp and renderer.hpp,
     you can port TeXmacs to another environment where you don't have X11.
  3) By providing implementations of gui.hpp, renderer.hpp and widget.hpp,
     you can use your own widget library instead of the native TeXmacs widgets.

It should be noticed that no implementation of window.hpp is required
for ports of type 3. However, we highly recomment to always start with step 2
before diving into step 3:

  A) Making Widkit available for your new environment will enable you to do
     systematic testing that all features have been well implemented.
  B) Widkit should be replaced later by a typesetting-based widget library
     based on similar system requirements.
  C) Porting window.hpp costs less time than porting widget.hpp anyway.

Some very short documentation of the required functionalities has been
added to the header files. The widget library has currently been kept to
a minimum: just what is needed outside Widkit. Later on, we plan to further
improve the interface and add other widgets; this will probably require
a few subsequent changes in the API.

If someone would like to do some porting, then don't hesitate to
ask further questions. A list of particular difficulties that
you might encounter would also be helpful for us (it might be
nice to work out a short tutorial on how to do the porting).

Best wishes, Joris




reply via email to

[Prev in Thread] Current Thread [Next in Thread]