Project Scheduling Design



I'd like to start developing a Gnome project scheduling application, as
listed in the Rhad TODO list at http://www.labs.redhat.com/schedule.shtml

One critical decision is what widgets to use to create the main
portion of the display.  I've sketched out what I have in mind below
in the hopes of getting some advice on how best to implement what I've
got in mind.  Sorry for the ugly ASCII art.

<pre>
    +--+--------------+-------+-------+------+--------------------+--+
    | #| Task Name    |  Start| Finish| Preds| Jan99 Feb99 Mar99  |  |
    |==|==============+=======+=======+======|====================+==+
    | 1| Write Widget | 1jan99| 1feb99|      | X-----X            |/\|
    | 2| Print Support| 2feb99|19feb99| 1    |       X--X         |/\|
    | 3| Schedule I/O |10feb99|10mar99|      |       X------X     ||||
    | 4| Dependancies |20feb99|10mar99| 1   [*]         X---X     |\/|
    | 5| Documentation|11mar99| 1apr99| 1,2,3|              X---X |\/|
    +--+--------------+-------+-------+------+--------------------+--+
    |  |<<=================================>>|<<================>>|  |
    +----------------------------------------+-----------------------+
                                ^            ^         ^            ^
                                |            |         |            |
         horizontal scrollbars -+----------------------+            |
         paned window divider ---------------+                      |
         vertical scrollbar controlling both window panes ----------+
</pre>

There are two main components to the display: a tabular task window on
the left, and the resulting schedule on the right.  These are divided
by a paned window type of divider.  Both windows have a horizontal
scrollbar, and the entire display has a single vertical scrollbar that
adjusts the vertical position of both windows.

The two main approaches that I can see for developing such an
application are:

  1) Derive the whole thing from a Canvas widget.  This would be the
     most versatile approach, but seems to require reimplimenting most
     of the Scrollbar and Clist widgets in terms of a Canvas.  I don't
     see any way to get much reuse of existing components other than
     by cut-and-paste (ugh!).

  2) Use an Hpane widget as a container for a Clist widget on the left
     and a Canvas widget on the right.  This would be great from a
     software reuse perspective, but seems to require concocting some
     way to get the vertical scrollbar of the canvas widget to control
     the Clist and Canvas widgets in the two panes of the window.  I
     don't see any way to do this.

I'd appreciate any advise on the relative merits of these two
approaches, or suggestions for alternate implementation strategies.

-- John Kodis.



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