aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/fs/namespace_create.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/fs/namespace_create.c')
-rw-r--r--src/plugins/fs/namespace_create.c332
1 files changed, 164 insertions, 168 deletions
diff --git a/src/plugins/fs/namespace_create.c b/src/plugins/fs/namespace_create.c
index cdd24912..1182c0a6 100644
--- a/src/plugins/fs/namespace_create.c
+++ b/src/plugins/fs/namespace_create.c
@@ -37,224 +37,220 @@
37#include <extractor.h> 37#include <extractor.h>
38 38
39 39
40static GladeXML * metaXML; 40static GladeXML *metaXML;
41 41
42 42
43void on_namespacemetaDataDialogKeywordRemoveButton_clicked_fs(gpointer dummy, 43void
44 GtkWidget * uploadButton) { 44on_namespacemetaDataDialogKeywordRemoveButton_clicked_fs (gpointer dummy,
45 handleListRemove(metaXML, 45 GtkWidget *
46 "namespaceMetaDataDialogKeywordList"); 46 uploadButton)
47{
48 handleListRemove (metaXML, "namespaceMetaDataDialogKeywordList");
47} 49}
48 50
49void on_namespacemetaDataDialogMetaDataRemoveButton_clicked_fs(gpointer dummy, 51void
50 GtkWidget * uploadButton) { 52on_namespacemetaDataDialogMetaDataRemoveButton_clicked_fs (gpointer dummy,
51 handleListRemove(metaXML, 53 GtkWidget *
52 "namespaceMetaDataDialogMetaDataList"); 54 uploadButton)
55{
56 handleListRemove (metaXML, "namespaceMetaDataDialogMetaDataList");
53} 57}
54 58
55void on_namespacemetaDataDialogKeywordAddButton_clicked_fs(gpointer dummy, 59void
56 GtkWidget * uploadButton) { 60on_namespacemetaDataDialogKeywordAddButton_clicked_fs (gpointer dummy,
57 handleKeywordListUpdate(metaXML, 61 GtkWidget *
58 "namespaceKeywordEntry", 62 uploadButton)
59 "namespaceMetaDataDialogKeywordList"); 63{
64 handleKeywordListUpdate (metaXML,
65 "namespaceKeywordEntry",
66 "namespaceMetaDataDialogKeywordList");
60} 67}
61 68
62void on_namespacemetaDataDialogMetaDataAddButton_clicked_fs(gpointer dummy, 69void
63 GtkWidget * uploadButton) { 70on_namespacemetaDataDialogMetaDataAddButton_clicked_fs (gpointer dummy,
64 handleMetaDataListUpdate(metaXML, 71 GtkWidget *
65 "namespaceMetaDataDialogMetaTypeComboBox", 72 uploadButton)
66 "namespaceMetaDataValueEntry", 73{
67 "namespaceMetaDataDialogMetaDataList"); 74 handleMetaDataListUpdate (metaXML,
75 "namespaceMetaDataDialogMetaTypeComboBox",
76 "namespaceMetaDataValueEntry",
77 "namespaceMetaDataDialogMetaDataList");
68} 78}
69 79
70/** 80/**
71 * The selection of the keyword list changed. 81 * The selection of the keyword list changed.
72 * Update button status. 82 * Update button status.
73 */ 83 */
74static void on_keyword_list_selection_changed(gpointer signal, 84static void
75 gpointer cls) { 85on_keyword_list_selection_changed (gpointer signal, gpointer cls)
76 GtkTreeSelection * selection; 86{
77 GtkWidget * button; 87 GtkTreeSelection *selection;
88 GtkWidget *button;
78 89
79 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(glade_xml_get_widget(metaXML, 90 selection =
80 "namespaceMetaDataDialogKeywordList"))); 91 gtk_tree_view_get_selection (GTK_TREE_VIEW
81 button 92 (glade_xml_get_widget
82 = glade_xml_get_widget(metaXML, 93 (metaXML,
83 "nsMetaDataDialogKeywordRemoveButton"); 94 "namespaceMetaDataDialogKeywordList")));
84 gtk_widget_set_sensitive(button, 95 button =
85 gtk_tree_selection_count_selected_rows(selection) > 0); 96 glade_xml_get_widget (metaXML, "nsMetaDataDialogKeywordRemoveButton");
97 gtk_widget_set_sensitive (button,
98 gtk_tree_selection_count_selected_rows (selection)
99 > 0);
86} 100}
87 101
88/** 102/**
89 * The selection of the metadata list changed. 103 * The selection of the metadata list changed.
90 * Update button status. 104 * Update button status.
91 */ 105 */
92static void on_metadata_list_selection_changed(gpointer signal, 106static void
93 gpointer cls) { 107on_metadata_list_selection_changed (gpointer signal, gpointer cls)
94 GtkTreeSelection * selection; 108{
95 GtkWidget * button; 109 GtkTreeSelection *selection;
110 GtkWidget *button;
96 111
97 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(glade_xml_get_widget(metaXML, 112 selection =
98 "namespaceMetaDataDialogMetaDataList"))); 113 gtk_tree_view_get_selection (GTK_TREE_VIEW
99 button 114 (glade_xml_get_widget
100 = glade_xml_get_widget(metaXML, 115 (metaXML,
101 "nsMetaDataDialogMetaDataRemoveButton"); 116 "namespaceMetaDataDialogMetaDataList")));
102 gtk_widget_set_sensitive(button, 117 button =
103 gtk_tree_selection_count_selected_rows(selection) > 0); 118 glade_xml_get_widget (metaXML, "nsMetaDataDialogMetaDataRemoveButton");
119 gtk_widget_set_sensitive (button,
120 gtk_tree_selection_count_selected_rows (selection)
121 > 0);
104} 122}
105 123
106/** 124/**
107 * The user has edited the metadata entry. 125 * The user has edited the metadata entry.
108 * Update add button status. 126 * Update add button status.
109 */ 127 */
110void on_namespaceMetaDataValueEntry_changed_fs(gpointer dummy2, 128void
111 GtkWidget * searchEntry) { 129on_namespaceMetaDataValueEntry_changed_fs (gpointer dummy2,
112 const char * input; 130 GtkWidget * searchEntry)
113 GtkWidget * button; 131{
132 const char *input;
133 GtkWidget *button;
114 134
115 input = gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(metaXML, 135 input = gtk_entry_get_text (GTK_ENTRY (glade_xml_get_widget (metaXML,
116 "namespaceMetaDataValueEntry"))); 136 "namespaceMetaDataValueEntry")));
117 if (input == NULL) 137 if (input == NULL)
118 return; 138 return;
119 button 139 button
120 = glade_xml_get_widget(metaXML, 140 = glade_xml_get_widget (metaXML, "nsMetaDataDialogMetaDataAddButton");
121 "nsMetaDataDialogMetaDataAddButton"); 141 gtk_widget_set_sensitive (button, strlen (input) > 0);
122 gtk_widget_set_sensitive(button,
123 strlen(input) > 0);
124} 142}
125 143
126/** 144/**
127 * The user has edited the keyword entry. 145 * The user has edited the keyword entry.
128 * Update add button status. 146 * Update add button status.
129 */ 147 */
130void on_namespaceKeywordEntry_changed_fs(gpointer dummy2, 148void
131 GtkWidget * searchEntry) { 149on_namespaceKeywordEntry_changed_fs (gpointer dummy2, GtkWidget * searchEntry)
132 const char * input; 150{
133 GtkWidget * button; 151 const char *input;
152 GtkWidget *button;
134 153
135 input = gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(metaXML, 154 input = gtk_entry_get_text (GTK_ENTRY (glade_xml_get_widget (metaXML,
136 "namespaceKeywordEntry"))); 155 "namespaceKeywordEntry")));
137 if (input == NULL) 156 if (input == NULL)
138 return; 157 return;
139 button 158 button = glade_xml_get_widget (metaXML, "nsMetaDataDialogKeywordAddButton");
140 = glade_xml_get_widget(metaXML, 159 gtk_widget_set_sensitive (button, strlen (input) > 0);
141 "nsMetaDataDialogKeywordAddButton");
142 gtk_widget_set_sensitive(button,
143 strlen(input) > 0);
144} 160}
145 161
146 162
147void create_namespace_clicked_fs(GtkWidget * dummy1, 163void
148 GtkWidget * dummy2) { 164create_namespace_clicked_fs (GtkWidget * dummy1, GtkWidget * dummy2)
149 const char * namespaceName; 165{
150 GtkWidget * nameLine; 166 const char *namespaceName;
151 GtkWidget * dialog; 167 GtkWidget *nameLine;
152 GtkWidget * spin; 168 GtkWidget *dialog;
153 struct ECRS_MetaData * meta; 169 GtkWidget *spin;
154 struct ECRS_URI * keywordURI; 170 struct ECRS_MetaData *meta;
155 struct ECRS_URI * root; 171 struct ECRS_URI *keywordURI;
172 struct ECRS_URI *root;
156 HashCode512 namespaceId; 173 HashCode512 namespaceId;
157 HashCode512 rootEntry; 174 HashCode512 rootEntry;
158 175
159 DEBUG_BEGIN(); 176 DEBUG_BEGIN ();
160 metaXML 177 metaXML
161 = glade_xml_new(getGladeFileName(), 178 = glade_xml_new (getGladeFileName (),
162 "namespaceMetaDataDialog", 179 "namespaceMetaDataDialog", PACKAGE_NAME);
163 PACKAGE_NAME); 180 connectGladeWithPlugins (metaXML);
164 connectGladeWithPlugins(metaXML); 181 dialog = glade_xml_get_widget (metaXML, "namespaceMetaDataDialog");
165 dialog = glade_xml_get_widget(metaXML, 182 createMetaDataListTreeView (metaXML,
166 "namespaceMetaDataDialog"); 183 "namespaceMetaDataDialogMetaDataList",
167 createMetaDataListTreeView(metaXML, 184 NULL, NULL);
168 "namespaceMetaDataDialogMetaDataList", 185 g_signal_connect_data (gtk_tree_view_get_selection
169 NULL, 186 (GTK_TREE_VIEW
170 NULL); 187 (glade_xml_get_widget
171 g_signal_connect_data(gtk_tree_view_get_selection(GTK_TREE_VIEW(glade_xml_get_widget(metaXML, 188 (metaXML, "namespaceMetaDataDialogMetaDataList"))),
172 "namespaceMetaDataDialogMetaDataList"))), 189 "changed",
173 "changed", 190 G_CALLBACK (&on_metadata_list_selection_changed),
174 G_CALLBACK(&on_metadata_list_selection_changed), 191 NULL, NULL, 0);
175 NULL, 192 createKeywordListTreeView (metaXML, "namespaceMetaDataDialogKeywordList",
176 NULL, 193 NULL);
177 0); 194 g_signal_connect_data (gtk_tree_view_get_selection
178 createKeywordListTreeView(metaXML, 195 (GTK_TREE_VIEW
179 "namespaceMetaDataDialogKeywordList", 196 (glade_xml_get_widget
180 NULL); 197 (metaXML, "namespaceMetaDataDialogKeywordList"))),
181 g_signal_connect_data(gtk_tree_view_get_selection(GTK_TREE_VIEW(glade_xml_get_widget(metaXML, 198 "changed",
182 "namespaceMetaDataDialogKeywordList"))), 199 G_CALLBACK (&on_keyword_list_selection_changed),
183 "changed", 200 NULL, NULL, 0);
184 G_CALLBACK(&on_keyword_list_selection_changed),
185 NULL,
186 NULL,
187 0);
188 201
189 createMetaTypeComboBox(metaXML, 202 createMetaTypeComboBox (metaXML, "namespaceMetaDataDialogMetaTypeComboBox");
190 "namespaceMetaDataDialogMetaTypeComboBox"); 203 gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
191 gtk_dialog_set_default_response(GTK_DIALOG(dialog), 204 if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
192 GTK_RESPONSE_OK); 205 {
193 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { 206 meta
194 meta 207 = getMetaDataFromList (metaXML,
195 = getMetaDataFromList(metaXML, 208 "namespaceMetaDataDialogMetaDataList", NULL);
196 "namespaceMetaDataDialogMetaDataList", 209 keywordURI
197 NULL); 210 = getKeywordURIFromList (metaXML,
198 keywordURI 211 "namespaceMetaDataDialogKeywordList");
199 = getKeywordURIFromList(metaXML, 212 spin = glade_xml_get_widget (metaXML, "namespaceAnonymityspinbutton");
200 "namespaceMetaDataDialogKeywordList"); 213 nameLine = glade_xml_get_widget (metaXML, "namespaceRootEntry");
201 spin = glade_xml_get_widget(metaXML, 214 namespaceName = gtk_entry_get_text (GTK_ENTRY (nameLine));
202 "namespaceAnonymityspinbutton"); 215 if (namespaceName == NULL)
203 nameLine = glade_xml_get_widget(metaXML, 216 namespaceName = "root"; /* do NOT translate "root"! */
204 "namespaceRootEntry"); 217 hash (namespaceName, strlen (namespaceName), &rootEntry);
205 namespaceName = gtk_entry_get_text(GTK_ENTRY(nameLine)); 218 nameLine = glade_xml_get_widget (metaXML, "namespaceNameEntry");
206 if (namespaceName == NULL) 219 namespaceName = gtk_entry_get_text (GTK_ENTRY (nameLine));
207 namespaceName = "root"; /* do NOT translate "root"! */ 220 root = NS_createNamespace (ectx, cfg, gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin)), 1000, /* FIXME: priority */
208 hash(namespaceName, 221 get_time () + 2 * cronYEARS, /* FIXME: expiration */
209 strlen(namespaceName), 222 namespaceName, meta, keywordURI, &rootEntry);
210 &rootEntry); 223 if (root != NULL)
211 nameLine = glade_xml_get_widget(metaXML, 224 {
212 "namespaceNameEntry"); 225 ECRS_getNamespaceId (root, &namespaceId);
213 namespaceName = gtk_entry_get_text(GTK_ENTRY(nameLine)); 226 addTabForNamespace (NULL, namespaceName, &namespaceId, meta, 0);
214 root = NS_createNamespace(ectx, 227 ECRS_freeUri (root);
215 cfg, 228 }
216 gtk_spin_button_get_value_as_int 229 else
217 (GTK_SPIN_BUTTON(spin)), 230 {
218 1000, /* FIXME: priority */ 231 GtkWidget *dialog;
219 get_time() + 2 * cronYEARS, /* FIXME: expiration */
220 namespaceName,
221 meta,
222 keywordURI,
223 &rootEntry);
224 if (root != NULL) {
225 ECRS_getNamespaceId(root,
226 &namespaceId);
227 addTabForNamespace(NULL,
228 namespaceName,
229 &namespaceId,
230 meta,
231 0);
232 ECRS_freeUri(root);
233 } else {
234 GtkWidget * dialog;
235 232
236 /* IMPROVE-ME: we could check if the 233 /* IMPROVE-ME: we could check if the
237 namespace exists as the user 234 namespace exists as the user
238 enters its name and disable the 235 enters its name and disable the
239 "Ok" button unless the name is unique */ 236 "Ok" button unless the name is unique */
240 dialog = gtk_message_dialog_new 237 dialog = gtk_message_dialog_new
241 (NULL, 238 (NULL,
242 GTK_DIALOG_MODAL, 239 GTK_DIALOG_MODAL,
243 GTK_MESSAGE_ERROR, 240 GTK_MESSAGE_ERROR,
244 GTK_BUTTONS_CLOSE, 241 GTK_BUTTONS_CLOSE,
245 _("Failed to create namespace `%s'." 242 _("Failed to create namespace `%s'."
246 "Consult logs, most likely error is" 243 "Consult logs, most likely error is"
247 " that a namespace with that name " 244 " that a namespace with that name "
248 "already exists."), 245 "already exists."), namespaceName);
249 namespaceName); 246 gtk_dialog_run (GTK_DIALOG (dialog));
250 gtk_dialog_run(GTK_DIALOG(dialog)); 247 gtk_widget_destroy (dialog);
251 gtk_widget_destroy(dialog); 248 }
249 ECRS_freeMetaData (meta);
250 ECRS_freeUri (keywordURI);
252 } 251 }
253 ECRS_freeMetaData(meta); 252 gtk_widget_destroy (dialog);
254 ECRS_freeUri(keywordURI); 253 UNREF (metaXML);
255 }
256 gtk_widget_destroy(dialog);
257 UNREF(metaXML);
258 metaXML = NULL; 254 metaXML = NULL;
259 DEBUG_END(); 255 DEBUG_END ();
260} 256}