1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
static int addNamespace(void * arg,
const char * namespaceName,
const HashCode512 * namespaceId,
const struct ECRS_MetaData * md,
int rating) {
GtkListStore * model = arg;
GtkTreeIter iter;
EncName enc;
char * name;
struct ECRS_MetaData * dmd;
char * desc;
size_t n;
DEBUG_BEGIN();
hash2enc(namespaceId,
&enc);
if (md == NULL) {
dmd = NULL;
desc = STRDUP("");
} else {
dmd = ECRS_dupMetaData(md);
desc = ECRS_getFirstFromMetaData(md,
EXTRACTOR_DESCRIPTION,
EXTRACTOR_TITLE,
EXTRACTOR_AUTHOR,
EXTRACTOR_GENRE,
EXTRACTOR_SUBJECT,
EXTRACTOR_CREATOR,
EXTRACTOR_PRODUCER,
EXTRACTOR_GROUP,
EXTRACTOR_CREATED_FOR,
EXTRACTOR_SUMMARY,
EXTRACTOR_OWNER,
-1);
if (desc == NULL)
desc = STRDUP("");
}
n = strlen(desc) + 64;
name = MALLOC(n);
SNPRINTF(name,
n,
"%s: %*.s",
desc,
20,
&enc);
gtk_list_store_append(model,
&iter);
gtk_list_store_set(model,
&iter,
NS_SEARCH_DESCRIPTION, name,
NS_SEARCH_ENCNAME, &enc,
NS_SEARCH_METADATA, dmd,
NS_SEARCH_RATING, rating,
-1);
FREE(name);
DEBUG_END();
return OK;
}
#if 0
/**
* cron job that periodically updates the model for the
* namespace selection in the search vbox.
*
* FIXME: replace with callback!
*/
static void updateNCBModelSafe(void * unused) {
GtkWidget * searchNamespaceCB;
GtkListStore * model;
GtkTreeIter iter;
model = gtk_list_store_new(NS_SEARCH_NUM,
G_TYPE_STRING, /* what we show */
G_TYPE_STRING, /* EncName of namespace */
G_TYPE_POINTER,
G_TYPE_INT); /* Meta-data about namespace */
gtk_list_store_append(model,
&iter);
gtk_list_store_set(model,
&iter,
NS_SEARCH_DESCRIPTION, _("globally"),
NS_SEARCH_ENCNAME, NULL,
NS_SEARCH_METADATA, NULL,
NS_SEARCH_RATING, 0,
-1);
NS_listNamespaces(ectx,
cfg,
NO,
&addNamespace,
model);
searchNamespaceCB
= glade_xml_get_widget(getMainXML(),
"searchNamespaceComboBoxEntry");
gtk_combo_box_set_model(GTK_COMBO_BOX(searchNamespaceCB),
GTK_TREE_MODEL(model));
if (gtk_combo_box_entry_get_text_column(GTK_COMBO_BOX_ENTRY(searchNamespaceCB)) == -1)
gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(searchNamespaceCB),
0);
if (-1 == gtk_combo_box_get_active(GTK_COMBO_BOX(searchNamespaceCB)))
gtk_combo_box_set_active(GTK_COMBO_BOX(searchNamespaceCB),
0);
}
static void updateNCBModel(void * dummy) {
gtkSaveCall(&updateNCBModelSafe, NULL);
}
#endif
|