aboutsummaryrefslogtreecommitdiffhomepage
path: root/uzbl-core.c
diff options
context:
space:
mode:
authorGravatar Robert Manea <gotmor@gmail.com>2009-10-18 18:04:41 +0200
committerGravatar Robert Manea <gotmor@gmail.com>2009-10-18 18:04:41 +0200
commit9432a991bc3acd3fbc61468529aa0d620320ea75 (patch)
tree81c985662063822489d984455a708f218d18e118 /uzbl-core.c
parent6e1cdd5eef34745223212ec154f2c0ff56f1f88c (diff)
added menu_add/menu_remove commands
Diffstat (limited to 'uzbl-core.c')
-rw-r--r--uzbl-core.c57
1 files changed, 56 insertions, 1 deletions
diff --git a/uzbl-core.c b/uzbl-core.c
index 0e8c67f..94641ff 100644
--- a/uzbl-core.c
+++ b/uzbl-core.c
@@ -622,7 +622,9 @@ struct {const char *key; CommandInfo value;} cmdlist[] =
* the user, technically events and requests are the very same thing
*/
{ "request", {event, TRUE} },
- { "update_gui", {update_gui, TRUE} }
+ { "update_gui", {update_gui, TRUE} },
+ { "menu_add", {menu_add, 0} },
+ { "menu_remove", {menu_remove, 0} }
};
void
@@ -684,6 +686,58 @@ update_gui(WebKitWebView *page, GArray *argv, GString *result) {
}
void
+menu_add(WebKitWebView *page, GArray *argv, GString *result) {
+ (void) page;
+ (void) result;
+ MenuItem *m;
+ gchar *item_cmd = NULL;
+
+ if(!uzbl.gui.menu_items)
+ uzbl.gui.menu_items = g_ptr_array_new();
+
+ if(argv_idx(argv, 1))
+ item_cmd = g_strdup(argv_idx(argv, 1));
+
+ if(argv_idx(argv, 0)) {
+ m = malloc(sizeof(MenuItem));
+ m->name = g_strdup(argv_idx(argv, 0));
+ m->cmd = g_strdup(item_cmd?item_cmd:"");
+ g_ptr_array_add(uzbl.gui.menu_items, m);
+ }
+ else
+ g_free(item_cmd);
+
+}
+
+void
+menu_remove(WebKitWebView *page, GArray *argv, GString *result) {
+ (void) page;
+ (void) result;
+ MenuItem *mi;
+ gchar *name = NULL;
+ guint i=0;
+
+ if(!uzbl.gui.menu_items)
+ return;
+
+ if(argv_idx(argv, 0))
+ name = argv_idx(argv, 0);
+ else
+ return;
+
+ for(i=0; i < uzbl.gui.menu_items->len; i++) {
+ mi = g_ptr_array_index(uzbl.gui.menu_items, i);
+
+ if(!strcmp(name, mi->name)) {
+ g_free(mi->name);
+ g_free(mi->cmd);
+ g_free(mi);
+ g_ptr_array_remove_index(uzbl.gui.menu_items, i);
+ }
+ }
+}
+
+void
event(WebKitWebView *page, GArray *argv, GString *result) {
(void) page; (void) result;
GString *event_name;
@@ -1760,6 +1814,7 @@ create_browser () {
"signal::download-requested", (GCallback)download_cb, NULL,
"signal::create-web-view", (GCallback)create_web_view_cb, NULL,
"signal::mime-type-policy-decision-requested", (GCallback)mime_policy_cb, NULL,
+ "signal::populate-popup", (GCallback)populate_popup_cb, NULL,
NULL);
}