diff options
Diffstat (limited to 'src/plugins/fs/namespace_create.c')
-rw-r--r-- | src/plugins/fs/namespace_create.c | 332 |
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 | ||
40 | static GladeXML * metaXML; | 40 | static GladeXML *metaXML; |
41 | 41 | ||
42 | 42 | ||
43 | void on_namespacemetaDataDialogKeywordRemoveButton_clicked_fs(gpointer dummy, | 43 | void |
44 | GtkWidget * uploadButton) { | 44 | on_namespacemetaDataDialogKeywordRemoveButton_clicked_fs (gpointer dummy, |
45 | handleListRemove(metaXML, | 45 | GtkWidget * |
46 | "namespaceMetaDataDialogKeywordList"); | 46 | uploadButton) |
47 | { | ||
48 | handleListRemove (metaXML, "namespaceMetaDataDialogKeywordList"); | ||
47 | } | 49 | } |
48 | 50 | ||
49 | void on_namespacemetaDataDialogMetaDataRemoveButton_clicked_fs(gpointer dummy, | 51 | void |
50 | GtkWidget * uploadButton) { | 52 | on_namespacemetaDataDialogMetaDataRemoveButton_clicked_fs (gpointer dummy, |
51 | handleListRemove(metaXML, | 53 | GtkWidget * |
52 | "namespaceMetaDataDialogMetaDataList"); | 54 | uploadButton) |
55 | { | ||
56 | handleListRemove (metaXML, "namespaceMetaDataDialogMetaDataList"); | ||
53 | } | 57 | } |
54 | 58 | ||
55 | void on_namespacemetaDataDialogKeywordAddButton_clicked_fs(gpointer dummy, | 59 | void |
56 | GtkWidget * uploadButton) { | 60 | on_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 | ||
62 | void on_namespacemetaDataDialogMetaDataAddButton_clicked_fs(gpointer dummy, | 69 | void |
63 | GtkWidget * uploadButton) { | 70 | on_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 | */ |
74 | static void on_keyword_list_selection_changed(gpointer signal, | 84 | static void |
75 | gpointer cls) { | 85 | on_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 | */ |
92 | static void on_metadata_list_selection_changed(gpointer signal, | 106 | static void |
93 | gpointer cls) { | 107 | on_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 | */ |
110 | void on_namespaceMetaDataValueEntry_changed_fs(gpointer dummy2, | 128 | void |
111 | GtkWidget * searchEntry) { | 129 | on_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 | */ |
130 | void on_namespaceKeywordEntry_changed_fs(gpointer dummy2, | 148 | void |
131 | GtkWidget * searchEntry) { | 149 | on_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 | ||
147 | void create_namespace_clicked_fs(GtkWidget * dummy1, | 163 | void |
148 | GtkWidget * dummy2) { | 164 | create_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 | } |