/*
* Geeqie
* (C) 2004 John Ellis
- * Copyright (C) 2008 - 2009 The Geeqie Team
+ * Copyright (C) 2008 - 2012 The Geeqie Team
*
* Author: John Ellis
*
rc->path = g_strdup(path);
channel = g_io_channel_unix_new(rc->fd);
- g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL);
+ g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL);
rc->channel_id = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, G_IO_IN,
remote_server_read_cb, rc, NULL);
if (buffer[0] == '\n') /* empty line finishes the command */
{
g_free(buffer);
+ fflush(stdout);
break;
}
buffer[termpos] = '\0';
static void gr_slideshow_start_rec(const gchar *text, GIOChannel *channel, gpointer data)
{
GList *list;
- FileData *dir_fd = file_data_new_simple(text);
+ FileData *dir_fd = file_data_new_dir(text);
list = filelist_recursive(dir_fd);
file_data_unref(dir_fd);
if (!list) return;
g_free(filename);
}
+static void gr_get_sidecars(const gchar *text, GIOChannel *channel, gpointer data)
+{
+ gchar *filename = expand_tilde(text);
+ FileData *fd = file_data_new_group(filename);
+
+ GList *work;
+ if (fd->parent) fd = fd->parent;
+
+ g_io_channel_write_chars(channel, fd->path, -1, NULL, NULL);
+ g_io_channel_write_chars(channel, "\n", -1, NULL, NULL);
+
+ work = fd->sidecar_files;
+
+ while (work)
+ {
+ fd = work->data;
+ work = work->next;
+ g_io_channel_write_chars(channel, fd->path, -1, NULL, NULL);
+ g_io_channel_write_chars(channel, "\n", -1, NULL, NULL);
+ }
+ g_free(filename);
+}
+
+static void gr_get_destination(const gchar *text, GIOChannel *channel, gpointer data)
+{
+ gchar *filename = expand_tilde(text);
+ FileData *fd = file_data_new_group(filename);
+
+ if (fd->change && fd->change->dest)
+ {
+ g_io_channel_write_chars(channel, fd->change->dest, -1, NULL, NULL);
+ g_io_channel_write_chars(channel, "\n", -1, NULL, NULL);
+ }
+ g_free(filename);
+}
+
static void gr_file_view(const gchar *text, GIOChannel *channel, gpointer data)
{
gchar *filename = expand_tilde(text);
- view_window_new(file_data_new_simple(filename));
+ view_window_new(file_data_new_group(filename));
g_free(filename);
}
new = (!collection_get_first(remote_data->command_collection));
}
- if (collection_add(remote_data->command_collection, file_data_new_simple(text), FALSE) && new)
+ if (collection_add(remote_data->command_collection, file_data_new_group(text), FALSE) && new)
{
layout_image_set_collection(NULL, remote_data->command_collection,
collection_get_first(remote_data->command_collection));
{ "-t", "--tools-hide", gr_tools_hide, FALSE, TRUE, N_("hide tools") },
{ "-q", "--quit", gr_quit, FALSE, FALSE, N_("quit") },
{ NULL, "--config-load:", gr_config_load, TRUE, FALSE, N_("load config file") },
+ { NULL, "--get-sidecars:", gr_get_sidecars, TRUE, FALSE, N_("get list of sidecars of the given file") },
+ { NULL, "--get-destination:", gr_get_destination, TRUE, FALSE, N_("get destination path for the given file") },
{ NULL, "file:", gr_file_load, TRUE, FALSE, N_("open file") },
{ NULL, "view:", gr_file_view, TRUE, FALSE, N_("open file in new window") },
{ NULL, "--list-clear", gr_list_clear, FALSE, FALSE, NULL },
}
i++;
}
+ printf_term(N_("\n All other command line parameters are used as plain files if they exists.\n"));
}
GList *remote_build_list(GList *list, gint argc, gchar *argv[], GList **errors)
{
list = g_list_append(list, argv[i]);
}
- else if (errors)
+ else if (errors && !isfile(argv[i]))
{
*errors = g_list_append(*errors, argv[i]);
}
return list;
}
+/**
+ * \param arg_exec Binary (argv0)
+ * \param remote_list Evaluated and recognized remote commands
+ * \param path The current path
+ * \param cmd_list List of all non collections in Path
+ * \param collection_list List of all collections in argv
+ */
void remote_control(const gchar *arg_exec, GList *remote_list, const gchar *path,
GList *cmd_list, GList *collection_list)
{