[PATCH] Add JavaScript extensions

=3D?UTF-8?q?Guido=3D20G=3DC3=3DBCnther?=3D agx at sigxcpu.org
Sat Jan 23 15:01:42 UTC 2010


from http://live.gnome.org/Epiphany/ThirdPartyExtensions/Epiphany228AndLa=
ter
---
 debian/README.Debian                        |   40 ---
 debian/control.in                           |   44 +---
 debian/copyright                            |   69 +----
 debian/install                              |    6 +
 debian/rules                                |   18 --
 docs/README.bookmark-shortcuts              |   25 ++
 docs/README.bookmarkshortcuts               |   19 --
 docs/README.close_other_tabs                |   38 ---
 docs/README.tablinks                        |   23 --
 docs/README.video-downloader                |   77 -----
 misc/autofindasyoutype.ephy-extension       |   11 -
 misc/autofindasyoutype.py                   |   97 ------
 misc/autofindlinksasyoutype.ephy-extension  |   11 -
 misc/autofindlinksasyoutype.py              |   97 ------
 misc/bookmark-shortcuts.ephy-extension      |   11 +-
 misc/bookmark-shortcuts.js                  |  221 ++++++++++++++
 misc/bookmark-shortcuts.py                  |   88 ------
 misc/session-manager.ephy-extension         |   10 -
 misc/session-manager.py                     |  127 --------
 misc/tablinks.ephy-extension                |   10 -
 misc/tablinks.py                            |  128 --------
 misc/universal-edit-button.ephy-extension   |   10 -
 misc/universal-edit-button.py               |  230 --------------
 misc/video-downloader.ephy-extension        |   10 -
 misc/video-downloader.py                    |  352 ---------------------=
-
 misc/view-source.ephy-extension             |   10 -
 misc/view-source.py                         |   66 ----
 tabs/close_other_tabs.ephy-extension        |   10 -
 tabs/close_other_tabs.py                    |  167 ----------
 tabs/colour-tabs.ephy-extension             |    9 -
 tabs/colour-tabs.py                         |   84 -----
 tabs/middle-click-closes-tab.ephy-extension |   10 -
 tabs/middle-click-closes-tab.py             |   49 ---
 tabs/onlyoneclosebutton.ephy-extension      |   11 -
 tabs/onlyoneclosebutton.py                  |  134 --------
 tabs/reopen-closed-tabs.ephy-extension      |   10 +
 tabs/reopen-closed-tabs.js                  |   73 +++++
 tabs/restore-tab.ephy-extension             |   10 -
 tabs/restore-tab.py                         |   70 -----
 tabs/tabforeground.ephy-extension           |   11 -
 tabs/tabforeground.py                       |   23 --
 tabs/tabkeytabnavigate.ephy-extension       |   11 -
 tabs/tabkeytabnavigate.py                   |   50 ---
 tabs/tablabelborder.ephy-extension          |   11 -
 tabs/tablabelborder.py                      |   44 ---
 tabs/widetabs.ephy-extension                |   10 -
 tabs/widetabs.py                            |   97 ------
 ui/close-multiple-tabs.ephy-extension       |   10 +
 ui/close-multiple-tabs.js                   |   27 ++
 ui/confirmwindowclose.ephy-extension        |   11 -
 ui/confirmwindowclose.py                    |   52 ----
 ui/hidden-menu.ephy-extension               |   10 -
 ui/hidden-menu.py                           |   92 ------
 ui/menuandtoolbar.ephy-extension            |   11 -
 ui/menuandtoolbar.py                        |   77 -----
 ui/quitmenuitem.ephy-extension              |   10 -
 ui/quitmenuitem.py                          |   55 ----
 ui/tabs_on_treeview.ephy-extension          |   10 -
 ui/tabs_on_treeview.py                      |  434 ---------------------=
------
 ui/throbber-remover.ephy-extension          |   10 -
 ui/throbber-remover.py                      |   26 --
 ui/urgentcontentnotify.ephy-extension       |   11 -
 ui/urgentcontentnotify.py                   |   64 ----
 64 files changed, 412 insertions(+), 3289 deletions(-)
 create mode 100644 debian/install
 create mode 100644 docs/README.bookmark-shortcuts
 delete mode 100644 docs/README.bookmarkshortcuts
 delete mode 100644 docs/README.close_other_tabs
 delete mode 100644 docs/README.tablinks
 delete mode 100644 docs/README.video-downloader
 delete mode 100644 misc/autofindasyoutype.ephy-extension
 delete mode 100644 misc/autofindasyoutype.py
 delete mode 100644 misc/autofindlinksasyoutype.ephy-extension
 delete mode 100644 misc/autofindlinksasyoutype.py
 create mode 100644 misc/bookmark-shortcuts.js
 delete mode 100644 misc/bookmark-shortcuts.py
 delete mode 100644 misc/session-manager.ephy-extension
 delete mode 100644 misc/session-manager.py
 delete mode 100644 misc/tablinks.ephy-extension
 delete mode 100644 misc/tablinks.py
 delete mode 100644 misc/universal-edit-button.ephy-extension
 delete mode 100644 misc/universal-edit-button.py
 delete mode 100644 misc/video-downloader.ephy-extension
 delete mode 100644 misc/video-downloader.py
 delete mode 100644 misc/view-source.ephy-extension
 delete mode 100644 misc/view-source.py
 delete mode 100644 tabs/close_other_tabs.ephy-extension
 delete mode 100644 tabs/close_other_tabs.py
 delete mode 100644 tabs/colour-tabs.ephy-extension
 delete mode 100644 tabs/colour-tabs.py
 delete mode 100644 tabs/middle-click-closes-tab.ephy-extension
 delete mode 100644 tabs/middle-click-closes-tab.py
 delete mode 100644 tabs/onlyoneclosebutton.ephy-extension
 delete mode 100644 tabs/onlyoneclosebutton.py
 create mode 100644 tabs/reopen-closed-tabs.ephy-extension
 create mode 100644 tabs/reopen-closed-tabs.js
 delete mode 100644 tabs/restore-tab.ephy-extension
 delete mode 100644 tabs/restore-tab.py
 delete mode 100644 tabs/tabforeground.ephy-extension
 delete mode 100644 tabs/tabforeground.py
 delete mode 100644 tabs/tabkeytabnavigate.ephy-extension
 delete mode 100644 tabs/tabkeytabnavigate.py
 delete mode 100644 tabs/tablabelborder.ephy-extension
 delete mode 100644 tabs/tablabelborder.py
 delete mode 100644 tabs/widetabs.ephy-extension
 delete mode 100644 tabs/widetabs.py
 create mode 100644 ui/close-multiple-tabs.ephy-extension
 create mode 100644 ui/close-multiple-tabs.js
 delete mode 100644 ui/confirmwindowclose.ephy-extension
 delete mode 100644 ui/confirmwindowclose.py
 delete mode 100644 ui/hidden-menu.ephy-extension
 delete mode 100644 ui/hidden-menu.py
 delete mode 100644 ui/menuandtoolbar.ephy-extension
 delete mode 100644 ui/menuandtoolbar.py
 delete mode 100644 ui/quitmenuitem.ephy-extension
 delete mode 100644 ui/quitmenuitem.py
 delete mode 100644 ui/tabs_on_treeview.ephy-extension
 delete mode 100644 ui/tabs_on_treeview.py
 delete mode 100644 ui/throbber-remover.ephy-extension
 delete mode 100644 ui/throbber-remover.py
 delete mode 100644 ui/urgentcontentnotify.ephy-extension
 delete mode 100644 ui/urgentcontentnotify.py

diff --git a/debian/README.Debian b/debian/README.Debian
index 7a6a6e0..7a48799 100644
--- a/debian/README.Debian
+++ b/debian/README.Debian
@@ -4,43 +4,3 @@ epiphany-extensions-more
 This is a collection of extensions from various sources. The quality and
 stability of the extensions are just as various.
=20
-Here are the modifications that were made in the Debian package:
-
- colour-tabs
- -----------
-Minor porting work to 2.24.
-
- confirmwindowclose
- ------------------
-A title was added to the confirmation dialog.
-
- quitmenuitem
- ------------
-The stock item is used instead of an untranslated one.
-We close cleanly the window, avoiding the session recovery message.
-
- restore-tab
- -----------
-Minor porting work to 2.24.
-
- sessionmanager
- --------------
-Minor porting work to 2.24.
-Stock icons were added.
-
- tabs_on_treeview
- ----------------
-Major modifications to port the extension to epiphany 2.24.
-An important bug remains: the epiphany process will not exit if the
-extension has been loaded.
-
- video-downloader
- ----------------
-Middle-click on the icon is now supported, it opens the video inline in
-a new tab.
-Proxy fixes.
-
- view-source
- -----------
-The specific menu entry was removed, instead we override the existing
-menu entry with an identical-looking one.
diff --git a/debian/control.in b/debian/control.in
index d79fb18..cfc5e9a 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -5,56 +5,28 @@ Maintainer: Josselin Mouette <joss at debian.org>
 Uploaders: @GNOME_TEAM@
 Build-Depends: debhelper (>=3D 5),
                cdbs,
-               gnome-pkg-tools (>=3D 0.6),
-               python-support (>=3D 0.7)
+               gnome-pkg-tools (>=3D 0.6)
 Standards-Version: 3.8.1
-Homepage: http://live.gnome.org/Epiphany/ThirdPartyExtensions
+Homepage: http://live.gnome.org/Epiphany/ThirdPartyExtensions/Epiphany22=
8AndLater
=20
 Package: epiphany-extensions-more
 Architecture: all
 Depends: epiphany-extensions (>=3D ${gnome:Version}),
          epiphany-extensions (<< ${gnome:NextVersion}),
-         ${python:Depends},
-         ${misc:Depends},
-         python-gtk2,
-         python-gobject,
-         python-gnome2,
-         python-notify,
-         clive (>=3D 2)
+         gir1.0-webkit-1.0,
+         gir1.0-soup-2.4,
+         ${misc:Depends}
 Description: Collection of third-party extensions for the Epiphany web b=
rowser
  This package contains various user-contributed extensions for=20
  Epiphany, an intuitive web browser for the GNOME desktop.
  .
  Extensions bringing new features:
-  * Automatic Find As You Type - Start typing, and you will find text
-  * Automatic Find Links As You Type - The same, restricted to links
-  * Bookmark shortcuts - Use deskbar applet shortcuts in the URL bar
-  * Session Manager - Save session to a file and restore it later
-  * Tab Links - Copy the opened URIs to the clipboard
-  * Universal Edit Button - A single shortcut to bring the editor for=20
-    sites with editable content (wikis)
-  * Video Downloader - Automatically download or open Flash videos from=20
-    popular sites, without Flash support
-  * View Source - View page source inside the browser
+  * Bookmark shortcuts - Perform bookmark searches by typing a shortcut =
in the
+    address bar
  .
  Modifications of the user interface:
   * Confirm Window Close - Confirm closing when several tabs are open
-  * Hidden Menu - Hide and show the menu with a toolbar button
-  * Menubar and Toolbar beside each other
-  * Quit menu item
-  * Tabs on treeview - Replace tabs by a treeview in a sidebar
-  * Throbber remover - Removes the throbber from the toolbar
-  * Urgent Content Notify - Warn the Window Manager when a page=20
-    changes in the background
  .
  Modifications of the tabs behaviour:
-  * Close Other Tabs - Close all tabs but the current one
-  * Colour tabs - Colorize tabs depending on the website
-  * Close tabs with middle-click
-  * Only One Close Button - Replace close buttons on the tabs by a=20
-    single one in the toolbar
   * Restore Closed Tab
-  * Tab Foreground - Open new tabs in the foreground
-  * Tab Key Tab Navigate - Use control-tab to navigate between tabs
-  * Less Tab Label Border - Reduce the border around tab labels
-  * Wide tabs - Expand tabs to use all available space
+
diff --git a/debian/copyright b/debian/copyright
index 8d9bf29..34e0e24 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -4,72 +4,31 @@ Thu, 08 Jan 2009 19:23:55 +0100.
 It was downloaded from http://live.gnome.org/Epiphany/ThirdPartyExtensio=
ns
=20
 Authors:
-    Stefan Stuhr <webmaster at sstuhr.dk> - autofindasyoutype,=20
-        autofindlinksasyoutype, urgentcontentnotify,=20
-        onlyoneclosebutton, tabkeytabnavigate, tablabelborder,=20
-        confirmwindowclose, menuandtoolbar
-    Nigel Tao <nigeltao at gnome.org> - bookmarkshortcuts
-    Simon Ward <simon at bleah.co.uk> - session-manager
-    George Notaras <gnotar at gmail.com> - tablinks
-    Diego Escalante Urrelo <diegoe at gnome.org> - throbber-remover,=20
-        view-source, widetabs, hidden-menu
-    Adam Schmalhofer <blauebirke at gmx.de> - video-downloader
-    Sean Fulmer <wsfulmer at gmail.com> - close_other_tabs
-    Siegfried Gevatter <rainct at ubuntu.com> - middle-click-closes-tab
-    Michael Opitz <opitz.michael at gmail.com> - restore-tab
-    Charles-Henri d=E2=80=99Adh=C3=A9mar <cdadhemar at free.fr> - tabforegr=
ound
-    Reinout van Schouwen <reinouts at gnome.org> - quitmenuitem
-    Kevin Michel <kmichel.info at gmail.com> - tabs_on_treeview
-    Thomas Thurman <tthurman at gnome.org> - colour-tabs
-    Johannes Berg <johannes at sipsolutions.net> - universal-edit-button
+    Nigel Tao <nigeltao at gnome.org>, bookmark-shortcuts
+    Iain Nicol <iainn at src.gnome.org>, bookmark-shortcuts
+    Tim Horton <hortont424 at gmail.com>, reopen-closed-tabs,
+                                       close-multiple-tabs
=20
 Copyright:
-    Copyright =C2=A9 2006-2007 Stefan Stuhr
-    Copyright =C2=A9 2006 Nigel Tao
-    Copyright =C2=A9 2007 Simon E. Ward
-    Copyright =C2=A9 2007 George Notaras
-    Copyright =C2=A9 2006, 2008 Diego Escalante Urrelo
-    Copyright =C2=A9 2006 Jaime Frutos Morales
-    Copyright =C2=A9 2008 Adam Schmalhofer
-    Copyright =C2=A9 2008 Wouter Bolsterlee
-    Copyright =C2=A9 2008 Sean Fulmer
-    Copyright =C2=A9 2007 Thomas Thurman
-    Copyright =C2=A9 2008 Siegfried Gevatter
-    Copyright =C2=A9 2007 Michael Opitz
-    Copyright =C2=A9 2007 Charles-Henri d=E2=80=99Adh=C3=A9mar
-    Copyright =C2=A9 2008 Reinout van Schouwen
-    Copyright =C2=A9 Kevin Michel
-    Copyright =C2=A9 2009 Josselin Mouette
-    Copyright =C2=A9 2006 Jaime Frutos Morales
-    Copyright =C2=A9 2008 Johannes Berg
+    Copyright =C2=A9 2009 Iain Nicol <iainn at src.gnome.org>
+    Copyright =C2=A9 2009 Tim Horton <hortont424 at gmail.com>
=20
-License for the session-manager, tabforeground and tabs_on_treeview=20
-extensions:
+License for the bookmark-shortcuts, reopen-closed-tabs:
=20
-   This package is free software; you can redistribute it and/or modify
-   it under the terms of version 2 of the GNU General Public License
-   as published by the Free Software Foundation.
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 2 of the License, or
+   (at your option) any later version.
=20
-   This package is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
=20
-   You should have received a copy of the GNU General Public License
-   along with this package; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301=
 USA
-
-On Debian systems, the complete text of the GNU General
+On   Debian systems, the complete text of the GNU General
 Public License can be found in `/usr/share/common-licenses/GPL-2'.
=20
-
-Note: the tabs_on_treeview extension did not include licensing=20
-information, but the author sent the following statement by email:
-
-    I release "tabs on treeeview"  under the GPL 2 licence.
-
-
-License for the other extensions and the Debian changes:
+License for the Debian changes:
=20
    This package is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
diff --git a/debian/install b/debian/install
new file mode 100644
index 0000000..217934f
--- /dev/null
+++ b/debian/install
@@ -0,0 +1,6 @@
+tabs/*.js             /usr/lib/epiphany-browser/2.29/extensions/
+tabs/*.ephy-extension /usr/lib/epiphany-browser/2.29/extensions/
+misc/*.js             /usr/lib/epiphany-browser/2.29/extensions/
+misc/*.ephy-extension /usr/lib/epiphany-browser/2.29/extensions/
+ui/*.js               /usr/lib/epiphany-browser/2.29/extensions/
+ui/*.ephy-extension   /usr/lib/epiphany-browser/2.29/extensions/
diff --git a/debian/rules b/debian/rules
index 10078ce..82ff59f 100755
--- a/debian/rules
+++ b/debian/rules
@@ -4,21 +4,3 @@ include /usr/share/cdbs/1/rules/debhelper.mk
 include /usr/share/gnome-pkg-tools/1/rules/gnome-version.mk
 include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk
=20
-webkit_exts =3D \
- bookmark-shortcuts session-manager tablinks close_other_tabs \
- middle-click-closes-tab restore-tab tabkeytabnavigate tablabelborder \
- widetabs confirmwindowclose hidden-menu quitmenuitem \
- tabs_on_treeview throbber-remover
-
-binary-post-install/epiphany-extensions-more::
-	dh_pysupport -p$(cdbs_curpkg) /usr/lib/epiphany-gecko/$(DEB_GNOME_VERSI=
ON)/extensions
-
-binary-install/epiphany-extensions-more::
-	mkdir -p debian/$(cdbs_curpkg)/usr/lib/epiphany-gecko/$(DEB_GNOME_VERSI=
ON)/extensions
-	install -m 644 misc/*.py tabs/*.py ui/*.py debian/$(cdbs_curpkg)/usr/li=
b/epiphany-gecko/$(DEB_GNOME_VERSION)/extensions/
-	install -m 644 misc/*.ephy-extension tabs/*.ephy-extension ui/*.ephy-ex=
tension debian/$(cdbs_curpkg)/usr/lib/epiphany-gecko/$(DEB_GNOME_VERSION)=
/extensions/
-	mkdir -p debian/$(cdbs_curpkg)/usr/lib/epiphany-webkit/$(DEB_GNOME_VERS=
ION)/extensions
-	cd debian/$(cdbs_curpkg)/usr/lib/epiphany-webkit/$(DEB_GNOME_VERSION)/e=
xtensions && \
-		for i in $(webkit_exts); do \
-			ln -s ../../../epiphany-gecko/$(DEB_GNOME_VERSION)/extensions/$$i.* .=
 ; \
-		done
diff --git a/docs/README.bookmark-shortcuts b/docs/README.bookmark-shortc=
uts
new file mode 100644
index 0000000..a7ec3ce
--- /dev/null
+++ b/docs/README.bookmark-shortcuts
@@ -0,0 +1,25 @@
+This Epiphany extension uses the Deskbar's shortcuts for the browser's
+``smart bookmarks'', or searches, so that, if you have the Wikipedia
+search bookmarked, and you have configured Deskbar properly, you can
+type ``wp foo'' in Epiphany's location bar to go to
+http://en.wikipedia.org/wiki/Special:Search?search=3D%foo
+
+To install, move the .js and .ephy-extension files into
+~/.gnome2/epiphany/extensions/ and then, from Epiphany's menu, go to
+Tools -> Extensions to enable it.
+
+You can configure the shortcuts from Epiphany's Edit -> Bookmark
+Shortcuts menu.  Alternatively, right-click on Deskbar's icon, choose
+Preferences and from the ``Web Searches (Epiphany)'' extension, click
+the ``More...''  button.  That, or just edit Deskbar's list of search
+shortcuts (it's a text file):
+~/.gnome2/deskbar-applet/search-bookmarks-shortcuts.txt
+
+Note that this is an Epiphany extension, not a Deskbar extension.
+Deskbar comes out-of-the-box with this behavior.
+
+This extension was originally written by Nigel Tao.  It was ported to be
+a ``Seed'' Javascript extension by Iain Nicol, to get it to work with
+versions of Epiphany greater than 2.28.  However, to avoid crashes when
+using this extension you should use Epiphany 2.29.3 or later, and Seed
+2.29.5 or later.
\ No newline at end of file
diff --git a/docs/README.bookmarkshortcuts b/docs/README.bookmarkshortcut=
s
deleted file mode 100644
index f662a09..0000000
--- a/docs/README.bookmarkshortcuts
+++ /dev/null
@@ -1,19 +0,0 @@
-This Epiphany extension uses the Deskbar's shortcuts for the browser's "=
smart
-bookmarks", or searches, so that, if you have the Wikipedia search bookm=
arked,
-and you have configured Deskbar properly, you can type "wp foo" in Epiph=
any's
-location bar to go to http://en.wikipedia.org/wiki/Special:Search?search=
=3D%foo
-
-To configure the Deskbar's shortcuts, right-click on its icon, choose
-Preferences and from the "Web Searches" extension, click the "More..." b=
utton.
-Alternatively, just edit Deskbar's list of search shortcuts (it's a text=
 file):
-~/.gnome2/deskbar-applet/search-bookmarks-shortcuts.txt
-
-To install, move the .py and .xml files into ~/.gnome2/epiphany/extensio=
ns/
-and then, from Epiphany's menu, go to Tools -> Extensions to enable it.
-
-Note that this is an Epiphany extension, not a Deskbar extension.  Deskb=
ar
-comes out-of-the-box with this behavior.
-
-This has been tested with Deskbar 2.14 and Epiphany 2.14.
-Nigel Tao, 2006-10-17.
-
diff --git a/docs/README.close_other_tabs b/docs/README.close_other_tabs
deleted file mode 100644
index 6971164..0000000
--- a/docs/README.close_other_tabs
+++ /dev/null
@@ -1,38 +0,0 @@
-Close Other Tabs
-=3D=3D=3D
-
-Legal Nonsense
-=3D=3D
-
-Copyright (C) 2008 Sean Fulmer <wsfulmer at gmail.com>
-
-This program is free software; you can redistribute it and/or modify it =
under
-the terms of the GNU General Public License as published by the Free Sof=
tware
-Foundation; either version 2 of the License, or (at your option) any lat=
er
-version.  For more information, see COPYING.
-
-What Is It?
-=3D=3D
-
-Close Other Tabs is a small extension for Epiphany that adds items to th=
e main=20
-and tab context menus to allow you to close tabs other than the active t=
ab. You
-can close all other tabs, or tabs to the left/right of the current tab. =
This=20
-was inspired by similar functionality in the Tab Mix Plus extension for =
Firefox.=20
-
-Installation
-=3D=3D
-
-For now, simply copy the following files to ~/.gnome2/epiphany/extension=
s:
-
-* close_other_tabs.ephy-extension
-* close_other_tabs.py
-
-Typing make install will do this for you.
-
-Then go to Tools->Extensions... and enable Close Other Tabs.
-
-Thanks To
-=3D=3D
-Ross Burton, from whose EphyDeli extension I borrowed the Makefile and t=
he
-general project layout
-http://www.burtonini.com/blog//computers/ephydeli-2006-08-29-21-40
diff --git a/docs/README.tablinks b/docs/README.tablinks
deleted file mode 100644
index 6e81928..0000000
--- a/docs/README.tablinks
+++ /dev/null
@@ -1,23 +0,0 @@
-Tab Links extension for Epiphany written in Python
-
-Please read the info at the plugin's home:
-
-http://www.g-loaded.eu/2007/02/28/tab-links-extension-for-the-epiphany-b=
rowser/
-
-LICENSE INFO:
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the:
-
-Free Software Foundation, Inc.,
-59 Temple Place, Suite 330, Boston,
-MA 02111-1307  USA
diff --git a/docs/README.video-downloader b/docs/README.video-downloader
deleted file mode 100644
index e7f07a8..0000000
--- a/docs/README.video-downloader
+++ /dev/null
@@ -1,77 +0,0 @@
-About
-=3D=3D=3D=3D=3D
-
-This in an extension for the Epiphany Webbrowser. It searches the viewed=
 web=20
-page for videos from youtube as well as the address bar for known video =
hosting
-sites. Once found it displays a small icon on the status bar. If you cli=
ck on=20
-it the video(s) are downloaded.
-
-A longer description of this extension is available at:
-
-  http://blauebirke.wordpress.com/2008/09/09/epiphany-video-download-ext=
ension/
-
-More news will be posted at:
-
-  http://blauebirke.wordpress.com/tag/epiphany/
-
-clive can be found at:
-
-  http://clive.sourceforge.net/  (or in your favourite distribution)
-
-
-Licence
-=3D=3D=3D=3D=3D=3D=3D
-
-Like all Epiphany extensions, it is Free Software licenced under the GNU=
=20
-General Public Licence either version 2, or (at your option) any later v=
ersion.
-Unless otherwise written this includes all files here. As of writing the=
 only
-exception is the file README.it which is under the Creative Commons by-s=
a 3.0.
-
-Install
-=3D=3D=3D=3D=3D=3D=3D
-
-To install just copy the files "video-downloader.ephy-extension" and=20
-"video-downloader.py" into one of epiphany's extensions folder:=20
-"~/.gnome2/epiphany/extensions/" or "/usr/lib/epiphany-gecko/2.22/extens=
ions/".=20
-Don=E2=80=99t forget to install clive (both 1.x and 2.x are fine). Then =
you can=20
-activate it in the "Tools/Extensions" menu.
-
-
-Pre-requirements
-----------------
-
-In addition to epiphany and clive there are a few dependancies. However =
these=20
-should already be installed on any resonable GNOME desktop. Here is a li=
st of=20
-them:
-
-* epiphany
-* clive
-* python
-* python-gconf
-* python-gtk2
-* python-libnotify
-
-Bugs, issues and questions
-=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
-
-Please don't hesitate to drop a line at:
-
-  http://blauebirke.wordpress.com/2008/09/09/epiphany-video-download-ext=
ension/
-
-If you prefer writing an email: Adam.Schmalhofer at gmx.de
-
-New versions and development
-=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
-
-New versions are published at:
-
-  http://wwwpub.zih.tu-dresden.de/~s5827060/epiphany-video/
-
-and can easily be downloaded there. It is a bazaar tree, so if you want =
to=20
-help develop or an easy way to keep up with the newest version you can:
-
-  bzr co http://wwwpub.zih.tu-dresden.de/~s5827060/epiphany-video/
-
-to initially get the copy and then update it in the created directory wi=
th:
-
-  bzr pull
diff --git a/misc/autofindasyoutype.ephy-extension b/misc/autofindasyouty=
pe.ephy-extension
deleted file mode 100644
index 7e064f9..0000000
--- a/misc/autofindasyoutype.ephy-extension
+++ /dev/null
@@ -1,11 +0,0 @@
-[Epiphany Extension]
-Name=3DAutomatic Find As You Type
-Description=3DStart typing, and you will find
-Authors=3DStefan Stuhr
-Version=3D1
-URL=3Dhttp://www.sstuhr.dk/epiphany-extensions/
-
-
-[Loader]
-Type=3Dpython
-Module=3Dautofindasyoutype
diff --git a/misc/autofindasyoutype.py b/misc/autofindasyoutype.py
deleted file mode 100644
index 16b56a0..0000000
--- a/misc/autofindasyoutype.py
+++ /dev/null
@@ -1,97 +0,0 @@
-#   Automatic Find As You Type - Epiphany Extension
-#   Copyright (C) 2006  Stefan Stuhr
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import gtk
-import gobject
-import epiphany
-
-def afayt_get_entry(widget):
-	for child in widget.get_children():
-		if isinstance(child, gtk.Entry):
-			return child
-		elif hasattr(child, "get_children"):
-			result =3D afayt_get_entry(child)
-			if result !=3D None and isinstance(result, gtk.Entry):
-				return result
-
-	return None
-
-def afayt_idle_cb(window, entry):
-	entry.emit("changed")
-
-	delattr(window, "_afayt_idle_id")
-
-def afayt_search_key_press_cb(embed, event, window, toolbar):
-	if hasattr(window, "_afayt_idle_id"):
-		gobject.source_remove(window._afayt_idle_id)
-		delattr(window, "_afayt_idle_id")
-
-	if window.get_is_print_preview():
-		return
-
-	unival =3D gtk.gdk.keyval_to_unicode(event.keyval)
-	if unival =3D=3D 0:
-		unistr =3D u""
-	else:
-		unistr =3D unichr(unival)
-
-	if unistr in (u"", u"'", u"/", u" "):
-		return
-
-	entry =3D afayt_get_entry(toolbar)
-	entry.set_text("")
-
-	if hasattr(toolbar, "open"):
-		toolbar.open(False, True)
-	else:
-		toolbar.show()
-
-	entry.insert_text(unistr, 0)
-	entry.grab_focus()
-	entry.set_position(-1)
-
-	window._afayt_idle_id =3D gobject.idle_add(afayt_idle_cb, window, entry=
)
-
-	return True
-
-def detach_window(window):
-	if hasattr(window, "_afayt_idle_id"):
-		gobject.source_remove(window._afayt_idle_id)
-		delattr(window, "_afayt_idle_id")
-
-def attach_tab(window, tab):
-	if hasattr(tab, "get_embed"):
-		embed =3D tab.get_embed()
-	else:
-		embed =3D tab
-	signal =3D embed.connect("ge-search-key-press", afayt_search_key_press_=
cb, window, window.get_find_toolbar())
-
-	tab._afayt_search_key_press_sig =3D signal
-
-def detach_tab(window, tab):
-	if not hasattr(tab, "_afayt_search_key_press_sig"):
-		return
-
-	if hasattr(tab, "get_embed"):
-		embed =3D tab.get_embed()
-	else:
-		embed =3D tab
-	embed.disconnect(tab._afayt_search_key_press_sig)
-
-	delattr(tab, "_afayt_search_key_press_sig")
-
diff --git a/misc/autofindlinksasyoutype.ephy-extension b/misc/autofindli=
nksasyoutype.ephy-extension
deleted file mode 100644
index 896d270..0000000
--- a/misc/autofindlinksasyoutype.ephy-extension
+++ /dev/null
@@ -1,11 +0,0 @@
-[Epiphany Extension]
-Name=3DAutomatic Find Links As You Type
-Description=3DStart typing, and you will find links
-Authors=3DStefan Stuhr
-Version=3D1
-URL=3Dhttp://www.sstuhr.dk/epiphany-extensions/
-
-
-[Loader]
-Type=3Dpython
-Module=3Dautofindlinksasyoutype
diff --git a/misc/autofindlinksasyoutype.py b/misc/autofindlinksasyoutype=
.py
deleted file mode 100644
index 069f75e..0000000
--- a/misc/autofindlinksasyoutype.py
+++ /dev/null
@@ -1,97 +0,0 @@
-#   Automatic Find Links As You Type - Epiphany Extension
-#   Copyright (C) 2006-2007  Stefan Stuhr
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import gtk
-import gobject
-import epiphany
-
-def aflayt_get_entry(widget):
-	for child in widget.get_children():
-		if isinstance(child, gtk.Entry):
-			return child
-		elif hasattr(child, "get_children"):
-			result =3D aflayt_get_entry(child)
-			if result !=3D None and isinstance(result, gtk.Entry):
-				return result
-
-	return None
-
-def aflayt_idle_cb(window, entry):
-	entry.emit("changed")
-
-	delattr(window, "_aflayt_idle_id")
-
-def aflayt_search_key_press_cb(embed, event, window, toolbar):
-	if hasattr(window, "_aflayt_idle_id"):
-		gobject.source_remove(window._aflayt_idle_id)
-		delattr(window, "_aflayt_idle_id")
-
-	if window.get_is_print_preview():
-		return
-
-	unival =3D gtk.gdk.keyval_to_unicode(event.keyval)
-	if unival =3D=3D 0:
-		unistr =3D u""
-	else:
-		unistr =3D unichr(unival)
-
-	if unistr in (u"", u"'", u"/", u" "):
-		return
-
-	entry =3D aflayt_get_entry(toolbar)
-	entry.set_text("")
-
-	if hasattr(toolbar, "open"):
-		toolbar.open(True, True)
-	else:
-		toolbar.show()
-
-	entry.insert_text(unistr, 0)
-	entry.grab_focus()
-	entry.set_position(-1)
-
-	window._aflayt_idle_id =3D gobject.idle_add(aflayt_idle_cb, window, ent=
ry)
-
-	return True
-
-def detach_window(window):
-	if hasattr(window, "_aflayt_idle_id"):
-		gobject.source_remove(window._aflayt_idle_id)
-		delattr(window, "_aflayt_idle_id")
-
-def attach_tab(window, tab):
-	if hasattr(tab, "get_embed"):
-		embed =3D tab.get_embed()
-	else:
-		embed =3D tab
-	signal =3D embed.connect("ge-search-key-press", aflayt_search_key_press=
_cb, window, window.get_find_toolbar())
-
-	tab._aflayt_search_key_press_sig =3D signal
-
-def detach_tab(window, tab):
-	if not hasattr(tab, "_aflayt_search_key_press_sig"):
-		return
-
-	if hasattr(tab, "get_embed"):
-		embed =3D tab.get_embed()
-	else:
-		embed =3D tab
-	embed.disconnect(tab._aflayt_search_key_press_sig)
-
-	delattr(tab, "_aflayt_search_key_press_sig")
-
diff --git a/misc/bookmark-shortcuts.ephy-extension b/misc/bookmark-short=
cuts.ephy-extension
index c99efbe..46a231b 100644
--- a/misc/bookmark-shortcuts.ephy-extension
+++ b/misc/bookmark-shortcuts.ephy-extension
@@ -1,11 +1,10 @@
 [Epiphany Extension]
 Name=3DBookmark shortcuts
-Description=3DUse deskbar applet shortcuts in the URL bar
-Authors=3DNigel Tao
-Version=3D1
-URL=3Dhttp://www.gnome.org/~nigeltao/epiphany_extensions/bookmark-shortc=
uts/
-
+Description=3DPerform bookmark searches by typing a shortcut in the addr=
ess bar
+Authors=3DIain Nicol\nNigel Tao
+Version=3D1.1.1
+URL=3Dhttp://live.gnome.org/Epiphany/ThirdPartyExtensions
=20
 [Loader]
-Type=3Dpython
+Type=3Dseed
 Module=3Dbookmark-shortcuts
diff --git a/misc/bookmark-shortcuts.js b/misc/bookmark-shortcuts.js
new file mode 100644
index 0000000..df82809
--- /dev/null
+++ b/misc/bookmark-shortcuts.js
@@ -0,0 +1,221 @@
+// bookmark shortcuts v1.1.1
+// shortcuts for smart bookmark searches, shared with Deskbar Applet
+
+// Original extension for the Mozilla-based Epiphany:
+// (c) 2006-10-17 by Nigel Tao <nigeltao at gnome.org>, GPL licensed.
+// Port to Seed and GIO, and add an entry to the Edit menu:
+// Copyright =C2=A9 2009 Iain Nicol <iainn at src.gnome.org>
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Gio =3D imports.gi.Gio;
+Gdk =3D imports.gi.Gdk;
+
+var shortcut_to_bookmark_map =3D {};
+var shortcuts_file_name =3D GLib.get_user_config_dir() +
+    "/deskbar-applet/search-bookmarks-shortcuts.txt";
+var shortcuts_file_monitor;
+
+var get_map_from_file =3D function (file) {
+    var map =3D {};
+
+    try {
+        var data_in_stream =3D new Gio.DataInputStream.c_new(file.read()=
);
+
+        while ((line =3D data_in_stream.read_line(null)) !=3D=3D null) {
+            line =3D line.trim();
+
+            var sep_location =3D line.search(/ |\t/);
+            if (sep_location > 0) {
+                var url =3D line.substring(0, sep_location);
+                var shortcut =3D line.substring(sep_location + 1).trim()=
;
+
+                map[shortcut] =3D url;
+            }
+        }
+    } catch (e) {
+        // Maybe the file doesn't exist, etc.  Ignore.
+        printerr(e);
+    }
+
+    return map;
+};
+
+var shortcuts_changed_cb =3D function (file_monitor, file, other_file,
+                                     event_type, user_data) {
+    if (event_type =3D=3D=3D Gio.FileMonitorEvent.CHANGES_DONE_HINT) {
+        shortcut_to_bookmark_map =3D get_map_from_file(file);
+    }
+};
+
+var edit_bookmark_shortcuts_cb =3D function (action, window) {
+    // Comment out the code to spawn programs on the correct screen
+    // because as of the end of 2009, missing annotations in GDK will
+    // cause a crash.
+    //
+    var screen =3D null; // window.get_screen();
+    var deskbar_extn =3D Gio.file_new_for_path(
+        "/usr/lib/deskbar-applet/modules-2.20-compatible/epiphany.py");
+
+    if (deskbar_extn.query_exists()) {
+        // launch Deskbar's editor
+        var python_commands =3D
+            "import sys\n" +
+            "sys.path.insert(0," +
+            "    '/usr/lib/deskbar-applet/modules-2.20-compatible')\n" +
+            "import epiphany\n" +
+            "e =3D epiphany.EpiphanySearchHandler()\n" +
+            "e.initialize()\n" +
+            "e.show_config(None)\n";
+
+        // Gdk.spawn_on_screen(screen, null, ["python", "-c", python_com=
mands],
+        //                     null, GLib.SpawnFlags.SEARCH_PATH, null, =
null,
+        //                     null);
+        GLib.spawn_async(null, ["python", "-c", python_commands],
+                        null, GLib.SpawnFlags.SEARCH_PATH, null, null,
+                        null);
+    } else {
+        var dialog =3D new Gtk.MessageDialog({
+            text: "The file format is a series of lines, each of the for=
m:\n" +
+                "\n" +
+                "url shortcut\n" +
+                "\n" +
+                "Each =E2=80=9Curl=E2=80=9D should contain =E2=80=9C%s=E2=
=80=9D in the position the search " +
+                "terms should go."});
+        dialog.add_button(Gtk.STOCK_CANCEL,
+                          Gtk.ResponseType.CANCEL);
+        dialog.add_button("Open Editor", Gtk.ResponseType.OK).grab_focus=
();
+
+        var response =3D dialog.run();
+        dialog.destroy();
+
+        if (response !=3D=3D Gtk.ResponseType.OK) {
+            return;
+        }
+
+        var shortcuts_file =3D Gio.file_new_for_path(shortcuts_file_name=
);
+        try {
+            shortcuts_file.create();
+        } catch (e) {
+        }
+        Gtk.show_uri(screen, shortcuts_file.get_uri(), Gdk.CURRENT_TIME)=
;
+    }
+};
+
+var resolve_address_cb =3D function (bookmarks, address, content) {
+    address =3D address.trim();
+    var n =3D address.indexOf(" ");
+    var shortcut;
+    var args;
+
+    if (n =3D=3D=3D -1) {
+        shortcut =3D address;
+        args =3D "";
+    } else {
+        shortcut =3D address.substring(0, n);
+        args =3D address.substring(n+1);
+    }
+
+    bookmark =3D shortcut_to_bookmark_map[shortcut];
+    if (bookmark =3D=3D=3D undefined) {
+        return null;
+    } else {
+        return bookmark.replace("%s", args);
+    }
+};
+
+var initialize_extension =3D function () {
+    bookmarks =3D Epiphany.EphyShell.get_default().get_bookmarks();
+    bookmarks._bookmark_shortcuts_signal =3D bookmarks.signal.
+        resolve_address.connect(resolve_address_cb);
+
+    var file =3D Gio.file_new_for_path(shortcuts_file_name);
+    try {
+        shortcuts_file_monitor =3D file.monitor();
+        shortcuts_file_monitor.signal.changed.connect(shortcuts_changed_=
cb);
+        shortcut_to_bookmark_map =3D get_map_from_file(file);
+    } catch (e) {
+    }
+};
+
+var finalize_extension =3D function () {
+    bookmarks =3D Epiphany.EphyShell.get_default().get_bookmarks();
+    bookmarks.signal.disconnect(bookmarks._bookmark_shortcuts_signal);
+    delete bookmarks._bookmark_shortcuts_signal;
+    shortcuts_file_monitor =3D null;
+};
+
+var attached_window_count =3D 0;
+
+var attach_window =3D function (window) {
+    // No race condition below because this extension is always called
+    // in the one GUI thread.  Hopefully.
+    if (attached_window_count =3D=3D=3D 0) {
+        initialize_extension();
+    }
+    attached_window_count++;
+
+    // Add Edit -> Bookmark Shortcuts to this window's menu.
+
+    // Object to hold onto the Edit menu entry, etc., for the window's
+    // lifetime.
+    window._bookmark_shortcuts =3D {};
+    var wbs =3D window._bookmark_shortcuts;
+
+    wbs.action =3D new Gtk.Action({
+        name: "EditBookmarkShortcuts",
+        label: "_Bookmark Shortcuts",
+        tooltip: "Configure shortcuts for your bookmark searches",
+        stock_id: null});
+    wbs.sig_id =3D wbs.action.signal.activate.connect(edit_bookmark_shor=
tcuts_cb,
+                                                    window);
+    wbs.action_group =3D new Gtk.ActionGroup({
+        name: "EditBookmarkShortcutsActionGroup"});
+    wbs.action_group.add_action(wbs.action);
+
+    // Unfortunately the following line can trigger:
+    //     Gtk-CRITICAL **: gtk_container_foreach: assertion
+    //     `GTK_IS_CONTAINER (container)' failed
+    //  when we close the window.  This isn't our fault, though.
+    wbs.manager =3D window.get_ui_manager();
+
+    wbs.manager.insert_action_group(wbs.action_group, 0);
+    wbs.merge_id =3D wbs.manager.new_merge_id();
+    wbs.manager.add_ui(wbs.merge_id, "/menubar/EditMenu/EditPrefsMenu",
+                       "EditBookmarkShortcutsMenu", "EditBookmarkShortcu=
ts",
+                       Gtk.UIManagerItemType.MENUITEM, true);
+};
+
+var detach_window =3D function (window) {
+    // Remove our Edit menu entry.
+    // Is this necessary?  Well, it doesn't hurt /too/ much, at least.
+    var wbs =3D window._bookmark_shortcuts;
+
+    wbs.manager.remove_ui(wbs.merge_id);
+    wbs.manager.remove_action_group(wbs.action_group);
+    wbs.action_group.remove_action(wbs.action);
+    wbs.action.signal.disconnect(wbs.sig_id);
+    delete window._bookmark_shortcuts;
+
+    // Cleanup the rest of the extension if necessary.
+    attached_window_count--;
+    if (attached_window_count =3D=3D=3D 0) {
+        finalize_extension();
+    }
+};
+
+extension =3D {
+    attach_window: attach_window,
+    detach_window: detach_window
+};
diff --git a/misc/bookmark-shortcuts.py b/misc/bookmark-shortcuts.py
deleted file mode 100644
index 4dd2817..0000000
--- a/misc/bookmark-shortcuts.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# (c) 2006-10-17 by Nigel Tao <nigeltao at gnome.org>, GPL licensed.
-#
-# Shortcuts for Epiphany's searches, shared with the deskbar applet.
-
-
-import epiphany, gnomevfs, os
-
-
-def load_map():
-	global sc_bm_map, shortcuts_file
-	sc_bm_map.clear()
-	try:
-		for line in file(shortcuts_file):
-			line =3D line.strip()
-			if len(line) > 0:
-				try:
-					url, shortcut =3D line.split()
-					sc_bm_map[shortcut] =3D url
-				except ValueError:
-					# Ignore badly formatted lines.
-					pass
-	except IOError:
-		# The file probably does not exist.  Ignore the error.
-		pass
-
-
-def on_vfs_monitor(monitored_uri, altered_uri, event_type):
-	load_map()
-
-
-def resolve_address_cb(bookmarks, address, smart_bookmark_content):
-	global sc_bm_map
-	address =3D address.strip()
-	n =3D address.find(' ')
-	if n =3D=3D -1:
-		shortcut, args =3D address, ''
-	else:
-		shortcut, args =3D address[:n], address[n+1:]
-	try:
-		return sc_bm_map[shortcut].replace('%s', args)
-	except KeyError:
-		return None
-
-
-def extension_initialize():
-	global gnomevfs_id, shortcuts_file
-	bookmarks =3D epiphany.ephy_shell_get_default().get_bookmarks()
-	# bmsc stands for BookMark ShortCut.
-	bookmarks._bmsc_signal =3D bookmarks.connect('resolve-address',
-	                                           resolve_address_cb)
-	load_map()
-	gnomevfs_id =3D gnomevfs.monitor_add('file://' + shortcuts_file,
-	                                   gnomevfs.MONITOR_FILE,
-	                                   on_vfs_monitor)
-
-
-def extension_finalize():
-	global gnomevfs_id
-	bookmarks =3D epiphany.ephy_shell_get_default().get_bookmarks()
-	signal =3D bookmarks._bmsc_signal
-	del bookmarks._bmsc_signal
-	bookmarks.disconnect(signal)
-	if gnomevfs_id !=3D None:
-		gnomevfs.monitor_cancel(gnomevfs_id)
-		gnomevfs_id =3D None
-
-
-def attach_window(window):
-	# I don't think that there is a race condition with this a_w_c variable=
,
-	# since this code all happens in the GUI thread...
-	global attached_window_count
-	if attached_window_count =3D=3D 0:
-		extension_initialize()
-	attached_window_count =3D attached_window_count + 1
-
-
-def detach_window(window):
-	global attached_window_count
-	attached_window_count =3D attached_window_count - 1
-	if attached_window_count =3D=3D 0:
-		extension_finalize()
-
-
-shortcuts_file =3D os.path.expanduser(
-                 "~/.gnome2/deskbar-applet/search-bookmarks-shortcuts.tx=
t")
-attached_window_count =3D 0
-gnomevfs_id =3D None
-sc_bm_map =3D {}  # map from ShortCuts to (smart) BookMarks
diff --git a/misc/session-manager.ephy-extension b/misc/session-manager.e=
phy-extension
deleted file mode 100644
index adb914b..0000000
--- a/misc/session-manager.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DSession Manager
-Description=3DAdds the ability to save the current session to a file, an=
d restore saved sessions.
-Authors=3DSimon Ward <simon at bleah.co.uk>
-URL=3Dhttp://bleah.co.uk/miscbits/epiphany-session-manager
-Version=3D0.1
-
-[Loader]
-Type=3Dpython
-Module=3Dsession-manager
diff --git a/misc/session-manager.py b/misc/session-manager.py
deleted file mode 100644
index ffa161a..0000000
--- a/misc/session-manager.py
+++ /dev/null
@@ -1,127 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Session save/restore facility for Epiphany
-#
-# Copyright =C2=A9 2007 Simon E. Ward <simon at bleah.co.uk>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of version 2 of the GNU General Public
-# License as published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA
-
-import epiphany
-import gtk
-import os.path
-
-_ui_str =3D """
-<ui>
-	<menubar name=3D"menubar">
-		<menu name=3D"ToolsMenu" action=3D"Tools">
-			<separator/>
-			<menuitem name=3D"LoadSession" action=3D"LoadSession"/>
-			<menuitem name=3D"SaveSession" action=3D"SaveSession"/>
-			<separator/>
-		</menu>
-	</menubar>
-</ui>
-"""
-
-def _warn_on_overwrite(parent, filename):
-	dirname, basename =3D os.path.split(filename)
-	msg =3D 'A file named "%s" already exists in the directory "%s".'\
-	      'Do you want to overwrite it?' % (basename, dirname)
-	dialog =3D gtk.MessageDialog(
-			parent=3Dparent,
-			flags=3Dgtk.DIALOG_MODAL
-			     |gtk.DIALOG_DESTROY_WITH_PARENT,
-			type=3Dgtk.MESSAGE_WARNING,
-			buttons=3Dgtk.BUTTONS_YES_NO,
-			message_format=3Dmsg)
-	overwrite =3D dialog.run()
-	dialog.destroy()
-	return overwrite
-
-def _show_dialog(title, action):
-	if action =3D=3D gtk.FILE_CHOOSER_ACTION_SAVE:
-		ok_button =3D gtk.STOCK_SAVE
-	else:
-		ok_button =3D gtk.STOCK_OPEN
-
-	dialog =3D gtk.FileChooserDialog(
-			title=3Dtitle,
-			action=3Daction,
-			buttons=3D(
-				gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-				ok_button, gtk.RESPONSE_OK
-				)
-			)
-	dialog.set_default_response(gtk.RESPONSE_OK)
-
-	response =3D dialog.run()
-	if response =3D=3D gtk.RESPONSE_OK:
-		filename =3D dialog.get_filename()
-
-		if action =3D=3D gtk.FILE_CHOOSER_ACTION_SAVE:
-			while os.path.exists(filename):
-				if _warn_on_overwrite(dialog, filename) \
-					=3D=3D gtk.RESPONSE_YES:
-					break
-				response =3D dialog.run()
-				if response !=3D gtk.RESPONSE_OK:
-					filename =3D None
-					break
-				filename =3D dialog.get_filename()
-	else:
-		filename =3D None
-
-	dialog.destroy()
-	return filename
-
-def _get_session():
-	shell =3D epiphany.ephy_embed_shell_get_default()
-	return shell.get_session()
-
-def _save_session(action, session):
-	filename =3D _show_dialog('Save Session',
-				gtk.FILE_CHOOSER_ACTION_SAVE)
-	if filename:
-		session.save(filename)
-
-def _load_session(action, session):
-	filename =3D _show_dialog('Load Session',
-				gtk.FILE_CHOOSER_ACTION_OPEN)
-	if filename:
-		session.load(filename, 0)
-
-_actions =3D [
-	('LoadSession', "gtk-open", 'Load Session=E2=80=A6', None, None, _load_=
session),
-	('SaveSession', "gtk-save-as", 'Save Session=E2=80=A6', None, None, _sa=
ve_session),
-	]
-
-def attach_window(window):
-	session =3D _get_session()
-	ui_manager =3D window.get_ui_manager()
-	group =3D gtk.ActionGroup('SessionManager')
-	group.add_actions(_actions, user_data=3Dsession)
-	ui_manager.insert_action_group(group, -1)
-	ui_id =3D ui_manager.add_ui_from_string(_ui_str)
-
-	window._session_manager_data =3D (group, ui_id)
-
-def detach_window(window):
-	group, ui_id =3D window._session_manager_data
-	del window._session_manager_data
-
-	ui_manager =3D window.get_ui_manager()
-	ui_manager.remove_ui(ui_id)
-	ui_manager.remove_action_group(group)
-	ui_manager.ensure_update()
diff --git a/misc/tablinks.ephy-extension b/misc/tablinks.ephy-extension
deleted file mode 100644
index 3dc4bd6..0000000
--- a/misc/tablinks.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DTab Links
-Description=3DAllows the user to copy all the tabs' URIs to clipboard in=
 a variety of formats.
-Authors=3DGeorge Notaras <gnotar at gmail.com>
-URL=3Dhttp://www.g-loaded.eu/2007/02/28/tab-links-extension-for-the-epip=
hany-browser/
-Version=3D0.1
-
-[Loader]
-Type=3Dpython
-Module=3Dtablinks
diff --git a/misc/tablinks.py b/misc/tablinks.py
deleted file mode 100644
index 76b4965..0000000
--- a/misc/tablinks.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Tab Links extension for Epiphany written in Python
-#
-# Version: 0.1
-#
-# Copyright (c) 2007 George Notaras <gnotar at gmail.com>
-#
-# This plugin is UNOFFICIAL and completely UNSUPPORTED.
-# It is released without any warranties of any kind.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the:
-#
-# Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330, Boston,
-# MA 02111-1307  USA
-#
-
-
-import gtk
-
-# Menu Items
-_ui_str =3D """
-<ui>
-	<menubar name=3D"menubar">
-		<menu name=3D"ToolsMenu" action=3D"Tools">
-			<separator />
-			<menu name=3D"Tab Links Menu" action=3D"TabLinksMenu">
-				<menuitem name=3D"Default" action=3D"CopyTabLinksDefault" />
-				<menuitem name=3D"Mediawiki" action=3D"CopyTabLinksMediaWiki" />
-				<menuitem name=3D"MoinMoin" action=3D"CopyTabLinksMoinMoin" />
-				<menuitem name=3D"DokuWiki" action=3D"CopyTabLinksDokuwiki" />
-				<menuitem name=3D"HTML" action=3D"CopyTabLinksHTML" />
-			</menu>
-			<separator />
-		</menu>
-	</menubar>
-</ui>
-"""
-
-def _get_tab_links_list(window):
-	LinkList =3D []
-	for aTab in window.get_notebook():
-		LinkList.append( (aTab.get_address(), aTab.get_title() ) )
-	return LinkList
-
-def _copy_links_text_to_clipboard(LinksText):
-	clipboard =3D gtk.Clipboard(gtk.gdk.display_get_default(), 'CLIPBOARD')
-	clipboard.set_text(LinksText, -1)
-
-def _get_formatted_links_text(window, format =3D ""):
-	LinkList =3D _get_tab_links_list(window)
-	outfmt =3D {
-		# Format: "format_name" : (leading_text, format_template, trailing_tex=
t)
-		# contains all except the default bare naked link list
-		"mediawiki"	: ("", "* [%s %s]", ""),
-		"moinmoin"	: ("", " * [%s %s]", ""),
-		"dokuwiki"	: ("", "  * [[%s|%s]]", ""),
-		"html"		: ("<ul>\n", "<li><a href=3D\"%s\">%s</a></li>", "\n</ul>"),
-		}
-	if LinkList:
-		if outfmt.has_key(format):
-			LinksText =3D "\n".join( [ outfmt[format][1] % (tablink[0], tablink[1=
]) for tablink in LinkList if tablink] )
-			LinksText =3D "%s%s%s" % ( outfmt[format][0], LinksText, outfmt[forma=
t][2] )
-		else:
-			# just return the links
-			LinksText =3D "\n".join( [tablink[0] for tablink in LinkList if tabli=
nk] )
-		_copy_links_text_to_clipboard(LinksText)
-
-
-def _copy_tab_links_default(action, window):
-	_get_formatted_links_text(window, "default")
-
-def _copy_tab_links_mediawiki(action, window):
-	_get_formatted_links_text(window, "mediawiki")
-
-def _copy_tab_links_moinmoin(action, window):
-	_get_formatted_links_text(window, "moinmoin")
-
-def _copy_tab_links_dokuwiki(action, window):
-	_get_formatted_links_text(window, "dokuwiki")
-
-def _copy_tab_links_html(action, window):
-	_get_formatted_links_text(window, "html")
-
-
-# This is to pass to gtk.ActionGroup.add_actions()
-_actions =3D [
-		('TabLinksMenu', None, 'Tab Links', None, None, None),
-		('CopyTabLinksDefault', None, 'Default', None, None, _copy_tab_links_d=
efault),
-		('CopyTabLinksMediaWiki', None, 'Mediawiki', None, None, _copy_tab_lin=
ks_mediawiki),
-		('CopyTabLinksMoinMoin', None, 'MoinMoin', None, None, _copy_tab_links=
_moinmoin),
-		('CopyTabLinksDokuwiki', None, 'DokuWiki', None, None, _copy_tab_links=
_dokuwiki),
-		('CopyTabLinksHTML', None, 'HTML', None, None, _copy_tab_links_html),
-		]
-
-# These implement the EphyExtension interface.
-
-def attach_window(window):
-	ui_manager =3D window.get_ui_manager()
-	group =3D gtk.ActionGroup('TabLinks')
-	group.add_actions(_actions, window)
-	ui_manager.insert_action_group(group, -1)
-	ui_id =3D ui_manager.add_ui_from_string(_ui_str)
-
-	window._TabLinks_data =3D (group, ui_id)
-
-
-def detach_window(window):
-	group, ui_id =3D window._TabLinks_data
-	del window._TabLinks_data
-
-	ui_manager =3D window.get_ui_manager()
-	ui_manager.remove_ui(ui_id)
-	ui_manager.remove_action_group(group)
-	ui_manager.ensure_update()
-
diff --git a/misc/universal-edit-button.ephy-extension b/misc/universal-e=
dit-button.ephy-extension
deleted file mode 100644
index d6f0be4..0000000
--- a/misc/universal-edit-button.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DUniversal Edit Button
-Description=3DShows the Universal Edit Button if the site has one
-Authors=3DJohannes Berg <johannes at sipsolutions.net>, Jaime Frutos Morale=
s <acidborg at gmail.com>
-Version=3D1
-URL=3Dhttp://johannes.sipsolutions.net/Projects/ephy-ueb
-
-[Loader]
-Type=3Dpython
-Module=3Duniversal-edit-button
diff --git a/misc/universal-edit-button.py b/misc/universal-edit-button.p=
y
deleted file mode 100644
index dda15bf..0000000
--- a/misc/universal-edit-button.py
+++ /dev/null
@@ -1,230 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-#  Epiphany extension: Universal Edit Button
-#  Version 1 (2008-06-27)
-#  Copyright (C) 2006 Jaime Frutos Morales <acidborg at gmail.com>
-#  Copyright (C) 2008 Johannes Berg <johannes at sipsolutions.net>
-#
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2, or (at your option)
-#  any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,=
 USA.
-#
-
-import epiphany
-import pygtk
-pygtk.require('2.0')
-import gtk
-from gettext import gettext as _
-import os.path
-import re
-import urllib
-from htmlentitydefs import name2codepoint as n2cp
-
-# Create UEB icon from code generated using "gdk-pixbuf-csource --raw cc=
.png"
-_icon =3D (""
-  # Pixbuf magic (0x47646b50)
-  "GdkP"
-  # length: header (24) + pixel_data (1024)
-  "\0\0\4\30"
-  # pixdata_type (0x1010002)
-  "\1\1\0\2"
-  # rowstride (64)
-  "\0\0\0@"
-  # width (16)
-  "\0\0\0\20"
-  # height (16)
-  "\0\0\0\20"
-  # pixel_data:
-  "\377\377\377\0\201\330\201\377\24\234\24\377\23\231\23\377\25\236\25"
-  "\377\27\244\27\377\30\251\30\377\32\256\32\377\34\263\34\377\14H\14\3=
77"
-  "\0\0\0\377\237x\27\377\377\300%\377\377\300%\377\377\334\205\377\377"
-  "\377\377\0\201\330\201\377\4p\4\377\11~\11\377\15\211\15\377\21\223\2=
1"
-  "\377\24\236\24\377\30\250\30\377\34\263\34\377\13E\13\377\0\0\0\377\2=
37"
-  "x\27\377\377\300%\377\377\300%\377\377\300%\377\335\245\36\377\243\22=
5"
-  "r\377\24\234\24\377\11~\11\377\15\211\15\377\21\223\21\377\24\236\24"
-  "\377\30\250\30\377\34\263\34\377\13E\13\377\0\0\0\377\237x\27\377\377=
"
-  "\300%\377\377\300%\377\377\300%\377\335\245\36\377S;\2\377G2\0\377\23=
"
-  "\231\23\377\15\211\15\377\21\223\21\377\24\236\24\377\30\250\30\377\3=
4"
-  "\263\34\377\23u\23\377\0\0\0\377\237x\27\377\377\300%\377\377\300%\37=
7"
-  "\377\300%\377\335\245\36\377S;\2\377G2\0\377G2\0\377\25\236\25\377\21=
"
-  "\223\21\377\24\236\24\377\30\250\30\377\34\263\34\377\40\275\40\377\4=
"
-  "\30\4\377]YK\377\377\300%\377\377\300%\377\377\300%\377\335\245\36\37=
7"
-  "S;\2\377G2\0\377G2\0\377:)\0\377\27\244\27\377\24\236\24\377\30\250\3=
0"
-  "\377\34\263\34\377\40\275\40\377\32\224\32\377\0\0\0\377\330\320\257"
-  "\377\377\300%\377\377\300%\377\335\245\36\377S;\2\377G2\0\377G2\0\377=
"
-  ":)\0\377\4\3\0\377\30\251\30\377\30\250\30\377\34\263\34\377\40\275\4=
0"
-  "\377#\310#\377\11""3\11\377]YK\377\367\356\310\377\370\350\264\377\33=
0"
-  "\277z\377S;\2\377G2\0\377G2\0\377:)\0\377\4\3\0\377\14H\14\377\32\256=
"
-  "\32\377\34\263\34\377\40\275\40\377#\310#\377\"\267\"\377\0\0\0\377\3=
30"
-  "\320\257\377\367\356\310\377\367\356\310\377\326\313\243\377G2\0\377"
-  "G2\0\377:)\0\377\4\3\0\377\14H\14\377\35\266\35\377\34\263\34\377\40"
-  "\275\40\377#\310#\377'\322'\377\20Q\20\377MJ\77\377\367\356\310\377\3=
67"
-  "\356\310\377\367\356\310\377\367\356\310\377\307\274\226\377PH2\377\4=
"
-  "\3\0\377\14H\14\377\36\271\36\377\33\261\33\377\36\271\36\377#\310#\3=
77"
-  "'\322'\377(\316(\377\0\0\0\377\0\0\0\377.-&\377\367\356\310\377\350\3=
37"
-  "\274\377|wd\377\17\17\15\377\4\31\4\377\25y\25\377\36\271\36\377\32\2=
56"
-  "\32\377\31\254\31\377\40\276\40\377'\322'\377+\335+\377\27r\27\377\0"
-  "\0\0\377\0\0\0\377\0\0\0\377lhX\377\17\17\15\377\12""5\12\377\34\231"
-  "\34\377\"\303\"\377\36\271\36\377\32\256\32\377\27\244\27\377\30\247"
-  "\30\377\"\303\"\377+\335+\377/\347/\377\3\17\3\377\0\0\0\377\0\0\0\37=
7"
-  "\0\0\0\377\20T\20\377$\274$\377%\315%\377\"\303\"\377\36\271\36\377\3=
2"
-  "\256\32\377\27\244\27\377\23\231\23\377\26\241\26\377$\310$\377/\347"
-  "/\3772\3622\377\24^\24\377\3\17\3\377\30u\30\377*\324*\377)\330)\377"
-  "%\315%\377\"\303\"\377\36\271\36\377\32\256\32\377\27\244\27\377\23\2=
31"
-  "\23\377\17\217\17\377\24\234\24\377#\306#\3772\3622\3776\3736\3774\37=
0"
-  "4\3771\3551\377-\343-\377)\330)\377%\315%\377\"\303\"\377\36\271\36\3=
77"
-  "\32\256\32\377\27\244\27\377\23\231\23\377\17\217\17\377\13\204\13\37=
7"
-  "\25\236\25\377\201\330\201\377%\314%\3774\3704\3771\3551\377-\343-\37=
7"
-  ")\330)\377%\315%\377\"\303\"\377\36\271\36\377\32\256\32\377\27\244\2=
7"
-  "\377\23\231\23\377\17\217\17\377\13\204\13\377\6t\6\377\201\330\201\3=
77"
-  "\377\377\377\0\201\330\201\377$\311$\377%\313%\377#\306#\377!\301!\37=
7"
-  "\37\274\37\377\35\266\35\377\33\261\33\377\31\254\31\377\30\247\30\37=
7"
-  "\26\241\26\377\24\234\24\377\25\236\25\377\201\330\201\377\377\377\37=
7"
-  "\0"
-)
-icon_size =3D gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
-pixbuf =3D gtk.gdk.pixbuf_new_from_inline(len(_icon), _icon, False)
-pixbuf =3D pixbuf.scale_simple(icon_size[0], icon_size[1], gtk.gdk.INTER=
P_BILINEAR)
-
-ueb_re =3D re.compile(r'<link(\s+(rel=3D"(?P<alt>alternate)"|type=3D"(?P=
<type>application/(x-)?wiki)"|title=3D"(?P<title>[^"]*)"|href=3D"(?P<href=
>[^"]*)"))+\s*/?>', re.IGNORECASE | re.DOTALL | re.MULTILINE)
-head_re =3D re.compile(r'<head>(.*?)</head>', re.IGNORECASE | re.DOTALL =
| re.MULTILINE)
-
-
-def substitute_entity(match):
-    ent =3D match.group(2)
-    if match.group(1) =3D=3D "#":
-        return unichr(int(ent))
-    else:
-        cp =3D n2cp.get(ent)
-
-        if cp:
-            return unichr(cp)
-        else:
-            return match.group()
-
-entity_re =3D re.compile("&(#?)(\d{1,5}|\w{1,8});")
-def decode_htmlentities(string):
-    return entity_re.subn(substitute_entity, string)[0]
-
-def _switch_page_cb(notebook, page, page_num, window):
-    ui_show(window, window.get_active_child())
-   =20
-def _load_status_cb(embed, data, window):
-    if not embed.get_property('load-status'):
-        # page is loaded
-        detect_ueb(window, embed)
-    else:
-        embed._has_ueb =3D False
-    ui_show(window, embed)
-       =20
-def _ueb_button_pressed(button, event, window):
-    embed =3D window.get_active_child()
-    ueb_url =3D embed._ueb_url
-    embed.load_url(ueb_url)
-
-def ui_init(window):
-    ueb_image =3D gtk.Image()
-    ueb_image.set_from_pixbuf(pixbuf)
-    ueb_image.show()
-
-    eventbox =3D gtk.EventBox()   =20
-    eventbox.set_visible_window(False)
-    eventbox.connect("button-press-event", _ueb_button_pressed, window)
-    # Pack the widgets
-    eventbox.add(ueb_image)
-
-    eventbox.show()   =20
-
-    statusbar =3D window.get_statusbar()
-    statusbar.add_widget(eventbox)
-    statusbar._ueb_eventbox =3D eventbox
-    eventbox.set_tooltip_text('')
-
-def ui_show(window, embed):
-    if embed !=3D window.get_active_child():
-        return
-
-    statusbar =3D window.get_statusbar()
-    eventbox =3D statusbar._ueb_eventbox
-   =20
-    try:
-        if embed._has_ueb:
-            statusbar._ueb_eventbox.set_tooltip_text(embed._ueb_title)
-            eventbox.show()
-        else:
-            eventbox.hide()
-    except:=20
-        eventbox.hide()
-
-def ui_destroy(window):
-    statusbar =3D window.get_statusbar()
-    eventbox =3D statusbar._ueb_eventbox
-    del statusbar._ueb_eventbox
-    statusbar.remove_widget(eventbox)
-
-def detect_ueb(window, embed):
-    # Get the HTML code
-    persist =3D epiphany.ephy_embed_factory_new_object(epiphany.EmbedPer=
sist)
-    persist.set_flags(epiphany.EMBED_PERSIST_NO_VIEW |epiphany.EMBED_PER=
SIST_COPY_PAGE)
-    persist.set_embed(embed)
-    embed._has_ueb =3D False
-    page_string =3D persist.to_string()
-    ueb_url, ueb_title =3D get_ueb_data(page_string)
-    if ueb_url is not None:
-        cur =3D embed.get_property('address')
-        if not '://' in ueb_url:
-            if ueb_url[0] =3D=3D '/':
-                ueb_url =3D '/'.join(cur.split('/')[:3]) + ueb_url
-            else:
-                ueb_url =3D '/'.join(cur.split('/')[:-1]) + ueb_url
-        embed._ueb_url =3D decode_htmlentities(ueb_url)
-        embed._ueb_title =3D decode_htmlentities(ueb_title)
-        embed._has_ueb =3D True
-
-def get_ueb_data(page_string):
-    match =3D head_re.search(page_string)
-    if not match:
-        return None, None
-    head_string =3D match.group(1)
-    for match in ueb_re.finditer(head_string):
-        if not match.group('alt'):
-            continue
-        if not match.group('type'):
-            continue
-        href =3D match.group('href')
-        if not href:
-            continue
-        title =3D match.group('title')
-        return href, title
-    return None, None
-
-def attach_window(window):
-    notebook =3D window.get_notebook()
-    ui_init(window)
-    signal_tab_switch =3D notebook.connect_after("switch_page", _switch_=
page_cb, window);
-    notebook._ueb_signal_tab_switch =3D signal_tab_switch
-
-def detach_window(window):
-    notebook =3D window.get_notebook()
-    notebook.disconnect(notebook._ueb_signal_tab_switch)
-    del notebook._ueb_signal_tab_switch
-    ui_destroy(window)
-
-def attach_tab(window, embed):
-    signal_load_status =3D embed.connect_after("notify::load-status",_lo=
ad_status_cb, window)
-    embed._ueb_signal_load_status =3D signal_load_status
-
-def detach_tab(window, embed):
-    embed.disconnect(embed._ueb_signal_load_status)
-    del embed._ueb_signal_load_status
diff --git a/misc/video-downloader.ephy-extension b/misc/video-downloader=
.ephy-extension
deleted file mode 100644
index 4eb73b5..0000000
--- a/misc/video-downloader.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DVideo Downloader
-Description=3DDownloads embeded Youtube videos (and other video hosting =
sites) via clive.
-Authors=3DAdam Schmalhofer <blauebirke at gmx.de>
-Version=3D1
-URL=3Dhttp://blauebirke.wordpress.com/2008/09/09/epiphany-video-download=
-extension/
-
-[Loader]
-Type=3Dpython
-Module=3Dvideo-downloader
diff --git a/misc/video-downloader.py b/misc/video-downloader.py
deleted file mode 100644
index 37cbfc9..0000000
--- a/misc/video-downloader.py
+++ /dev/null
@@ -1,352 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Epiphany extension: Video downloader;=20
-# Based on Creative Commons license viewer [Version 0.2 (27/07/2006)]
-#    Copyright (C) 2006 Jaime Frutos Morales <acidborg at gmail.com>
-# Copyright (C) 2008 Adam Schmalhofer <schmalho at users.berlios.de>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, =
USA.
-
-"""
-An extension for the GNOME Web Browser 'Epiphany'. It searches the page =
as well
-as the URL in the address bar for known video hosting sites. These embed=
ed=20
-videos then can be via clive.
-"""
-
-CLIVE_VERSION =3D 2
-
-import re
-import gconf
-import os
-from subprocess import Popen, PIPE
-from os import path
-
-import epiphany
-import gobject
-import pygtk
-pygtk.require('2.0')
-import gtk
-import pynotify
-from pynotify import Notification
-from gettext import gettext as _, ngettext as N_
-
-GCONF_KEY_DOWNLOAD_FOLDER =3D '/apps/epiphany/directories/downloads_fold=
er'
-GCONF_KEY_USE_PROXY =3D '/system/http_proxy/use_http_proxy'
-GCONF_KEY_PROXY_PORT =3D '/system/http_proxy/port'
-GCONF_KEY_PROXY_HOST =3D '/system/http_proxy/host'
-GCONF_KEY_USE_PROXY_AUTH =3D '/system/http_proxy/use_authentication'
-GCONF_KEY_PROXY_USER =3D '/system/http_proxy/authentication_user'
-GCONF_KEY_PROXY_PASSWORD =3D '/system/http_proxy/authentication_password=
'
-
-# Each element in EMBEDED_VIDEO_RE_LIST must contain exactly one set of =
braces.
-EMBEDED_VIDEO_RE_LIST =3D [
-    r'(?:[a-z]{2,3}\.)?youtube\.[a-z]{2,3}/[^\'"#&]*v[=3D/]([\w-]{11})',
-    r'video\.google\.com/googleplayer\.swf\?docid=3D(\d{19})',
-    r'www\.dailymotion\.com/swf/(\w{18})',
-    r'www\.guba\.com/f/root\.swf\?video_url=3Dhttp://free\.guba\.com/upl=
oaditem/(\d{10})/flash\.flv',
-    r'www\.metacafe\.com/fplayer/(\d{7}/\w+)\.swf',
-    r'(?:[a-z]{2,3}\.)?sevenload\.[a-z]{2,3}/pl/(\w{7})']
-# One element in VIDEO_PAGE_BASE for each in EMBEDED_VIDEO_RE_LIST.=20
-# %s is replaced with the string matching the braces in EMBEDED_VIDEO_RE=
_LIST.
-VIDEO_PAGE_BASE =3D [
-    r'http://youtube.com/watch?v=3D%s',
-    r'http://video.google.com/videoplay?docid=3D%s',
-    r'http://www.dailymotion.com/video/%s',
-    r'http://www.guba.com/watch/%s',
-    r'http://www.metacafe.com/watch/%s',
-    r'http://sevenload.com/videos/%s' ]
-URL_VIDEO_RE_BASE_LIST =3D [=20
-    r'[a-z]{2,3}\.youtube\.com/watch\?v=3D[\w-]{11}',
-    r'video\.google\.com/videoplay\?docid=3D\d{19}',
-    r'www\.dailymotion\.com(/.*)?/video/',
-    r'www\.guba\.com/watch/',
-    r'www\.metacafe\.com/watch/',
-    r'[a-z]{2,3}\.sevenload\.com/(videos|sendungen/[a-z-]+/folgen|shows/=
[a-z-]+/episodes)/\w' ]
-CLIVE2X_ONLY_URL_VIDEO_RE_BASE_LIST =3D [=20
-    r'break\.com/[a-z-]+/[a-z-]+\.html',
-    r'www\.evisor\.tv/tv/[a-z0-9_-]+/[a-z0-9_-]+\d{4}\.htm',
-    r'www\.liveleak\.com/view\?i=3D\d{3}_\d{10}' ]
-if CLIVE_VERSION =3D=3D 2:
-    URL_VIDEO_RE_BASE_LIST.extend(CLIVE2X_ONLY_URL_VIDEO_RE_BASE_LIST)
-URL_VIDEO_RE =3D re.compile('^http://(%s)' %=20
-        '|'.join(URL_VIDEO_RE_BASE_LIST), re.I)
-EMBEDED_VIDEO_RE =3D re.compile('http://(%s)' %=20
-        '|'.join(EMBEDED_VIDEO_RE_LIST), re.I)
-
-def _switch_page_cb(notebook, page, page_num, window):
-    ui_show(window, window.get_active_child())
-
-def _load_status_cb(embed, data, window):
-    detect_videos_in_address(window, embed)
-    if not embed.get_property('load-status') and not embed._has_video:
-        # page is loaded and url isn't a video hosting page
-        detect_videos_in_page(window, embed)
-    ui_show(window, embed)
-       =20
-def _video_button_pressed(widget, event, window):
-    if event.button not in [1,2]:
-        return
-    embed =3D window.get_active_child()
-    if pynotify.init('Basics') and event.button =3D=3D 1:
-        n =3D Notification(_('Started downloading.'),=20
-                N_('Started to download %s video.',=20
-                'Started to download %s videos.', len(embed._video_urls)=
) % \
-                         len(embed._video_urls) )
-        n.set_urgency(pynotify.URGENCY_LOW)
-        x, y =3D embed.get_pointer()
-        forget, x, y, forget =3D gtk.gdk.\
-                screen_get_default().get_display().get_pointer()
-        n.set_hint('x', x)
-        n.set_hint('y', y)
-        n.show()
-    download_videos(window, embed, embed._video_urls, event.button =3D=3D=
 2)
-
-def ui_init(window):
-    cc_image =3D gtk.Image()
-    icon_theme =3D gtk.icon_theme_get_default()
-    pixbuf =3D icon_theme.load_icon('video',=20
-            gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)[0], 0)
-    cc_image.set_from_pixbuf(pixbuf)
-    cc_image.show()
-
-    eventbox =3D gtk.EventBox()   =20
-    eventbox.set_visible_window(True)
-    eventbox.connect ("button-press-event", _video_button_pressed, windo=
w);
-    # Pack the widgets
-    eventbox.add(cc_image)
-    eventbox.show()   =20
-
-    statusbar =3D window.get_statusbar()
-    statusbar.add_widget(eventbox)
-    statusbar._video_eventbox =3D eventbox
-
-def ui_show(window, embed):
-    if embed !=3D window.get_active_child(): return
-
-    statusbar =3D window.get_statusbar()
-    eventbox =3D statusbar._video_eventbox
-   =20
-    try:
-        if embed._has_video:
-            n =3D len(embed._video_urls)
-            eventbox.set_tooltip_text(
-                    N_("%s embeded video", "%s embeded videos", n) % n)
-            eventbox.show()
-        else:
-            eventbox.hide()
-    except:=20
-        eventbox.hide()
-
-def ui_destroy(window):
-    statusbar =3D window.get_statusbar()
-    eventbox =3D statusbar._video_eventbox
-    del statusbar._video_eventbox
-    statusbar.remove_widget(eventbox)
-
-def on_gconf_new_downloads_folder(client, gconf_id, gconf_entry, **kwarg=
s):
-    update_downloads_folder()
-
-def on_gconf_proxy_changed(client, gconf_id, gconf_entry, **kwargs):
-    update_proxy_settings()
-
-def update_proxy_settings():
-    global proxy
-    g =3D gconf_client
-    if g.get_bool(GCONF_KEY_USE_PROXY):
-        # XXX: Should check if string is a valid proxy.
-        proxy =3D '%s:%s' % (g.get_string(GCONF_KEY_PROXY_HOST), \
-                g.get_int(GCONF_KEY_PROXY_PORT))
-        if g.get_bool(GCONF_KEY_USE_PROXY_AUTH):
-            auth =3D '%s:%s@'%(g.get_string(GCONF_KEY_PROXY_USER), \
-                             g.get_string(GCONF_KEY_PROXY_PASSWORD))
-        else:
-            auth =3D ''
-        proxy =3D 'http://%s%s:%i'%(auth, g.get_string(GCONF_KEY_PROXY_H=
OST), \
-                                  g.get_int(GCONF_KEY_PROXY_PORT))
-    else:
-        proxy =3D None
-
-def update_downloads_folder():
-    global downloads_folder
-    new_folder =3D path.join(path.expanduser('~'), path.expanduser(
-            gconf_client.get_string(GCONF_KEY_DOWNLOAD_FOLDER)))
-    if path.isdir(new_folder):
-        downloads_folder =3D new_folder
-        return True
-    return False
-
-def download_videos(window, embed, video_urls, open_inside):
-    clive_cmd_base =3D [ 'clive', '--quiet', '--emit-csv' ]
-    clive_env =3D { "HOME": os.getenv("HOME") }
-    if proxy !=3D None:
-        clive_env["http_proxy"]=3Dproxy
-
-    for video_url in video_urls:
-        clive_cmd =3D clive_cmd_base + [ video_url ]=20
-        try:
-            new_download_ps =3D Popen(clive_cmd, stdout=3DPIPE, stderr=3D=
PIPE, close_fds=3DTrue, env=3Dclive_env)
-        except OSError, e:
-            print 'OSError executing clive', e
-            if e.args[0] =3D=3D 2:
-                error_text =3D _("Video-downloader extension could not e=
xecute \
-                               'clive'. Please make sure clive is instal=
led \
-                               in a directory listed in the $PATH variab=
le.")
-            else:
-                error_text =3D str(e)
-            message =3D gtk.MessageDialog(type=3Dgtk.MESSAGE_ERROR,=20
-                    buttons=3Dgtk.BUTTONS_CLOSE, message_format=3Derror_=
text)
-            message.run()
-            message.destroy()
-        else:
-            gobject.child_watch_add(new_download_ps.pid, on_clive_finish=
ed,=20
-                    data=3D(window, embed, new_download_ps.stdout,=20
-                          new_download_ps.stderr, video_url, open_inside=
))
-
-def debug_video_urls(window, embed, video_urls, open_inside):
-    """
-    A drop-in replacement for the function download_videos. It displays =
a=20
-    dialog with the URLs which otherwise would be downloaded.=20
-   =20
-    Used for debugging only.
-    """
-    message_text =3D "\n".join(video_urls)
-    message =3D gtk.MessageDialog(type=3Dgtk.MESSAGE_ERROR,=20
-            buttons=3Dgtk.BUTTONS_CLOSE, message_format=3Dmessage_text)
-    message.run()
-    message.destroy()
-
-def detect_videos_in_address(window, embed):
-    url =3D embed.get_address()
-    if URL_VIDEO_RE.findall(url) !=3D []:
-        embed._video_urls =3D [url]
-        embed._has_video =3D True
-    else:
-        embed._has_video =3D False
-
-def start_video_download(window, embed, url, file_name):
-    """
-    Lets Epiphany download a video via EmbedPersist given the output
-    of clive (as a string array). Doesn't work with Webkit-backend.
-    """
-    persist =3D epiphany.ephy_embed_factory_new_object(epiphany.EmbedPer=
sist)
-    persist.set_source(url)
-    persist.set_fc_parent(window)
-    persist.set_fc_title(_('Save Video As'))
-    persist.set_dest(path.join(downloads_folder, file_name[1:-1]))
-    persist.set_embed(embed)
-    persist.set_flags(epiphany.EMBED_PERSIST_ASK_DESTINATION)
-    if not persist.save():
-        # Failed to start downloading the video
-        error_text =3D _("Failed to start the download. Please report th=
is \
-                       problem as a comment at http://blauebirke.wordpre=
ss.com/2008/10/04/new-improvements-in-epiphany-video-downloader-extension=
/ \
-                       or send an email backend to schmalho at users.berlio=
s.de.")
-        message =3D gtk.MessageDialog(type=3Dgtk.MESSAGE_ERROR,=20
-                buttons=3Dgtk.BUTTONS_CLOSE, message_format=3Derror_text=
)
-        message.run()
-        message.destroy()
-
-def open_videos_inside(window, embed, url):
-    tab =3D epiphany.ephy_shell_get_default().new_tab(window, window.get=
_active_child(), "about:blank", epiphany.NEW_TAB_IN_EXISTING_WINDOW)
-    window.set_active_child(tab)
-    window.load_url(url)
-
-def on_clive_finished(pid, condition, data):
-    """
-    Processes the results from the clive process. If succeded starts the
-    download. Otherwise displays an error message to the user.
-    """
-    window, embed, clive_stdout, clive_stderr, video_url, open_inside =3D=
 data
-    if condition =3D=3D 0:
-        url, file_name =3D clive_stdout.readlines()[-1].split(',')[1:3]
-        url =3D url[1:-1] # to remove the quotes
-       =20
-        if open_inside:
-            open_videos_inside(window, embed, url)
-        else:
-            start_video_download(window, embed, url, file_name)
-    else:
-        title_text =3D _('Video Downloader extension: Extracting video i=
nformation via clive failed:')
-        error_text =3D ''.join(['Exited with status %s.\n' % condition] =
+
-                               clive_stderr.readlines() + ['=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D\n'] +
-                               clive_stdout.readlines())
-        message =3D gtk.MessageDialog(type=3Dgtk.MESSAGE_ERROR,=20
-                buttons=3Dgtk.BUTTONS_CLOSE, message_format=3Dtitle_text=
)
-        message.format_secondary_text(error_text)
-        message.run()
-        message.destroy()
-
-def detect_videos_in_page(window, embed):
-    # Get the HTML code
-    persist =3D epiphany.ephy_embed_factory_new_object(epiphany.EmbedPer=
sist)
-    persist.set_flags(
-            epiphany.EMBED_PERSIST_NO_VIEW | epiphany.EMBED_PERSIST_COPY=
_PAGE)
-    persist.set_embed(embed)
-    page_string =3D persist.to_string()
-    video_urls =3D get_video_urls(page_string)
-    if video_urls:
-        embed._video_urls =3D video_urls
-        embed._has_video =3D True
-    else :
-        embed._has_video =3D False
-
-def get_video_urls(page_string):
-    """
-    Finds all unique videos represented by a plain text link from the=20
-    page (something starting with a "http://").=20
-   =20
-    Returns a set of url-strings.
-    """
-    video_urls =3D set()
-    for packed_url in EMBEDED_VIDEO_RE.findall(page_string):
-        for video_id, page_base in zip(packed_url[1:], VIDEO_PAGE_BASE):
-            if video_id !=3D '':
-                video_urls.add(page_base % video_id)
-    return video_urls
-
-def attach_window(window):
-    notebook =3D window.get_notebook()
-    ui_init(window)
-    signal_tab_switch =3D notebook.connect_after(
-            "switch_page", _switch_page_cb, window);
-    notebook._video_signal_tab_switch =3D signal_tab_switch
-
-def detach_window(window):
-    notebook =3D window.get_notebook()
-    notebook.disconnect(notebook._video_signal_tab_switch)
-    del notebook._video_signal_tab_switch
-    ui_destroy(window)
-
-def attach_tab(window, embed):
-    signal_load_status =3D embed.connect_after(
-            "notify::load-status", _load_status_cb, window)
-    embed._video_signal_load_status =3D signal_load_status
-
-def detach_tab(window, embed):
-    embed.disconnect(embed._video_signal_load_status)
-    del embed._video_signal_load_status
-
-gconf_client =3D gconf.client_get_default()
-gconf_client.notify_add(GCONF_KEY_DOWNLOAD_FOLDER,=20
-        on_gconf_new_downloads_folder)
-for key in [ GCONF_KEY_USE_PROXY, GCONF_KEY_PROXY_HOST, GCONF_KEY_PROXY_=
PORT,=20
-            GCONF_KEY_USE_PROXY_AUTH, GCONF_KEY_PROXY_USER,=20
-            GCONF_KEY_PROXY_PASSWORD ]:
-    gconf_client.notify_add(key, on_gconf_proxy_changed)
-downloads_folder =3D path.expanduser('~')
-update_downloads_folder()
-update_proxy_settings()
-
-# DEBUG
-#download_videos =3D debug_video_urls
diff --git a/misc/view-source.ephy-extension b/misc/view-source.ephy-exte=
nsion
deleted file mode 100644
index 5d0b985..0000000
--- a/misc/view-source.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DView Source (the fast way)
-Description=3DView page source using gecko's view-source:, it overrides =
the default view-source action.
-Authors=3DDiego Escalante Urrelo <diegoe at gnome.org>\nWouter Bolsterlee <=
wbolster at gnome.org>
-Version=3D20080422
-URL=3Dhttp://www.gnome.org/~diegoe/epiphany/
-
-[Loader]
-Type=3Dpython
-Module=3Dview-source
diff --git a/misc/view-source.py b/misc/view-source.py
deleted file mode 100644
index 6561ef2..0000000
--- a/misc/view-source.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# -*- encoding: utf-8 -*-
-#
-#   View Source - Epiphany Extension
-#   Copyright =C2=A9 2006, 2008  Diego Escalante Urrelo <diegoe at gnome.or=
g>
-#   Copyright =C2=A9 2008  Wouter Bolsterlee <wbolster at gnome.org>
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import epiphany
-import gtk
-import gettext
-
-try:
-    t =3D gettext.translation("epiphany")
-    _ =3D t.ugettext
-except Exception, e:
-    _ =3D lambda x : x
-
-_ui_str =3D """
-<ui>
-  <menubar>
-    <menu name=3D"ViewMenu" action=3D"View">
-      <menuitem name=3D"ViewPageSourceMenu" action=3D"ViewPageSource"/>
-    </menu>
-  </menubar>
-</ui>
-"""
-
-def _view_source_cb(action, window):
-    source_url =3D 'view-source:%s' % window.get_active_child().get_addr=
ess()
-    tab =3D epiphany.ephy_shell_get_default().new_tab(window, window.get=
_active_child(), 'about:blank', epiphany.NEW_TAB_IN_EXISTING_WINDOW)
-    window.set_active_child(tab)
-    window.load_url(source_url)   =20
-   =20
-_actions =3D [('ViewPageSource', 'stock_view-html-source', _('_Page Sour=
ce'),
-         '<control>U', None, _view_source_cb)]
-
-def attach_window(window):
-    ui_manager =3D window.get_ui_manager()
-    group =3D gtk.ActionGroup('ViewPageSource')
-    group.add_actions(_actions, window)
-    ui_manager.insert_action_group(group, 0)
-    ui_id =3D ui_manager.add_ui_from_string(_ui_str)
-
-    window._sample_menu_entry_data =3D (group, ui_id)
-
-def detach_window(window):
-    group, ui_id =3D window._sample_menu_entry_data
-    del window._sample_menu_entry_data
-
-    ui_manager =3D window.get_ui_manager()
-    ui_manager.remove_ui(ui_id)
-    ui_manager.remove_action_group(group)
-    ui_manager.ensure_update()
diff --git a/tabs/close_other_tabs.ephy-extension b/tabs/close_other_tabs=
.ephy-extension
deleted file mode 100644
index 4c5b63f..0000000
--- a/tabs/close_other_tabs.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DClose Other Tabs
-Description=3DCloses all but the active tab
-Authors=3DSean Fulmer <wsfulmer at gmail.com
-Version=3D1
-URL=3Dhttp://noandwhere.com
-
-[Loader]
-Type=3Dpython
-Module=3Dclose_other_tabs
diff --git a/tabs/close_other_tabs.py b/tabs/close_other_tabs.py
deleted file mode 100644
index faa5431..0000000
--- a/tabs/close_other_tabs.py
+++ /dev/null
@@ -1,167 +0,0 @@
-##
-## close_other_tabs.py
-##
-## Provides menu command and keyboard shortcuts to close tabs
-## other than the active tab
-##
-## Copyright (C) 2008 Sean Fulmer
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 U=
SA
-##
-
-import epiphany
-
-import gtk
-
-def _close_other_tabs_cb (action, window, close_left=3DTrue, close_right=
=3DTrue):
-    atab =3D window.get_active_child()
-    right=3DFalse
-    for tab in window.get_notebook():
-        if tab =3D=3D atab:
-            right=3DTrue
-        elif (right and close_right) or (not right and close_left):
-            tab.close()
-
-def _close_left_tabs_cb(action, window):
-    _close_other_tabs_cb (action, window, True, False)
-def _close_right_tabs_cb(action, window):
-    _close_other_tabs_cb (action, window, False, True)
-
-
-# signal callbacks
-def _switch_page_cb(notebook, page, page_num, window):
-    """
-    enables/disables menus when tab is changed
-    """
-   =20
-    _set_menu_states(notebook, page_num, window)
-
-def _page_added_removed_reordered_cb(notebook, child, page_num, window):
-    """
-    enables/disables menus when tab is added, removed, or re-ordered
-    """
-   =20
-    page_num =3D window.get_notebook().get_current_page()
-    _set_menu_states(notebook, page_num, window)
-
-def _set_menu_states(notebook, page_num, window):
-    """
-    sets menu state based on presence of other tabs
-    """
-
-    page =3D page_num
-    pages =3D notebook.get_n_pages()
-    not_only =3D pages > 1
-    not_first =3D page > 0
-    not_last =3D page + 1 < pages
-
-    action_group =3D window._close_other_tabs[0]
-
-    action =3D action_group.get_action('CloseOtherTabs')
-    action.set_sensitive(not_only)
-
-    action =3D action_group.get_action('CloseLeftTabs')
-    action.set_sensitive(not_first)
-
-    action =3D action_group.get_action('CloseRightTabs')
-    action.set_sensitive(not_last)
-
-
-
-_ui_str =3D """
-<ui>
-<menubar name=3D"menubar">
-<menu name=3D"TabsMenu" action=3D"Tabs">
-    <separator />
-    <menuitem name=3D"TabsCloseOtherTabsMenu" action=3D"CloseOtherTabs"/=
>
-    <menuitem name=3D"TabsCloseLeftTabsMenu" action=3D"CloseLeftTabs"/>
-    <menuitem name=3D"TabsCloseRightTabsMenu" action=3D"CloseRightTabs"/=
>
-</menu>
-</menubar>
-<popup name=3D"EphyNotebookPopup" action=3D"NotebookPopupAction">
-    <separator />
-    <menuitem name=3D"TabsCloseOtherTabsMenuENP" action=3D"CloseOtherTab=
s"/>
-    <menuitem name=3D"TabsCloseLeftTabsMenuENP" action=3D"CloseLeftTabs"=
/>
-    <menuitem name=3D"TabsCloseRightTabsMenuENP" action=3D"CloseRightTab=
s"/>
-</popup>
-</ui>
-"""
-
-_actions =3D [
-            ('CloseOtherTabs', 'close_other_tabs', 'Close _Other Tabs',
-                '<control><shift>W', None, _close_other_tabs_cb),
-            ('CloseLeftTabs', 'close_left_tabs', 'Close _Left Tabs',
-                None, None, _close_left_tabs_cb),
-            ('CloseRightTabs', 'close_right_tabs', 'Close _Right Tabs',
-                None, None, _close_right_tabs_cb),
-           ]
-
-def attach_window(window):
-
-    # add ui stuff
-    ui_manager =3D window.get_ui_manager()
-    group =3D gtk.ActionGroup('CloseOtherTabs')
-    group.add_actions(_actions, window)
-    ui_manager.insert_action_group(group, 0)
-    ui_id =3D ui_manager.add_ui_from_string(_ui_str)
-    window._close_other_tabs =3D (group, ui_id)
-
-    # connect switch_page signal
-    notebook =3D window.get_notebook()
-    signal_id =3D notebook.connect('switch_page', _switch_page_cb, windo=
w)
-    notebook._switch_page_signal =3D signal_id
-
-    # connect page_added signal
-    signal_id =3D notebook.connect('page_added', _page_added_removed_reo=
rdered_cb, window)
-    notebook._page_added_signal =3D signal_id
-
-    # connect page_removed signal
-    signal_id =3D notebook.connect('page_removed', _page_added_removed_r=
eordered_cb, window)
-    notebook._page_removed_signal =3D signal_id
-
-    # connect page_added signal
-    signal_id =3D notebook.connect('page_reordered', _page_added_removed=
_reordered_cb, window)
-    notebook._page_reordered_signal =3D signal_id
-
-
-def detach_window(window):
-
-    # remove ui stuff
-    group, ui_id =3D window._close_other_tabs
-    del window._close_other_tabs
-    ui_manager =3D window.get_ui_manager()
-    ui_manager.remove_ui(ui_id)
-    ui_manager.remove_action_group(group)
-    ui_manager.ensure_update()
-
-    # disconnect switch_page signal
-    notebook =3D window.get_notebook()
-    signal_id =3D notebook._switch_page_signal
-    notebook.disconnect(signal_id)
-    del notebook._switch_page_signal
-
-    # disconnect page_added signal
-    signal_id =3D notebook._page_added_signal
-    notebook.disconnect(signal_id)
-    del notebook._page_added_signal
-
-    # disconnect page_removed signal
-    signal_id =3D notebook._page_removed_signal
-    notebook.disconnect(signal_id)
-    del notebook._page_removed_signal
-
-    # disconnect page_reordered signal
-    signal_id =3D notebook._page_reordered_signal
-    notebook.disconnect(signal_id)
-    del notebook._page_reordered_signal
diff --git a/tabs/colour-tabs.ephy-extension b/tabs/colour-tabs.ephy-exte=
nsion
deleted file mode 100644
index 5893449..0000000
--- a/tabs/colour-tabs.ephy-extension
+++ /dev/null
@@ -1,9 +0,0 @@
-[Epiphany Extension]
-Name=3DColour tabs
-Description=3DI like colour tabs
-Version=3D0
-URL=3Dhttp://www.gnome.org/projects/epiphany/extensions.html
-
-[Loader]
-Type=3Dpython
-Module=3Dcolour-tabs
diff --git a/tabs/colour-tabs.py b/tabs/colour-tabs.py
deleted file mode 100644
index 0531c2b..0000000
--- a/tabs/colour-tabs.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-#  Epiphany extension: coloured tabs
-#  Version 0.1 (written in an evening, can be hugely improved)
-#  Copyright (C) 2007 Thomas Thurman <tthurman at gnome.org>
-#
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2, or (at your option)
-#  any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,=
 USA.
-#
-
-import epiphany
-import gnomevfs
-import gtk
-import gtk.gdk
-import md5
-
-def _colour_the_tab(tab, data=3DNone):
-    url =3D tab.get_address()
-    try:
-        host =3D gnomevfs.URI(url).host_name.split('.')
-    except:
-        return # ah, forget it. probably about:mozilla or something
-
-    if len(host)=3D=3D0:
-        return # weird
-    elif len(host)=3D=3D1:
-        # one element; assume a machine on the local net; use that
-        domain =3D host[0]
-    else:
-        # use the penultimate one in *most* cases, but there are
-        # some top-level domains where the third level is the
-        # most important.
-
-        if host[-1] in ['uk', 'in', 'au']:
-            domain =3D host[-3]
-        else:
-            domain =3D host[-2]
-
-    # So we have the name to use. Turn it into a colour.
-    # Save ourselves some complexity by using MD5.
-    colour =3D md5.md5(domain).hexdigest()[:6]
-
-    notebook =3D tab.get_parent()
-
-    hbox =3D notebook.get_tab_label(tab)
-    eb =3D gtk.EventBox()
-    newhbox =3D gtk.HBox()
-
-    colour =3D hbox.get_colormap().alloc_color("#"+colour)
-
-    for state in (gtk.STATE_NORMAL, gtk.STATE_ACTIVE, gtk.STATE_SELECTED=
,
-                  gtk.STATE_INSENSITIVE, gtk.STATE_PRELIGHT):
-        eb.modify_bg(state, colour)
-
-    for child in hbox.get_children():
-        packing =3D hbox.query_child_packing(child)
-        child.reparent(newhbox)
-        newhbox.set_child_packing(child, *packing)
-
-    hbox.add(eb)
-    eb.add(newhbox)
-    hbox.show_all()
-
-def attach_tab(window, tab):
-    _colour_the_tab (tab)
-    tab._colour_tab_handler =3D tab.connect("dom-content-loaded", _colou=
r_the_tab)
-    # we don't call through like this when things are loaded
-    # and we should
-
-def detach_tab(window, tab):
-    if '_colour_tab_handler' in tab:
-        tab.disconnect(tab._colour_tab_handler)
-        del tab._colour_tab_handler
diff --git a/tabs/middle-click-closes-tab.ephy-extension b/tabs/middle-cl=
ick-closes-tab.ephy-extension
deleted file mode 100644
index 0a73042..0000000
--- a/tabs/middle-click-closes-tab.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DClose tabs with middle-click
-Description=3DClose tabs by clicking on them with the middle mouse butto=
n
-Authors=3DSiegfried Gevatter
-Version=3D1
-URL=3Dhttps://launchpad.net/epiphany-extensions-extra
-
-[Loader]
-Type=3Dpython
-Module=3Dmiddle-click-closes-tab
diff --git a/tabs/middle-click-closes-tab.py b/tabs/middle-click-closes-t=
ab.py
deleted file mode 100644
index bb00ed2..0000000
--- a/tabs/middle-click-closes-tab.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Unofficial Epiphany Extension
-# Close tabs with middle-click
-#
-# Copyright (C) 2008 Siegfried Gevatter <rainct at ubuntu.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License alon=
g
-# with this program; if not, write to the Free Software Foundation, Inc.=
,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import gtk
-
-def attach_window(window):
-	notebook =3D window.get_notebook()
-	signal =3D notebook.connect('button-release-event', _button_release_cb,
-		notebook)
-	notebook._mcct_extension_signal =3D signal
-
-def detach_window(window):
-	notebook =3D window.get_notebook()
-	notebook.disconnect(notebook._mcct_extension_signal)
-	del notebook._mcct_extension_signal
-
-def _button_release_cb(widget, event, notebook):
-	# If it isn't the middle mouse button, ignore it.
-	if event.button !=3D 2:
-		return None
-=09
-	# Let's find which tab was pressed, iterating over all tabs.
-	pointer =3D event.window.get_pointer()
-	tab_count =3D widget.get_n_pages()
-	for tab, num in ((widget.get_nth_page(i), i) for i in xrange(0, tab_cou=
nt)):
-		label =3D notebook.get_tab_label(tab)
-		if label.allocation.x < pointer[0] and (label.allocation.x +=20
-		label.allocation.width) > pointer[0]:
-			# Found it, let's remove it.
-			tab.get_parent().remove_page(num)
-			break
diff --git a/tabs/onlyoneclosebutton.ephy-extension b/tabs/onlyoneclosebu=
tton.ephy-extension
deleted file mode 100644
index 86ca7e8..0000000
--- a/tabs/onlyoneclosebutton.ephy-extension
+++ /dev/null
@@ -1,11 +0,0 @@
-[Epiphany Extension]
-Name=3DOnly One Close Button
-Description=3DOne on each tab is a waste of space and increases the risk=
 of accidental closing
-Authors=3DStefan Stuhr
-Version=3D1
-URL=3Dhttp://www.sstuhr.dk/epiphany-extensions/
-
-
-[Loader]
-Type=3Dpython
-Module=3Donlyoneclosebutton
diff --git a/tabs/onlyoneclosebutton.py b/tabs/onlyoneclosebutton.py
deleted file mode 100644
index a47fafe..0000000
--- a/tabs/onlyoneclosebutton.py
+++ /dev/null
@@ -1,134 +0,0 @@
-#   Only One Close Button - Epiphany Extension
-#   Copyright (C) 2006  Stefan Stuhr
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import gtk
-import epiphany
-
-EGG_TB_MODEL_NAME_KNOWN =3D 1 << 2
-
-class OnlyOneCloseButton:
-	tab_popup_xml =3D '''
-		<ui>
-		  <popup name=3D"EphyNotebookPopup" action=3D"NotebookPopupAction">
-		    <separator/>
-		    <menuitem name=3D"TabCloseENP" action=3D"FileCloseTab"/>
-		    <separator/>
-		  </popup>
-		</ui>'''
-
-	def __init__(self):
-		self.win_data =3D {}
-
-		# Make the toolbar button available in the editor
-		shell =3D epiphany.ephy_shell_get_default()
-		model =3D shell.get_toolbars_model(False)
-		name_flags =3D model.get_name_flags("FileCloseTab")
-		model.set_name_flags("FileCloseTab", name_flags | EGG_TB_MODEL_NAME_KN=
OWN)
-
-	# Not supported by Epiphany - but may be supported in the future
-	def finalize_extension(self):
-		# Remove the toolbar button from the available buttons in the editor
-		shell =3D epiphany.ephy_shell_get_default()
-		model =3D shell.get_toolbars_model(False)
-		name_flags =3D model.get_name_flags("FileCloseTab")
-		model.set_name_flags("FileCloseTab", name_flags & ~EGG_TB_MODEL_NAME_K=
NOWN)
-
-	def attach_window(self, window):
-		data =3D self.win_data[window] =3D {"tab_data": {}}
-
-		ui_manager =3D window.get_ui_manager()
-		merge_id =3D ui_manager.add_ui_from_string(self.tab_popup_xml)
-		data["ui_merge_id"] =3D merge_id
-
-		notebook =3D window.get_notebook()
-
-		initially_homogeneous =3D notebook.get_property("homogeneous")
-		data["initially_homogeneous"] =3D initially_homogeneous
-		notebook.set_property("homogeneous", True)
-
-	def detach_window(self, window):
-		data =3D self.win_data.pop(window)
-
-		ui_manager =3D window.get_ui_manager()
-
-		merge_id =3D data["ui_merge_id"]
-		ui_manager.remove_ui(merge_id)
-		ui_manager.ensure_update()
-
-		notebook =3D window.get_notebook()
-
-		initially_homogeneous =3D data["initially_homogeneous"]
-		notebook.set_property("homogeneous", initially_homogeneous)
-
-	def hbox_style_set_cb(self, hbox, previous_style, window, tab):
-		data =3D self.win_data[window]
-		tab_data =3D data["tab_data"][tab]
-
-		tab_data["tab_initial_width"] =3D hbox.get_size_request()[0]
-		hbox.set_size_request(16, -1)
-
-	def attach_tab(self, window, tab):
-		data =3D self.win_data[window]
-		tab_data =3D data["tab_data"][tab] =3D {}
-
-		notebook =3D window.get_notebook()
-		widget =3D notebook.get_tab_label(tab)
-
-		if isinstance(widget, gtk.HBox):
-			children =3D widget.get_children()
-
-			tab_data["tab_initial_width"] =3D widget.get_size_request()[0]
-			widget.set_size_request(16, -1)
-
-			handler_id =3D widget.connect("style-set", self.hbox_style_set_cb, wi=
ndow, tab)
-			tab_data["hbox_style_set_hid"] =3D handler_id
-
-			if isinstance(children[-1], gtk.Button):
-				children[-1].hide()
-
-			notebook.child_set(tab, "tab-expand", True)
-
-	def detach_tab(self, window, tab):
-		data =3D self.win_data[window]
-		tab_data =3D data["tab_data"].pop(tab)
-
-		notebook =3D window.get_notebook()
-		widget =3D notebook.get_tab_label(tab)
-
-		if tab.parent =3D=3D notebook:
-			notebook.child_set(tab, "tab-expand", False)
-
-		if isinstance(widget, gtk.HBox):
-			children =3D widget.get_children()
-
-			handler_id =3D tab_data["hbox_style_set_hid"]
-			widget.disconnect(handler_id)
-
-			widget.set_size_request(tab_data["tab_initial_width"], -1)
-
-			if isinstance(children[-1], gtk.Button):
-				children[-1].show()
-
-
-oocb_extension =3D OnlyOneCloseButton()
-
-attach_window =3D oocb_extension.attach_window
-detach_window =3D oocb_extension.detach_window
-
-attach_tab =3D oocb_extension.attach_tab
-detach_tab =3D oocb_extension.detach_tab
diff --git a/tabs/reopen-closed-tabs.ephy-extension b/tabs/reopen-closed-=
tabs.ephy-extension
new file mode 100644
index 0000000..b1b269b
--- /dev/null
+++ b/tabs/reopen-closed-tabs.ephy-extension
@@ -0,0 +1,10 @@
+[Epiphany Extension]
+Name=3DReopen Closed Tabs Queue
+Description=3DUse Ctrl-Shift-T to reopen, one by one, the tabs you recen=
tly closed.
+Authors=3DTim Horton
+Version=3D1
+URL=3D
+
+[Loader]
+Type=3Dseed
+Module=3Dreopen-closed-tabs
diff --git a/tabs/reopen-closed-tabs.js b/tabs/reopen-closed-tabs.js
new file mode 100644
index 0000000..62b9648
--- /dev/null
+++ b/tabs/reopen-closed-tabs.js
@@ -0,0 +1,73 @@
+/*
+ * Copyright =C2=A9 2009 Tim Horton <hortont424 at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,=
 USA.
+ */
+
+Gtk =3D imports.gi.Gtk;
+Gdk =3D imports.gi.Gdk;
+WebKit =3D imports.gi.WebKit;
+Epiphany =3D imports.gi.Epiphany;
+
+var last_closed_urls =3D [ ];
+
+var key_pressed =3D function (window, event)
+{
+	if(event.key.state & Gdk.ModifierType.CONTROL_MASK &&
+	   event.key.state & Gdk.ModifierType.SHIFT_MASK)
+	{
+		if(event.key.keyval =3D=3D Gdk.T)
+		{
+			var embed =3D window.get_active_child();
+			var shell =3D Epiphany.EphyShell.get_default();
+			var new_url =3D last_closed_urls.pop();
+		=09
+			if(new_url !=3D null)
+				var new_tab =3D new Epiphany.EphyShell.tab(shell, window, embed,
+								new_url,
+								Epiphany.EphyNewTabFlags.OPEN_PAGE |
+								Epiphany.EphyNewTabFlags.IN_EXISTING_WINDOW |
+								Epiphany.EphyNewTabFlags.JUMP);
+		}
+	}
+=09
+	return false;
+}
+
+extension =3D {
+	attach_tab: function(window, tab)
+	{
+=09
+	},
+	detach_tab: function(window, tab)
+	{
+		var embed;
+	=09
+		if(tab.get_embed !=3D null)
+			embed =3D tab.get_embed();
+		else
+			embed =3D tab;
+	=09
+		last_closed_urls.push(embed.get_web_view().get_location());
+	},
+	attach_window: function(window)
+	{
+		window.signal.key_press_event.connect(key_pressed);
+	},
+	detach_window: function(window)
+	{
+
+	}
+}
diff --git a/tabs/restore-tab.ephy-extension b/tabs/restore-tab.ephy-exte=
nsion
deleted file mode 100644
index 39c25bf..0000000
--- a/tabs/restore-tab.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DRestore Closed Tab
-Description=3DRestore a previously closed tab
-Authors=3DMichael Opitz <opitz.michael at gmail.com>
-URL=3Dhttp://code.google.com/p/epiphany-tab-restore/
-Version=3D0.0.1
-
-[Loader]
-Type=3Dpython
-Module=3Drestore-tab
diff --git a/tabs/restore-tab.py b/tabs/restore-tab.py
deleted file mode 100644
index b2b39e5..0000000
--- a/tabs/restore-tab.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2007 - Michael Opitz
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,=
 USA.
-import gtk
-import epiphany
-
-_ui_str =3D """
-<ui>
-	<menubar name=3D"menubar">
-		<menu name=3D"ToolsMenu" action=3D"Tools">
-			<separator/>
-			<menuitem name=3D"PyTabRestore" action=3D"PyTabRestore"/>
-		</menu>
-	</menubar>
-</ui>
-"""
-
-def _restore_tab_cb(action, window):
-	# restore the last closed tab
-	if(len(window._py_restore_urls) > 0):
-		notebook =3D window.get_notebook()
-		position =3D notebook.get_n_pages() - 1
-		prev_tab =3D notebook.get_nth_page(position)
-		shell =3D epiphany.ephy_shell_get_default()
-		shell.new_tab(window, prev_tab, window._py_restore_urls.pop(),
-				epiphany.NEW_TAB_IN_EXISTING_WINDOW |=20
-				epiphany.NEW_TAB_OPEN_PAGE |=20
-				epiphany.NEW_TAB_JUMP)
-
-_actions =3D [('PyTabRestore', None, '_Restore Tab', "<control><shift>T"=
,=20
-		"Restore a previosly closed tab", _restore_tab_cb),]
-def attach_window(window):
-	window._py_restore_urls =3D []
-	# create the menu entry
-	ui_manager =3D window.get_ui_manager()
-	group =3D gtk.ActionGroup('PyTabRestore')
-	group.add_actions(_actions, window)
-	ui_manager.insert_action_group(group, -1)
-	ui_id =3D ui_manager.add_ui_from_string(_ui_str)
-
-	window._python_tab_restore_window_data =3D (group, ui_id)
-
-def detach_window(window):
-	# delete our list...
-	del window._py_restore_urls=20
-	# delete the epiphany stuff
-	group, ui_id =3D window._python_tab_restore_window_data
-	del window._python_tab_restore_window_data
-
-	ui_manager =3D window.get_ui_manager()
-	ui_manager.remove_ui(ui_id)
-	ui_manager.remove_action_group(group)
-	ui_manager.ensure_update()
-
-def detach_tab(window, tab):
-	# when a tab is closed we are appening the url of the closed tab to our
-	# list
-	window._py_restore_urls.append(tab.get_location(True))
-
diff --git a/tabs/tabforeground.ephy-extension b/tabs/tabforeground.ephy-=
extension
deleted file mode 100644
index eba02ef..0000000
--- a/tabs/tabforeground.ephy-extension
+++ /dev/null
@@ -1,11 +0,0 @@
-[Epiphany Extension]
-Name=3DTab Foreground
-Description=3DOpen new tab in the foreground when clicking on a link wit=
h the middle mouse button or CTRL + middle mouse button
-Authors=3DCharles-Henri d'Adhemar
-Version=3D2
-URL=3Dcdadhemar.free.fr/epiphany/
-
-
-[Loader]
-Type=3Dpython
-Module=3Dtabforeground
diff --git a/tabs/tabforeground.py b/tabs/tabforeground.py
deleted file mode 100644
index ffa0099..0000000
--- a/tabs/tabforeground.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-#   Tab Foreground - Epiphany Extension
-#   Copyright (C) 2007 Charles-Henri d'Adhemar
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License, version 2
-#   as published by the Free Software Foundation.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import epiphany
-
-def attach_tab(window, tab):   =20
-    window.set_active_child(tab)
diff --git a/tabs/tabkeytabnavigate.ephy-extension b/tabs/tabkeytabnaviga=
te.ephy-extension
deleted file mode 100644
index 2a45eca..0000000
--- a/tabs/tabkeytabnavigate.ephy-extension
+++ /dev/null
@@ -1,11 +0,0 @@
-[Epiphany Extension]
-Name=3DTab Key Tab Navigate
-Description=3DUse the tab key to navigate between tabs
-Authors=3DStefan Stuhr
-Version=3D1
-URL=3Dhttp://www.sstuhr.dk/epiphany-extensions/
-
-
-[Loader]
-Type=3Dpython
-Module=3Dtabkeytabnavigate
diff --git a/tabs/tabkeytabnavigate.py b/tabs/tabkeytabnavigate.py
deleted file mode 100644
index fa4bcfd..0000000
--- a/tabs/tabkeytabnavigate.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#   Tab Key Tab Navigate - Epiphany Extension
-#   Copyright (C) 2006  Stefan Stuhr
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import gtk
-import epiphany
-
-def tktn_set_tab_offset(window, offset):
-	notebook =3D window.get_notebook()
-
-	index =3D notebook.get_current_page()
-	count =3D notebook.get_n_pages()
-
-	new_index =3D (index + offset) % count
-	notebook.set_current_page(new_index)
-
-def tktn_key_press_cb(window, event):
-	if event.state & gtk.gdk.CONTROL_MASK:
-		keyvalname =3D gtk.gdk.keyval_name(event.keyval)
-		if keyvalname =3D=3D "Tab":
-			tktn_set_tab_offset(window, 1)
-		elif keyvalname =3D=3D "ISO_Left_Tab":
-			tktn_set_tab_offset(window, -1)
-		else:
-			return False
-
-		return True
-
-def attach_window(window):
-	signal =3D window.connect("key-press-event", tktn_key_press_cb)
-	window._tktn_key_press_sig =3D signal
-
-def detach_window(window):
-	if hasattr(window, "_tktn_key_press_sig"):
-		window.disconnect(window._tktn_key_press_sig)
-		delattr(window, "_tktn_key_press_sig")
diff --git a/tabs/tablabelborder.ephy-extension b/tabs/tablabelborder.eph=
y-extension
deleted file mode 100644
index 2d6c7fa..0000000
--- a/tabs/tablabelborder.ephy-extension
+++ /dev/null
@@ -1,11 +0,0 @@
-[Epiphany Extension]
-Name=3DLess Tab Label Border
-Description=3DLess border around tab labels
-Authors=3DStefan Stuhr
-Version=3D1
-URL=3Dhttp://www.sstuhr.dk/epiphany-extensions/
-
-
-[Loader]
-Type=3Dpython
-Module=3Dtablabelborder
diff --git a/tabs/tablabelborder.py b/tabs/tablabelborder.py
deleted file mode 100644
index 435cada..0000000
--- a/tabs/tablabelborder.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#   Less Tab Label Border - Epiphany Extension
-#   Copyright (C) 2006  Stefan Stuhr
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import gtk
-import epiphany
-
-tab_label_hborder =3D 1
-tab_label_vborder =3D 1
-
-def attach_window(window):
-	notebook =3D window.get_notebook()
-
-	borders =3D (notebook.get_property("tab-hborder"), notebook.get_propert=
y("tab-vborder"))
-	window._tlb_tab_label_borders =3D borders
-
-	notebook.set_property("tab-hborder", tab_label_hborder)
-	notebook.set_property("tab-vborder", tab_label_vborder)
-
-def detach_window(window):
-	if not hasattr(window, "_tlb_tab_label_borders"):
-		return
-
-	notebook =3D window.get_notebook()
-	hborder, vborder =3D window._tlb_tab_label_borders
-
-	notebook.set_property("tab-hborder", hborder)
-	notebook.set_property("tab-vborder", vborder)
-
-	delattr(window, "_tlb_tab_label_borders")
diff --git a/tabs/widetabs.ephy-extension b/tabs/widetabs.ephy-extension
deleted file mode 100644
index d521b0c..0000000
--- a/tabs/widetabs.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DWide tabs
-Description=3DMake tabs wide while keeping the close button.
-Authors=3DDiego Escalante Urrelo <diegoe at gnome.org>
-Version=3D20080422
-URL=3Dhttp://www.gnome.org/~diegoe/epiphany/
-
-[Loader]
-Type=3Dpython
-Module=3Dwidetabs
diff --git a/tabs/widetabs.py b/tabs/widetabs.py
deleted file mode 100644
index ca0689c..0000000
--- a/tabs/widetabs.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# -*- encoding: utf-8 -*-
-#
-#   Widetabs - Epiphany Extension
-#   Copyright =C2=A9 2008  Diego Escalante Urrelo <diegoe at gnome.org>
-#   Based on:
-#      Only One Close Button - Epiphany Extension
-#      Copyright =C2=A9 2006  Stefan Stuhr
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import gtk
-import epiphany
-
-
-class WideTab:
-	def __init__(self):
-		self.win_data =3D {}
-	def attach_window(self, window):
-		data =3D self.win_data[window] =3D {"tab_data": {}}
-
-		notebook =3D window.get_notebook()
-
-		initially_homogeneous =3D notebook.get_property("homogeneous")
-		data["initially_homogeneous"] =3D initially_homogeneous
-		notebook.set_property("homogeneous", True)
-	=09
-		initially_scrollable =3D notebook.get_property("scrollable")
-		data["initially_scrollable"] =3D initially_scrollable
-		notebook.set_property("scrollable", False)
-
-	def detach_window(self, window):
-		data =3D self.win_data.pop(window)
-
-		notebook =3D window.get_notebook()
-
-		initially_homogeneous =3D data["initially_homogeneous"]
-		notebook.set_property("homogeneous", initially_homogeneous)
-
-	def hbox_style_set_cb(self, hbox, previous_style, window, tab):
-		data =3D self.win_data[window]
-		tab_data =3D data["tab_data"][tab]
-
-		tab_data["tab_initial_width"] =3D hbox.get_size_request()[0]
-		hbox.set_size_request(16, -1)
-
-	def attach_tab(self, window, tab):
-		data =3D self.win_data[window]
-		tab_data =3D data["tab_data"][tab] =3D {}
-
-		notebook =3D window.get_notebook()
-		widget =3D notebook.get_tab_label(tab)
-
-		if isinstance(widget, gtk.HBox):
-			tab_data["tab_initial_width"] =3D widget.get_size_request()[0]
-			widget.set_size_request(16, -1)
-
-			handler_id =3D widget.connect("style-set", self.hbox_style_set_cb, wi=
ndow, tab)
-			tab_data["hbox_style_set_hid"] =3D handler_id
-
-			notebook.child_set(tab, "tab-expand", True)
-
-	def detach_tab(self, window, tab):
-		data =3D self.win_data[window]
-		tab_data =3D data["tab_data"].pop(tab)
-
-		notebook =3D window.get_notebook()
-		widget =3D notebook.get_tab_label(tab)
-
-		if tab.parent =3D=3D notebook:
-			notebook.child_set(tab, "tab-expand", False)
-
-		if isinstance(widget, gtk.HBox):
-			handler_id =3D tab_data["hbox_style_set_hid"]
-			widget.disconnect(handler_id)
-
-			widget.set_size_request(tab_data["tab_initial_width"], -1)
-
-wt_extension =3D WideTab()
-
-attach_window =3D wt_extension.attach_window
-detach_window =3D wt_extension.detach_window
-
-attach_tab =3D wt_extension.attach_tab
-detach_tab =3D wt_extension.detach_tab
diff --git a/ui/close-multiple-tabs.ephy-extension b/ui/close-multiple-ta=
bs.ephy-extension
new file mode 100644
index 0000000..d94509f
--- /dev/null
+++ b/ui/close-multiple-tabs.ephy-extension
@@ -0,0 +1,10 @@
+[Epiphany Extension]
+Name=3DDon't Close Multiple Tabs
+Description=3DWarn before closing a window containing multiple open tabs=
.
+Authors=3DTim Horton
+Version=3D1
+URL=3D
+
+[Loader]
+Type=3Dseed
+Module=3Dclose-multiple-tabs
diff --git a/ui/close-multiple-tabs.js b/ui/close-multiple-tabs.js
new file mode 100644
index 0000000..53bf9aa
--- /dev/null
+++ b/ui/close-multiple-tabs.js
@@ -0,0 +1,27 @@
+var delete_event =3D function (window, event)
+{
+	var n =3D window.get_notebook();
+	if(n.get_n_pages() <=3D 1)
+		return false;
+=09
+	var dialog =3D new Gtk.MessageDialog({text:"You are about to close a wi=
ndow with " + n.get_n_pages() + " open tabs.", message_type:Gtk.MessageTy=
pe.WARNING });
+	dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL).grab_focus=
();
+	dialog.add_button(Gtk.STOCK_OK, Gtk.ResponseType.OK);
+	dialog.set_default_response(Gtk.ResponseType.CANCEL);
+=09
+	var result =3D dialog.run();
+	dialog.hide();
+	dialog.destroy();
+=09
+	if(result =3D=3D Gtk.ResponseType.OK)
+		return false;
+	else
+		return true;
+}
+
+extension =3D {
+    attach_window: function(window)
+	{
+		signal =3D window.signal.delete_event.connect(delete_event);
+	}
+}
diff --git a/ui/confirmwindowclose.ephy-extension b/ui/confirmwindowclose=
.ephy-extension
deleted file mode 100644
index 8f4ebf6..0000000
--- a/ui/confirmwindowclose.ephy-extension
+++ /dev/null
@@ -1,11 +0,0 @@
-[Epiphany Extension]
-Name=3DConfirm Window Close
-Description=3DConfirm closing of windows with multiple tabs
-Authors=3DStefan Stuhr
-Version=3D1
-URL=3Dhttp://www.sstuhr.dk/epiphany-extensions/
-
-
-[Loader]
-Type=3Dpython
-Module=3Dconfirmwindowclose
diff --git a/ui/confirmwindowclose.py b/ui/confirmwindowclose.py
deleted file mode 100644
index c6d2faf..0000000
--- a/ui/confirmwindowclose.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#   Confirm Window Close - Epiphany Extension
-#   Copyright (C) 2006  Stefan Stuhr
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import gtk
-import epiphany
-
-def _cwc_window_delete_event_cb(window, event):
-	notebook =3D window.get_notebook()
-	tab_count =3D notebook.get_n_pages()
-
-	if tab_count <=3D 1:
-		return False
-
-	dialog =3D gtk.MessageDialog(window,
-	                           gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_P=
ARENT,
-	                           gtk.MESSAGE_WARNING, gtk.BUTTONS_NONE,
-	                           "You are about to close a window with %i ope=
n tabs" % tab_count)
-	dialog.set_title("Confirm window close")
-	window.group.add_window(dialog)
-	dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL).grab_focus()
-	dialog.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_OK)
-	dialog.set_default_response(gtk.RESPONSE_CANCEL)
-
-	result =3D dialog.run()
-	dialog.hide()
-	dialog.destroy()
-
-	return result not in (gtk.RESPONSE_OK,)
-
-def attach_window(window):
-	signal =3D window.connect("delete-event", _cwc_window_delete_event_cb)
-	window._cwc_window_delete_sig =3D signal
-
-def detach_window(window):
-	if hasattr(window, "_cwc_window_delete_sig"):
-		window.disconnect(window._cwc_window_delete_sig)
-		delattr(window, "_cwc_window_delete_sig")
diff --git a/ui/hidden-menu.ephy-extension b/ui/hidden-menu.ephy-extensio=
n
deleted file mode 100644
index 77ffac4..0000000
--- a/ui/hidden-menu.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DHidden menu
-Description=3DHides and shows the Menubar with a button
-Authors=3DDiego Escalante Urrelo <diegoe at gnome.org>
-Version=3D20080422
-URL=3Dhttp://www.gnome.org/~diegoe/epiphany/
-
-[Loader]
-Type=3Dpython
-Module=3Dhidden-menu
diff --git a/ui/hidden-menu.py b/ui/hidden-menu.py
deleted file mode 100644
index f69e326..0000000
--- a/ui/hidden-menu.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# -*- encoding: utf-8 -*-
-#
-#   Hidden Menu - Epiphany Extension
-#   Copyright =C2=A9 2006, 2008  Diego Escalante Urrelo <diegoe at gnome.or=
g>
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import epiphany
-import gtk, gconf
-
-# Now with ross-style (check http://www.burtonini.com for ephydeli)
-HIDDENMENU_KEY =3D '/apps/epiphany-extensions/hiddenmenu/hidden'
-EGG_TB_MODEL_NAME_KNOWN =3D 1 << 2
-
-class HiddenMenuExtension(object):
-	def __init__(self):	=09
-		shell =3D epiphany.ephy_shell_get_default()
-		model =3D shell.get_toolbars_model(False)
-		flags =3D model.get_name_flags('HideMenu')
-		model.set_name_flags('HideMenu', flags | EGG_TB_MODEL_NAME_KNOWN)
-	=09
-		self.client =3D gconf.client_get_default ();
-		self.mb_hidden =3D self.client.get_bool(HIDDENMENU_KEY)
-
-		if self.client.key_is_writable(HIDDENMENU_KEY):
-			self.gconf =3D True
-		else:
-			self.gconf =3D False
-			del self.client
-
-	def attach(self, window):
-		actions =3D [('HideMenu', gtk.STOCK_GO_DOWN, 'Hi_de menubar',
-					 None, 'Toggle menubar visibility', self._hmb_activate_cb)]
-		group =3D self._find_group(window)
-		group.add_actions(actions, window)
-		window._mb_visible =3D self.mb_hidden
-
-	def detach(self, window):
-		if self.gconf:
-			self.client.set_bool(HIDDENMENU_KEY, window._mb_visible)
-=09
-	# Not supported yet in Epiphany
-	def finalize(self):
-		shell =3D epiphany.ephy_shell_get_default()
-		model =3D shell.get_toolbars_model(False)
-		name_flags =3D model.get_name_flags('HideMenu')
-		model.set_name_flags('HideMenu', name_flags & ~EGG_TB_MODEL_NAME_KNOWN=
)
-	=09
-	def _find_group(self, window):
-		for group in window.get_ui_manager().get_action_groups():
-			if group.get_name() =3D=3D 'SpecialToolbarActions':
-				return group
-		else:
-			raise AssertionError('Cannot find SpecialToolbarActions group')
-=09
-	def _toggle_visible(self, menubar):
-		if menubar.parent.parent.parent._mb_visible:
-			menubar.hide()
-		else:
-			menubar.show()
-=09
-	def _hmb_activate_cb(self, action, window):
-		menubar =3D window.get_child().get_children()[0].get_children()[0]
-		window._mb_visible =3D self.mb_hidden =3D not window._mb_visible
-		self._toggle_visible(menubar)
-
-hm =3D HiddenMenuExtension()
-
-def attach_window(window):
-	hm.attach(window)
-	window.hm_started =3D False
-
-def attach_tab(window, tab):
-	if not window.hm_started:
-		menubar =3D window.get_child().get_children()[0].get_children()[0]
-		hm._toggle_visible(menubar)
-		window.hm_started =3D True
-
-def detach_window(window):
-	hm.detach(window)
diff --git a/ui/menuandtoolbar.ephy-extension b/ui/menuandtoolbar.ephy-ex=
tension
deleted file mode 100644
index 14d0ae3..0000000
--- a/ui/menuandtoolbar.ephy-extension
+++ /dev/null
@@ -1,11 +0,0 @@
-[Epiphany Extension]
-Name=3DMenubar and Toolbar beside each other
-Description=3DPut the menubar and toolbar beside each other
-Authors=3DStefan Stuhr
-Version=3D1
-URL=3Dhttp://www.sstuhr.dk/epiphany-extensions/
-
-
-[Loader]
-Type=3Dpython
-Module=3Dmenuandtoolbar
diff --git a/ui/menuandtoolbar.py b/ui/menuandtoolbar.py
deleted file mode 100644
index 2e5d963..0000000
--- a/ui/menuandtoolbar.py
+++ /dev/null
@@ -1,77 +0,0 @@
-#   Menubar and Toolbar beside each other - Epiphany Extension
-#   Copyright (C) 2006  Stefan Stuhr
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import gtk
-import epiphany
-
-def attach_window(window):
-	toolbar =3D window.get_toolbar()
-	vbox =3D toolbar.parent
-	if not isinstance(vbox, gtk.VBox):
-		return
-
-	children =3D vbox.get_children()
-	if len(children) !=3D 2 or (not isinstance(children[0], gtk.MenuBar)) o=
r children[1] !=3D toolbar:
-		return
-
-	hbox =3D gtk.HBox()
-	vbox.pack_start(hbox, False, True, 0)
-
-	window._mbatb_top_packings =3D []
-
-	for index, widget in enumerate(children):
-		is_visible =3D widget.get_property("visible")
-		gtk.Widget.hide(widget)
-
-		window._mbatb_top_packings.append(vbox.query_child_packing(widget))
-		vbox.remove(widget)
-
-		hbox.pack_start(widget, index, True, 0)
-
-		if is_visible:
-			gtk.Widget.show(widget)
-
-	hbox.show()
-
-	window._mbatb_top_hbox =3D hbox
-
-def detach_window(window):
-	if not (hasattr(window, "_mbatb_top_hbox") and hasattr(window, "_mbatb_=
top_packings")):
-		return
-
-	hbox =3D window._mbatb_top_hbox
-	vbox =3D hbox.parent
-
-	for widget, packing in zip(hbox.get_children(), window._mbatb_top_packi=
ngs):
-		is_visible =3D widget.get_property("visible")
-		gtk.Widget.hide(widget)
-
-		hbox.remove(widget)
-
-		vbox.pack_start(widget)
-		vbox.set_child_packing(widget, *packing)
-
-		if is_visible:
-			gtk.Widget.show(widget)
-
-	hbox.hide()
-	vbox.remove(hbox)
-	hbox.destroy()
-
-	delattr(window, "_mbatb_top_hbox")
-	delattr(window, "_mbatb_top_packings")
diff --git a/ui/quitmenuitem.ephy-extension b/ui/quitmenuitem.ephy-extens=
ion
deleted file mode 100644
index 20ac843..0000000
--- a/ui/quitmenuitem.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DQuit menu item
-Description=3DAdds a Quit menu item to the File menu
-Authors=3DReinout van Schouwen <reinouts at gnome.org>
-Version=3D1
-URL=3Dhttp://projects.gnome.org/epiphany
-
-[Loader]
-Type=3Dpython
-Module=3Dquitmenuitem
diff --git a/ui/quitmenuitem.py b/ui/quitmenuitem.py
deleted file mode 100644
index b769577..0000000
--- a/ui/quitmenuitem.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# -*- coding: utf-8 -*-
-
-#  Copyright =C2=A9 2008 Reinout van Schouwen <reinouts at gnome.org>
-#
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2, or (at your option)
-#  any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,=
 USA.
-#
-
-import epiphany;
-import gtk;
-
-_ui_str =3D """
-<ui>
-	<menubar name=3D"menubar">
-		<menu name=3D"FileMenu" action=3D"File">
-			<separator/>
-			<menuitem name=3D"Quit" action=3D"Quit"/>
-			<separator/>
-		</menu>
-	</menubar>
-</ui>
-"""
-
-def quit_cb(action, window):
-	for tab in window.get_notebook():
-		tab.close()
-=09
-_actions =3D [
-	('Quit', "gtk-quit", None, None, None, quit_cb)]
-=09
-def attach_window(window):
-	ui_manager =3D window.get_ui_manager()
-	group =3D gtk.ActionGroup('Quit')
-	group.add_actions(_actions, window)
-	window._quit_group =3D group
-	ui_manager.insert_action_group(group, 0)
-	window._quit_ui =3D ui_manager.add_ui_from_string(_ui_str)
-
-def detach_window(window):
-	ui_manager =3D window.get_ui_manager()
-	ui_manager.remove_ui (window._quit_ui)
-	del window._quit_ui
-	ui_manager.remove_action_group (window._quit_group)
-	del window._quit_group
diff --git a/ui/tabs_on_treeview.ephy-extension b/ui/tabs_on_treeview.eph=
y-extension
deleted file mode 100644
index a0119f7..0000000
--- a/ui/tabs_on_treeview.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DTabs on treeview
-Description=3DReplace tabs with a treeview in a sidebar
-Authors=3DMichel Kevin <kmichel.info at gmail.com>
-Version=3D0.5
-URL=3Dhttp://kmichel.info/projects/epiphany
-
-[Loader]
-Type=3Dpython
-Module=3Dtabs_on_treeview
diff --git a/ui/tabs_on_treeview.py b/ui/tabs_on_treeview.py
deleted file mode 100644
index a608145..0000000
--- a/ui/tabs_on_treeview.py
+++ /dev/null
@@ -1,434 +0,0 @@
-import gtk
-import pango
-import epiphany
-import gconf
-
-base_gconf_path=3D"/apps/epiphany/general/"
-
-class TreeviewTabs:
-	treeview_popup_xml =3D """
-	<ui>
-		<popup name=3D"TabsOnTreeviewPopup">
-			<menuitem action=3D"TabsOnTreeviewLeft"/>
-			<menuitem action=3D"TabsOnTreeviewRight" />
-		</popup>
-	</ui>
-	"""
-	actiongroupdef =3D [
-			('TabsOnTreeviewLeft', None, 'Left Sidebar', None, 'Move sidebar to t=
he left', False),
-			('TabsOnTreeviewRight', None, 'Right Sidebar', None, 'Move sidebar to=
 the right', True)
-		]
-	def __init__(self, window, gconf, always_show_tabs_bar, sidebar_on_righ=
t):
-		self.window =3D window
-		self.notebook =3D window.get_notebook()
-		self.no_update =3D False
-		self.no_update_left =3D False
-		self.no_update_right =3D False
-		self.gconf =3D gconf
-		self.always_show_tabs_bar  =3D always_show_tabs_bar
-		self.sidebar_on_right =3D sidebar_on_right
-		self.sidebar_width =3D self.gconf.get_int(base_gconf_path+"sidebar_wid=
th")
-	=09
-	def toggle_sidebar_side_cb(self, first, second):
-		self.gconf.set_bool(base_gconf_path+"sidebar_on_right", first.get_curr=
ent_value())
-=09
-	def on_selection_change(self, treeselection):
-		treemodel, iter =3D treeselection.get_selected()
-		if iter and not self.no_update:
-			path =3D treemodel.get_path(iter)
-			self.notebook.set_current_page(self.get_pos(path))
-		=09
-	def move_tab(self, treemodel, path, iter):
-		tab =3D self.get_pos(treemodel.get_path(iter))
-		self.notebook.reorder_child(self.notebook.get_nth_page(tab), self.get_=
pos(path))
-	=09
-	def setup_drag(self):
-		self.TARGETS =3D [
-			('TVEXT_TREE_MODEL_ROW_INTERNAL', gtk.TARGET_SAME_WIDGET, 0),
-			('TVEXT_TREE_MODEL_ROW_EXTERNAL', 0, 1),
-			('text/plain', 0, 2),
-			('TEXT', 0, 3),
-			('STRING', 0, 4)
-		]
-		self.treeview.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, self.TARG=
ETS,
-			gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
-		self.treeview.enable_model_drag_dest(self.TARGETS, gtk.gdk.ACTION_DEFA=
ULT | gtk.gdk.ACTION_MOVE)
-		self.treeview.connect("drag_data_get", self.drag_data_get_data)
-		self.treeview.connect("drag_data_received", self.drag_data_received_da=
ta)
-	=09
-	def drag_data_get_data(self, treeview, context, selection, info, etime)=
:
-		treeselection =3D treeview.get_selection()
-		model, iter =3D treeselection.get_selected()
-		if info =3D=3D 0:
-			data =3D model.get_string_from_iter(iter)
-			selection.set(selection.target, 8, data)
-		else:
-			data =3D str(self.notebook.get_nth_page(self.get_pos(model.get_path(i=
ter))).get_address())
-			selection.set_text(data)
-	=09
-	def get_pos(self, path):
-		return list(path)[0]
-	=09
-	def drag_data_received_data(self, treeview, context, x, y, selection, i=
nfo, etime):
-		data =3D selection.data
-		drop_info =3D treeview.get_dest_row_at_pos(x, y)
-		model =3D treeview.get_model()
-		if info =3D=3D 0:
-			# Internal move
-			iter =3D model.get_iter_from_string(data)
-			if drop_info:
-				path, position =3D drop_info
-				if (position =3D=3D gtk.TREE_VIEW_DROP_AFTER or
-					position =3D=3D gtk.TREE_VIEW_DROP_INTO_OR_AFTER):
-					old_pos =3D self.get_pos(model.get_path(iter))
-					if old_pos >=3D self.get_pos(path):
-						path =3D model.get_path(model.iter_next(model.get_iter(path)))
-				self.move_tab(model, path, iter)
-			else:
-				dest =3D model.iter_nth_child(None, model.iter_n_children(None)-1)
-				self.move_tab(model, model.get_path(dest), iter)
-#		else:
-#			if drop_info:
-#				path, position =3D drop_info
-#				iter =3D model.get_iter(path)
-#				source_tab =3D model.get_value(iter, 0)
-#				new_tab =3D self.window.open(data, source_tab, 2)
-#				tabrow =3D self.find_tab_row(new_tab)
-#				if (position =3D=3D gtk.TREE_VIEW_DROP_AFTER or
-#					position =3D=3D gtk.TREE_VIEW_DROP_INTO_OR_AFTER):
-#					iter =3D model.iter_next(iter)
-#				path =3D model.get_path(iter)
-#				self.move_tab(model, path, tabrow)
-#				self.notebook.set_current_page( self.get_pos(path))
-#			else:
-#				iter =3D model.iter_nth_child(None, model.iter_n_children(None)-1)
-#				source_tab =3D model.get_value(iter, 0)
-#				self.window.open(data, source_tab, 2)
-#				path =3D model.get_path(iter)
-#				self.notebook.set_current_page(self.get_pos(path)+1)
-#			if info =3D=3D 1:
-#				context.finish(True, True, etime)
-			=09
-	def treeview_click_cb(self, treeview, event):
-		if event.button =3D=3D 3:
-			pos_info =3D treeview.get_dest_row_at_pos(int(event.x), int(event.y))
-			if pos_info:
-				path, position =3D pos_info
-				self.notebook.set_current_page(self.get_pos(path))
-				self.show_tab_popup(event.get_time())
-				return True
-			else:
-				self.show_sidebar_popup(event.get_time())
-
-	def build_custom(self):
-		self.custom_part =3D gtk.HPaned()
-		self.custom_part.pack2(gtk.HPaned(), True)
-		self.treemodel =3D gtk.ListStore(int, str, gtk.gdk.Pixbuf)
-		self.treeview =3D gtk.TreeView(self.treemodel)
-		self.treeview.set_headers_visible(False)
-		self.treeview.get_selection().set_mode(gtk.SELECTION_BROWSE)
-		self.setup_drag()
-		# self.treeview.set_reorderable(True)
-		title_cell =3D gtk.CellRendererText()
-		title_cell.set_property("ellipsize", pango.ELLIPSIZE_END)
-		icon_cell =3D gtk.CellRendererPixbuf()
-		self.column =3D gtk.TreeViewColumn('Tab icon')
-		self.column.pack_start(icon_cell, False)
-		self.column.set_attributes(icon_cell, pixbuf=3D2)
-		self.column.pack_start(title_cell)
-		self.column.set_attributes(title_cell, text=3D1)
-		self.treeview.append_column(self.column)
-		self.treeview.connect('button-press-event', self.treeview_click_cb)
-		self.treeview.get_selection().connect('changed', self.on_selection_cha=
nge)
-		self.treemodel.connect('row-changed', self.move_tab)
-		scrolled =3D gtk.ScrolledWindow()
-		scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
-		scrolled.set_shadow_type(gtk.SHADOW_IN)
-		scrolled.add(self.treeview)
-		label =3D gtk.Label("Opened Pages")
-		label.set_justify(gtk.JUSTIFY_LEFT)
-		label.set_ellipsize(pango.ELLIPSIZE_END)
-		label.set_alignment(0.0, 0.5)
-		label.set_padding(3, 0)
-		close_button =3D gtk.Button()
-		close_button.set_relief(gtk.RELIEF_NONE)
-		close_image =3D gtk.image_new_from_stock(gtk.STOCK_CLOSE,
-			gtk.ICON_SIZE_MENU)
-		close_button.set_image(close_image)
-		close_button.connect("clicked", self.close_clicked)
-		title_hbox =3D gtk.HBox()
-		title_hbox.pack_start(label, True)
-		title_hbox.pack_end(close_button, False)
-		self.vbox =3D gtk.VBox()
-		self.vbox.pack_start(title_hbox, False)
-		self.vbox.pack_start(scrolled, True)
-		self.spacer =3D gtk.Alignment(xscale=3D1.0, yscale=3D1.0)
-		self.spacer.add(self.vbox)
-		self.spacer_update()
-		self.secondary_pack(self.spacer)
-		self.main_pack(self.notebook)
-		self.custom_part.show()
-		self.custom_part.get_child2().show()
-		self.custom_part.connect("notify::position", self.sidebar_width_change=
d1_cb)
-		self.custom_part.get_child2().connect("notify::position", self.sidebar=
_width_changed2_cb)
-		# Best way I found to be informed when the window has finalized its si=
ze
-		self.rs_hack =3D self.custom_part.get_child2().connect("notify::max-po=
sition",
-			self.right_sidebar_hack_cb)
-	=09
-	def right_sidebar_hack_cb(self, paned, position):
-		self.sidebar_width_update()
-		self.custom_part.get_child2().disconnect(self.rs_hack)
-	=09
-	def window_focus_cb(self, window, value):
-		# The saved width is the width of the last focused window
-		if window.is_active():
-			self.sidebar_width_save()
-	=09
-	def sidebar_width_changed1_cb(self, paned, position):
-		if not self.no_update:
-			self.sidebar_width =3D paned.get_position()
-			self.sidebar_width_save()
-=09
-	def sidebar_width_changed2_cb(self, paned, position):
-		if not self.no_update:
-			paned =3D self.custom_part.get_child2()
-			self.sidebar_width =3D paned.get_allocation().width-paned.get_positio=
n()-6
-			self.sidebar_width_save()
-		=09
-	def sidebar_width_save(self):
-		self.gconf.set_int(base_gconf_path+"sidebar_width", self.sidebar_width=
)
-=09
-	def sidebar_width_update(self):
-		self.no_update =3D True
-		if self.sidebar_on_right:
-			paned =3D self.custom_part.get_child2()
-			paned.set_position(self.window.get_allocation().width-self.sidebar_wi=
dth-6)
-		else:
-			self.custom_part.set_position(self.sidebar_width)
-		self.no_update =3D False
-
-	def spacer_update(self):
-		if self.sidebar_on_right:
-			self.spacer.set_padding(0, 4, 0, 4)
-		else:
-			self.spacer.set_padding(0, 4, 4, 0)
-		=09
-	def separator_update(self):
-		hbchilds =3D self.custom_part.get_child2().get_child1().get_children()
-		if self.sidebar_on_right:
-			hbchilds[0].hide()
-			hbchilds[2].show()
-		else:
-			hbchilds[0].show()
-			hbchilds[2].hide()
-	=09
-	def main_pack(self, widget):
-		hbox =3D gtk.HBox()
-		sep1 =3D gtk.VSeparator()
-		sep2 =3D gtk.VSeparator()
-		hbox.pack_start(sep1, False)
-		hbox.pack_start(widget, True)
-		hbox.pack_start(sep2, False)
-		self.custom_part.get_child2().pack1(hbox, True, True)
-		hbox.show_all()
-		self.separator_update()
-			=09
-	def secondary_pack(self, widget):
-		if self.sidebar_on_right:
-			self.custom_part.get_child2().pack2(widget, False, False)
-		else:
-			self.custom_part.pack1(widget, False, False)
-		widget.show_all()
-	=09
-	def secondary_unpack(self):
-		widget =3D self.get_secondary()
-		widget.get_parent().remove(widget)
-		return widget
-		=09
-	def get_main(self):
-		return self.custom_part.get_child2().get_child1().get_children()[1]
-=09
-	def get_secondary(self):
-		if self.sidebar_on_right:
-			return self.custom_part.get_child2().get_child2()
-		else:
-			return self.custom_part.get_child1()
-		=09
-	def get_separator(self):
-		if self.sidebar_on_right:
-			return self.custom_part.get_child2().get_child1().get_children()[2]
-		else:
-			return self.custom_part.get_child2().get_child1().get_children()[0]
-		=09
-	def show_tab_popup(self,etime):
-		popupmenu =3D self.uimanager.get_widget("/EphyNotebookPopup")
-		popupmenu.popup(None, None, None, 2, etime)
-	=09
-	def show_sidebar_popup(self, etime):
-		popupmenu =3D self.uimanager.get_widget("/TabsOnTreeviewPopup")
-		popupmenu.popup(None, None, None, 2, etime)
-	=09
-	def close_clicked(self, button):
-		self.window.get_active_child().close()
-	=09
-	def show_sidebar(self):
-		self.get_secondary().show()
-		self.get_separator().show()
-		self.force_hidden_tabs(self.notebook, True)
-	=09
-	def hide_sidebar(self):
-		self.get_secondary().hide()
-		self.get_separator().hide()
-=09
-	def update_tab_order(self, notebook, child, page_num):
-		tabrow =3D self.find_tab_row(child)
-		if tabrow:
-			dest =3D self.treemodel.iter_nth_child(None, page_num)
-			old_num =3D self.get_pos(self.treemodel.get_path(tabrow))
-			if old_num > page_num:
-				self.treemodel.move_before(tabrow, dest)
-			else:
-				self.treemodel.move_after(tabrow, dest)
-		=09
-	# Workaround for bug: #169116=20
-	def workaround_embed(self):
-		active =3D self.window.get_active_child()
-		if active:
-			active.hide()
-			active.show()
-
-	def attach_window(self):
-		winvbox =3D self.window.get_children()[0]
-		self.notebook.get_parent().remove(self.notebook)
-		self.build_custom()
-		winvbox.pack_start(self.custom_part, True)
-		winvbox.reorder_child(self.custom_part, 1)
-		self.notebook.connect('switch_page', self.update_current_tab)
-		self.notebook.connect('page_reordered', self.update_tab_order)
-		self.fhidden_cb_handle =3D self.notebook.connect('notify::show-tabs', =
self.force_hidden_tabs)
-		self.workaround_embed()
-		self.uimanager =3D self.window.get_ui_manager()
-		self.ui_id =3D self.uimanager.add_ui_from_string(self.treeview_popup_x=
ml)
-		self.actiongroup =3D gtk.ActionGroup('TabsOnTreeview')
-		self.actiongroup.add_radio_actions(self.actiongroupdef, self.sidebar_o=
n_right, self.toggle_sidebar_side_cb)
-		self.uimanager.insert_action_group(self.actiongroup, 0)
-		self.sidebar_width_update()
-		self.window.connect("notify::is-active", self.window_focus_cb)
-=09
-	def force_hidden_tabs(self, notebook, visible):
-		if visible:
-			notebook.set_show_tabs(False)
-
-	def detach_window(self):
-		winvbox =3D self.window.get_children()[0]
-		self.notebook.get_parent().remove(self.notebook)
-		self.custom_part.get_parent().remove(self.custom_part)
-		winvbox.pack_start(self.notebook, True)
-		winvbox.reorder_child(self.notebook, 1)
-		self.notebook.disconnect(self.fhidden_cb_handle)
-		self.notebook.set_show_tabs(True)
-		self.notebook.show()
-		self.workaround_embed()
-		self.uimanager.remove_ui(self.ui_id)
-		self.uimanager.remove_action_group(self.actiongroup)
-		self.uimanager.ensure_update()
-=09
-	def update_current_tab(self, notebook, page, page_num):
-		self.no_update =3D True
-		self.treeview.set_cursor(int(page_num))
-		self.no_update =3D False
-
-	def find_tab_row(self, tab):
-		iter =3D self.treemodel.get_iter_first()
-		h =3D hash(tab)
-		while (iter):
-			if self.treemodel.get_value (iter, 0) =3D=3D h:
-				return iter
-			iter =3D self.treemodel.iter_next(iter)
-		return None
-
-	def update_tab_title_and_icon(self, tab, data):
-		tabrow =3D self.find_tab_row(tab)
-		if tabrow:
-			self.treemodel.set_value(tabrow, 1, tab.get_title())
-			self.treemodel.set_value(tabrow, 2, tab.get_icon())
-
-	def attach_tab(self, tab):
-		page_num =3D self.notebook.page_num(tab)
-		self.treemodel.insert(page_num, [hash(tab), tab.get_title(), tab.get_i=
con()])
-		tab.connect('dom-content-loaded', self.update_tab_title_and_icon)
-		if self.notebook.get_n_pages() =3D=3D 1 and not self.always_show_tabs_=
bar:
-			self.hide_sidebar()
-		else:
-			self.show_sidebar()
-
-	def detach_tab(self, tab):
-		if self.find_tab_row(tab):
-			self.treemodel.remove(self.find_tab_row(tab))
-		if self.notebook.get_n_pages() < 2 and not self.always_show_tabs_bar:
-			self.hide_sidebar()
-			=09
-	def set_always_show_tabs_bar(self, active):
-		self.always_show_tabs_bar =3D active
-		if not active and self.notebook.get_n_pages() < 2 :
-			self.hide_sidebar()
-		else:
-			self.show_sidebar()
-		=09
-	def set_sidebar_on_right(self, value):
-		secondary =3D self.secondary_unpack()
-		self.sidebar_on_right =3D value
-		self.secondary_pack(secondary)
-		self.spacer_update()
-		self.separator_update()
-		self.sidebar_width_update()
-		toggle =3D self.uimanager.get_widget("/TabsOnTreeviewPopup/TabsOnTreev=
iewRight")
-		toggle.set_active(self.sidebar_on_right)
-=09
-		=09
-class TreeviewTabsDispatch:
-	def __init__(self):
-		self.winlist =3D {}
-		self.gconf =3D gconf.client_get_default()
-		self.always_show_tabs_bar =3D self.gconf.get_bool("/apps/epiphany/gene=
ral/always_show_tabs_bar")
-		self.sidebar_on_right =3D self.gconf.get_bool(base_gconf_path+"sidebar=
_on_right")
-		self.gconf.notify_add("/apps/epiphany/general/always_show_tabs_bar",
-			self.always_show_tabs_bar_cb)
-		self.gconf.notify_add(base_gconf_path+"sidebar_on_right",
-			self.sidebar_on_right_cb)
-=09
-	def always_show_tabs_bar_cb(self, client, a_number, entry, a_list):
-		active =3D entry.value.get_bool()
-		for window in self.winlist:
-			self.winlist[window].set_always_show_tabs_bar(active)
-		self.always_show_tabs_bar =3D active
-=09
-	def sidebar_on_right_cb(self, client, a_number, entry, a_list):
-		active =3D entry.value.get_bool()
-		for window in self.winlist:
-			self.winlist[window].set_sidebar_on_right(active)
-		self.sidebar_on_right =3D active
-
-	def attach_window(self, window):
-		self.winlist[window] =3D TreeviewTabs(window, self.gconf,
-			self.always_show_tabs_bar, self.sidebar_on_right)
-		self.winlist[window].attach_window()
-=09
-	def attach_tab(self, window, tab):
-		self.winlist[window].attach_tab(tab)
-
-	def detach_tab(self, window, tab):
-		self.winlist[window].detach_tab(tab)
-=09
-	def detach_window(self, window):
-		self.winlist[window].detach_window()
-		del self.winlist[window]
-
-
-treeview_extension =3D TreeviewTabsDispatch()
-
-attach_window =3D treeview_extension.attach_window
-detach_window =3D treeview_extension.detach_window
-
-attach_tab =3D treeview_extension.attach_tab
-detach_tab =3D treeview_extension.detach_tab
diff --git a/ui/throbber-remover.ephy-extension b/ui/throbber-remover.eph=
y-extension
deleted file mode 100644
index 5b7a682..0000000
--- a/ui/throbber-remover.ephy-extension
+++ /dev/null
@@ -1,10 +0,0 @@
-[Epiphany Extension]
-Name=3DThrobber remover
-Description=3DRemoves the throbber from the toolbar
-Authors=3DDiego Escalante Urrelo <diegoe at gnome.org>
-Version=3D20080422
-URL=3Dhttp://www.gnome.org/~diegoe/epiphany/
-
-[Loader]
-Type=3Dpython
-Module=3Dthrobber-remover
diff --git a/ui/throbber-remover.py b/ui/throbber-remover.py
deleted file mode 100644
index 2b49b54..0000000
--- a/ui/throbber-remover.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# -*- encoding: utf-8 -*-
-#
-#   Remove-throbber - Epiphany Extension
-#   Copyright =C2=A9 2006, 2008  Diego Escalante Urrelo <diegoe at gnome.or=
g>
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-import epiphany
-
-def attach_tab(window, tab):
-    window.get_toolbar().get_children()[0].get_children()[1].get_childre=
n()[0].hide()
-
-def detach_window(window):
-    window.get_toolbar().get_children()[0].get_children()[1].get_childre=
n()[0].show()
diff --git a/ui/urgentcontentnotify.ephy-extension b/ui/urgentcontentnoti=
fy.ephy-extension
deleted file mode 100644
index f820694..0000000
--- a/ui/urgentcontentnotify.ephy-extension
+++ /dev/null
@@ -1,11 +0,0 @@
-[Epiphany Extension]
-Name=3DUrgent Content Notify
-Description=3DSet URGENT window manager hint when content changes in a w=
indow that doesn't have focus
-Authors=3DStefan Stuhr
-Version=3D1
-URL=3Dhttp://www.sstuhr.dk/epiphany-extensions/
-
-
-[Loader]
-Type=3Dpython
-Module=3Durgentcontentnotify
diff --git a/ui/urgentcontentnotify.py b/ui/urgentcontentnotify.py
deleted file mode 100644
index 08a3b7c..0000000
--- a/ui/urgentcontentnotify.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#   Urgent Content Notify - Epiphany Extension
-#   Copyright (C) 2006  Stefan Stuhr
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License al=
ong
-#   with this program; if not, write to the Free Software Foundation, In=
c.,
-#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-import gtk
-import epiphany
-
-def ucn_window_set_focus(window, event):
-	window.set_urgency_hint(False)
-
-def attach_window(window):
-	if hasattr(window, "get_urgency_hint"):
-		signal =3D window.connect("focus-in-event", ucn_window_set_focus)
-		window._ucn_window_set_focus_sig =3D signal
-
-def detach_window(window):
-	if hasattr(window, "_ucn_window_set_focus_sig"):
-		window.disconnect(window._ucn_window_set_focus_sig)
-		delattr(window, "_ucn_window_set_focus_sig")
-
-		if window.get_urgency_hint():
-			window.set_urgency_hint(False)
-
-def ucn_embed_content_change(embed, uri, window):
-	if not window.has_focus and hasattr(window, "set_urgency_hint"):
-		window.set_urgency_hint(True)
-
-def attach_tab(window, tab):
-	if hasattr(tab, "get_embed"):
-		embed =3D tab.get_embed()
-	else:
-		embed =3D tab
-	try:
-		signal =3D embed.connect("notify::load-status", ucn_embed_content_chan=
ge, window)
-	except:
-		signal =3D embed.connect("ge-content-change", ucn_embed_content_change=
, window)
-
-	tab._ucn_embed_content_change =3D signal
-
-def detach_tab(window, tab):
-	if not hasattr(tab, "_ucn_embed_content_change"):
-		return
-
-	if hasattr(tab, "get_embed"):
-		embed =3D tab.get_embed()
-	else:
-		embed =3D tab
-	embed.disconnect(tab._ucn_embed_content_change)
-	delattr(tab, "_ucn_embed_content_change")
-
--=20
1.6.6


--0F1p//8PRICkK4MW--






More information about the pkg-gnome-maintainers mailing list