Mercurial > hg > forks > geeqie
annotate src/bar_keywords.c @ 2826:d0c6c5ae586b
Option to hide predefined keyword tree
Selected on Preferences/General
author | Colin Clark <colin.clark@cclark.uk> |
---|---|
date | Sun, 26 Aug 2018 19:32:38 +0100 |
parents | c9eded8ad4e0 |
children | c4d45cde0dcb |
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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 703 if (src_valid && gtk_tree_store_is_ancestor(GTK_TREE_STORE(keyword_tree), &src_kw_iter, &dest_kw_iter)) |
704 { | |
705 /* can't move to it's own child */ | |
706 return; | |
707 } | |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
708 |
1396 | 709 if (src_valid && keyword_compare(keyword_tree, &src_kw_iter, &dest_kw_iter) == 0) |
710 { | |
711 /* can't move to itself */ | |
712 return; | |
713 } | |
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 | 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 | 809 if (tree_view == gtk_drag_get_source_widget(context)) |
810 gdk_drag_status(context, GDK_ACTION_MOVE, time); | |
811 else | |
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 | 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 | 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 | 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 | 990 |
991 cdd->is_keyword = is_keyword; | |
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 | 1414 static gboolean bar_pane_keywords_menu_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) |
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 | 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 | 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 |
1291
abf5d1de9102
replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff
changeset
|
1632 gtk_container_add(GTK_CONTAINER(scrolled), pkd->keyword_treeview); |
abf5d1de9102
replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff
changeset
|
1633 gtk_widget_show(pkd->keyword_treeview); |
abf5d1de9102
replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff
changeset
|
1634 |
abf5d1de9102
replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff
changeset
|
1635 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
|
1636 |
abf5d1de9102
replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff
changeset
|
1637 return pkd->widget; |
abf5d1de9102
replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff
changeset
|
1638 } |
1309
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1639 |
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1640 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
|
1641 { |
1469
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1642 gchar *id = g_strdup("keywords"); |
1471
89ed5df7dc28
update translated pane titles
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1469
diff
changeset
|
1643 gchar *title = NULL; |
1309
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1644 gchar *key = g_strdup(COMMENT_KEY); |
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1645 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
|
1646 gint height = 200; |
1469
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1647 GtkWidget *ret; |
1309
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1648 |
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1649 while (*attribute_names) |
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1650 { |
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1651 const gchar *option = *attribute_names++; |
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1652 const gchar *value = *attribute_values++; |
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1653 |
1469
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1654 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
|
1655 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
|
1656 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
|
1657 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
|
1658 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
|
1659 |
1309
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1660 |
1464
6c71e4a9d06a
be more verbose on parse errors
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1461
diff
changeset
|
1661 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
|
1662 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1663 |
2482
9b050f7e7b6c
Fix #445: Info sidebar section heights
Colin Clark <colin.clark@cclark.uk>
parents:
2361
diff
changeset
|
1664 options->info_keywords.height = height; |
1471
89ed5df7dc28
update translated pane titles
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1469
diff
changeset
|
1665 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
|
1666 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
|
1667 g_free(id); |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1668 g_free(title); |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1669 g_free(key); |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1670 return ret; |
1309
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1671 } |
d89f8c4d593b
config file format changed to XML
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1305
diff
changeset
|
1672 |
1469
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1673 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
|
1674 { |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1675 PaneKeywordsData *pkd; |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1676 |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1677 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
|
1678 if (!pkd) return; |
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 gchar *title = NULL; |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1681 |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1682 while (*attribute_names) |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1683 { |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1684 const gchar *option = *attribute_names++; |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1685 const gchar *value = *attribute_values++; |
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 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
|
1688 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
|
1689 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
|
1690 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
|
1691 |
1469
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1692 |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1693 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
|
1694 } |
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 if (title) |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1697 { |
1471
89ed5df7dc28
update translated pane titles
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1469
diff
changeset
|
1698 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
|
1699 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
|
1700 g_free(title); |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1701 } |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1702 |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1703 bar_update_expander(pane); |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1704 bar_pane_keywords_update(pkd); |
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 |
b9ef2bfd9d95
added a possibility to update existing bars from config
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
1707 |
2485
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1708 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
|
1709 { |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1710 PaneKeywordsData *pkd; |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1711 gchar *path = NULL; |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1712 GtkTreePath *tree_path; |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1713 |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1714 pkd = g_object_get_data(G_OBJECT(pane), "pane_data"); |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1715 if (!pkd) return; |
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 while (*attribute_names) |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1718 { |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1719 const gchar *option = *attribute_names++; |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1720 const gchar *value = *attribute_values++; |
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 if (READ_CHAR_FULL("path", path)) |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1723 { |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1724 tree_path = gtk_tree_path_new_from_string(path); |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1725 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
|
1726 gtk_tree_path_free(tree_path); |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2485
diff
changeset
|
1727 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
|
1728 continue; |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1729 } |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1730 log_printf("unknown attribute %s = %s\n", option, value); |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1731 } |
0e9ff39bcdd3
Remember keywords layout
Colin Clark <colin.clark@cclark.uk>
parents:
2482
diff
changeset
|
1732 } |
2824
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1733 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1734 /* |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1735 *----------------------------------------------------------------------------- |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1736 * Autocomplete keywords |
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 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1740 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
|
1741 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1742 PaneKeywordsData *pkd = data; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1743 gchar *entry_text; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1744 GtkTextBuffer *buffer; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1745 GtkTextIter iter; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1746 GtkTreeIter iter_t; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1747 gchar *kw_cr; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1748 gchar *kw_split; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1749 gboolean valid; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1750 gboolean found = FALSE; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1751 gchar *string; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1752 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1753 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
|
1754 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
|
1755 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1756 kw_split = strtok(entry_text, ","); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1757 while (kw_split != NULL) |
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_cr = g_strconcat(kw_split, "\n", NULL); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1760 g_strchug(kw_cr); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1761 gtk_text_buffer_get_end_iter(buffer, &iter); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1762 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
|
1763 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1764 kw_split = strtok(NULL, ","); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1765 g_free(kw_cr); |
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 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1768 g_free(entry_text); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1769 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
|
1770 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1771 gtk_entry_set_text(GTK_ENTRY(pkd->autocomplete), ""); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1772 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1773 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
|
1774 while (valid) |
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 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
|
1777 if (g_strcmp0(entry_text, string) == 0) |
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 found = TRUE; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1780 break; |
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 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
|
1783 } |
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 if (!found) |
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 gtk_list_store_append (keyword_store, &iter_t); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1788 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
|
1789 } |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1790 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1791 g_free(entry_text); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1792 return FALSE; |
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 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1795 gint autocomplete_sort_iter_compare_func (GtkTreeModel *model, |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1796 GtkTreeIter *a, |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1797 GtkTreeIter *b, |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1798 gpointer userdata) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1799 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1800 gint ret = 0; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1801 gchar *name1, *name2; |
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 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
|
1804 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
|
1805 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1806 if (name1 == NULL || name2 == NULL) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1807 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1808 if (name1 == NULL && name2 == NULL) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1809 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1810 ret = 0; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1811 } |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1812 else |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1813 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1814 ret = (name1 == NULL) ? -1 : 1; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1815 } |
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 else |
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 ret = g_utf8_collate(name1,name2); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1820 } |
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 g_free(name1); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1823 g_free(name2); |
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 return ret; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1826 } |
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 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
|
1829 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1830 FILE *f; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1831 gchar s_buf[1024]; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1832 gchar *pathl; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1833 gint len; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1834 GtkTreeIter iter; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1835 GtkTreeSortable *sortable; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1836 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1837 if (keyword_store) return; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1838 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
|
1839 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1840 sortable = GTK_TREE_SORTABLE(keyword_store); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1841 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
|
1842 GINT_TO_POINTER(0), NULL); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1843 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1844 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
|
1845 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1846 pathl = path_from_utf8(path); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1847 f = fopen(pathl, "r"); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1848 g_free(pathl); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1849 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1850 if (!f) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1851 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1852 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
|
1853 return; |
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 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1856 /* first line must start with Keywords comment */ |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1857 if (!fgets(s_buf, sizeof(s_buf), f) || |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1858 strncmp(s_buf, "#Keywords", 9) != 0) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1859 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1860 fclose(f); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1861 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
|
1862 return; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1863 } |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1864 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1865 while (fgets(s_buf, sizeof(s_buf), f)) |
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 if (s_buf[0]=='#') continue; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1868 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1869 len = strlen(s_buf); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1870 if( s_buf[len-1] == '\n' ) |
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 s_buf[len-1] = 0; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1873 } |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1874 gtk_list_store_append (keyword_store, &iter); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1875 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
|
1876 } |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1877 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1878 fclose(f); |
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 static gboolean autocomplete_keywords_list_save(gchar *path) |
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 SecureSaveInfo *ssi; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1884 gchar *pathl; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1885 gchar *string; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1886 gchar *string_nl; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1887 GtkTreeIter iter; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1888 gboolean valid; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1889 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1890 pathl = path_from_utf8(path); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1891 ssi = secure_open(pathl); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1892 g_free(pathl); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1893 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1894 if (!ssi) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1895 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1896 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
|
1897 return FALSE; |
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 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1900 secure_fprintf(ssi, "#Keywords list\n"); |
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 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
|
1903 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1904 while (valid) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1905 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1906 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
|
1907 string_nl = g_strconcat(string, "\n", NULL); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1908 secure_fprintf(ssi, "%s", string_nl); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1909 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1910 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
|
1911 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1912 g_free(string_nl); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1913 } |
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 secure_fprintf(ssi, "#end\n"); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1916 return (secure_close(ssi) == 0); |
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 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1919 GList *keyword_list_get() |
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 GList *ret_list = NULL; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1922 gchar *string; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1923 gchar *string_nl; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1924 GtkTreeIter iter; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1925 gboolean valid; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1926 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1927 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
|
1928 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1929 while (valid) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1930 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1931 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
|
1932 string_nl = g_strconcat(string, "\n", NULL); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1933 ret_list = g_list_append(ret_list, string); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1934 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
|
1935 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1936 g_free(string_nl); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1937 } |
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 return ret_list; |
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 void keyword_list_set(GList *keyword_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 GList *ret = NULL; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1945 GtkTreeIter iter; |
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 if (!keyword_list) return; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1948 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1949 gtk_list_store_clear(keyword_store); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1950 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1951 while (keyword_list) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1952 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1953 gtk_list_store_append (keyword_store, &iter); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1954 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
|
1955 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1956 keyword_list = keyword_list->next; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1957 } |
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 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1960 gboolean bar_keywords_autocomplete_focus(LayoutWindow *lw) |
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 GtkWidget *pane; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1963 GtkWidget *current_focus; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1964 GList *children; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1965 gboolean ret; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1966 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1967 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
|
1968 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
|
1969 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1970 children = gtk_container_get_children(GTK_CONTAINER(pane)); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1971 children = g_list_last(children); |
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 if (current_focus == children->data) |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1974 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1975 ret = TRUE; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1976 } |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1977 else |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1978 { |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1979 gtk_widget_grab_focus(children->data); |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1980 ret = FALSE; |
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 |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1983 g_list_free(children); |
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 return ret; |
c9eded8ad4e0
Fix #305: Faster Tagging (Keywords)
Colin Clark <colin.clark@cclark.uk>
parents:
2819
diff
changeset
|
1986 } |
1291
abf5d1de9102
replaced bar_info with an universal bar, restored the original
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff
changeset
|
1987 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |