app: port file_open_from_command_line() to GFile

Use g_file_new_for_commandline_arg() and remove
file_utils_any_to_file().
This commit is contained in:
Michael Natterer
2014-07-07 01:02:54 +02:00
parent 0f8d84d5e9
commit a6aa35df57
6 changed files with 52 additions and 95 deletions

View File

@ -277,9 +277,15 @@ app_run (const gchar *full_prog_name,
for (i = 0; filenames[i] != NULL; i++)
{
if (run_loop)
file_open_from_command_line (gimp, filenames[i], as_new,
initial_screen,
initial_monitor);
{
GFile *file = g_file_new_for_commandline_arg (filenames[i]);
file_open_from_command_line (gimp, file, as_new,
initial_screen,
initial_monitor);
g_object_unref (file);
}
}
}

View File

@ -605,72 +605,58 @@ file_open_layers (Gimp *gimp,
* or from the D-Bus service.
*/
gboolean
file_open_from_command_line (Gimp *gimp,
const gchar *filename,
gboolean as_new,
GObject *screen,
gint monitor)
file_open_from_command_line (Gimp *gimp,
GFile *file,
gboolean as_new,
GObject *screen,
gint monitor)
{
GFile *file;
gboolean success = FALSE;
GError *error = NULL;
GimpImage *image;
GimpObject *display;
GimpPDBStatusType status;
gboolean success = FALSE;
GError *error = NULL;
g_return_val_if_fail (GIMP_IS_GIMP (gimp), FALSE);
g_return_val_if_fail (filename != NULL, FALSE);
g_return_val_if_fail (G_IS_FILE (file), FALSE);
g_return_val_if_fail (screen == NULL || G_IS_OBJECT (screen), FALSE);
/* we accept URI or filename */
file = file_utils_any_to_file (gimp, filename, &error);
display = gimp_get_empty_display (gimp);
if (file)
/* show the progress in the last opened display, see bug #704896 */
if (! display)
display = gimp_context_get_display (gimp_get_user_context (gimp));
if (display)
g_object_add_weak_pointer (G_OBJECT (display), (gpointer) &display);
image = file_open_with_display (gimp,
gimp_get_user_context (gimp),
GIMP_PROGRESS (display),
file, as_new,
screen, monitor,
&status, &error);
if (image)
{
GimpImage *image;
GimpObject *display = gimp_get_empty_display (gimp);
GimpPDBStatusType status;
success = TRUE;
/* show the progress in the last opened display, see bug #704896 */
if (! display)
display = gimp_context_get_display (gimp_get_user_context (gimp));
if (display)
g_object_add_weak_pointer (G_OBJECT (display), (gpointer) &display);
image = file_open_with_display (gimp,
gimp_get_user_context (gimp),
GIMP_PROGRESS (display),
file, as_new,
screen, monitor,
&status, &error);
if (image)
{
success = TRUE;
g_object_set_data_full (G_OBJECT (gimp), GIMP_FILE_OPEN_LAST_FILE_KEY,
g_object_ref (file),
(GDestroyNotify) g_object_unref);
}
else if (status != GIMP_PDB_CANCEL && display)
{
gimp_message (gimp, G_OBJECT (display), GIMP_MESSAGE_ERROR,
_("Opening '%s' failed: %s"),
gimp_file_get_utf8_name (file), error->message);
g_clear_error (&error);
}
if (display)
g_object_remove_weak_pointer (G_OBJECT (display), (gpointer) &display);
g_object_unref (file);
g_object_set_data_full (G_OBJECT (gimp), GIMP_FILE_OPEN_LAST_FILE_KEY,
g_object_ref (file),
(GDestroyNotify) g_object_unref);
}
else
else if (status != GIMP_PDB_CANCEL && display)
{
g_printerr ("conversion filename -> uri failed: %s\n",
error->message);
gimp_message (gimp, G_OBJECT (display), GIMP_MESSAGE_ERROR,
_("Opening '%s' failed: %s"),
gimp_file_get_utf8_name (file), error->message);
g_clear_error (&error);
}
if (display)
g_object_remove_weak_pointer (G_OBJECT (display), (gpointer) &display);
return success;
}

View File

@ -78,7 +78,7 @@ GList * file_open_layers (Gimp *gimp,
GError **error);
gboolean file_open_from_command_line (Gimp *gimp,
const gchar *filename,
GFile *file,
gboolean as_new,
GObject *screen,
gint monitor);

View File

@ -167,38 +167,6 @@ file_utils_filename_to_uri (Gimp *gimp,
return uri;
}
GFile *
file_utils_any_to_file (Gimp *gimp,
const gchar *filename_or_uri,
GError **error)
{
GFile *file;
gchar *uri;
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
g_return_val_if_fail (filename_or_uri != NULL, NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
/* first try if we got a file uri */
uri = g_filename_from_uri (filename_or_uri, NULL, NULL);
if (uri)
{
g_free (uri);
uri = g_strdup (filename_or_uri);
}
else
{
uri = file_utils_filename_to_uri (gimp, filename_or_uri, error);
}
file = g_file_new_for_uri (uri);
g_free (uri);
return file;
}
/**
* file_utils_filename_from_uri:
* @uri: a URI

View File

@ -26,9 +26,6 @@ gboolean file_utils_filename_is_uri (const gchar *filename,
gchar * file_utils_filename_to_uri (Gimp *gimp,
const gchar *filename,
GError **error);
GFile * file_utils_any_to_file (Gimp *gimp,
const gchar *filename_or_uri,
GError **error);
gchar * file_utils_filename_from_uri (const gchar *uri);
gchar * file_utils_filename_from_file (GFile *file);
gchar * file_utils_uri_with_new_ext (const gchar *uri,

View File

@ -39,7 +39,7 @@
typedef struct
{
gchar *uri;
GFile *file;
gboolean as_new;
} OpenData;
@ -269,7 +269,7 @@ gimp_dbus_service_open_idle (GimpDBusService *service)
if (data)
{
file_open_from_command_line (service->gimp, data->uri, data->as_new,
file_open_from_command_line (service->gimp, data->file, data->as_new,
NULL, /* FIXME monitor */
0 /* FIXME monitor */);
@ -290,7 +290,7 @@ gimp_dbus_service_open_data_new (GimpDBusService *service,
{
OpenData *data = g_slice_new (OpenData);
data->uri = g_strdup (uri);
data->file = g_file_new_for_uri (uri);
data->as_new = as_new;
return data;
@ -299,6 +299,6 @@ gimp_dbus_service_open_data_new (GimpDBusService *service,
static void
gimp_dbus_service_open_data_free (OpenData *data)
{
g_free (data->uri);
g_object_unref (data->file);
g_slice_free (OpenData, data);
}