Thank you for your tip, guys!

Here is how I solved:

GType
Glib::Value<MyEnum>::value_type()
{
   static volatile gsize g_define_type_id__volatile = 0;

   if (g_once_init_enter(&g_define_type_id__volatile)) {
    static const GEnumValue color_components_enum[4] = {
      {MyEnum::TYPE_R, "TYPE_R", "red"},
      {MyEnum::TYPE_G, "TYPE_G", "green"},
      {MyEnum::TYPE_B, "TYPE_B", "blue"},
      {0, nullptr, nullptr}
    };
    GType g_define_type_id =
g_enum_register_static(g_intern_static_string("color-component"),
color_components_enum);
    g_once_init_leave(&g_define_type_id__volatile, g_define_type_id);
  }
  return g_define_type_id__volatile;
}

Em qua., 22 de jul. de 2020 às 14:12, N <nicklas.karlsso...@gmail.com>
escreveu:

> Enums are very useful for selection, combobox. I have selections and parse
> the number in the combox, this does not feel ideal.
>
> In C with switch(...) and correct warning turned on compiler flag a
> warning in case a value is forgotten, I trick I often used to remember all
> cases but only work then enumerations are known at compile time. As a bonus
> work get easier for computer with numbers instead of text strings.
>
> As I only handle types known at compile time glade file should then
> correct done have these and only these enumerations, an exact mapping. To
> check these agree is also an interesting problem.
>
> Nicklas Karlsson
>
>
> > Is Type a custom enum? I have never tried to use such an enum in a glade
> > file, but I looked at what gtk does.
> >
> > Their enums are registered with g_enum_register_static(). Each enum
> > value is specified with a GEnumValue, which contains a nickname. The
> > nickname is used in glade files. Example:
> >                  <property name="direction">none</property>
> >
> > On 2020-07-22 07:00, Rodolfo Ribeiro Gomes via gtkmm-list wrote:
> > > Hello, everyone.
> > >
> > > I created a custom widget that has a Glib::Property of an enum type.
> > > Glib::Property<Type> property_type_;
> > >
> > > When I try to load from a glade file, I got this error message:
> > >
> > > Gtk-WARNING **: 01:43:34.849: Failed to set property
> > > gtkmm__CustomObject_widget_color_slider.type to 1: Could not parse '1'
> > > as a glibmm__CustomBoxed_N6studio11ColorSlider4TypeE
> > >
> > > Here is the xml property line:
> > >             <property name="type">1</property>
> > >
> > > How can I properly parse the property tag contents ?
> > >
> > >
> > _______________________________________________
> > gtkmm-list mailing list
> > gtkmm-list@gnome.org
> > https://mail.gnome.org/mailman/listinfo/gtkmm-list
>
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to