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

Submitter:  Peter Wainwright <pwainwright>
Submitted:  Wed 31 Dec 2008 10:35:32 AM UTC
Votes: 10
 
Should Start On:  Wed 31 Dec 2008 12:00:00 AM UTC Should be Finished on:  Wed 31 Dec 2008 12:00:00 AM UTC
Category:  None Priority:  5 - Normal
Status:  In Progress Privacy:  Public
Assigned to:  None Percent Complete:  60%
Open/Closed:  Closed Effort:  0.00

Wed 31 Dec 2008 10:35:32 AM UTC, 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>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

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

    There are 10 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

     

    Follow 6 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2022-12-28 eickeler Open/ClosedOpen Closed
    2014-02-06 fbicknel Carbon-Copy- Added fbicknel
    2013-03-07 shaunak Assigned topwainwright None
    2009-02-15 pwainwright Percent Complete40% 60%
    2009-02-03 pwainwright StatusNone In Progress
        Percent Complete0% 40%

    Back to the top

    Powered by Savane 3.13-4448.
    Corresponding source code