void
egg_empty_state_set_icon_name (EggEmptyState *self,
                               const gchar   *icon_name)
{
  EggEmptyStatePrivate *priv = egg_empty_state_get_instance_private (self);

  g_return_if_fail (EGG_IS_EMPTY_STATE (self));

  if (g_strcmp0 (icon_name, egg_empty_state_get_icon_name (self)) != 0)
    {
      GtkStyleContext *context;

      g_object_set (priv->image,
                    "icon-name", icon_name,
                    NULL);

      context = gtk_widget_get_style_context (GTK_WIDGET (priv->image));

      if (icon_name != NULL && g_str_has_suffix (icon_name, "-symbolic"))
        gtk_style_context_add_class (context, "dim-label");
      else
        gtk_style_context_remove_class (context, "dim-label");

      g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ICON_NAME]);
    }
}
const gchar *
egg_empty_state_get_title (EggEmptyState *self)
{
  EggEmptyStatePrivate *priv = egg_empty_state_get_instance_private (self);

  g_return_val_if_fail (EGG_IS_EMPTY_STATE (self), NULL);

  return gtk_label_get_label (priv->title);
}
const gchar *
egg_empty_state_get_icon_name (EggEmptyState *self)
{
  EggEmptyStatePrivate *priv = egg_empty_state_get_instance_private (self);
  const gchar *icon_name = NULL;

  g_return_val_if_fail (EGG_IS_EMPTY_STATE (self), NULL);

  gtk_image_get_icon_name (priv->image, &icon_name, NULL);

  return icon_name;
}
static void
egg_empty_state_init (EggEmptyState *self)
{
  EggEmptyStatePrivate *priv = egg_empty_state_get_instance_private (self);

  gtk_widget_init_template (GTK_WIDGET (self));

  g_signal_connect_object (priv->subtitle,
                           "activate-link",
                           G_CALLBACK (egg_empty_state_activate_link),
                           self,
                           G_CONNECT_SWAPPED);
}
void
egg_empty_state_set_title (EggEmptyState *self,
                           const gchar   *title)
{
  EggEmptyStatePrivate *priv = egg_empty_state_get_instance_private (self);

  g_return_if_fail (EGG_IS_EMPTY_STATE (self));

  if (g_strcmp0 (title, egg_empty_state_get_title (self)) != 0)
    {
      gtk_label_set_label (priv->title, title);
      g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_TITLE]);
    }
}
void
egg_empty_state_set_icon_name (EggEmptyState *self,
                               const gchar   *icon_name)
{
  EggEmptyStatePrivate *priv = egg_empty_state_get_instance_private (self);

  g_return_if_fail (EGG_IS_EMPTY_STATE (self));

  if (g_strcmp0 (icon_name, egg_empty_state_get_icon_name (self)) != 0)
    {
      g_object_set (priv->image, "icon-name", icon_name, NULL);
      g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ICON_NAME]);
    }
}
void
egg_empty_state_set_resource (EggEmptyState *self,
                              const gchar   *resource)
{
  EggEmptyStatePrivate *priv = egg_empty_state_get_instance_private (self);

  g_return_if_fail (EGG_IS_EMPTY_STATE (self));

  if (resource != NULL)
    {
      GdkPixbuf *pixbuf;
      GError *error = NULL;
      gint scale_factor;

      scale_factor = gtk_widget_get_scale_factor (GTK_WIDGET (self));

      pixbuf = gdk_pixbuf_new_from_resource_at_scale (resource,
                                                      128 * scale_factor,
                                                      128 * scale_factor,
                                                      TRUE,
                                                      &error);

      if (pixbuf == NULL)
        {
          g_warning ("%s", error->message);
          g_clear_error (&error);
          return;
        }

      g_object_set (priv->image,
                    "pixbuf", pixbuf,
                    NULL);

      g_clear_object (&pixbuf);
    }
}