[Glade-users] Building a simple composite widget?

Pat Riehecky riehecky at fnal.gov
Thu Feb 22 15:07:16 UTC 2018



On 02/22/2018 08:26 AM, Juan Pablo Ugarte wrote:
> On Tue, 2018-02-20 at 16:03 -0600, Pat Riehecky wrote:
>> I'm trying to build a set of reusable widgets.  Basically I have a
>> bunch
>> of places where I need the same dropdown boxes.  Each box may have a
>> different selected value (Instance A uses Index 1 while Instance B
>> uses
>> Index 2), but the items in the list are the same.
>>
>> I'm really just looking to build a set of Pre-populated
>> "GtkComboBox"
>> items - A simplified example is attached.
>>
>> I'd prefer to store the possible enum values within a widget and
>> then
>> interrogate it rather than a bunch of "GtkListStore" items I need to
>> edit over and over.
>>
>> Is there a way I can convert the attached "ProtocolDropdown" object
>> into
>> a widget?  I'd want it to stay associated with the "Protocols"
>> "GtkListStore".
>>
>> Building a C program to track this feels like massive overkill, but
>> I
>> don't see a way to "Export object as widget".
> First of all you have to make your custom GtkComboBox derived class
>
> https://developer.gnome.org/gtk3/stable/GtkWidget.html#composite-templa
> tes
>
> (In Glade check the composite checkbox next to widget ID to make that
> toplevel a composite template)
>
> Then you will need to write a custom catalog for Glade to know about
> your new widget
>
> https://developer.gnome.org/gladeui/3.20/catalogintro.html
>
> AS the first implementation you do not need to load your library in
> Glade you can simply define your new class and add parent="GtkComboBox"
>
> Something like...
>
> <?xml version="1.0" encoding="UTF-8"?>
> <glade-catalog name="custom"
>                 depends="gtk+">
>
>    <glade-widget-classes>
>      <glade-widget-class name="MyComboBox"
>                          generic-name="mycombobox"
>                          title="MyComboBox"
> 			parent="GtkComboBox"/>
>    </glade-widget-classes>
>    
>    <glade-widget-group name="custom" title="Custom Widgets">
>      <glade-widget-class-ref name="MyComboBox"/>
>    </glade-widget-group>
>
> </glade-catalog>
>
> should do the trick after you save the catalog in a place specified in
> Glade->preferences->Extra catalog paths
>
> hope this helps
>
> JP

Thanks for the help!

How would I attach a GtkListStore with pre-populated values to this item?

I tried adding <internal-children> and <property id="model"> but that 
didn't seem to work.

Pat

-- 
Pat Riehecky

Fermi National Accelerator Laboratory
www.fnal.gov
www.scientificlinux.org



More information about the Glade-users mailing list