void Settings::get_colour_from_gui (Builder &builder, int i) { const char *glade_name = colour_selectors[i].glade_name; vmml::Vector4f *dest = (vmml::Vector4f *)PTR_OFFSET(this, colour_selectors[i].member_offset); Gdk::Color c; Gtk::ColorButton *w = NULL; builder->get_widget (glade_name, w); if (!w) return; c = w->get_color(); dest->r = c.get_red_p(); dest->g = c.get_green_p(); dest->b = c.get_blue_p(); dest->a = (float) (w->get_alpha()) / 65535.0; m_signal_visual_settings_changed.emit(); }