Re: TGComboBox for selecting colors

From: Rutger van der Eijk (r36@nikhef.nl)
Date: Tue Aug 25 1998 - 12:03:45 MEST


Hi Fons,

I could do this. But in my case I want to set the color for a list of
items. Actually something similair to the the buttons and icons in the
'message box' of the guitest, but then a 'color selector' instead of a
TGCkeckButton. I can not make a list of colored buttons for every item for
which I want to set the color. I could somehow make one 'selector' frame,
and then use this for every item seperatly, but that's not what I prefer
to do. So can you please give me a bit more insight in how the TGLBEntry
etc.. 'should' be used...

Thanks,

Rutger

On Mon, 24 Aug 1998, Fons Rademakers wrote:

> Hi Rutger,
> 
>    why not use the example of guitest? The canvas with the color tiles?
> Instead of frames you could use buttons (for the selection effect).
> 
> Cheers, Fons.
> 
> > 
> > 
> > Hi ROOTers (Fons),
> > 
> > I need a 'widget' or sort of ListBox to select a color. I was thinking of
> > using a TGComboBox for this, but don't succeed to get it working. 
> > 
> > By idea is the following:
> > 
> > Instead of adding 'text' as 'entry' via
> > 
> > TGComboBox::AddEntry(char *s, Int_t id);
> > 
> > I add a TGLBEntry with
> > 
> > TGComboBox* fComboBox;
> > <....>
> > fComboBox->AddEntry(lbe, lhints);
> > 
> > where 
> > 
> > lbe = new TGLBEntry(fComboBox->GetListBox()->GetContainer, id,
> > 			kHorizontalFrame, entryColor);
> > lhints = new TGLayoutHints(kLHintsExpandX | kLHintsTop);
> > 
> > where 'entryColor' is the color I want for the entry.
> > 
> > This seems not to work at all (the TGPopupComboBox is empty => no
> > entries).
> > 
> > This is the first part I don't understand. It might be that this is
> > because of the comment in the TGListBox class description (i.e. 'Currently
> > entries are simple text strings (TGTextLBEntry)'). But it seems strange
> > to me that I need to use a TGTextLBEntry, instead of the base class
> > TGLBEntry (which is used in the TGListBox!!!) if I don't want the extra
> > functionality of adding text.
> > 
> > But to continue I tried using a TGTextLBEntry which I then give the
> > required entryColor as background color. now I use:
> > 
> > lbe = new TGTextLBEntry(fComboBox->GetListBox()->GetContainer(), 
> > 		        new TGString("don't want this string"), id,
> >                         theGC,
> > 		        theFont,
> > 		   	kHorizontalFrame,
> > 			entryColor),
> > 
> > where theGC and theFont are GC and FontStruct defined as mentioned in
> > guitest.cxx.
> > 
> > 
> > What happens is that I indead get the entry in the TGComboBox (I infact
> > add more TGTextLBEnties with different color) with a color (not the one I
> > want, but that's for later concern.) But when I select an entry the
> > 'selected entry' does not have the 'right' background color anymore.
> > Looking into the source code it seems that this is caused by:
> > 
> > TGTextLBEntry::Update(TGLBEntry *e)
> >        { SetText(new TGString(((TGTextLBEntry *)e)->GetText())); }
> > 
> > which only updates the text...
> > 
> > 
> > This seems not to bring me any further. My question(s); 
> > - am I on the right way to implement the 'widget' that I want (i.e. a
> > color selector)? 
> > - Did anybody implement something like that already (in a different way?)
> > - any suggestions (Fons?)
> > 
> > 
> > Thanks, and keep up the good work,
> > 
> > Rutger van der Eijk.
> > 
> 
> 
> -- 
> Org:    CERN, European Laboratory for Particle Physics.
> Mail:   1211 Geneve 23, Switzerland          Phone: +41 22 7679248
> E-Mail: Fons.Rademakers@cern.ch              Fax:   +41 22 7677910
> 



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:36 MET