/*
* (SLIK) SimpLIstic sKin functions
* (C) 2006 John Ellis
- * Copyright (C) 2008 The Geeqie Team
+ * Copyright (C) 2008 - 2012 The Geeqie Team
*
* Author: John Ellis
*
#include "ui_utildlg.h"
#include "ui_tabcomp.h"
#include "ui_tree_edit.h"
+#include "uri_utils.h"
#define DEST_WIDTH 250
GList *filter_text_list;
GtkWidget *filter_combo;
- gint show_hidden;
+ gboolean show_hidden;
GtkWidget *hidden_button;
GtkWidget *bookmark_list;
g_free(dd);
}
-static gint dest_check_filter(const gchar *filter, const gchar *file)
+static gboolean dest_check_filter(const gchar *filter, const gchar *file)
{
const gchar *f_ptr = filter;
const gchar *strt_ptr;
if (*f_ptr != '\0' && f_ptr[1] == ' ') f_ptr++; /* skip space immediately after separator */
f_ptr++;
/* FIXME: utf8 */
- if (l >= i && strncasecmp(file + l - i, strt_ptr, i) == 0) return TRUE;
+ if (l >= i && g_ascii_strncasecmp(file + l - i, strt_ptr, i) == 0) return TRUE;
}
return FALSE;
}
#define CASE_SORT strcmp
#endif
-static gint dest_sort_cb(void *a, void *b)
+static gint dest_sort_cb(gpointer a, gpointer b)
{
return CASE_SORT((gchar *)a, (gchar *)b);
}
-static gint is_hidden(const gchar *name)
+static gboolean is_hidden(const gchar *name)
{
if (name[0] != '.') return FALSE;
if (name[1] == '\0') return FALSE;
&& dir->d_name[0] == '.' && dir->d_name[1] == '\0')
continue;
if (dir->d_name[0] == '.' && dir->d_name[1] == '.' && dir->d_name[2] == '\0'
- && pathl[0] == '/' && pathl[1] == '\0')
+ && pathl[0] == G_DIR_SEPARATOR && pathl[1] == '\0')
continue; /* no .. for root directory */
if (dd->show_hidden || !is_hidden(dir->d_name))
{
dd->path = g_strdup(path);
}
-static void dest_change_dir(Dest_Data *dd, const gchar *path, gint retain_name)
+static void dest_change_dir(Dest_Data *dd, const gchar *path, gboolean retain_name)
{
const gchar *old_name = NULL;
gchar *full_path;
guint info, guint time, gpointer data)
{
gchar *path = NULL;
- gchar *uri_text = NULL;
GList *list = NULL;
- gint length = 0;
GtkTreeModel *model;
GtkTreeSelection *selection;
GtkTreeIter iter;
list = g_list_append(list, path);
- switch (info)
+ gchar **uris = uris_from_filelist(list);
+ gboolean ret = gtk_selection_data_set_uris(selection_data, uris);
+ if (!ret)
{
- case TARGET_URI_LIST:
- uri_text = uri_text_from_list(list, &length, FALSE);
- break;
- case TARGET_TEXT_PLAIN:
- uri_text = uri_text_from_list(list, &length, TRUE);
- break;
+ char *str = g_strjoinv("\r\n", uris);
+ ret = gtk_selection_data_set_text(selection_data, str, -1);
+ g_free(str);
}
string_list_free(list);
-
- if (!uri_text) return;
-
- gtk_selection_data_set(selection_data, selection_data->target,
- 8, (guchar *)uri_text, length);
- g_free(uri_text);
}
static void dest_dnd_init(Dest_Data *dd)
if (isname(new_path))
{
buf = g_strdup_printf(_("A file with name %s already exists."), new);
- warning_dialog("Rename failed", buf, GTK_STOCK_DIALOG_INFO, dd->entry);
+ warning_dialog(_("Rename failed"), buf, GTK_STOCK_DIALOG_INFO, dd->entry);
g_free(buf);
}
else if (!rename_file(old_path, new_path))
{
buf = g_strdup_printf(_("Failed to rename %s to %s."), old, new);
- warning_dialog("Rename failed", buf, GTK_STOCK_DIALOG_ERROR, dd->entry);
+ warning_dialog(_("Rename failed"), buf, GTK_STOCK_DIALOG_ERROR, dd->entry);
g_free(buf);
}
else
generic_dialog_close(gd);
}
- dd->gd = generic_dialog_new(_("Delete file"), GQ_WMCLASS, "dlg_confirm",
+ dd->gd = generic_dialog_new(_("Delete file"), "dlg_confirm",
dd->entry, TRUE,
dest_view_delete_dlg_cancel, dl);
popup_menu_position_clamp(menu, x, y, 0);
}
-static gint dest_popup_menu(Dest_Data *dd, GtkTreeView *view,
- gint button, guint32 time, gint local)
+static gboolean dest_popup_menu(Dest_Data *dd, GtkTreeView *view,
+ guint button, guint32 time, gboolean local)
{
GtkWidget *menu;
GtkTreeModel *model;
GtkTreeIter iter;
gchar *text;
- gint normal_dir;
+ gboolean normal_dir;
model = gtk_tree_view_get_model(view);
gtk_tree_model_get_iter(model, &iter, dd->right_click_path);
return TRUE;
}
-static gint dest_press_cb(GtkWidget *view, GdkEventButton *event, gpointer data)
+static gboolean dest_press_cb(GtkWidget *view, GdkEventButton *event, gpointer data)
{
Dest_Data *dd = data;
GtkTreePath *tpath;
switch (event->keyval)
{
- case GDK_F10:
+ case GDK_KEY_F10:
if (!(event->state & GDK_CONTROL_MASK)) return FALSE;
- case GDK_Menu:
+ case GDK_KEY_Menu:
dest_view_store_selection(dd, GTK_TREE_VIEW(view));
dest_popup_menu(dd, GTK_TREE_VIEW(view), 0, event->time, TRUE);
return TRUE;
return TRUE;
}
break;
- case GDK_Delete:
+ case GDK_KEY_Delete:
dest_view_store_selection(dd, GTK_TREE_VIEW(view));
dest_view_delete(dd, GTK_TREE_VIEW(view));
return TRUE;
gchar *path;
gchar *buf;
const gchar *tmp;
- gint from_text = FALSE;
+ gboolean from_text = FALSE;
tmp = gtk_entry_get_text(GTK_ENTRY(dd->entry));
if (!isname(tmp))
{
- path = g_strdup(tmp);
+ buf = remove_trailing_slash(tmp);
+ path = g_strdup(buf);
+ g_free(buf);
+ buf = remove_level_from_path(path);
from_text = TRUE;
}
else
GtkListStore *store;
const gchar *text;
- if (from_text) gtk_entry_set_text(GTK_ENTRY(dd->entry), dd->path);
+ if (from_text)
+ {
+ dest_populate(dd, buf);
+ g_free(buf);
+ }
store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(dd->d_view)));
if (!dd->filter_list || !dd->filter_combo) return;
- entry = GTK_BIN(dd->filter_combo)->child;
+ entry = gtk_bin_get_child(GTK_BIN(dd->filter_combo));
old_text = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(dd->filter_combo)));
g_free(old_text);
}
-static void dest_filter_add(Dest_Data *dd, const gchar *filter, const gchar *description, gint set)
+static void dest_filter_add(Dest_Data *dd, const gchar *filter, const gchar *description, gboolean set)
{
GList *work;
gchar *buf;
}
dd->filter_text_list = uig_list_insert_link(dd->filter_text_list, g_list_last(dd->filter_text_list), buf);
- if (set) gtk_entry_set_text(GTK_ENTRY(GTK_BIN(dd->filter_combo)->child), filter);
+ if (set) gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(dd->filter_combo))), filter);
dest_filter_list_sync(dd);
}
const gchar *buf;
gchar *path;
- entry = GTK_BIN(dd->filter_combo)->child;
+ entry = gtk_bin_get_child(GTK_BIN(dd->filter_combo));
buf = gtk_entry_get_text(GTK_ENTRY(entry));
g_free(dd->filter);
GtkCellRenderer *renderer;
dd = g_new0(Dest_Data, 1);
- dd->show_hidden = FALSE;
- dd->select_func = NULL;
- dd->select_data = NULL;
- dd->gd = NULL;
table = gtk_table_new(4, (filter != NULL) ? 3 : 1, FALSE);
gtk_table_set_col_spacings(GTK_TABLE(table), PREF_PAD_GAP);
store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
- dd->filter_combo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(store),
- FILTER_COLUMN_FILTER);
+ dd->filter_combo = gtk_combo_box_new_with_model_and_entry(GTK_TREE_MODEL(store));
g_object_unref(store);
gtk_cell_layout_clear(GTK_CELL_LAYOUT(dd->filter_combo));
renderer = gtk_cell_renderer_text_new();
dest_filter_clear(dd);
dest_filter_add(dd, filter, filter_desc, TRUE);
- dd->filter = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(dd->filter_combo)->child)));
+ dd->filter = g_strdup(gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(dd->filter_combo)))));
}
- if (path && path[0] == '/' && isdir(path))
+ if (path && path[0] == G_DIR_SEPARATOR && isdir(path))
{
dest_populate(dd, path);
}
else
{
gchar *buf = remove_level_from_path(path);
- if (buf && buf[0] == '/' && isdir(buf))
+ if (buf && buf[0] == G_DIR_SEPARATOR && isdir(buf))
{
dest_populate(dd, buf);
}
gint pos = -1;
dest_populate(dd, (gchar *)homedir());
- if (path) gtk_editable_insert_text(GTK_EDITABLE(dd->entry), "/", -1, &pos);
+ if (path) gtk_editable_insert_text(GTK_EDITABLE(dd->entry), G_DIR_SEPARATOR_S, -1, &pos);
if (path) gtk_editable_insert_text(GTK_EDITABLE(dd->entry), path, -1, &pos);
}
g_free(buf);
if (dd->filter_combo)
{
- g_signal_connect(G_OBJECT(GTK_BIN(dd->filter_combo)->child), "changed",
+ g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(dd->filter_combo))), "changed",
G_CALLBACK(dest_filter_changed_cb), dd);
}
g_signal_connect(G_OBJECT(dd->entry), "changed",
dd->select_data = data;
}
-void path_selection_add_filter(GtkWidget *entry, const gchar *filter, const gchar *description, gint set)
+void path_selection_add_filter(GtkWidget *entry, const gchar *filter, const gchar *description, gboolean set)
{
Dest_Data *dd = g_object_get_data(G_OBJECT(entry), "destination_data");
dest_filter_clear(dd);
}
+/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */