annotate src/bar_keywords.c @ 2916:ae6cdcd69d9f default tip

Merge with upstream/master.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 14 May 2019 11:46:50 +0300
parents c4d45cde0dcb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1 /*
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
2 * Copyright (C) 2004 John Ellis
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
3 * Copyright (C) 2008 - 2016 The Geeqie Team
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
4 *
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
5 * Author: John Ellis
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
6 *
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
7 * This program is free software; you can redistribute it and/or modify
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
8 * it under the terms of the GNU General Public License as published by
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
10 * (at your option) any later version.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
11 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
12 * This program is distributed in the hope that it will be useful,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
15 * GNU General Public License for more details.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
16 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
17 * You should have received a copy of the GNU General Public License along
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
18 * with this program; if not, write to the Free Software Foundation, Inc.,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2289
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
20 */
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
21
1305
d6b28ec34235 Glibification.
Laurent Monin <geeqie@norz.org>
parents: 1295
diff changeset
22 #include <glib/gprintf.h>
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
23
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
24 #include "main.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
25 #include "bar_keywords.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
26
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
27 #include "filedata.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
28 #include "history_list.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
29 #include "metadata.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
30 #include "misc.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
31 #include "ui_fileops.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
32 #include "ui_misc.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
33 #include "ui_utildlg.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
34 #include "utilops.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
35 #include "bar.h"
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
36 #include "ui_menu.h"
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
37 #include "rcfile.h"
1387
add2c9869a56 simplified bar interface
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1346
diff changeset
38 #include "layout.h"
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
39 #include "dnd.h"
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
40 #include "secure_save.h"
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
41
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
42
1740
f28867edc81a Comment out unused functions, silenting related compilation warnings.
Laurent Monin <geeqie@norz.org>
parents: 1593
diff changeset
43 //static void bar_pane_keywords_keyword_update_all(void);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
44 static void bar_pane_keywords_changed(GtkTextBuffer *buffer, gpointer data);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
45
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
46 static void autocomplete_keywords_list_load(const gchar *path);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
47 static GtkListStore *keyword_store = NULL;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
48 static gboolean autocomplete_keywords_list_save(gchar *path);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
49 static gboolean autocomplete_activate_cb(GtkWidget *widget, gpointer data);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
50
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
51 /*
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
52 *-------------------------------------------------------------------
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
53 * keyword / comment utils
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
54 *-------------------------------------------------------------------
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
55 */
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
56
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
57
1292
9595b149f028 droped Preferences dialog, sidebar should replace it completely
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1291
diff changeset
58 GList *keyword_list_pull(GtkWidget *text_widget)
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
59 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
60 GList *list;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
61 gchar *text;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
62
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
63 text = text_widget_text_pull(text_widget);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
64 list = string_to_keywords_list(text);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
65
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
66 g_free(text);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
67
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
68 return list;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
69 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
70
2819
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
71 static GList *keyword_list_pull_selected(GtkWidget *text_widget)
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
72 {
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
73 GList *list;
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
74 gchar *text;
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
75
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
76 text = text_widget_text_pull_selected(text_widget);
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
77 list = string_to_keywords_list(text);
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
78
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
79 g_free(text);
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
80
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
81 return list;
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
82 }
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
83
1449
5dd5946f3785 call the notify function just once when the keywords are pushed to the
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1430
diff changeset
84 /* the "changed" signal should be blocked before calling this */
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
85 static void keyword_list_push(GtkWidget *textview, GList *list)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
86 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
87 GtkTextBuffer *buffer;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
88 GtkTextIter start, end;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
89
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
90 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
91 gtk_text_buffer_get_bounds(buffer, &start, &end);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
92 gtk_text_buffer_delete(buffer, &start, &end);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
93
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
94 while (list)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
95 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
96 const gchar *word = list->data;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
97 GtkTextIter iter;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
98
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
99 gtk_text_buffer_get_end_iter(buffer, &iter);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
100 if (word) gtk_text_buffer_insert(buffer, &iter, word, -1);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
101 gtk_text_buffer_get_end_iter(buffer, &iter);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
102 gtk_text_buffer_insert(buffer, &iter, "\n", -1);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
103
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
104 list = list->next;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
105 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
106 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
107
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
108
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
109 /*
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
110 *-------------------------------------------------------------------
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
111 * info bar
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
112 *-------------------------------------------------------------------
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
113 */
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
114
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
115
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
116 enum {
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
117 FILTER_KEYWORD_COLUMN_TOGGLE = 0,
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
118 FILTER_KEYWORD_COLUMN_MARK,
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
119 FILTER_KEYWORD_COLUMN_NAME,
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
120 FILTER_KEYWORD_COLUMN_IS_KEYWORD,
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
121 FILTER_KEYWORD_COLUMN_COUNT
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
122 };
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
123
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
124 static GType filter_keyword_column_types[] = {G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN};
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
125
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
126 typedef struct _PaneKeywordsData PaneKeywordsData;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
127 struct _PaneKeywordsData
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
128 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
129 PaneData pane;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
130 GtkWidget *widget;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
131
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
132 GtkWidget *keyword_view;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
133 GtkWidget *keyword_treeview;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
134
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
135 GtkTreePath *click_tpath;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
136
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
137 gboolean expand_checked;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
138 gboolean collapse_unchecked;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
139 gboolean hide_unchecked;
1455
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
140
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
141 guint idle_id; /* event source id */
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
142 FileData *fd;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
143 gchar *key;
2289
0b284a48ac34 Bug fix #227 + enable user to set height of Keywords pane
Colin Clark <cclark@mcb.net>
parents: 2185
diff changeset
144 gint height;
2496
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
145
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
146 GList *expanded_rows;
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
147
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
148 GtkWidget *autocomplete;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
149 };
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
150
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
151 typedef struct _ConfDialogData ConfDialogData;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
152 struct _ConfDialogData
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
153 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
154 PaneKeywordsData *pkd;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
155 GtkTreePath *click_tpath;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
156
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
157 /* dialog parts */
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
158 GenericDialog *gd;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
159 GtkWidget *edit_widget;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
160 gboolean is_keyword;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
161
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
162 gboolean edit_existing;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
163 };
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
164
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
165
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
166 static void bar_pane_keywords_write(PaneKeywordsData *pkd)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
167 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
168 GList *list;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
169
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
170 if (!pkd->fd) return;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
171
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
172 list = keyword_list_pull(pkd->keyword_view);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
173
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
174 metadata_write_list(pkd->fd, KEYWORD_KEY, list);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
175
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
176 string_list_free(list);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
177 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
178
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
179 gboolean bar_keyword_tree_expand_if_set_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
180 {
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
181 PaneKeywordsData *pkd = data;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
182 gboolean set;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
183
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
184 gtk_tree_model_get(model, iter, FILTER_KEYWORD_COLUMN_TOGGLE, &set, -1);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
185
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
186 if (set && !gtk_tree_view_row_expanded(GTK_TREE_VIEW(pkd->keyword_treeview), path))
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
187 {
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
188 gtk_tree_view_expand_to_path(GTK_TREE_VIEW(pkd->keyword_treeview), path);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
189 }
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
190 return FALSE;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
191 }
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
192
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
193 gboolean bar_keyword_tree_collapse_if_unset_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
194 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
195 PaneKeywordsData *pkd = data;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
196 gboolean set;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
197
1456
01c26e43e1ce improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1455
diff changeset
198 gtk_tree_model_get(model, iter, FILTER_KEYWORD_COLUMN_TOGGLE, &set, -1);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
199
1456
01c26e43e1ce improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1455
diff changeset
200 if (!set && gtk_tree_view_row_expanded(GTK_TREE_VIEW(pkd->keyword_treeview), path))
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
201 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
202 gtk_tree_view_collapse_row(GTK_TREE_VIEW(pkd->keyword_treeview), path);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
203 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
204 return FALSE;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
205 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
206
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
207 static void bar_keyword_tree_sync(PaneKeywordsData *pkd)
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
208 {
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
209 GtkTreeModel *model;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
210
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
211 GtkTreeModel *keyword_tree;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
212 GList *keywords;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
213
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
214 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
215 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
216
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
217 keywords = keyword_list_pull(pkd->keyword_view);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
218 keyword_show_set_in(GTK_TREE_STORE(keyword_tree), model, keywords);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
219 if (pkd->hide_unchecked) keyword_hide_unset_in(GTK_TREE_STORE(keyword_tree), model, keywords);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
220 string_list_free(keywords);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
221
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
222 gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(model));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
223
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
224 if (pkd->expand_checked) gtk_tree_model_foreach(model, bar_keyword_tree_expand_if_set_cb, pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
225 if (pkd->collapse_unchecked) gtk_tree_model_foreach(model, bar_keyword_tree_collapse_if_unset_cb, pkd);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
226 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
227
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
228 static void bar_pane_keywords_update(PaneKeywordsData *pkd)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
229 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
230 GList *keywords = NULL;
2108
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
231 GList *orig_keywords = NULL;
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
232 GList *work1, *work2;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
233 GtkTextBuffer *keyword_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pkd->keyword_view));
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
234
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
235 keywords = metadata_read_list(pkd->fd, KEYWORD_KEY, METADATA_PLAIN);
2108
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
236 orig_keywords = keyword_list_pull(pkd->keyword_view);
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
237
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
238 /* compare the lists */
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
239 work1 = keywords;
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
240 work2 = orig_keywords;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
241
2108
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
242 while (work1 && work2)
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
243 {
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
244 if (strcmp(work1->data, work2->data) != 0) break;
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
245 work1 = work1->next;
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
246 work2 = work2->next;
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
247 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
248
2108
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
249 if (work1 || work2) /* lists differs */
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
250 {
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
251 g_signal_handlers_block_by_func(keyword_buffer, bar_pane_keywords_changed, pkd);
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
252 keyword_list_push(pkd->keyword_view, keywords);
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
253 bar_keyword_tree_sync(pkd);
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
254 g_signal_handlers_unblock_by_func(keyword_buffer, bar_pane_keywords_changed, pkd);
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
255 }
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
256 string_list_free(keywords);
2108
2fcf3c151ca8 fixed updating of comment and keyword pane
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
257 string_list_free(orig_keywords);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
258 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
259
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
260 void bar_pane_keywords_set_fd(GtkWidget *pane, FileData *fd)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
261 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
262 PaneKeywordsData *pkd;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
263
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
264 pkd = g_object_get_data(G_OBJECT(pane), "pane_data");
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
265 if (!pkd) return;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
266
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
267 file_data_unref(pkd->fd);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
268 pkd->fd = file_data_ref(fd);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
269
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
270 bar_pane_keywords_update(pkd);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
271 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
272
2485
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
273 void bar_keyword_tree_get_expanded_cb(GtkTreeView *keyword_treeview, GtkTreePath *path, gpointer data)
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
274 {
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
275 GList **expanded = data;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
276 GtkTreeModel *model;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
277 GtkTreeIter iter;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
278 gchar *path_string;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
279
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
280 model = gtk_tree_view_get_model(GTK_TREE_VIEW(keyword_treeview));
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
281 gtk_tree_model_get_iter(model, &iter, path);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
282
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
283 path_string = gtk_tree_model_get_string_from_iter(model, &iter);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
284
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
285 *expanded = g_list_append(*expanded, g_strdup(path_string));
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
286 g_free(path_string);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
287 }
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
288
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
289 static void bar_pane_keywords_entry_write_config(gchar *entry, GString *outstr, gint indent)
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
290 {
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
291 struct {
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
292 gchar *path;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
293 } expand;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
294
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
295 expand.path = entry;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
296
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
297 WRITE_NL(); WRITE_STRING("<expanded ");
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
298 WRITE_CHAR(expand, path);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
299 WRITE_STRING("/>");
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
300 }
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
301
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
302 static void bar_pane_keywords_write_config(GtkWidget *pane, GString *outstr, gint indent)
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
303 {
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
304 PaneKeywordsData *pkd;
2485
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
305 GList *path_expanded = NULL;
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
306
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
307 pkd = g_object_get_data(G_OBJECT(pane), "pane_data");
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
308 if (!pkd) return;
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
309
2482
9b050f7e7b6c Fix #445: Info sidebar section heights
Colin Clark <colin.clark@cclark.uk>
parents: 2361
diff changeset
310 pkd->height = options->info_keywords.height;
9b050f7e7b6c Fix #445: Info sidebar section heights
Colin Clark <colin.clark@cclark.uk>
parents: 2361
diff changeset
311
1461
8f4df7710af8 improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1456
diff changeset
312 WRITE_NL(); WRITE_STRING("<pane_keywords ");
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
313 write_char_option(outstr, indent, "id", pkd->pane.id);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
314 write_char_option(outstr, indent, "title", gtk_label_get_text(GTK_LABEL(pkd->pane.title)));
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
315 WRITE_BOOL(pkd->pane, expanded);
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
316 WRITE_CHAR(*pkd, key);
2289
0b284a48ac34 Bug fix #227 + enable user to set height of Keywords pane
Colin Clark <cclark@mcb.net>
parents: 2185
diff changeset
317 WRITE_INT(*pkd, height);
2485
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
318 WRITE_STRING(">");
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
319 indent++;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
320
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
321 gtk_tree_view_map_expanded_rows(GTK_TREE_VIEW(pkd->keyword_treeview),
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
322 (bar_keyword_tree_get_expanded_cb), &path_expanded);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
323
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
324 g_list_first(path_expanded);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
325 while (path_expanded)
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
326 {
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
327 bar_pane_keywords_entry_write_config(path_expanded->data, outstr, indent);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
328 g_free(path_expanded->data);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
329 path_expanded = path_expanded->next;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
330 }
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
331 g_list_free(path_expanded);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
332
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
333 indent--;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
334 WRITE_NL();
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
335 WRITE_STRING("</pane_keywords>");
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
336 }
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
337
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
338 gint bar_pane_keywords_event(GtkWidget *bar, GdkEvent *event)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
339 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
340 PaneKeywordsData *pkd;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
341
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
342 pkd = g_object_get_data(G_OBJECT(bar), "pane_data");
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
343 if (!pkd) return FALSE;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
344
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1806
diff changeset
345 if (gtk_widget_has_focus(pkd->keyword_view)) return gtk_widget_event(pkd->keyword_view, event);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
346
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
347 if (gtk_widget_has_focus(pkd->autocomplete))
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
348 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
349 return gtk_widget_event(pkd->autocomplete, event);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
350 }
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
351 return FALSE;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
352 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
353
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
354 static void bar_pane_keywords_keyword_toggle(GtkCellRendererToggle *toggle, const gchar *path, gpointer data)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
355 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
356 PaneKeywordsData *pkd = data;
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
357 GtkTreeModel *model;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
358 GtkTreeIter iter;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
359 GtkTreePath *tpath;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
360 gboolean active;
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
361 GList *list;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
362 GtkTreeIter child_iter;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
363 GtkTreeModel *keyword_tree;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
364
1449
5dd5946f3785 call the notify function just once when the keywords are pushed to the
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1430
diff changeset
365 GtkTextBuffer *keyword_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pkd->keyword_view));
5dd5946f3785 call the notify function just once when the keywords are pushed to the
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1430
diff changeset
366
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
367 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
368
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
369 tpath = gtk_tree_path_new_from_string(path);
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
370 gtk_tree_model_get_iter(model, &iter, tpath);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
371 gtk_tree_path_free(tpath);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
372
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
373 gtk_tree_model_get(model, &iter, FILTER_KEYWORD_COLUMN_TOGGLE, &active, -1);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
374 active = (!active);
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
375
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
376
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
377 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
378 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &child_iter, &iter);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
379
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
380 list = keyword_list_pull(pkd->keyword_view);
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
381 if (active)
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
382 keyword_tree_set(keyword_tree, &child_iter, &list);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
383 else
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
384 keyword_tree_reset(keyword_tree, &child_iter, &list);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
385
1449
5dd5946f3785 call the notify function just once when the keywords are pushed to the
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1430
diff changeset
386 g_signal_handlers_block_by_func(keyword_buffer, bar_pane_keywords_changed, pkd);
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
387 keyword_list_push(pkd->keyword_view, list);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
388 string_list_free(list);
1449
5dd5946f3785 call the notify function just once when the keywords are pushed to the
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1430
diff changeset
389 g_signal_handlers_unblock_by_func(keyword_buffer, bar_pane_keywords_changed, pkd);
5dd5946f3785 call the notify function just once when the keywords are pushed to the
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1430
diff changeset
390
5dd5946f3785 call the notify function just once when the keywords are pushed to the
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1430
diff changeset
391 /* call this just once in the end */
5dd5946f3785 call the notify function just once when the keywords are pushed to the
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1430
diff changeset
392 bar_pane_keywords_changed(keyword_buffer, pkd);
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
393 }
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
394
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
395 void bar_pane_keywords_filter_modify(GtkTreeModel *model, GtkTreeIter *iter, GValue *value, gint column, gpointer data)
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
396 {
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
397 PaneKeywordsData *pkd = data;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
398 GtkTreeModel *keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
399 GtkTreeIter child_iter;
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
400
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
401 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &child_iter, iter);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
402
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
403 memset(value, 0, sizeof (GValue));
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
404
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
405 switch (column)
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
406 {
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
407 case FILTER_KEYWORD_COLUMN_TOGGLE:
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
408 {
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
409 GList *keywords = keyword_list_pull(pkd->keyword_view);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
410 gboolean set = keyword_tree_is_set(keyword_tree, &child_iter, keywords);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
411 string_list_free(keywords);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
412
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
413 g_value_init(value, G_TYPE_BOOLEAN);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
414 g_value_set_boolean(value, set);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
415 break;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
416 }
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
417 case FILTER_KEYWORD_COLUMN_MARK:
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
418 gtk_tree_model_get_value(keyword_tree, &child_iter, KEYWORD_COLUMN_MARK, value);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
419 break;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
420 case FILTER_KEYWORD_COLUMN_NAME:
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
421 gtk_tree_model_get_value(keyword_tree, &child_iter, KEYWORD_COLUMN_NAME, value);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
422 break;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
423 case FILTER_KEYWORD_COLUMN_IS_KEYWORD:
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
424 gtk_tree_model_get_value(keyword_tree, &child_iter, KEYWORD_COLUMN_IS_KEYWORD, value);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
425 break;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
426 }
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
427 return;
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
428
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
429 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
430
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
431 gboolean bar_pane_keywords_filter_visible(GtkTreeModel *keyword_tree, GtkTreeIter *iter, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
432 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
433 GtkTreeModel *filter = data;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
434
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
435 return !keyword_is_hidden_in(keyword_tree, iter, filter);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
436 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
437
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
438 static void bar_pane_keywords_set_selection(PaneKeywordsData *pkd, gboolean append)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
439 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
440 GList *keywords = NULL;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
441 GList *list = NULL;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
442 GList *work;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
443
2819
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
444 keywords = keyword_list_pull_selected(pkd->keyword_view);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
445
1387
add2c9869a56 simplified bar interface
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1346
diff changeset
446 list = layout_selection_list(pkd->pane.lw);
1754
4659e78fd247 fixed selection handling in sidebar
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1740
diff changeset
447 list = file_data_process_groups_in_selection(list, FALSE, NULL);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
448
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
449 work = list;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
450 while (work)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
451 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
452 FileData *fd = work->data;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
453 work = work->next;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
454
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
455 if (append)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
456 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
457 metadata_append_list(fd, KEYWORD_KEY, keywords);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
458 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
459 else
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
460 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
461 metadata_write_list(fd, KEYWORD_KEY, keywords);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
462 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
463 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
464
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
465 filelist_free(list);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
466 string_list_free(keywords);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
467 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
468
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
469 static void bar_pane_keywords_sel_add_cb(GtkWidget *button, gpointer data)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
470 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
471 PaneKeywordsData *pkd = data;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
472
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
473 bar_pane_keywords_set_selection(pkd, TRUE);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
474 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
475
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
476 static void bar_pane_keywords_sel_replace_cb(GtkWidget *button, gpointer data)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
477 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
478 PaneKeywordsData *pkd = data;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
479
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
480 bar_pane_keywords_set_selection(pkd, FALSE);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
481 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
482
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
483 static void bar_pane_keywords_populate_popup_cb(GtkTextView *textview, GtkMenu *menu, gpointer data)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
484 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
485 PaneKeywordsData *pkd = data;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
486
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
487 menu_item_add_divider(GTK_WIDGET(menu));
2819
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
488 menu_item_add_stock(GTK_WIDGET(menu), _("Add selected keywords to selected files"), GTK_STOCK_ADD, G_CALLBACK(bar_pane_keywords_sel_add_cb), pkd);
dbe1524ba009 Fix #629: Keywords are not adding properly to selected files
Colin Clark <colin.clark@cclark.uk>
parents: 2669
diff changeset
489 menu_item_add_stock(GTK_WIDGET(menu), _("Replace existing keywords in selected files with selected keywords"), GTK_STOCK_CONVERT, G_CALLBACK(bar_pane_keywords_sel_replace_cb), pkd);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
490 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
491
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
492
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
493 static void bar_pane_keywords_notify_cb(FileData *fd, NotifyType type, gpointer data)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
494 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
495 PaneKeywordsData *pkd = data;
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
496 if ((type & (NOTIFY_REREAD | NOTIFY_CHANGE | NOTIFY_METADATA)) && fd == pkd->fd)
1498
2b0712dcf139 improved debug messages
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1485
diff changeset
497 {
2b0712dcf139 improved debug messages
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1485
diff changeset
498 DEBUG_1("Notify pane_keywords: %s %04x", fd->path, type);
2b0712dcf139 improved debug messages
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1485
diff changeset
499 bar_pane_keywords_update(pkd);
2b0712dcf139 improved debug messages
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1485
diff changeset
500 }
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
501 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
502
1455
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
503 static gboolean bar_pane_keywords_changed_idle_cb(gpointer data)
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
504 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
505 PaneKeywordsData *pkd = data;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
506
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
507 bar_pane_keywords_write(pkd);
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
508 bar_keyword_tree_sync(pkd);
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1498
diff changeset
509 pkd->idle_id = 0;
1455
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
510 return FALSE;
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
511 }
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
512
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
513 static void bar_pane_keywords_changed(GtkTextBuffer *buffer, gpointer data)
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
514 {
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
515 PaneKeywordsData *pkd = data;
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
516
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1498
diff changeset
517 if (pkd->idle_id) return;
1455
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
518 /* higher prio than redraw */
013388f1aa68 fixed keyword tree redrawing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1450
diff changeset
519 pkd->idle_id = g_idle_add_full(G_PRIORITY_HIGH_IDLE, bar_pane_keywords_changed_idle_cb, pkd, NULL);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
520 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
521
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
522
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
523 /*
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
524 *-------------------------------------------------------------------
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
525 * dnd
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
526 *-------------------------------------------------------------------
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
527 */
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
528
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
529
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
530 static GtkTargetEntry bar_pane_keywords_drag_types[] = {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
531 { TARGET_APP_KEYWORD_PATH_STRING, GTK_TARGET_SAME_WIDGET, TARGET_APP_KEYWORD_PATH },
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
532 { "text/plain", 0, TARGET_TEXT_PLAIN }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
533 };
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
534 static gint n_keywords_drag_types = 2;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
535
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
536
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
537 static GtkTargetEntry bar_pane_keywords_drop_types[] = {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
538 { TARGET_APP_KEYWORD_PATH_STRING, GTK_TARGET_SAME_WIDGET, TARGET_APP_KEYWORD_PATH },
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
539 { "text/plain", 0, TARGET_TEXT_PLAIN }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
540 };
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
541 static gint n_keywords_drop_types = 2;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
542
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
543
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
544 static void bar_pane_keywords_dnd_get(GtkWidget *tree_view, GdkDragContext *context,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
545 GtkSelectionData *selection_data, guint info,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
546 guint time, gpointer data)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
547 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
548 GtkTreeIter iter;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
549 GtkTreeModel *model;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
550 GtkTreeIter child_iter;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
551 GtkTreeModel *keyword_tree;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
552
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
553 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
554
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
555 if (!gtk_tree_selection_get_selected(sel, &model, &iter)) return;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
556
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
557 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
558 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &child_iter, &iter);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
559
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
560 switch (info)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
561 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
562 case TARGET_APP_KEYWORD_PATH:
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
563 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
564 GList *path = keyword_tree_get_path(keyword_tree, &child_iter);
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
565 gtk_selection_data_set(selection_data, gtk_selection_data_get_target(selection_data),
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
566 8, (gpointer) &path, sizeof(path));
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
567 break;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
568 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
569
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
570 case TARGET_TEXT_PLAIN:
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
571 default:
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
572 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
573 gchar *name = keyword_get_name(keyword_tree, &child_iter);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
574 gtk_selection_data_set_text(selection_data, name, -1);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
575 g_free(name);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
576 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
577 break;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
578 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
579 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
580
1393
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
581 static void bar_pane_keywords_dnd_begin(GtkWidget *tree_view, GdkDragContext *context, gpointer data)
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
582 {
1393
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
583 GtkTreeIter iter;
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
584 GtkTreeModel *model;
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
585 GtkTreeIter child_iter;
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
586 GtkTreeModel *keyword_tree;
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
587 gchar *name;
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
588
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
589 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
1393
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
590
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
591 if (!gtk_tree_selection_get_selected(sel, &model, &iter)) return;
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
592
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
593 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
594 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &child_iter, &iter);
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
595
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
596 name = keyword_get_name(keyword_tree, &child_iter);
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
597
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
598 dnd_set_drag_label(tree_view, context, name);
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
599 g_free(name);
ec34bcb3a3ed show a label instead of the default drag icon
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1392
diff changeset
600
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
601 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
602
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
603 static void bar_pane_keywords_dnd_end(GtkWidget *widget, GdkDragContext *context, gpointer data)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
604 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
605 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
606
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
607
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
608 static gboolean bar_pane_keywords_dnd_can_move(GtkTreeModel *keyword_tree, GtkTreeIter *src_kw_iter, GtkTreeIter *dest_kw_iter)
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
609 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
610 gchar *src_name;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
611 GtkTreeIter parent;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
612
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
613 if (dest_kw_iter && keyword_same_parent(keyword_tree, src_kw_iter, dest_kw_iter))
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
614 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
615 return TRUE; /* reordering of siblings is ok */
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
616 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
617 if (!dest_kw_iter && !gtk_tree_model_iter_parent(keyword_tree, &parent, src_kw_iter))
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
618 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
619 return TRUE; /* reordering of top-level siblings is ok */
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
620 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
621
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
622 src_name = keyword_get_name(keyword_tree, src_kw_iter);
1465
7f77bb16d3b1 do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1464
diff changeset
623 if (keyword_exists(keyword_tree, NULL, dest_kw_iter, src_name, FALSE, NULL))
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
624 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
625 g_free(src_name);
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
626 return FALSE;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
627 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
628 g_free(src_name);
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
629 return TRUE;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
630 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
631
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
632 static gboolean bar_pane_keywords_dnd_skip_existing(GtkTreeModel *keyword_tree, GtkTreeIter *dest_kw_iter, GList **keywords)
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
633 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
634 /* we have to find at least one keyword that does not already exist as a sibling of dest_kw_iter */
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
635 GList *work = *keywords;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
636 while (work)
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
637 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
638 gchar *keyword = work->data;
1465
7f77bb16d3b1 do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1464
diff changeset
639 if (keyword_exists(keyword_tree, NULL, dest_kw_iter, keyword, FALSE, NULL))
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
640 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
641 GList *next = work->next;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
642 g_free(keyword);
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
643 *keywords = g_list_delete_link(*keywords, work);
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
644 work = next;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
645 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
646 else
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
647 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
648 work = work->next;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
649 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
650 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
651 return !!*keywords;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
652 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
653
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
654 static void bar_pane_keywords_dnd_receive(GtkWidget *tree_view, GdkDragContext *context,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
655 gint x, gint y,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
656 GtkSelectionData *selection_data, guint info,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
657 guint time, gpointer data)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
658 {
1396
b2b42f5032c4 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1395
diff changeset
659 PaneKeywordsData *pkd = data;
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
660 GtkTreePath *tpath = NULL;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
661 GtkTreeViewDropPosition pos;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
662 GtkTreeModel *model;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
663
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
664 GtkTreeModel *keyword_tree;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
665 gboolean src_valid = FALSE;
1394
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
666 GList *new_keywords = NULL;
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
667 GList *work;
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
668
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
669 /* iterators for keyword_tree */
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
670 GtkTreeIter src_kw_iter;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
671 GtkTreeIter dest_kw_iter;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
672 GtkTreeIter new_kw_iter;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
673
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
674 g_signal_stop_emission_by_name(tree_view, "drag_data_received");
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
675
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
676 model = gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view));
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
677 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
678
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
679 gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(tree_view), x, y, &tpath, &pos);
1430
ab3bb4596d1f cleanup, small fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1429
diff changeset
680 gtk_tree_view_set_drag_dest_row(GTK_TREE_VIEW(tree_view), NULL, pos);
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
681
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
682 switch (info)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
683 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
684 case TARGET_APP_KEYWORD_PATH:
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
685 {
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
686 GList *path = *(gpointer *)gtk_selection_data_get_data(selection_data);
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
687 src_valid = keyword_tree_get_iter(keyword_tree, &src_kw_iter, path);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
688 string_list_free(path);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
689 break;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
690 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
691 default:
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
692 new_keywords = string_to_keywords_list((gchar *)gtk_selection_data_get_data(selection_data));
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
693 break;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
694 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
695
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
696 if (tpath)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
697 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
698 GtkTreeIter dest_iter;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
699 gtk_tree_model_get_iter(model, &dest_iter, tpath);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
700 gtk_tree_path_free(tpath);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
701 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &dest_kw_iter, &dest_iter);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
702
1395
4b438f5bb364 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1394
diff changeset
703 if (src_valid && gtk_tree_store_is_ancestor(GTK_TREE_STORE(keyword_tree), &src_kw_iter, &dest_kw_iter))
4b438f5bb364 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1394
diff changeset
704 {
4b438f5bb364 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1394
diff changeset
705 /* can't move to it's own child */
4b438f5bb364 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1394
diff changeset
706 return;
4b438f5bb364 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1394
diff changeset
707 }
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
708
1396
b2b42f5032c4 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1395
diff changeset
709 if (src_valid && keyword_compare(keyword_tree, &src_kw_iter, &dest_kw_iter) == 0)
b2b42f5032c4 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1395
diff changeset
710 {
b2b42f5032c4 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1395
diff changeset
711 /* can't move to itself */
b2b42f5032c4 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1395
diff changeset
712 return;
b2b42f5032c4 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1395
diff changeset
713 }
b2b42f5032c4 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1395
diff changeset
714
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
715 if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER) &&
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
716 !gtk_tree_model_iter_has_child(keyword_tree, &dest_kw_iter))
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
717 {
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
718 /* the node has no children, all keywords can be added */
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
719 gtk_tree_store_append(GTK_TREE_STORE(keyword_tree), &new_kw_iter, &dest_kw_iter);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
720 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
721 else
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
722 {
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
723 if (src_valid && !bar_pane_keywords_dnd_can_move(keyword_tree, &src_kw_iter, &dest_kw_iter))
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
724 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
725 /* the keyword can't be moved if the same name already exist */
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
726 return;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
727 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
728 if (new_keywords && !bar_pane_keywords_dnd_skip_existing(keyword_tree, &dest_kw_iter, &new_keywords))
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
729 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
730 /* the keywords can't be added if the same name already exist */
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
731 return;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
732 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
733
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
734 switch (pos)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
735 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
736 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
737 case GTK_TREE_VIEW_DROP_BEFORE:
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
738 gtk_tree_store_insert_before(GTK_TREE_STORE(keyword_tree), &new_kw_iter, NULL, &dest_kw_iter);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
739 break;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
740 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
741 case GTK_TREE_VIEW_DROP_AFTER:
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
742 gtk_tree_store_insert_after(GTK_TREE_STORE(keyword_tree), &new_kw_iter, NULL, &dest_kw_iter);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
743 break;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
744 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
745 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
746
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
747 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
748 else
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
749 {
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
750 if (src_valid && !bar_pane_keywords_dnd_can_move(keyword_tree, &src_kw_iter, NULL))
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
751 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
752 /* the keyword can't be moved if the same name already exist */
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
753 return;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
754 }
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
755 if (new_keywords && !bar_pane_keywords_dnd_skip_existing(keyword_tree, NULL, &new_keywords))
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
756 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
757 /* the keywords can't be added if the same name already exist */
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
758 return;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
759 }
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
760 gtk_tree_store_append(GTK_TREE_STORE(keyword_tree), &new_kw_iter, NULL);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
761 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
762
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
763
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
764 if (src_valid)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
765 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
766 keyword_move_recursive(GTK_TREE_STORE(keyword_tree), &new_kw_iter, &src_kw_iter);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
767 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
768
1394
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
769 work = new_keywords;
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
770 while (work)
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
771 {
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
772 gchar *keyword = work->data;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
773 keyword_set(GTK_TREE_STORE(keyword_tree), &new_kw_iter, keyword, TRUE);
1394
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
774 work = work->next;
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
775
1394
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
776 if (work)
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
777 {
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
778 GtkTreeIter add;
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
779 gtk_tree_store_insert_after(GTK_TREE_STORE(keyword_tree), &add, NULL, &new_kw_iter);
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
780 new_kw_iter = add;
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
781 }
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
782 }
1394
6e5811450c49 allow dropping of multiple keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1393
diff changeset
783 string_list_free(new_keywords);
1396
b2b42f5032c4 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1395
diff changeset
784 bar_keyword_tree_sync(pkd);
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
785 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
786
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
787 static gint bar_pane_keywords_dnd_motion(GtkWidget *tree_view, GdkDragContext *context,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
788 gint x, gint y, guint time, gpointer data)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
789 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
790 GtkTreePath *tpath = NULL;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
791 GtkTreeViewDropPosition pos;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
792 gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(tree_view), x, y, &tpath, &pos);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
793 if (tpath)
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
794 {
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
795 GtkTreeModel *model;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
796 GtkTreeIter dest_iter;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
797 model = gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view));
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
798 gtk_tree_model_get_iter(model, &dest_iter, tpath);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
799 if (pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE && gtk_tree_model_iter_has_child(model, &dest_iter))
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
800 pos = GTK_TREE_VIEW_DROP_BEFORE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
801
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
802 if (pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER && gtk_tree_model_iter_has_child(model, &dest_iter))
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
803 pos = GTK_TREE_VIEW_DROP_AFTER;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
804 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
805
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
806 gtk_tree_view_set_drag_dest_row(GTK_TREE_VIEW(tree_view), tpath, pos);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
807 gtk_tree_path_free(tpath);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
808
1395
4b438f5bb364 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1394
diff changeset
809 if (tree_view == gtk_drag_get_source_widget(context))
4b438f5bb364 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1394
diff changeset
810 gdk_drag_status(context, GDK_ACTION_MOVE, time);
4b438f5bb364 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1394
diff changeset
811 else
4b438f5bb364 dnd fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1394
diff changeset
812 gdk_drag_status(context, GDK_ACTION_COPY, time);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
813
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
814 return TRUE;
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
815 }
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
816
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
817 /*
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
818 *-------------------------------------------------------------------
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
819 * edit dialog
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
820 *-------------------------------------------------------------------
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
821 */
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
822
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
823 static void bar_pane_keywords_edit_destroy_cb(GtkWidget *widget, gpointer data)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
824 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
825 ConfDialogData *cdd = data;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
826 gtk_tree_path_free(cdd->click_tpath);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
827 g_free(cdd);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
828 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
829
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
830
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
831 static void bar_pane_keywords_edit_cancel_cb(GenericDialog *gd, gpointer data)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
832 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
833 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
834
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
835
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
836 static void bar_pane_keywords_edit_ok_cb(GenericDialog *gd, gpointer data)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
837 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
838 ConfDialogData *cdd = data;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
839 PaneKeywordsData *pkd = cdd->pkd;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
840 GtkTreeModel *model;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
841
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
842 GtkTreeModel *keyword_tree;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
843 GtkTreeIter kw_iter;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
844
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
845 gboolean have_dest = FALSE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
846
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
847 GList *keywords;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
848
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
849 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
850 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
851
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
852 if (cdd->click_tpath)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
853 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
854 GtkTreeIter iter;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
855 if (gtk_tree_model_get_iter(model, &iter, cdd->click_tpath))
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
856 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
857 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &kw_iter, &iter);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
858 have_dest = TRUE;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
859 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
860 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
861
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
862 if (cdd->edit_existing && !have_dest) return;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
863
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
864 keywords = keyword_list_pull(cdd->edit_widget);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
865
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
866 if (cdd->edit_existing)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
867 {
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
868 if (keywords && keywords->data && /* there should be one keyword */
1465
7f77bb16d3b1 do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1464
diff changeset
869 !keyword_exists(keyword_tree, NULL, &kw_iter, keywords->data, TRUE, NULL))
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
870 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
871 keyword_set(GTK_TREE_STORE(keyword_tree), &kw_iter, keywords->data, cdd->is_keyword);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
872 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
873 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
874 else
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
875 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
876 GList *work = keywords;
1527
ca99ac4d2a9a Nest new keywords inside existing
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1526
diff changeset
877 gboolean append_to = FALSE;
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
878
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
879 while (work)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
880 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
881 GtkTreeIter add;
1527
ca99ac4d2a9a Nest new keywords inside existing
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1526
diff changeset
882 if (keyword_exists(keyword_tree, NULL, (have_dest || append_to) ? &kw_iter : NULL, work->data, FALSE, NULL))
1429
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
883 {
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
884 work = work->next;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
885 continue;
7561b35307f1 do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1428
diff changeset
886 }
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
887 if (have_dest)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
888 {
1527
ca99ac4d2a9a Nest new keywords inside existing
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1526
diff changeset
889 gtk_tree_store_append(GTK_TREE_STORE(keyword_tree), &add, &kw_iter);
ca99ac4d2a9a Nest new keywords inside existing
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1526
diff changeset
890 }
ca99ac4d2a9a Nest new keywords inside existing
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1526
diff changeset
891 else if (append_to)
ca99ac4d2a9a Nest new keywords inside existing
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1526
diff changeset
892 {
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
893 gtk_tree_store_insert_after(GTK_TREE_STORE(keyword_tree), &add, NULL, &kw_iter);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
894 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
895 else
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
896 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
897 gtk_tree_store_append(GTK_TREE_STORE(keyword_tree), &add, NULL);
1527
ca99ac4d2a9a Nest new keywords inside existing
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1526
diff changeset
898 append_to = TRUE;
ca99ac4d2a9a Nest new keywords inside existing
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1526
diff changeset
899 kw_iter = add;
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
900 }
1527
ca99ac4d2a9a Nest new keywords inside existing
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1526
diff changeset
901 keyword_set(GTK_TREE_STORE(keyword_tree), &add, work->data, cdd->is_keyword);
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
902 work = work->next;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
903 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
904 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
905 string_list_free(keywords);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
906 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
907
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
908 static void bar_pane_keywords_conf_set_helper(GtkWidget *widget, gpointer data)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
909 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
910 ConfDialogData *cdd = data;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
911 cdd->is_keyword = FALSE;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
912 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
913
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
914 static void bar_pane_keywords_conf_set_kw(GtkWidget *widget, gpointer data)
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
915 {
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
916 ConfDialogData *cdd = data;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
917 cdd->is_keyword = TRUE;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
918 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
919
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
920
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
921
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
922 static void bar_pane_keywords_edit_dialog(PaneKeywordsData *pkd, gboolean edit_existing)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
923 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
924 ConfDialogData *cdd;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
925 GenericDialog *gd;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
926 GtkWidget *table;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
927 GtkWidget *group;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
928 GtkWidget *button;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
929
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
930 gchar *name = NULL;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
931 gboolean is_keyword = TRUE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
932
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
933
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
934 if (edit_existing && pkd->click_tpath)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
935 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
936 GtkTreeModel *model;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
937 GtkTreeIter iter;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
938 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
939
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
940 if (gtk_tree_model_get_iter(model, &iter, pkd->click_tpath))
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
941 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
942 gtk_tree_model_get(model, &iter, FILTER_KEYWORD_COLUMN_NAME, &name,
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
943 FILTER_KEYWORD_COLUMN_IS_KEYWORD, &is_keyword, -1);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
944 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
945 else
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
946 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
947 return;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
948 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
949 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
950
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
951 if (edit_existing && !name) return;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
952
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
953
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
954 cdd = g_new0(ConfDialogData, 1);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
955 cdd->pkd =pkd;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
956 cdd->click_tpath = pkd->click_tpath;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
957 pkd->click_tpath = NULL;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
958 cdd->edit_existing = edit_existing;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
959
2361
6519075011df Keyword right-click menu
Colin Clark <cclark@mcb.net>
parents: 2350
diff changeset
960 cdd->gd = gd = generic_dialog_new(name ? _("Edit keyword") : _("New keyword"), "keyword_edit",
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
961 pkd->widget, TRUE,
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
962 bar_pane_keywords_edit_cancel_cb, cdd);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
963 g_signal_connect(G_OBJECT(gd->dialog), "destroy",
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
964 G_CALLBACK(bar_pane_keywords_edit_destroy_cb), cdd);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
965
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
966
2587
c6f9494f6be1 Fix #508: Copy and Move windows scale incorrectly
cclark <colin.clark@cclark.uk>
parents: 2586
diff changeset
967 generic_dialog_add_message(gd, NULL, name ? _("Configure keyword") : _("New keyword"), NULL, FALSE);
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
968
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
969 generic_dialog_add_button(gd, GTK_STOCK_OK, NULL,
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
970 bar_pane_keywords_edit_ok_cb, TRUE);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
971
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
972 table = pref_table_new(gd->vbox, 3, 1, FALSE, TRUE);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
973 pref_table_label(table, 0, 0, _("Keyword:"), 1.0);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
974 cdd->edit_widget = gtk_entry_new();
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
975 gtk_widget_set_size_request(cdd->edit_widget, 300, -1);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
976 if (name) gtk_entry_set_text(GTK_ENTRY(cdd->edit_widget), name);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
977 gtk_table_attach_defaults(GTK_TABLE(table), cdd->edit_widget, 1, 2, 0, 1);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
978 /* here could eventually be a text view instead of entry */
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
979 generic_dialog_attach_default(gd, cdd->edit_widget);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
980 gtk_widget_show(cdd->edit_widget);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
981
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
982 group = pref_group_new(gd->vbox, FALSE, _("Keyword type:"), GTK_ORIENTATION_VERTICAL);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
983
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
984 button = pref_radiobutton_new(group, NULL, _("Active keyword"),
1526
5892d8f24c7d Fix the is_keyword bug
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1525
diff changeset
985 (is_keyword),
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
986 G_CALLBACK(bar_pane_keywords_conf_set_kw), cdd);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
987 button = pref_radiobutton_new(group, button, _("Helper"),
1526
5892d8f24c7d Fix the is_keyword bug
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1525
diff changeset
988 (!is_keyword),
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
989 G_CALLBACK(bar_pane_keywords_conf_set_helper), cdd);
1526
5892d8f24c7d Fix the is_keyword bug
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1525
diff changeset
990
5892d8f24c7d Fix the is_keyword bug
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1525
diff changeset
991 cdd->is_keyword = is_keyword;
5892d8f24c7d Fix the is_keyword bug
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1525
diff changeset
992
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
993 g_free(name);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
994
1525
617056cf84f6 Set the focus for new keyword dialog
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1523
diff changeset
995 gtk_widget_grab_focus(cdd->edit_widget);
617056cf84f6 Set the focus for new keyword dialog
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1523
diff changeset
996
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
997 gtk_widget_show(gd->dialog);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
998 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
999
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1000
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1001
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1002
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1003 /*
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1004 *-------------------------------------------------------------------
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1005 * popup menu
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1006 *-------------------------------------------------------------------
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1007 */
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1008
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1009 static void bar_pane_keywords_edit_dialog_cb(GtkWidget *menu_widget, gpointer data)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1010 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1011 PaneKeywordsData *pkd = data;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1012 bar_pane_keywords_edit_dialog(pkd, TRUE);
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1013 }
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1014
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1015 static void bar_pane_keywords_add_dialog_cb(GtkWidget *menu_widget, gpointer data)
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1016 {
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1017 PaneKeywordsData *pkd = data;
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1018 bar_pane_keywords_edit_dialog(pkd, FALSE);
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1019 }
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1020
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1021 static void bar_pane_keywords_connect_mark_cb(GtkWidget *menu_widget, gpointer data)
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1022 {
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1023 PaneKeywordsData *pkd = data;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1024
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1025 GtkTreeModel *model;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1026 GtkTreeIter iter;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1027
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1028 GtkTreeModel *keyword_tree;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1029 GtkTreeIter kw_iter;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1030
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1031 gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menu_widget), "mark")) - 1;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1032
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1033 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1034 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1035
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1036 if (!pkd->click_tpath) return;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1037 if (!gtk_tree_model_get_iter(model, &iter, pkd->click_tpath)) return;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1038
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1039 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &kw_iter, &iter);
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1040
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1041 meta_data_connect_mark_with_keyword(keyword_tree, &kw_iter, mark);
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1042 }
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1043
2669
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1044 static void bar_pane_keywords_disconnect_marks_ok_cb(GenericDialog *gd, gpointer data)
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1045 {
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1046 keyword_tree_disconnect_marks();
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1047 }
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1048
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1049 static void dummy_cancel_cb(GenericDialog *gd, gpointer data)
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1050 {
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1051 /* no op, only so cancel button appears */
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1052 }
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1053
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1054 static void bar_pane_keywords_disconnect_marks_cb(GtkWidget *menu_widget, gpointer data)
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1055 {
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1056 PaneKeywordsData *pkd = data;
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1057
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1058 GenericDialog *gd;
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1059 GString *message = g_string_new("");
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1060
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1061 message = g_string_append(message, _("This will disconnect all Marks Keywords connections"));
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1062
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1063 gd = generic_dialog_new(_("Marks Keywords"),
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1064 "marks_keywords", menu_widget, TRUE, dummy_cancel_cb, pkd);
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1065 generic_dialog_add_message(gd, GTK_STOCK_DIALOG_WARNING,
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1066 "Disconnect all Marks Keywords connections?", message->str, TRUE);
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1067 generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, bar_pane_keywords_disconnect_marks_ok_cb, TRUE);
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1068
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1069 gtk_widget_show(gd->dialog);
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1070
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1071 g_string_free(message, TRUE);
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1072 }
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1073
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1074 static void bar_pane_keywords_delete_cb(GtkWidget *menu_widget, gpointer data)
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1075 {
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1076 PaneKeywordsData *pkd = data;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1077 GtkTreeModel *model;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1078 GtkTreeIter iter;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1079
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1080 GtkTreeModel *keyword_tree;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1081 GtkTreeIter kw_iter;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1082
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1083 if (!pkd->click_tpath) return;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1084
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1085 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1086 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1087
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1088 if (!gtk_tree_model_get_iter(model, &iter, pkd->click_tpath)) return;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1089 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &kw_iter, &iter);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1090
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1091 keyword_delete(GTK_TREE_STORE(keyword_tree), &kw_iter);
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1092 }
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1093
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1094 static void bar_pane_keywords_hide_cb(GtkWidget *menu_widget, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1095 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1096 PaneKeywordsData *pkd = data;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1097 GtkTreeModel *model;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1098 GtkTreeIter iter;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1099
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1100 GtkTreeModel *keyword_tree;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1101 GtkTreeIter kw_iter;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1102
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1103 if (!pkd->click_tpath) return;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1104
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1105 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1106 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1107
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1108 if (!gtk_tree_model_get_iter(model, &iter, pkd->click_tpath)) return;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1109 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &kw_iter, &iter);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1110
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1111 keyword_hide_in(GTK_TREE_STORE(keyword_tree), &kw_iter, model);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1112 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1113
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1114 static void bar_pane_keywords_show_all_cb(GtkWidget *menu_widget, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1115 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1116 PaneKeywordsData *pkd = data;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1117 GtkTreeModel *model;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1118
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1119 GtkTreeModel *keyword_tree;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1120
2496
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1121 string_list_free(pkd->expanded_rows);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1122 pkd->expanded_rows = NULL;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1123 gtk_tree_view_map_expanded_rows(GTK_TREE_VIEW(pkd->keyword_treeview),
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1124 (bar_keyword_tree_get_expanded_cb), &pkd->expanded_rows);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1125
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1126 pkd->hide_unchecked = FALSE;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1127
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1128 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1129 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1130
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1131 keyword_show_all_in(GTK_TREE_STORE(keyword_tree), model);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1132
1430
ab3bb4596d1f cleanup, small fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1429
diff changeset
1133 if (!pkd->collapse_unchecked) gtk_tree_view_expand_all(GTK_TREE_VIEW(pkd->keyword_treeview));
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1134 bar_keyword_tree_sync(pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1135 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1136
2496
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1137 static void bar_pane_keywords_revert_cb(GtkWidget *menu_widget, gpointer data)
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1138 {
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1139 PaneKeywordsData *pkd = data;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1140 GList *work;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1141 GtkTreePath *tree_path;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1142 gchar *path;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1143
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1144 gtk_tree_view_collapse_all(GTK_TREE_VIEW(pkd->keyword_treeview));
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1145
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1146 work = pkd->expanded_rows;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1147 while (work)
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1148 {
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1149 path = work->data;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1150 tree_path = gtk_tree_path_new_from_string(path);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1151 gtk_tree_view_expand_to_path(GTK_TREE_VIEW(pkd->keyword_treeview), tree_path);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1152 work = work->next;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1153 gtk_tree_path_free(tree_path);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1154 }
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1155
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1156 bar_keyword_tree_sync(pkd);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1157 }
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1158
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1159 static void bar_pane_keywords_expand_checked_cb(GtkWidget *menu_widget, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1160 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1161 PaneKeywordsData *pkd = data;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1162 GtkTreeModel *model;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1163
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1164 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1165 gtk_tree_model_foreach(model, bar_keyword_tree_expand_if_set_cb, pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1166 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1167
2496
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1168 static void bar_pane_keywords_collapse_all_cb(GtkWidget *menu_widget, gpointer data)
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1169 {
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1170 PaneKeywordsData *pkd = data;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1171
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1172 string_list_free(pkd->expanded_rows);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1173 pkd->expanded_rows = NULL;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1174 gtk_tree_view_map_expanded_rows(GTK_TREE_VIEW(pkd->keyword_treeview),
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1175 (bar_keyword_tree_get_expanded_cb), &pkd->expanded_rows);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1176
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1177 gtk_tree_view_collapse_all(GTK_TREE_VIEW(pkd->keyword_treeview));
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1178
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1179 bar_keyword_tree_sync(pkd);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1180 }
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1181
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1182 static void bar_pane_keywords_revert_hidden_cb(GtkWidget *menu_widget, gpointer data)
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1183 {
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1184 PaneKeywordsData *pkd = data;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1185 GtkTreeModel *model;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1186 GtkTreeModel *keyword_tree;
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1187
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1188 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1189 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1190
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1191 keyword_revert_hidden_in(GTK_TREE_STORE(keyword_tree), model);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1192
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1193 bar_keyword_tree_sync(pkd);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1194 }
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1195
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1196 static void bar_pane_keywords_collapse_unchecked_cb(GtkWidget *menu_widget, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1197 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1198 PaneKeywordsData *pkd = data;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1199 GtkTreeModel *model;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1200
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1201 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1202 gtk_tree_model_foreach(model, bar_keyword_tree_collapse_if_unset_cb, pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1203 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1204
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1205 static void bar_pane_keywords_hide_unchecked_cb(GtkWidget *menu_widget, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1206 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1207 PaneKeywordsData *pkd = data;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1208 GtkTreeModel *model;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1209
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1210 GtkTreeModel *keyword_tree;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1211 GList *keywords;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1212
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1213 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1214 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1215
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1216 keywords = keyword_list_pull(pkd->keyword_view);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1217 keyword_hide_unset_in(GTK_TREE_STORE(keyword_tree), model, keywords);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1218 string_list_free(keywords);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1219 bar_keyword_tree_sync(pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1220 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1221
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1222 static void bar_pane_keywords_expand_checked_toggle_cb(GtkWidget *menu_widget, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1223 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1224 PaneKeywordsData *pkd = data;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1225 pkd->expand_checked = !pkd->expand_checked;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1226 bar_keyword_tree_sync(pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1227 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1228
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1229 static void bar_pane_keywords_collapse_unchecked_toggle_cb(GtkWidget *menu_widget, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1230 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1231 PaneKeywordsData *pkd = data;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1232 pkd->collapse_unchecked = !pkd->collapse_unchecked;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1233 bar_keyword_tree_sync(pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1234 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1235
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1236 static void bar_pane_keywords_hide_unchecked_toggle_cb(GtkWidget *menu_widget, gpointer data)
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1237 {
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1238 PaneKeywordsData *pkd = data;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1239 pkd->hide_unchecked = !pkd->hide_unchecked;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1240 bar_keyword_tree_sync(pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1241 }
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1242
1806
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1243 /**
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1244 * \brief Callback for adding selected keyword to all selected images.
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1245 */
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1246 static void bar_pane_keywords_add_to_selected_cb(GtkWidget *menu_widget, gpointer data)
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1247 {
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1248 PaneKeywordsData *pkd = data;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1249 GtkTreeIter iter; /* This is the iter which initial holds the current keyword */
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1250 GtkTreeIter child_iter;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1251 GtkTreeModel *model;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1252 GtkTreeModel *keyword_tree;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1253 GList *list, *work;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1254 GList *keywords = NULL;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1255
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1256 GtkTextBuffer *keyword_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pkd->keyword_view));
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1257
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1258 /* Aquire selected keyword */
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1259 if (pkd->click_tpath)
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1260 {
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1261 gboolean is_keyword = TRUE;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1262
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1263 model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1264 if (!gtk_tree_model_get_iter(model, &iter, pkd->click_tpath)) return;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1265 gtk_tree_model_get(model, &iter, FILTER_KEYWORD_COLUMN_IS_KEYWORD, &is_keyword, -1);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1266 if (!is_keyword) return;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1267 }
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1268 else
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1269 return;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1270
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1271 keyword_tree = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1272 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &child_iter, &iter);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1273
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1274 list = keyword_list_pull(pkd->keyword_view); /* Get the left keyword view */
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1275
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1276 /* Now set the current image */
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1277 keyword_tree_set(keyword_tree, &child_iter, &list);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1278
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1279 keyword_list_push(pkd->keyword_view, list); /* Set the left keyword view */
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1280 string_list_free(list);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1281
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1282 bar_pane_keywords_changed(keyword_buffer, pkd); /* Get list of all keywords in the hierarchy */
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1283
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1284 gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), &child_iter, &iter);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1285 keywords = keyword_tree_get(keyword_tree, &child_iter);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1286
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1287 list = layout_selection_list(pkd->pane.lw);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1288 work = list;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1289 while (work)
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1290 {
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1291 FileData *fd = work->data;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1292 work = work->next;
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1293 metadata_append_list(fd, KEYWORD_KEY, keywords);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1294 }
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1295 filelist_free(list);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1296 string_list_free(keywords);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1297 }
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1298
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1299 static void bar_pane_keywords_menu_popup(GtkWidget *widget, PaneKeywordsData *pkd, gint x, gint y)
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1300 {
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1301 GtkWidget *menu;
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1302 GtkWidget *item;
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1303 GtkWidget *submenu;
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1304 GtkTreeViewDropPosition pos;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1305
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1306 if (pkd->click_tpath) gtk_tree_path_free(pkd->click_tpath);
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1307 pkd->click_tpath = NULL;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1308 gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(pkd->keyword_treeview), x, y, &pkd->click_tpath, &pos);
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1309
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1310 menu = popup_menu_short_lived();
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1311
2586
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1312 menu_item_add_stock(menu, _("New keyword"), GTK_STOCK_NEW, G_CALLBACK(bar_pane_keywords_add_dialog_cb), pkd);
1806
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1313
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1314 menu_item_add_divider(menu);
7c43397b212b Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
1315
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1316 if (pkd->click_tpath)
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1317 {
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1318 /* for the entry */
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1319 gchar *text;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1320 gchar *mark;
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1321 gint i;
2586
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1322 gboolean keyword;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1323
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1324 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1325
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1326 GtkTreeIter iter;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1327 gtk_tree_model_get_iter(model, &iter, pkd->click_tpath);
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1328 gchar *name;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1329
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1330 gtk_tree_model_get(model, &iter, FILTER_KEYWORD_COLUMN_NAME, &name,
2586
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1331 FILTER_KEYWORD_COLUMN_MARK, &mark,
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1332 FILTER_KEYWORD_COLUMN_IS_KEYWORD, &keyword, -1);
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1333
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1334 if (keyword)
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1335 {
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1336 text = g_strdup_printf(_("Add \"%s\" to all selected images"), name);
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1337 menu_item_add_stock(menu, text, GTK_STOCK_ADD, G_CALLBACK(bar_pane_keywords_add_to_selected_cb), pkd);
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1338 g_free(text);
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1339 }
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1340 menu_item_add_divider(menu);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1341
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1342 text = g_strdup_printf(_("Hide \"%s\""), name);
2586
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1343 menu_item_add(menu, text, G_CALLBACK(bar_pane_keywords_hide_cb), pkd);
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1344 g_free(text);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1345
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1346 submenu = gtk_menu_new();
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1347 for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1348 {
2600
c6a11c0bade8 Bug fix #509: Increase number of marks to 10
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2587
diff changeset
1349 text = g_strdup_printf(_("Mark %d"), 1 + (i < 9 ? i : -1));
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1350 item = menu_item_add(submenu, text, G_CALLBACK(bar_pane_keywords_connect_mark_cb), pkd);
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1351 g_object_set_data(G_OBJECT(item), "mark", GINT_TO_POINTER(i + 1));
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1352 g_free(text);
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1353 }
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1354
2586
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1355 if (keyword)
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1356 {
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1357 text = g_strdup_printf(_("Connect \"%s\" to mark"), name);
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1358 item = menu_item_add(menu, text, NULL, NULL);
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1359 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1360 g_free(text);
e2c53828af57 Fix #507: Slightly rearrange keywords context menu
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2496
diff changeset
1361 }
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1362 menu_item_add_divider(menu);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1363
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1364 text = g_strdup_printf(_("Edit \"%s\""), name);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1365 menu_item_add_stock(menu, text, GTK_STOCK_EDIT, G_CALLBACK(bar_pane_keywords_edit_dialog_cb), pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1366 g_free(text);
1543
5d7d2e5a8c09 fixed ambiguous strings
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1527
diff changeset
1367 text = g_strdup_printf(_("Remove \"%s\""), name);
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1368 menu_item_add_stock(menu, text, GTK_STOCK_DELETE, G_CALLBACK(bar_pane_keywords_delete_cb), pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1369 g_free(text);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1370
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1371
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1372 if (mark && mark[0])
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1373 {
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1374 text = g_strdup_printf(_("Disconnect \"%s\" from mark %s"), name, mark);
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1375 menu_item_add_stock(menu, text, GTK_STOCK_DELETE, G_CALLBACK(bar_pane_keywords_connect_mark_cb), pkd);
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1376 g_free(text);
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1377 }
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1378
2669
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1379 if (keyword)
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1380 {
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1381 text = g_strdup_printf(_("Disconnect all Mark Keyword connections"));
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1382 menu_item_add_stock(menu, text, GTK_STOCK_DELETE, G_CALLBACK(bar_pane_keywords_disconnect_marks_cb), pkd);
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1383 g_free(text);
598aadefd022 Disconnect all mark keyword connections
Colin Clark <colin.clark@cclark.uk>
parents: 2600
diff changeset
1384 }
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1385 menu_item_add_divider(menu);
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1386 g_free(mark);
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1387 g_free(name);
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1388 }
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1389 /* for the pane */
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1390
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1391
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1392 menu_item_add(menu, _("Expand checked"), G_CALLBACK(bar_pane_keywords_expand_checked_cb), pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1393 menu_item_add(menu, _("Collapse unchecked"), G_CALLBACK(bar_pane_keywords_collapse_unchecked_cb), pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1394 menu_item_add(menu, _("Hide unchecked"), G_CALLBACK(bar_pane_keywords_hide_unchecked_cb), pkd);
2496
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1395 menu_item_add(menu, _("Revert all hidden"), G_CALLBACK(bar_pane_keywords_revert_hidden_cb), pkd);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1396 menu_item_add_divider(menu);
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1397 menu_item_add(menu, _("Show all"), G_CALLBACK(bar_pane_keywords_show_all_cb), pkd);
2496
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1398 menu_item_add(menu, _("Collapse all"), G_CALLBACK(bar_pane_keywords_collapse_all_cb), pkd);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1399 menu_item_add(menu, _("Revert"), G_CALLBACK(bar_pane_keywords_revert_cb), pkd);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1400 menu_item_add_divider(menu);
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1401
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1402 submenu = gtk_menu_new();
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1403 item = menu_item_add(menu, _("On any change"), NULL, NULL);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1404 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1405
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1406 menu_item_add_check(submenu, _("Expand checked"), pkd->expand_checked, G_CALLBACK(bar_pane_keywords_expand_checked_toggle_cb), pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1407 menu_item_add_check(submenu, _("Collapse unchecked"), pkd->collapse_unchecked, G_CALLBACK(bar_pane_keywords_collapse_unchecked_toggle_cb), pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1408 menu_item_add_check(submenu, _("Hide unchecked"), pkd->hide_unchecked, G_CALLBACK(bar_pane_keywords_hide_unchecked_toggle_cb), pkd);
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1409
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1410 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME);
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1411 }
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1412
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1413
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
1414 static gboolean bar_pane_keywords_menu_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
1415 {
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1416 PaneKeywordsData *pkd = data;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1417 if (bevent->button == MOUSE_BUTTON_RIGHT)
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1418 {
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1419 bar_pane_keywords_menu_popup(widget, pkd, bevent->x, bevent->y);
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1420 return TRUE;
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1421 }
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1422 return FALSE;
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
1423 }
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1424
1421
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1425 /*
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1426 *-------------------------------------------------------------------
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1427 * init
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1428 *-------------------------------------------------------------------
3f4559663dec added a dialog for editing keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1414
diff changeset
1429 */
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1430
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1431 void bar_pane_keywords_close(GtkWidget *bar)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1432 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1433 PaneKeywordsData *pkd;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1434
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1435 pkd = g_object_get_data(G_OBJECT(bar), "pane_data");
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1436 if (!pkd) return;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1437
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1438 g_free(pkd->pane.id);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1439 gtk_widget_destroy(pkd->widget);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1440 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1441
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1442 static void bar_pane_keywords_destroy(GtkWidget *widget, gpointer data)
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1443 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1444 PaneKeywordsData *pkd = data;
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1445 gchar *path;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1446
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1447 path = g_build_filename(get_rc_dir(), "keywords", NULL);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1448 autocomplete_keywords_list_save(path);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1449
2496
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1450 string_list_free(pkd->expanded_rows);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1451 if (pkd->click_tpath) gtk_tree_path_free(pkd->click_tpath);
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1498
diff changeset
1452 if (pkd->idle_id) g_source_remove(pkd->idle_id);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1453 file_data_unregister_notify_func(bar_pane_keywords_notify_cb, pkd);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1454
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1455 file_data_unref(pkd->fd);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1456 g_free(pkd->key);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1457
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1458 g_free(pkd);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1459 }
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1460
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1461
2289
0b284a48ac34 Bug fix #227 + enable user to set height of Keywords pane
Colin Clark <cclark@mcb.net>
parents: 2185
diff changeset
1462 static GtkWidget *bar_pane_keywords_new(const gchar *id, const gchar *title, const gchar *key, gboolean expanded, gint height)
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1463 {
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1464 PaneKeywordsData *pkd;
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1465 GtkWidget *hbox, *vbox;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1466 GtkWidget *scrolled;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1467 GtkTextBuffer *buffer;
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1468 GtkTreeModel *store;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1469 GtkTreeViewColumn *column;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1470 GtkCellRenderer *renderer;
1593
1c7c5b99eae2 fixed keyword tree initialization
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1543
diff changeset
1471 GtkTreeIter iter;
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1472 GtkEntryCompletion *completion;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1473 gchar *path;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1474
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1475 pkd = g_new0(PaneKeywordsData, 1);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1476
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1477 pkd->pane.pane_set_fd = bar_pane_keywords_set_fd;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1478 pkd->pane.pane_event = bar_pane_keywords_event;
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1479 pkd->pane.pane_write_config = bar_pane_keywords_write_config;
1389
f674e5503097 Use a common function bar_pane_expander_title() to set expanders title widget.
Laurent Monin <geeqie@norz.org>
parents: 1387
diff changeset
1480 pkd->pane.title = bar_pane_expander_title(title);
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1481 pkd->pane.id = g_strdup(id);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1482 pkd->pane.type = PANE_KEYWORDS;
1387
add2c9869a56 simplified bar interface
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1346
diff changeset
1483
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1484 pkd->pane.expanded = expanded;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1485
2289
0b284a48ac34 Bug fix #227 + enable user to set height of Keywords pane
Colin Clark <cclark@mcb.net>
parents: 2185
diff changeset
1486 pkd->height = height;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1487 pkd->key = g_strdup(key);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1488
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1489 pkd->expand_checked = TRUE;
2496
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1490 pkd->expanded_rows = NULL;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1491
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1492 vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1493 hbox = gtk_hbox_new(FALSE, PREF_PAD_GAP);
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1494 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1495
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1496 pkd->widget = vbox;
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1497 g_object_set_data(G_OBJECT(pkd->widget), "pane_data", pkd);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1498 g_signal_connect(G_OBJECT(pkd->widget), "destroy",
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1499 G_CALLBACK(bar_pane_keywords_destroy), pkd);
2289
0b284a48ac34 Bug fix #227 + enable user to set height of Keywords pane
Colin Clark <cclark@mcb.net>
parents: 2185
diff changeset
1500 gtk_widget_set_size_request(pkd->widget, -1, height);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1501 gtk_widget_show(hbox);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1502
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1503 scrolled = gtk_scrolled_window_new(NULL, NULL);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1504 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1505 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1506 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1507 gtk_box_pack_start(GTK_BOX(hbox), scrolled, TRUE, TRUE, 0);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1508 gtk_widget_show(scrolled);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1509
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1510 pkd->keyword_view = gtk_text_view_new();
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1511 gtk_container_add(GTK_CONTAINER(scrolled), pkd->keyword_view);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1512 g_signal_connect(G_OBJECT(pkd->keyword_view), "populate-popup",
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1513 G_CALLBACK(bar_pane_keywords_populate_popup_cb), pkd);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1514 gtk_widget_show(pkd->keyword_view);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1515
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1516 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pkd->keyword_view));
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1517 g_signal_connect(G_OBJECT(buffer), "changed",
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1518 G_CALLBACK(bar_pane_keywords_changed), pkd);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1519
2826
d0c6c5ae586b Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2824
diff changeset
1520 if (options->show_predefined_keyword_tree)
d0c6c5ae586b Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2824
diff changeset
1521 {
d0c6c5ae586b Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2824
diff changeset
1522 scrolled = gtk_scrolled_window_new(NULL, NULL);
d0c6c5ae586b Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2824
diff changeset
1523 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
d0c6c5ae586b Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2824
diff changeset
1524 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
d0c6c5ae586b Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2824
diff changeset
1525 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
d0c6c5ae586b Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2824
diff changeset
1526 gtk_box_pack_start(GTK_BOX(hbox), scrolled, TRUE, TRUE, 0);
d0c6c5ae586b Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2824
diff changeset
1527 gtk_widget_show(scrolled);
d0c6c5ae586b Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2824
diff changeset
1528 }
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1529
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1530 pkd->autocomplete = gtk_entry_new();
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1531 gtk_box_pack_end(GTK_BOX(vbox), pkd->autocomplete, FALSE, FALSE, 0);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1532 gtk_widget_show(pkd->autocomplete);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1533 gtk_widget_show(vbox);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1534 gtk_widget_set_tooltip_text(pkd->autocomplete, "Keyword autocomplete");
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1535
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1536 path = g_build_filename(get_rc_dir(), "keywords", NULL);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1537 autocomplete_keywords_list_load(path);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1538
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1539 completion = gtk_entry_completion_new();
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1540 gtk_entry_set_completion(GTK_ENTRY(pkd->autocomplete), completion);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1541 gtk_entry_completion_set_inline_completion(completion, TRUE);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1542 gtk_entry_completion_set_inline_selection(completion, TRUE);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1543 g_object_unref(completion);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1544
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1545 gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(keyword_store));
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1546 gtk_entry_completion_set_text_column(completion, 0);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1547
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1548 g_signal_connect(G_OBJECT(pkd->autocomplete), "activate",
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1549 G_CALLBACK(autocomplete_activate_cb), pkd);
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1550
1593
1c7c5b99eae2 fixed keyword tree initialization
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1543
diff changeset
1551 if (!keyword_tree || !gtk_tree_model_get_iter_first(GTK_TREE_MODEL(keyword_tree), &iter))
1c7c5b99eae2 fixed keyword tree initialization
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1543
diff changeset
1552 {
1c7c5b99eae2 fixed keyword tree initialization
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1543
diff changeset
1553 /* keyword tree does not exist or is empty - fill with defaults */
1c7c5b99eae2 fixed keyword tree initialization
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1543
diff changeset
1554 keyword_tree_new_default();
1c7c5b99eae2 fixed keyword tree initialization
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1543
diff changeset
1555 }
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1556
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1557 store = gtk_tree_model_filter_new(GTK_TREE_MODEL(keyword_tree), NULL);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1558
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1559 gtk_tree_model_filter_set_modify_func(GTK_TREE_MODEL_FILTER(store),
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1560 FILTER_KEYWORD_COLUMN_COUNT,
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1561 filter_keyword_column_types,
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1562 bar_pane_keywords_filter_modify,
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1563 pkd,
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1564 NULL);
1428
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1565 gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(store),
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1566 bar_pane_keywords_filter_visible,
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1567 store,
04b9acf969fb added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1425
diff changeset
1568 NULL);
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1569
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1570 pkd->keyword_treeview = gtk_tree_view_new_with_model(store);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1571 g_object_unref(store);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1572
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1573 gtk_widget_set_size_request(pkd->keyword_treeview, -1, 400);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1574
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1575 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(pkd->keyword_treeview), FALSE);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1576
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1577 // gtk_tree_view_set_search_column(GTK_TREE_VIEW(pkd->keyword_treeview), FILTER_KEYWORD_COLUMN_);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1578
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1579 column = gtk_tree_view_column_new();
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1580 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1581
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1582 renderer = gtk_cell_renderer_text_new();
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1583 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1584
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1585 gtk_tree_view_column_add_attribute(column, renderer, "text", FILTER_KEYWORD_COLUMN_MARK);
1425
e1b082968bff fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1421
diff changeset
1586
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1587 gtk_tree_view_append_column(GTK_TREE_VIEW(pkd->keyword_treeview), column);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1588
1391
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1589 column = gtk_tree_view_column_new();
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1590 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1591 renderer = gtk_cell_renderer_toggle_new();
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1592 gtk_tree_view_column_pack_start(column, renderer, FALSE);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1593 gtk_tree_view_column_add_attribute(column, renderer, "active", FILTER_KEYWORD_COLUMN_TOGGLE);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1594 gtk_tree_view_column_add_attribute(column, renderer, "visible", FILTER_KEYWORD_COLUMN_IS_KEYWORD);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1595 g_signal_connect(G_OBJECT(renderer), "toggled",
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1596 G_CALLBACK(bar_pane_keywords_keyword_toggle), pkd);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1597
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1598 renderer = gtk_cell_renderer_text_new();
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1599 gtk_tree_view_column_pack_start(column, renderer, TRUE);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1600 gtk_tree_view_column_add_attribute(column, renderer, "text", FILTER_KEYWORD_COLUMN_NAME);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1601
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1602 gtk_tree_view_append_column(GTK_TREE_VIEW(pkd->keyword_treeview), column);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1603 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(pkd->keyword_treeview), column);
b2468a429b8e implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1389
diff changeset
1604
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1605 gtk_drag_source_set(pkd->keyword_treeview,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1606 GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1607 bar_pane_keywords_drag_types, n_keywords_drag_types,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1608 GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1609
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1610 g_signal_connect(G_OBJECT(pkd->keyword_treeview), "drag_data_get",
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1611 G_CALLBACK(bar_pane_keywords_dnd_get), pkd);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1612
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1613 g_signal_connect(G_OBJECT(pkd->keyword_treeview), "drag_begin",
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1614 G_CALLBACK(bar_pane_keywords_dnd_begin), pkd);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1615 g_signal_connect(G_OBJECT(pkd->keyword_treeview), "drag_end",
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1616 G_CALLBACK(bar_pane_keywords_dnd_end), pkd);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1617
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1618 gtk_drag_dest_set(pkd->keyword_treeview,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1619 GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1620 bar_pane_keywords_drop_types, n_keywords_drop_types,
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1621 GDK_ACTION_COPY | GDK_ACTION_MOVE);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1622
1392
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1623 g_signal_connect(G_OBJECT(pkd->keyword_treeview), "drag_data_received",
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1624 G_CALLBACK(bar_pane_keywords_dnd_receive), pkd);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1625
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1626 g_signal_connect(G_OBJECT(pkd->keyword_treeview), "drag_motion",
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1627 G_CALLBACK(bar_pane_keywords_dnd_motion), pkd);
9dbe64aa9e88 dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1391
diff changeset
1628
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2146
diff changeset
1629 g_signal_connect(G_OBJECT(pkd->keyword_treeview), "button_release_event",
1414
5d76fc72993f added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1396
diff changeset
1630 G_CALLBACK(bar_pane_keywords_menu_cb), pkd);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1631
2827
c4d45cde0dcb Bug fix: Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2826
diff changeset
1632 if (options->show_predefined_keyword_tree)
c4d45cde0dcb Bug fix: Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2826
diff changeset
1633 {
c4d45cde0dcb Bug fix: Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2826
diff changeset
1634 gtk_container_add(GTK_CONTAINER(scrolled), pkd->keyword_treeview);
c4d45cde0dcb Bug fix: Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2826
diff changeset
1635 gtk_widget_show(pkd->keyword_treeview);
c4d45cde0dcb Bug fix: Option to hide predefined keyword tree
Colin Clark <colin.clark@cclark.uk>
parents: 2826
diff changeset
1636 }
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1637
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1638 file_data_register_notify_func(bar_pane_keywords_notify_cb, pkd, NOTIFY_PRIORITY_LOW);
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1639
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1640 return pkd->widget;
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1641 }
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1642
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1643 GtkWidget *bar_pane_keywords_new_from_config(const gchar **attribute_names, const gchar **attribute_values)
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1644 {
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1645 gchar *id = g_strdup("keywords");
1471
89ed5df7dc28 update translated pane titles
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1469
diff changeset
1646 gchar *title = NULL;
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1647 gchar *key = g_strdup(COMMENT_KEY);
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1648 gboolean expanded = TRUE;
2289
0b284a48ac34 Bug fix #227 + enable user to set height of Keywords pane
Colin Clark <cclark@mcb.net>
parents: 2185
diff changeset
1649 gint height = 200;
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1650 GtkWidget *ret;
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1651
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1652 while (*attribute_names)
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1653 {
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1654 const gchar *option = *attribute_names++;
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1655 const gchar *value = *attribute_values++;
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1656
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1657 if (READ_CHAR_FULL("id", id)) continue;
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1658 if (READ_CHAR_FULL("title", title)) continue;
1315
4f8f11de5c36 Since READ_*() macros are now exported, do not hide
Laurent Monin <geeqie@norz.org>
parents: 1314
diff changeset
1659 if (READ_CHAR_FULL("key", key)) continue;
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1660 if (READ_BOOL_FULL("expanded", expanded)) continue;
2289
0b284a48ac34 Bug fix #227 + enable user to set height of Keywords pane
Colin Clark <cclark@mcb.net>
parents: 2185
diff changeset
1661 if (READ_INT_FULL("height", height)) continue;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1662
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1663
1464
6c71e4a9d06a be more verbose on parse errors
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1461
diff changeset
1664 log_printf("unknown attribute %s = %s\n", option, value);
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1665 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1666
2482
9b050f7e7b6c Fix #445: Info sidebar section heights
Colin Clark <colin.clark@cclark.uk>
parents: 2361
diff changeset
1667 options->info_keywords.height = height;
1471
89ed5df7dc28 update translated pane titles
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1469
diff changeset
1668 bar_pane_translate_title(PANE_KEYWORDS, id, &title);
2289
0b284a48ac34 Bug fix #227 + enable user to set height of Keywords pane
Colin Clark <cclark@mcb.net>
parents: 2185
diff changeset
1669 ret = bar_pane_keywords_new(id, title, key, expanded, height);
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1670 g_free(id);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1671 g_free(title);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1672 g_free(key);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1673 return ret;
1309
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1674 }
d89f8c4d593b config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1305
diff changeset
1675
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1676 void bar_pane_keywords_update_from_config(GtkWidget *pane, const gchar **attribute_names, const gchar **attribute_values)
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1677 {
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1678 PaneKeywordsData *pkd;
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1679
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1680 pkd = g_object_get_data(G_OBJECT(pane), "pane_data");
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1681 if (!pkd) return;
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1682
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1683 gchar *title = NULL;
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1684
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1685 while (*attribute_names)
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1686 {
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1687 const gchar *option = *attribute_names++;
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1688 const gchar *value = *attribute_values++;
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1689
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1690 if (READ_CHAR_FULL("title", title)) continue;
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1691 if (READ_CHAR_FULL("key", pkd->key)) continue;
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1692 if (READ_BOOL_FULL("expanded", pkd->pane.expanded)) continue;
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1693 if (READ_CHAR_FULL("id", pkd->pane.id)) continue;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1694
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1695
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1696 log_printf("unknown attribute %s = %s\n", option, value);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1697 }
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1698
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1699 if (title)
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1700 {
1471
89ed5df7dc28 update translated pane titles
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1469
diff changeset
1701 bar_pane_translate_title(PANE_KEYWORDS, pkd->pane.id, &title);
1469
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1702 gtk_label_set_text(GTK_LABEL(pkd->pane.title), title);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1703 g_free(title);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1704 }
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1705
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1706 bar_update_expander(pane);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1707 bar_pane_keywords_update(pkd);
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1708 }
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1709
b9ef2bfd9d95 added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1465
diff changeset
1710
2485
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1711 void bar_pane_keywords_entry_add_from_config(GtkWidget *pane, const gchar **attribute_names, const gchar **attribute_values)
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1712 {
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1713 PaneKeywordsData *pkd;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1714 gchar *path = NULL;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1715 GtkTreePath *tree_path;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1716
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1717 pkd = g_object_get_data(G_OBJECT(pane), "pane_data");
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1718 if (!pkd) return;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1719
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1720 while (*attribute_names)
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1721 {
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1722 const gchar *option = *attribute_names++;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1723 const gchar *value = *attribute_values++;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1724
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1725 if (READ_CHAR_FULL("path", path))
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1726 {
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1727 tree_path = gtk_tree_path_new_from_string(path);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1728 gtk_tree_view_expand_to_path(GTK_TREE_VIEW(pkd->keyword_treeview), tree_path);
2496
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1729 gtk_tree_path_free(tree_path);
724b89562e09 Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents: 2485
diff changeset
1730 pkd->expanded_rows = g_list_append(pkd->expanded_rows, g_strdup(path));
2485
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1731 continue;
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1732 }
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1733 log_printf("unknown attribute %s = %s\n", option, value);
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1734 }
0e9ff39bcdd3 Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents: 2482
diff changeset
1735 }
2824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1736
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1737 /*
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1738 *-----------------------------------------------------------------------------
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1739 * Autocomplete keywords
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1740 *-----------------------------------------------------------------------------
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1741 */
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1742
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1743 static gboolean autocomplete_activate_cb(GtkWidget *widget, gpointer data)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1744 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1745 PaneKeywordsData *pkd = data;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1746 gchar *entry_text;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1747 GtkTextBuffer *buffer;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1748 GtkTextIter iter;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1749 GtkTreeIter iter_t;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1750 gchar *kw_cr;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1751 gchar *kw_split;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1752 gboolean valid;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1753 gboolean found = FALSE;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1754 gchar *string;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1755
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1756 entry_text = g_strdup(gtk_entry_get_text(GTK_ENTRY(pkd->autocomplete)));
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1757 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pkd->keyword_view));
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1758
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1759 kw_split = strtok(entry_text, ",");
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1760 while (kw_split != NULL)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1761 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1762 kw_cr = g_strconcat(kw_split, "\n", NULL);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1763 g_strchug(kw_cr);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1764 gtk_text_buffer_get_end_iter(buffer, &iter);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1765 gtk_text_buffer_insert(buffer, &iter, kw_cr, -1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1766
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1767 kw_split = strtok(NULL, ",");
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1768 g_free(kw_cr);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1769 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1770
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1771 g_free(entry_text);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1772 entry_text = g_strdup(gtk_entry_get_text(GTK_ENTRY(pkd->autocomplete)));
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1773
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1774 gtk_entry_set_text(GTK_ENTRY(pkd->autocomplete), "");
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1775
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1776 valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(keyword_store), &iter_t);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1777 while (valid)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1778 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1779 gtk_tree_model_get (GTK_TREE_MODEL(keyword_store), &iter_t, 0, &string, -1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1780 if (g_strcmp0(entry_text, string) == 0)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1781 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1782 found = TRUE;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1783 break;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1784 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1785 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(keyword_store), &iter_t);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1786 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1787
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1788 if (!found)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1789 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1790 gtk_list_store_append (keyword_store, &iter_t);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1791 gtk_list_store_set(keyword_store, &iter_t, 0, entry_text, -1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1792 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1793
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1794 g_free(entry_text);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1795 return FALSE;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1796 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1797
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1798 gint autocomplete_sort_iter_compare_func (GtkTreeModel *model,
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1799 GtkTreeIter *a,
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1800 GtkTreeIter *b,
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1801 gpointer userdata)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1802 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1803 gint ret = 0;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1804 gchar *name1, *name2;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1805
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1806 gtk_tree_model_get(model, a, 0, &name1, -1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1807 gtk_tree_model_get(model, b, 0, &name2, -1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1808
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1809 if (name1 == NULL || name2 == NULL)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1810 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1811 if (name1 == NULL && name2 == NULL)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1812 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1813 ret = 0;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1814 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1815 else
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1816 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1817 ret = (name1 == NULL) ? -1 : 1;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1818 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1819 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1820 else
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1821 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1822 ret = g_utf8_collate(name1,name2);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1823 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1824
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1825 g_free(name1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1826 g_free(name2);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1827
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1828 return ret;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1829 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1830
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1831 static void autocomplete_keywords_list_load(const gchar *path)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1832 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1833 FILE *f;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1834 gchar s_buf[1024];
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1835 gchar *pathl;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1836 gint len;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1837 GtkTreeIter iter;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1838 GtkTreeSortable *sortable;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1839
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1840 if (keyword_store) return;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1841 keyword_store = gtk_list_store_new(1, G_TYPE_STRING);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1842
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1843 sortable = GTK_TREE_SORTABLE(keyword_store);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1844 gtk_tree_sortable_set_sort_func(sortable, 0, autocomplete_sort_iter_compare_func,
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1845 GINT_TO_POINTER(0), NULL);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1846
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1847 gtk_tree_sortable_set_sort_column_id(sortable, 0, GTK_SORT_ASCENDING);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1848
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1849 pathl = path_from_utf8(path);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1850 f = fopen(pathl, "r");
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1851 g_free(pathl);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1852
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1853 if (!f)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1854 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1855 log_printf("Warning: keywords file %s not loaded", pathl);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1856 return;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1857 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1858
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1859 /* first line must start with Keywords comment */
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1860 if (!fgets(s_buf, sizeof(s_buf), f) ||
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1861 strncmp(s_buf, "#Keywords", 9) != 0)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1862 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1863 fclose(f);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1864 log_printf("Warning: keywords file %s not loaded", pathl);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1865 return;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1866 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1867
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1868 while (fgets(s_buf, sizeof(s_buf), f))
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1869 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1870 if (s_buf[0]=='#') continue;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1871
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1872 len = strlen(s_buf);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1873 if( s_buf[len-1] == '\n' )
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1874 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1875 s_buf[len-1] = 0;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1876 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1877 gtk_list_store_append (keyword_store, &iter);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1878 gtk_list_store_set(keyword_store, &iter, 0, g_strdup(s_buf), -1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1879 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1880
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1881 fclose(f);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1882 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1883
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1884 static gboolean autocomplete_keywords_list_save(gchar *path)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1885 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1886 SecureSaveInfo *ssi;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1887 gchar *pathl;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1888 gchar *string;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1889 gchar *string_nl;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1890 GtkTreeIter iter;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1891 gboolean valid;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1892
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1893 pathl = path_from_utf8(path);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1894 ssi = secure_open(pathl);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1895 g_free(pathl);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1896
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1897 if (!ssi)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1898 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1899 log_printf(_("Error: Unable to write keywords list to: %s\n"), path);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1900 return FALSE;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1901 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1902
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1903 secure_fprintf(ssi, "#Keywords list\n");
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1904
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1905 valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(keyword_store), &iter);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1906
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1907 while (valid)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1908 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1909 gtk_tree_model_get (GTK_TREE_MODEL(keyword_store), &iter, 0, &string, -1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1910 string_nl = g_strconcat(string, "\n", NULL);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1911 secure_fprintf(ssi, "%s", string_nl);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1912
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1913 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(keyword_store), &iter);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1914
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1915 g_free(string_nl);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1916 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1917
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1918 secure_fprintf(ssi, "#end\n");
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1919 return (secure_close(ssi) == 0);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1920 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1921
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1922 GList *keyword_list_get()
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1923 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1924 GList *ret_list = NULL;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1925 gchar *string;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1926 gchar *string_nl;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1927 GtkTreeIter iter;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1928 gboolean valid;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1929
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1930 valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(keyword_store), &iter);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1931
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1932 while (valid)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1933 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1934 gtk_tree_model_get (GTK_TREE_MODEL(keyword_store), &iter, 0, &string, -1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1935 string_nl = g_strconcat(string, "\n", NULL);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1936 ret_list = g_list_append(ret_list, string);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1937 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(keyword_store), &iter);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1938
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1939 g_free(string_nl);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1940 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1941
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1942 return ret_list;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1943 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1944
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1945 void keyword_list_set(GList *keyword_list)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1946 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1947 GList *ret = NULL;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1948 GtkTreeIter iter;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1949
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1950 if (!keyword_list) return;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1951
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1952 gtk_list_store_clear(keyword_store);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1953
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1954 while (keyword_list)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1955 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1956 gtk_list_store_append (keyword_store, &iter);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1957 gtk_list_store_set(keyword_store, &iter, 0, keyword_list->data, -1);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1958
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1959 keyword_list = keyword_list->next;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1960 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1961 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1962
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1963 gboolean bar_keywords_autocomplete_focus(LayoutWindow *lw)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1964 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1965 GtkWidget *pane;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1966 GtkWidget *current_focus;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1967 GList *children;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1968 gboolean ret;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1969
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1970 current_focus = gtk_window_get_focus(GTK_WINDOW(lw->window));
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1971 pane = bar_find_pane_by_id(lw->bar, PANE_KEYWORDS, "keywords");
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1972
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1973 children = gtk_container_get_children(GTK_CONTAINER(pane));
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1974 children = g_list_last(children);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1975
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1976 if (current_focus == children->data)
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1977 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1978 ret = TRUE;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1979 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1980 else
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1981 {
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1982 gtk_widget_grab_focus(children->data);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1983 ret = FALSE;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1984 }
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1985
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1986 g_list_free(children);
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1987
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1988 return ret;
c9eded8ad4e0 Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents: 2819
diff changeset
1989 }
1291
abf5d1de9102 replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
1990 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */