Handle search engines in MidoriBrowser and simplify sokoke_magic_uri
This commit is contained in:
parent
4bf4e5cd63
commit
713091134f
6 changed files with 47 additions and 60 deletions
|
@ -1848,7 +1848,11 @@ main (int argc,
|
|||
g_free (current_dir);
|
||||
}
|
||||
else
|
||||
uri_ready = sokoke_magic_uri (uri, NULL, NULL);
|
||||
{
|
||||
uri_ready = sokoke_magic_uri (uri);
|
||||
if (!uri_ready)
|
||||
uri_ready = g_strdup (uri_ready);
|
||||
}
|
||||
katze_item_set_uri (item, uri_ready);
|
||||
g_free (uri_ready);
|
||||
katze_array_add_item (_session, item);
|
||||
|
|
|
@ -464,7 +464,9 @@ midori_app_command_received (MidoriApp* app,
|
|||
first = (open_external_pages_in == MIDORI_NEW_PAGE_CURRENT);
|
||||
while (*uris)
|
||||
{
|
||||
gchar* fixed_uri = sokoke_magic_uri (*uris, NULL, NULL);
|
||||
gchar* fixed_uri = sokoke_magic_uri (*uris);
|
||||
if (!fixed_uri)
|
||||
fixed_uri = g_strdup (*uris);
|
||||
if (first)
|
||||
{
|
||||
midori_browser_set_current_uri (browser, fixed_uri);
|
||||
|
|
|
@ -2954,7 +2954,9 @@ midori_browser_open_bookmark (MidoriBrowser* browser,
|
|||
return;
|
||||
|
||||
/* Imported bookmarks may lack a protocol */
|
||||
uri_fixed = sokoke_magic_uri (uri, NULL, NULL);
|
||||
uri_fixed = sokoke_magic_uri (uri);
|
||||
if (!uri_fixed)
|
||||
uri_fixed = g_strdup (uri);
|
||||
|
||||
/* FIXME: Use the same binary that is running right now */
|
||||
if (katze_item_get_meta_integer (item, "app") != -1)
|
||||
|
@ -3770,37 +3772,43 @@ _action_location_submit_uri (GtkAction* action,
|
|||
{
|
||||
gchar* stripped_uri;
|
||||
gchar* new_uri;
|
||||
KatzeItem* item;
|
||||
gint n;
|
||||
|
||||
stripped_uri = g_strdup (uri);
|
||||
g_strstrip (stripped_uri);
|
||||
item = NULL;
|
||||
new_uri = sokoke_magic_uri (stripped_uri, browser->search_engines, &item);
|
||||
new_uri = sokoke_magic_uri (stripped_uri);
|
||||
if (!new_uri)
|
||||
new_uri = sokoke_search_uri (browser->location_entry_search, stripped_uri);
|
||||
g_free (stripped_uri);
|
||||
|
||||
if (item)
|
||||
{
|
||||
gchar* title;
|
||||
GdkPixbuf* icon;
|
||||
const gchar* icon_name;
|
||||
gchar** parts;
|
||||
gchar* keywords = NULL;
|
||||
const gchar* search_uri = NULL;
|
||||
|
||||
title = g_strdup_printf (_("Search with %s"), katze_item_get_name (item));
|
||||
icon = midori_search_action_get_icon (item, GTK_WIDGET (browser), &icon_name);
|
||||
if (!icon)
|
||||
/* Do we have a keyword and a string? */
|
||||
parts = g_strsplit (stripped_uri, " ", 2);
|
||||
if (parts[0])
|
||||
{
|
||||
GdkScreen* screen = gtk_widget_get_screen (GTK_WIDGET (browser));
|
||||
GtkIconTheme* icon_theme = gtk_icon_theme_get_for_screen (screen);
|
||||
icon = gtk_icon_theme_load_icon (icon_theme, icon_name, 16, 0, NULL);
|
||||
KatzeItem* item;
|
||||
if ((item = katze_array_find_token (browser->search_engines, parts[0])))
|
||||
{
|
||||
keywords = g_strdup (parts[1] ? parts[1] : "");
|
||||
search_uri = katze_item_get_uri (item);
|
||||
}
|
||||
}
|
||||
midori_location_action_add_item (MIDORI_LOCATION_ACTION (action),
|
||||
uri, icon, title);
|
||||
if (icon)
|
||||
g_object_unref (icon);
|
||||
g_free (title);
|
||||
g_strfreev (parts);
|
||||
|
||||
if (keywords)
|
||||
g_free (stripped_uri);
|
||||
else
|
||||
{
|
||||
keywords = stripped_uri;
|
||||
search_uri = browser->location_entry_search;
|
||||
}
|
||||
new_uri = sokoke_search_uri (search_uri, keywords);
|
||||
|
||||
g_free (keywords);
|
||||
}
|
||||
else
|
||||
g_free (stripped_uri);
|
||||
|
||||
if (new_tab)
|
||||
{
|
||||
|
|
|
@ -1307,9 +1307,7 @@ gtk_widget_button_press_event_cb (WebKitWebView* web_view,
|
|||
/* Hold Alt to search for the selected word */
|
||||
if (event->state & GDK_MOD1_MASK)
|
||||
{
|
||||
KatzeArray* empty_array = katze_array_new (KATZE_TYPE_ITEM);
|
||||
new_uri = sokoke_magic_uri (uri, empty_array, NULL);
|
||||
g_object_unref (empty_array);
|
||||
new_uri = sokoke_magic_uri (uri);
|
||||
if (!new_uri)
|
||||
{
|
||||
gchar* search;
|
||||
|
@ -1582,7 +1580,9 @@ midori_web_view_menu_new_tab_activate_cb (GtkWidget* widget,
|
|||
}
|
||||
else
|
||||
{
|
||||
gchar* uri = sokoke_magic_uri (data, NULL, NULL);
|
||||
gchar* uri = sokoke_magic_uri (data);
|
||||
if (!uri)
|
||||
uri = g_strdup (data);
|
||||
g_signal_emit (view, signals[NEW_TAB], 0, uri,
|
||||
view->open_tabs_in_the_background);
|
||||
g_free (uri);
|
||||
|
|
|
@ -573,29 +573,21 @@ gchar* sokoke_search_uri (const gchar* uri,
|
|||
/**
|
||||
* sokoke_magic_uri:
|
||||
* @uri: a string typed by a user
|
||||
* @search_engines: search engines
|
||||
* @item: the location to store a #KatzeItem
|
||||
*
|
||||
* Takes a string that was typed by a user,
|
||||
* guesses what it is, and returns an URI.
|
||||
*
|
||||
* If it was a search, @item will contain the engine.
|
||||
* If it was a search, %NULL will be returned.
|
||||
*
|
||||
* Return value: a newly allocated URI
|
||||
* Return value: a newly allocated URI, or %NULL
|
||||
**/
|
||||
gchar*
|
||||
sokoke_magic_uri (const gchar* uri,
|
||||
KatzeArray* search_engines,
|
||||
KatzeItem** found_item)
|
||||
sokoke_magic_uri (const gchar* uri)
|
||||
{
|
||||
gchar** parts;
|
||||
gchar* search;
|
||||
const gchar* search_uri;
|
||||
KatzeItem* item;
|
||||
|
||||
g_return_val_if_fail (uri, NULL);
|
||||
g_return_val_if_fail (!search_engines ||
|
||||
katze_array_is_a (search_engines, KATZE_TYPE_ITEM), NULL);
|
||||
|
||||
/* Just return if it's a javascript: or mailto: uri */
|
||||
if (!strncmp (uri, "javascript:", 11)
|
||||
|
@ -637,26 +629,9 @@ sokoke_magic_uri (const gchar* uri,
|
|||
}
|
||||
g_strfreev (parts);
|
||||
}
|
||||
/* We don't want to search? So return early. */
|
||||
if (!search_engines)
|
||||
return g_strdup (uri);
|
||||
search = NULL;
|
||||
search_uri = NULL;
|
||||
/* Do we have a keyword and a string? */
|
||||
parts = g_strsplit (uri, " ", 2);
|
||||
if (parts[0])
|
||||
if ((item = katze_array_find_token (search_engines, parts[0])))
|
||||
{
|
||||
search_uri = katze_item_get_uri (item);
|
||||
search = sokoke_search_uri (search_uri, parts[1] ? parts[1] : "");
|
||||
if (found_item)
|
||||
*found_item = item;
|
||||
}
|
||||
g_strfreev (parts);
|
||||
return search;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* sokoke_format_uri_for_display:
|
||||
* @uri: an URI string
|
||||
|
|
|
@ -97,9 +97,7 @@ gchar*
|
|||
sokoke_uri_to_ascii (const gchar* uri);
|
||||
|
||||
gchar*
|
||||
sokoke_magic_uri (const gchar* uri,
|
||||
KatzeArray* search_engines,
|
||||
KatzeItem** found_item);
|
||||
sokoke_magic_uri (const gchar* uri);
|
||||
|
||||
gchar*
|
||||
sokoke_format_uri_for_display (const gchar* uri);
|
||||
|
|
Loading…
Reference in a new issue