Convert Gtk.StateFlags to string
public string flags_to_string(Gtk.StateFlags flags) {
  var str = "";
  if (Gtk.StateFlags.NORMAL in flags)
      str += "NORMAL, ";
  if (Gtk.StateFlags.ACTIVE in flags)
      str += "ACTIVE, ";
  if (Gtk.StateFlags.PRELIGHT in flags)
      str += "PRELIGHT, ";
  if (Gtk.StateFlags.SELECTED in flags)
      str += "SELECTED, ";
  if (Gtk.StateFlags.INSENSITIVE in flags)
      str += "ISENSITIVE, ";
  if (Gtk.StateFlags.INCONSISTENT in flags)
      str += "INCONSISTENT, ";
  if (Gtk.StateFlags.FOCUSED in flags)
      str += "FOCUSED, ";
  if (Gtk.StateFlags.BACKDROP in flags)
      str += "BACKDROP, ";
  if (Gtk.StateFlags.DIR_LTR in flags)
      str += "DIR_LTR, ";
  if (Gtk.StateFlags.DIR_RTL in flags)
      str += "DIR_RTL, ";
  if (Gtk.StateFlags.LINK in flags)
      str += "LINK, ";
  if (Gtk.StateFlags.VISITED in flags)
      str += "VISITED, ";
  if (Gtk.StateFlags.CHECKED in flags)
      str += "CHECKED, ";
  if (Gtk.StateFlags.DROP_ACTIVE in flags)
      str += "DROP_ACTIVE, ";
  if (Gtk.StateFlags.FOCUS_VISIBLE in flags)
      str += "FOCUS_VISIBLE, ";
  if (Gtk.StateFlags.FOCUS_WITHIN in flags)
      str += "FOCUS_WITHIN, ";
  return str.substring(0, str.length - 2);
}