Re: [gtk-list] Re: layered widgets



>I do think Havoc is right about you not wanting overlaping
>widgets.  It was a fundimental assumption of gtk+ that
>no 2 widgets occupy the same space.  I would avoid the layered
>widget in favor of using the background pixmap.  After all
>you really don't need the extra event capture and such that
>Gtk_Pixmap is going to give you.  Therefore, just drawing on
>the underlaying pixmap is better. 

Actually, I do want them to be *potentially* overlapping. My program
features a little "GUI-builder" language (*), that allows the user to
define the visual construction of various parts of the user
interface. This has nothing to do with themes, BTW; the system is a
modular audio/midi processor based on Csound, and the "GUI-builder"
language lets you specify which of a relatively small set of
predetermined visual elements you want to put on the "panel" for a
given module of your setup, and where they should go on the "panel".

(check out http://www.op.net/~pbd/quasimodo/ for screenshots and more
details) 

This language assumes the use of a Fixed object to do the layout,
and yes, sometimes people (right now, just me :) give coordinates that
lead the widgets to overlap. 

To date, I have encountered no problems with them when they do, except
that if they overlap 100%, you lose access to the lower widget completely.

--p


(*) An example:

Interface

    height = 3;

    label@(10,5) = "VCO";

    knob@(15,15) = {
      label = "Coarse Tune";
      parameter = kcoarse;
      start_value = -10000;
      end_value = 10000; 
      step_increment = 100;
      page_increment = 1000;
    };

    knob@(50,15) = {
        label = Volume;
        param = iamplitude;
        start = 0; 
        end = 1;
        step = 0.01;
        page = 0.1;
    };

    function@(50,60) = {
      param = iwavetable;
      label = "WaveForm";
    };

    socket@(10,70) = {
      label = "Freq in";
      param = ifrequency;
      flags = input;
    };

    socket@(30,70) = {
       label = "Amp Mod";
       param = iamplitude;
       flags = input;
    };

    socket@(80,70) = {
       label = "Output";
       param = asig;
       flags = output;
    };

EndInterface



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