Index: embed/ephy-embed-single.c =================================================================== RCS file: /cvs/gnome/epiphany/embed/ephy-embed-single.c,v retrieving revision 1.33 diff -p -u -u -p -r1.33 ephy-embed-single.c --- embed/ephy-embed-single.c 30 Jan 2005 15:20:35 -0000 1.33 +++ embed/ephy-embed-single.c 14 Feb 2005 20:34:18 -0000 @@ -141,6 +141,28 @@ ephy_embed_single_iface_init (gpointer g G_TYPE_STRING); /** + * EphyEmbedSingle::add-search-engine + * @single: + * @url: The url of the search engine definition file + * @icon_url: The url of the icon to use for this engine + * @title: The title of the search engine to be added + * + * The ::add-search-engine signal is emitted when the user clicks a javascript link that + * requests adding a search engine to the sidebar. + **/ + g_signal_new ("add-search-engine", + EPHY_TYPE_EMBED_SINGLE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (EphyEmbedSingleIface, add_search_engine), + g_signal_accumulator_true_handled, NULL, + ephy_marshal_BOOLEAN__STRING_STRING_STRING, + G_TYPE_BOOLEAN, + 3, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING); + +/** * EphyEmbedSingle::check_content: * @single: the #EphyEmbedSingle * @type: the type of content (an #EphyContentCheckType) Index: embed/ephy-embed-single.h =================================================================== RCS file: /cvs/gnome/epiphany/embed/ephy-embed-single.h,v retrieving revision 1.29 diff -p -u -u -p -r1.29 ephy-embed-single.h --- embed/ephy-embed-single.h 30 Jan 2005 15:20:35 -0000 1.29 +++ embed/ephy-embed-single.h 14 Feb 2005 20:34:18 -0000 @@ -66,8 +66,13 @@ struct _EphyEmbedSingleIface gboolean (* add_sidebar) (EphyEmbedSingle *single, - const char * url, - const char * title); + const char *url, + const char *title); + + gboolean (* add_search_engine) (EphyEmbedSingle *single, + const char *url, + const char *icon_url, + const char *title); gboolean (* check_content) (EphyEmbedSingle *single, EphyContentCheckType type, Index: embed/mozilla/EphySidebar.cpp =================================================================== RCS file: /cvs/gnome/epiphany/embed/mozilla/EphySidebar.cpp,v retrieving revision 1.2 diff -p -u -u -p -r1.2 EphySidebar.cpp --- embed/mozilla/EphySidebar.cpp 24 Jan 2005 21:46:25 -0000 1.2 +++ embed/mozilla/EphySidebar.cpp 14 Feb 2005 20:34:18 -0000 @@ -47,12 +47,11 @@ EphySidebar::~EphySidebar() { } - /* void addPanel (in wstring aTitle, in string aContentURL, in string aCustomizeURL); */ NS_IMETHODIMP EphySidebar::AddPanel (const PRUnichar *aTitle, - const char *aContentURL, - const char *aCustomizeURL) + const char *aContentURL, + const char *aCustomizeURL) { nsEmbedCString title; EphyEmbedSingle *single; @@ -74,24 +73,36 @@ EphySidebar::AddPanel (const PRUnichar * /* void addPersistentPanel (in wstring aTitle, in string aContentURL, in string aCustomizeURL); */ NS_IMETHODIMP EphySidebar::AddPersistentPanel (const PRUnichar *aTitle, - const char *aContentURL, - const char *aCustomizeURL) + const char *aContentURL, + const char *aCustomizeURL) { - return NS_ERROR_NOT_IMPLEMENTED; + return AddPanel (aTitle, aContentURL, aCustomizeURL); } /* void addSearchEngine (in string engineURL, in string iconURL, in wstring suggestedTitle, in wst ring suggestedCategory); */ NS_IMETHODIMP -EphySidebar::AddSearchEngine (const char *engineURL, - const char *iconURL, - const PRUnichar *suggestedTitle, - const PRUnichar *suggestedCategory) +EphySidebar::AddSearchEngine (const char *aEngineURL, + const char *aIconURL, + const PRUnichar *aSuggestedTitle, + const PRUnichar *aSuggestedCategory) { - return NS_ERROR_NOT_IMPLEMENTED; -} + nsEmbedCString title; + EphyEmbedSingle *single; + + NS_UTF16ToCString (nsEmbedString(aSuggestedTitle), + NS_CSTRING_ENCODING_UTF8, title); + LOG ("Adding search engine, engineurl=%s iconurl=%s title=%s", aEngineURL, aIconURL, title.get()); + single = EPHY_EMBED_SINGLE (ephy_embed_shell_get_embed_single (embed_shell)); + + gboolean result = FALSE; + g_signal_emit_by_name (single, "add-search-engine", + aEngineURL, aIconURL, title.get(), &result); + + return NS_OK; +} //------------------------------------------------------------------------------ //nsIClassInfo Impl. Index: lib/ephy-marshal.list =================================================================== RCS file: /cvs/gnome/epiphany/lib/ephy-marshal.list,v retrieving revision 1.21 diff -p -u -u -p -r1.21 ephy-marshal.list --- lib/ephy-marshal.list 30 Jan 2005 15:20:35 -0000 1.21 +++ lib/ephy-marshal.list 14 Feb 2005 20:34:19 -0000 @@ -1,6 +1,7 @@ BOOLEAN:ENUM,STRING,STRING,STRING BOOLEAN:OBJECT BOOLEAN:STRING,STRING +BOOLEAN:STRING,STRING,STRING BOOLEAN:VOID OBJECT:OBJECT,FLAGS OBJECT:STRING,OBJECT,FLAGS