taskDDD - Tasks: task #8941, DDD should use a modern widget set


You are not allowed to post comments on this tracker with your current authentication level.

task #8941: DDD should use a modern widget set

Submitted by:  Peter Wainwright <pwainwright>
Submitted on:  Wed Dec 31 10:35:32 2008  
Votes:  10  
Should Start On: Wed Dec 31 00:00:00 2008Should be Finished on: Wed Dec 31 00:00:00 2008
Category: NonePriority: 5 - Normal
Status: In ProgressPrivacy: Public
Percent Complete: 60%Assigned to: None
Open/Closed: OpenEffort: 0.00

Wed Dec 31 10:35:32 2008, original submission:

The existing versions of DDD are based on the venerable Unix GUI toolkit, X/Motif. Calls to the X/Motif libraries are scattered liberally throughout the source code. We wish to separate the GUI from the main program logic, so that development of DDD can proceed without requiring simultaneous updates to N separate platform-specific implementations. In order to do this we will introduce a “shim” or “wrapper” which will connect DDD to the underlying GUI toolkit. In order to implement DDD using another toolkit, the only necessary modification is the creation of a new wrapper. Modifications to the DDD core logic will automatically affect all implementations.

Each wrapper will thus have two interfaces:

  • The interface to DDD, or “upper” interface.
  • The interface to the underlying toolkit, or “lower” interface.

The specification of the upper interface will be common to all wrappers. It will have the following properties:

  • It will be object-oriented. Widgets will be C++ objects, they will be created and destroyed by C++ constructors and destructors respectively.
  • Callbacks will be handled using the libsigc++ typesafe signal framework. Each widget class supports a number of “signals”; a signal is usually triggered by an event in the underlying toolkit, for example, a mouse click on a button or menu item. Callbacks will be handled by connecting a signal to a corresponding “slot”, for example a class method or ordinary function.

The lower interface is the API of the underlying GUI toolkit, for example Motif, gtkmm or Qt. The bulk of the wrapper code will do two things:

  • Intercept calls made by DDD to the upper interface and make corresponding calls to the underlying toolkit.
  • Trap the callbacks produced by the underlying toolkit and translate them to signal invocations at the upper interface.
Peter Wainwright <pwainwright>


No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by fbicknel (Voted in favor of this item)
  • -unavailable- added by shaunak (Updated the item)
  • -unavailable- added by pwainwright (Submitted the item)

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 10 encouragements so far.

    Only logged-in users can vote.


    Please enter the title of George Orwell's famous dystopian book (it's a date):



    Follow 5 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Thu Feb 6 23:09:40 2014fbicknelCarbon-Copy-=>Added fbicknel
    Thu Mar 7 05:09:57 2013shaunakAssigned topwainwright=>None
    Sun Feb 15 18:23:43 2009pwainwrightPercent Complete40%=>60%
    Tue Feb 3 09:25:06 2009pwainwrightStatusNone=>In Progress
      Percent Complete0%=>40%

    Back to the top

    Powered by Savane 3.1-cleanup1