#include "bar-keywords.h"
#include "cache.h"
+//~ #include "authors.h"
+//~ #include "authors.c"
+//~ #include "translators.h"
+//~ #include "translators.c"
#include "editors.h"
#include "filedata.h"
#include "filefilter.h"
gtk_tree_path_free(path);
g_list_free(list_cells);
- return(FALSE);
+ return(G_SOURCE_REMOVE);
}
static void filter_add_cb(GtkWidget *UNUSED(widget), gpointer data)
gtk_tree_path_free(path);
- return(FALSE);
+ return(G_SOURCE_REMOVE);
}
static void filter_default_ok_cb(GenericDialog *gd, gpointer UNUSED(data))
gtk_tree_path_free(path);
- return(FALSE);
+ return(G_SOURCE_REMOVE);
}
static void accel_default_cb(GtkWidget *UNUSED(widget), gpointer data)
g_idle_add((GSourceFunc)accel_default_scroll, data);
}
-//void accel_remove_selection(GtkTreeModel *UNUSED(model), GtkTreePath *UNUSED(path), GtkTreeIter *iter, gpointer UNUSED(data))
-//{
- //gtk_tree_store_set(accel_store, iter, AE_KEY, "", -1);
-//}
+void accel_clear_selection(GtkTreeModel *UNUSED(model), GtkTreePath *UNUSED(path), GtkTreeIter *iter, gpointer UNUSED(data))
+{
+ gtk_tree_store_set(accel_store, iter, AE_KEY, "", -1);
+}
void accel_reset_selection(GtkTreeModel *model, GtkTreePath *UNUSED(path), GtkTreeIter *iter, gpointer UNUSED(data))
{
g_free(accel);
}
+static void accel_clear_cb(GtkWidget *UNUSED(widget), gpointer data)
+{
+ GtkTreeSelection *selection;
+
+ if (!accel_store) return;
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data));
+ gtk_tree_selection_selected_foreach(selection, &accel_clear_selection, NULL);
+}
+
static void accel_reset_cb(GtkWidget *UNUSED(widget), gpointer data)
{
GtkTreeSelection *selection;
file_data_unref(fd);
string_list_free(keywords);
- return (TRUE);
+ return (G_SOURCE_CONTINUE);
}
else if (kfd->list_dir)
{
file_data_unref(fd);
- return TRUE;
+ return G_SOURCE_CONTINUE;
}
keywords_find_finish(kfd);
- return FALSE;
+ return G_SOURCE_REMOVE;
}
static void keywords_find_start_cb(GenericDialog *UNUSED(fd), gpointer data)
button = pref_button_new(NULL, NULL, _("Reset selected"), FALSE,
G_CALLBACK(accel_reset_cb), accel_view);
+ gtk_widget_set_tooltip_text(button, _("Will only reset changes made before the settings are saved"));
+ gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
+ gtk_widget_show(button);
+
+ button = pref_button_new(NULL, NULL, _("Clear selected"), FALSE,
+ G_CALLBACK(accel_clear_cb), accel_view);
gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
gtk_widget_show(button);
}
void show_about_window(LayoutWindow *lw)
{
- GdkPixbuf *pixbuf_logo;
+ GDataInputStream *data_stream;
+ GInputStream *in_stream_authors;
+ GInputStream *in_stream_translators;
+ GString *copyright;
GdkPixbuf *pixbuf_icon;
+ GdkPixbuf *pixbuf_logo;
+ ZoneDetect *cd;
+ gchar *artists[2];
+ gchar *author_line;
gchar *authors[1000];
+ gchar *authors_path;
gchar *comment;
- gint i_authors = 0;
- gchar *path;
- GString *copyright;
gchar *timezone_path;
- ZoneDetect *cd;
- FILE *fp = NULL;
-#define LINE_LENGTH 1000
- gchar line[LINE_LENGTH];
+ gchar *translators;
+ gchar *translators_path;
+ gint i_authors = 0;
+ gint n = 0;
+ gsize bytes_read;
+ gsize length;
+ gsize size;
+ guint32 flags;
copyright = g_string_new(NULL);
copyright = g_string_append(copyright, "This program comes with absolutely no warranty.\nGNU General Public License, version 2 or later.\nSee https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\n\n");
}
g_free(timezone_path);
+ authors_path = g_build_filename(GQ_RESOURCE_PATH_CREDITS, "authors", NULL);
+
+ in_stream_authors = g_resources_open_stream(authors_path, G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
+
+ data_stream = g_data_input_stream_new(in_stream_authors);
+
authors[0] = NULL;
- path = g_build_filename(gq_helpdir, "AUTHORS", NULL);
- fp = fopen(path, "r");
- if (fp)
+ while ((author_line = g_data_input_stream_read_line(G_DATA_INPUT_STREAM(data_stream), &length, NULL, NULL)))
{
- while(fgets(line, LINE_LENGTH, fp))
- {
- /* get rid of ending \n from fgets */
- line[strlen(line) - 1] = '\0';
- authors[i_authors] = g_strdup(line);
- i_authors++;
- }
- authors[i_authors] = NULL;
- fclose(fp);
+ authors[i_authors] = g_strdup(author_line);
+ i_authors++;
+ g_free(author_line);
}
- g_free(path);
+ authors[i_authors] = NULL;
+
+ g_input_stream_close(in_stream_authors, NULL, NULL);
+
+ translators_path = g_build_filename(GQ_RESOURCE_PATH_CREDITS, "translators", NULL);
+
+ g_resources_get_info(translators_path, G_RESOURCE_LOOKUP_FLAGS_NONE, &size, &flags, NULL);
- comment = g_strconcat("Development and bug reports:\n", GQ_EMAIL_ADDRESS,
- "\nhttps://github.com/BestImageViewer/geeqie/issues",NULL);
+ in_stream_translators = g_resources_open_stream(translators_path, G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
+ translators = static_cast<gchar *>(g_malloc0(size));
+ g_input_stream_read_all(in_stream_translators, translators, size, &bytes_read, NULL, NULL);
+ g_input_stream_close(in_stream_translators, NULL, NULL);
+
+ comment = g_strconcat("Project created by John Ellis\nGQview 1998\nGeeqie 2007\n\n\nDevelopment and bug reports:\n", GQ_EMAIL_ADDRESS, "\nhttps://github.com/BestImageViewer/geeqie/issues",NULL);
+
+ artists[0] = g_strdup("Néstor Díaz Valencia <nestor@estudionexos.com>");
+ artists[1] = NULL;
pixbuf_logo = pixbuf_inline(PIXBUF_INLINE_LOGO);
pixbuf_icon = pixbuf_inline(PIXBUF_INLINE_ICON);
"website", GQ_WEBSITE,
"website-label", "Website",
"comments", comment,
+ "artists", artists,
"authors", authors,
- "translator-credits", _("translator-credits"),
+ "translator-credits", translators,
"wrap-license", TRUE,
"license", copyright->str,
NULL);
g_string_free(copyright, TRUE);
- gint n = 0;
while(n < i_authors)
{
g_free(authors[n]);
n++;
}
+
+ g_free(artists[0]);
+ g_free(authors_path);
g_free(comment);
+ g_free(translators);
+ g_free(translators_path);
+ g_object_unref(data_stream);
+ g_object_unref(in_stream_authors);
+ g_object_unref(in_stream_translators);
return;
}