1
/* The GIMP -- an image manipulation program
1
/* GIMP - The GNU Image Manipulation Program
2
2
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
4
4
* This program is free software; you can redistribute it and/or modify
30
30
#include "config/gimpcoreconfig.h"
32
32
#include "core/gimp.h"
33
#include "core/gimp-documents.h"
33
34
#include "core/gimpcontainer.h"
34
35
#include "core/gimpcontext.h"
35
36
#include "core/gimpimagefile.h"
37
38
#include "file/file-open.h"
38
39
#include "file/file-utils.h"
41
#include "widgets/gimpclipboard.h"
40
42
#include "widgets/gimpcontainerview.h"
41
43
#include "widgets/gimpdocumentview.h"
44
#include "widgets/gimpmessagebox.h"
45
#include "widgets/gimpmessagedialog.h"
43
47
#include "display/gimpdisplay.h"
44
48
#include "display/gimpdisplay-foreach.h"
148
documents_remove_document_cmd_callback (GtkAction *action,
152
documents_copy_location_cmd_callback (GtkAction *action,
155
GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data);
156
GimpContext *context;
157
GimpImagefile *imagefile;
159
context = gimp_container_view_get_context (editor->view);
160
imagefile = gimp_context_get_imagefile (context);
163
gimp_clipboard_set_text (context->gimp,
164
gimp_object_get_name (GIMP_OBJECT (imagefile)));
168
documents_remove_cmd_callback (GtkAction *action,
151
171
GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data);
152
172
GimpContext *context;
188
documents_clear_cmd_callback (GtkAction *action,
191
GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data);
192
GimpContext *context;
195
context = gimp_container_view_get_context (editor->view);
197
dialog = gimp_message_dialog_new (_("Clear Document History"),
201
GTK_DIALOG_DESTROY_WITH_PARENT,
202
gimp_standard_help_func, NULL,
204
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
205
GTK_STOCK_CLEAR, GTK_RESPONSE_OK,
209
gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
214
g_signal_connect_object (gtk_widget_get_toplevel (GTK_WIDGET (editor)),
216
G_CALLBACK (gtk_widget_destroy),
217
dialog, G_CONNECT_SWAPPED);
219
gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box,
220
_("Remove all entries from the "
221
"document history?"));
223
gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box,
224
_("Clearing the document history will permanently "
225
"remove all currently listed entries."));
227
if (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK)
229
gimp_container_clear (context->gimp->documents);
230
gimp_documents_save (context->gimp);
233
gtk_widget_destroy (dialog);
168
237
documents_recreate_preview_cmd_callback (GtkAction *action,
205
documents_delete_dangling_foreach (GimpImagefile *imagefile,
274
documents_remove_dangling_foreach (GimpImagefile *imagefile,
206
275
GimpContainer *container)
208
277
if (gimp_thumbnail_peek_image (imagefile->thumbnail) ==
216
documents_delete_dangling_documents_cmd_callback (GtkAction *action,
285
documents_remove_dangling_cmd_callback (GtkAction *action,
219
288
GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data);
220
289
GimpContainer *container;
222
291
container = gimp_container_view_get_container (editor->view);
224
293
gimp_container_foreach (container,
225
(GFunc) documents_delete_dangling_foreach,
294
(GFunc) documents_remove_dangling_foreach,
234
303
GimpImagefile *imagefile)
236
305
const gchar *uri;
238
307
GimpPDBStatusType status;
239
308
GError *error = NULL;
241
310
uri = gimp_object_get_name (GIMP_OBJECT (imagefile));
243
gimage = file_open_with_display (context->gimp, context, NULL,
244
uri, &status, &error);
312
image = file_open_with_display (context->gimp, context, NULL, uri, FALSE,
246
if (! gimage && status != GIMP_PDB_CANCEL)
315
if (! image && status != GIMP_PDB_CANCEL)
317
gchar *filename = file_utils_uri_display_name (uri);
250
filename = file_utils_uri_to_utf8_filename (uri);
251
g_message (_("Opening '%s' failed:\n\n%s"),
252
filename, error->message);
319
gimp_message (context->gimp, NULL, GIMP_MESSAGE_ERROR,
320
_("Opening '%s' failed:\n\n%s"),
321
filename, error->message);
253
322
g_clear_error (&error);
255
324
g_free (filename);
260
329
documents_raise_display (gpointer data,
261
330
gpointer user_data)
263
GimpDisplay *gdisp = data;
332
GimpDisplay *display = data;
264
333
RaiseClosure *closure = user_data;
265
334
const gchar *uri;
267
uri = gimp_object_get_name (GIMP_OBJECT (gdisp->gimage));
336
uri = gimp_object_get_name (GIMP_OBJECT (display->image));
269
338
if (uri && ! strcmp (closure->name, uri))
271
340
closure->found = TRUE;
272
gtk_window_present (GTK_WINDOW (gdisp->shell));
341
gtk_window_present (GTK_WINDOW (display->shell));