Front Page All Articles Recent Changes Random Article

Contents

Concatenative language

  • ACL
  • Ait
  • Aocla
  • Breeze
  • Callisto
  • Cat
  • Cognate
  • colorForth
  • Concata
  • CoSy
  • Deque
  • DSSP
  • dt
  • Elymas
  • Enchilada
  • ETAC
  • F
  • Factor
  • Fiveth
  • Forth
  • Fourth
  • Freelang
  • Gershwin
  • hex
  • iNet
  • Joy
  • Joy of Postfix App
  • kcats
  • Kitten
  • lang5
  • Listack
  • LSE64
  • Lviv
  • Meow5
  • min
  • Mirth
  • mjoy
  • Mlatu
  • Ode
  • OForth
  • Om
  • Onyx
  • Plorth
  • Popr
  • Porth
  • PostScript
  • Prowl
  • Quest32
  • Quackery
  • r3
  • Raven
  • Retro
  • RPL
  • SPL
  • Staapl
  • Stabel
  • Tal
  • Titan
  • Trith
  • Uiua
  • Worst
  • xs
  • XY
  • 5th
  • 8th

Concatenative topics

  • Compilers
  • Interpreters
  • Type systems
  • Object systems
  • Quotations
  • Variables
  • Garbage collection
  • Example programs

Concatenative meta

  • People
  • Communities

Other languages

  • APL
  • C++
  • Erlang
  • FP trivia
  • Haskell
  • Io
  • Java
  • JavaScript
  • Lisp
  • ML
  • Oberon
  • RPL
  • Self
  • Slate
  • Smalltalk

Meta

  • Search
  • Farkup wiki format
  • Etiquette
  • Sandbox

Factor/GSoC/2010/Replace X11 backend with a GTK or Qt backend

Mentor

Joe Groff

Slava Pestov

Skills required

  • Familiarity with GTK+ or Qt

Summary

The Factor UI on Unix platforms uses raw Xlib to interface with the window system. While this has the benefit of minimizing the Factor UI's dependencies, Xlib is a much lower-level and more limited API than the Win32 and Cocoa libraries Factor uses on Windows and OS X, so the X11 backend doesn't support some UI features (such as native message boxes and window decoration controls) that Factor provides for Windows and OS X. The X11 backend is also flaky and interacts poorly with tiling window managers, among other things. Most modern Unix workstations use either GNOME or KDE, so Factor's X11 backend should be replaced with a more robust and featureful UI backend built on GTK+ or Qt.

Outline

Add bindings for GTK+ or Qt libraries

Of the two, GTK+ will currently be the easiest to bind, since it has a raw C API that Factor's FFI can bind to directly. There has been some work done with Glib-based library bindings to make them easy to use with Factor.

Binding to Qt would require either writing a small C shim around Smoke (which is the approach used by CommonQt) or a C++ FFI (which is being worked on by Jeremy Hughes).

Replace the x11 backend

The UI backends are relatively simple and self-contained. The existing x11 backend lives in ui.backend.x11. in the Factor repository. The cocoa backend (ui.backend.cocoa) is also worth looking at to see how a UI backend can be written using a higher-level API.

This revision created on Wed, 3 Mar 2010 18:44:57 by jckarter

Latest Revisions Edit

All content is © 2008-2024 by its respective authors. By adding content to this wiki, you agree to release it under the BSD license.