diff --git a/extensions/adblock.c b/extensions/adblock.c index e73aea67..8305a1de 100644 --- a/extensions/adblock.c +++ b/extensions/adblock.c @@ -259,8 +259,10 @@ static void adblock_preferences_add_clicked_cb (GtkWidget* button, GtkTreeModel* model) { + GtkEntry* entry = g_object_get_data (G_OBJECT (button), "entry"); gtk_list_store_insert_with_values (GTK_LIST_STORE (model), - NULL, 0, 0, "", -1); + NULL, 0, 0, gtk_entry_get_text (entry), -1); + gtk_entry_set_text (entry, ""); } static void @@ -273,6 +275,15 @@ adblock_preferences_remove_clicked_cb (GtkWidget* button, gtk_list_store_remove (GTK_LIST_STORE (model), &iter); } +#if GTK_CHECK_VERSION (2, 18, 0) +static gboolean +adblock_activate_link_cb (GtkWidget* label, + const gchar* uri) +{ + return sokoke_show_uri (gtk_widget_get_screen (label), uri, GDK_CURRENT_TIME, NULL); +} +#endif + static GtkWidget* adblock_get_preferences_dialog (MidoriExtension* extension) { @@ -292,6 +303,8 @@ adblock_get_preferences_dialog (MidoriExtension* extension) gchar** filters; GtkWidget* vbox; GtkWidget* button; + gchar* description; + GtkWidget* entry; #if HAVE_OSX GtkWidget* icon; #endif @@ -325,6 +338,28 @@ adblock_get_preferences_dialog (MidoriExtension* extension) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 12); + vbox = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 4); + button = gtk_label_new (NULL); + description = g_strdup_printf (_( + "Type the address of a preconfigured filter list in the text entry " + "and click \"Add\" to add it to the list. " + "You can find more lists at %s."), + #if GTK_CHECK_VERSION (2, 18, 0) + "easylist.adblockplus.org"); + #else + "http://easylist.adblockplus.org/"); + #endif + #if GTK_CHECK_VERSION (2, 18, 0) + g_signal_connect (button, "activate-link", + G_CALLBACK (adblock_activate_link_cb), NULL); + #endif + gtk_label_set_markup (GTK_LABEL (button), description); + g_free (description); + gtk_label_set_line_wrap (GTK_LABEL (button), TRUE); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4); + entry = gtk_entry_new (); + gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 4); liststore = gtk_list_store_new (1, G_TYPE_STRING); g_object_connect (liststore, "signal::row-inserted", @@ -361,7 +396,7 @@ adblock_get_preferences_dialog (MidoriExtension* extension) gtk_container_add (GTK_CONTAINER (scrolled), treeview); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled), GTK_SHADOW_IN); - gtk_box_pack_start (GTK_BOX (hbox), scrolled, TRUE, TRUE, 5); + gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE, 5); filters = midori_extension_get_string_list (extension, "filters", NULL); if (filters != NULL) @@ -377,6 +412,7 @@ adblock_get_preferences_dialog (MidoriExtension* extension) vbox = gtk_vbox_new (FALSE, 4); gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 4); button = gtk_button_new_from_stock (GTK_STOCK_ADD); + g_object_set_data (G_OBJECT (button), "entry", entry); g_signal_connect (button, "clicked", G_CALLBACK (adblock_preferences_add_clicked_cb), liststore); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);