コード例 #1
0
static void
data_delete_dialog_response (GtkWidget        *dialog,
                             gint              response_id,
                             DataDeleteDialog *delete_data)
{
  gtk_widget_destroy (dialog);

  if (response_id == GTK_RESPONSE_OK)
    {
      GimpDataFactory *factory    = delete_data->factory;
      GimpData        *data       = delete_data->data;
      GimpContainer   *container;
      GimpObject      *new_active = NULL;
      GError          *error      = NULL;

      container = gimp_data_factory_get_container (factory);

      if (delete_data->context &&
          GIMP_OBJECT (data) ==
          gimp_context_get_by_type (delete_data->context,
                                    gimp_container_get_children_type (container)))
        {
          new_active = gimp_container_get_neighbor_of (container,
                                                       GIMP_OBJECT (data));
        }

      if (! gimp_data_factory_data_delete (factory, data, TRUE, &error))
        {
          gimp_message (gimp_data_factory_get_gimp (factory),
                        G_OBJECT (delete_data->parent), GIMP_MESSAGE_ERROR,
                        "%s", error->message);
          g_clear_error (&error);
        }

      if (new_active)
        gimp_context_set_by_type (delete_data->context,
                                  gimp_container_get_children_type (container),
                                  new_active);
    }

  g_slice_free (DataDeleteDialog, delete_data);
}
コード例 #2
0
static void
gimp_data_editor_save_dirty (GimpDataEditor *editor)
{
  GimpData *data = editor->data;

  if (data                      &&
      gimp_data_is_dirty (data) &&
      gimp_data_is_writable (data))
    {
      GError *error = NULL;

      if (! gimp_data_factory_data_save_single (editor->data_factory, data,
                                                &error))
        {
          gimp_message_literal (gimp_data_factory_get_gimp (editor->data_factory),
                                G_OBJECT (editor),
                                GIMP_MESSAGE_ERROR,
                                error->message);
          g_clear_error (&error);
        }
    }
}