[SCM] advene/master: Imported Upstream version 1.0

oaubert-guest at users.alioth.debian.org oaubert-guest at users.alioth.debian.org
Tue Dec 20 16:41:38 UTC 2011


The following commit has been merged in the master branch:
commit 9298ea6151428a12ac6f726724b5c639aec97fcd
Author: Olivier Aubert <olivier.aubert at liris.cnrs.fr>
Date:   Tue Dec 20 17:27:17 2011 +0100

    Imported Upstream version 1.0

diff --git a/AUTHORS b/AUTHORS
index e764067..8533c8e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,26 +1,29 @@
 # The format of this file was inspired by the Linux kernel CREDITS file.
 # Authors are listed alphabetically.
 # 
-# The fields are: name (N), email (E), web-address (W), CVS account login (C),
+# The fields are: name (N), email (E), web-address (W), 
 # PGP key ID and fingerprint (P), description (D), and snail-mail address (S).
 
 N: Olivier Aubert
-C: oaubert
-E: oaubert at liris dot cnrs dot fr
+E: olivier.aubert at liris dot cnrs dot fr
 D: Design
-D: Main application
+D: Overall development and coordination
 D: Debian packaging
 S: France
 
 N: Pierre-Antoine Champin
-C: champin
-E: chapin at liris dot cnrs dot fr
+E: pierre-antoine.champin at liris dot cnrs dot fr
 D: Design
 D: Advene model implementation
 S: France
 
 N: Yannick Prié
-C: yprie
-E: yprie at liris dot cnrs dot fr
+E: yannick.prie at liris dot cnrs dot fr
 D: Design
 S: France
+
+N: Bertrand Richard
+E: bertrand.richard at liris dot cnrs dot fr
+D: Activity trace visualisation
+D: Win32 installer
+S: France
diff --git a/CHANGES.txt b/CHANGES.txt
index 725fd43..8dec41e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,8 +1,70 @@
+advene (1.0) unstable; urgency=low
+
+  * This release marks the end of a series that has been stable for a long
+    time, but never earned its major release number. This version now
+    enters a maintenance state, while development focuses on the next
+    major version (new data model, interface revamp to handle simultaneous
+    analysis of multiple video files...).
+  
+  * See the following 0.47 notes for more details about changes from
+    previous release.
+
+ -- Olivier Aubert <olivier.aubert at liris.cnrs.fr>  Tue, 20 Dec 2011 16:31:19 +0100
+
+advene (0.48) unstable; urgency=low
+
+  * New stable release, candidate for 1.0. See the following 0.47 notes for more details.
+
+ -- Olivier Aubert <olivier.aubert at liris.cnrs.fr>  Wed, 14 Dec 2011 15:54:20 +0100
+
+advene (0.47) unstable; urgency=low
+
+  * Main GUI:
+
+     * Left-clicking on the video slider jumps to the designated position.
+
+  * Note-taking view - new shortcut: Ctrl-C to convert to annotations
+
+  * Timeline:
+
+     * The annotation inspector can be locked on an annotation by clicking
+       on it. Clicking on the lock icon or in the timeline background unlocks
+       the inspector. The annotation content can be edited through the
+       inspector, and validated either with an icon, or with the
+       Control-Return shortcut.
+
+  * Annotation table view:
+
+     * Annotation contents can be modified from the table view.
+
+     * New shortcut: Ctrl-Return to play current annotation.
+
+  * Transcription view - new shortcut: Ctrl-Return to play current annotation.
+
+  * Importers:
+
+     * WebVTT files can be imported.
+
+     * Speech recognition has been implemented through the pocketsphinx
+       speech recognition software. The pocketsphinx software is not bundled
+       with Advene and has to be installed separately to enable this
+       feature. See http://cmusphinx.sourceforge.net/wiki/gstreamer for
+       details.
+
+  * The additional videoplayer offset can be customized by drag and drop
+    of an annotation.
+
+  * The popup menu on screenshot and annotations now offers to save the
+    screenshot as a PNG file. If the player supports it, the screenshot
+    will be in video-resolution.
+
+ -- Olivier Aubert <olivier.aubert at liris.cnrs.fr>  Thu, 13 Oct 2011 14:29:49 +0200
+
 advene (0.46) unstable; urgency=low
 
   * Stable release. See the following 0.45 notes for more details.
 
- -- Olivier Aubert <olivier.aubert at liris.cnrs.fr>  Tue, 05 Apr 2011 18:00:07 +0200
+ -- Olivier Aubert <olivier.aubert at liris.cnrs.fr>  Tue, 04 Oct 2011 17:14:25 +0200
 
 advene (0.45) unstable; urgency=low
 
@@ -58,9 +120,9 @@ advene (0.45) unstable; urgency=low
       for an example).
 
   * Braille table:
-  
+
     * Long text can be scrolled with left/right buttons in scroll mode.
-  
+
   * Actions:
 
     * New parameters (balance, volume) for PlaySound / PlaySoundClip actions
diff --git a/INSTALL.txt b/INSTALL.txt
index acedded..750931b 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -4,24 +4,20 @@ How to install the Advene prototype
 
 ** Video player
 
-The only supported cross-platform player for the moment is VLC through
-a native VLC plugin. You have to install the python-vlc plugin (see
-http://liris.cnrs.fr/advene/download/) to access movies.
-
-Linux users may use the gstreamer framework, through the
-python-gstreamer module (>= 0.10).
+The video player is implemented on all platforms with the gstreamer
+framework, through the python-gstreamer module (>= 0.10).
 
 ** Linux version
 
 You will need the following python packages (the package names are from
 Debian, they may slightly vary on other distributions) :
 
-python >= 2.4
+python >= 2.5
 python-gtk2 (>=2.12)
-python-cherrypy3 (>=3.0.0) [for convenience, a copy of cherrypy is included in
+python-cherrypy3 (>=3.0.0) [for convenience, a copy of cherrypy may be included in
 this Advene distribution]
-python-simpletal (>=3.12) [for convenience, a copy of simpletal is included in
-this Advene distribution] 
+python-simpletal (>=3.12) [for convenience, a copy of simpletal may be
+included in this Advene distribution] 
 
 For the gstreamer plugin:
 python-gst0.10
@@ -30,23 +26,24 @@ gstreamer0.10-x
 + other gstreamer packages needed to decode various formats
 (esp. gstreamer0.10-plugins-good and gstreamer0.10-plugins-ugly).
 
+Optionaly:
+python-opencv (for some feature-extraction filters)
+
 Note that all these dependencies are already available in Debian and
 in standard installations of the Ubuntu Feisty Fawn (and later)
 distribution.
 
 ** Windows version
 
-You should install in this order (note the version numbers) :
+If you want to run Advene from sources on win32, you should install in this order (note the version numbers) :
 
 Gtk/win32 v. >= 2.12 : http://gladewin32.sourceforge.net/ (runtime environment)
-v2.12 recommended to avoid problems with Vista environment.
 
-Python    v. 2.4 : http://www.python.org/ftp/python/2.4.4/Python-2.4.4.exe
-[ From http://python.org/ ]
+Python  >=  v. 2.5 : http://python.org/
 
-PyGtk for python2.4: http://www.pcpm.ucl.ac.be/~gustin/win32_ports/ [ From http://www.pygtk.org ]
+PyGtk for python2.5: http://www.pygtk.org/
 
-CherryPy: http://download.cherrypy.org/cherrypy/3.0.1/ [for
+CherryPy: http://download.cherrypy.org/cherrypy/ [for
 convenience, a copy of cherrypy is included in this Advene
 distribution]
 
@@ -55,46 +52,49 @@ http://www.owlfish.com/software/simpleTAL/download.html [for
 convenience, a copy of simpletal is included in this Advene
 distribution]
 
-VLC + python-vlc mediacontrol extension (cf
-http://download.gna.org/advene/win32/ )
+Optionally, python-opencv
 
 ** Mac OS X version
 
 From macports (http://www.macports.org/), install :
 
-    * python24 [Note: after its install, make sure that
+    * python26 or later [Note: after its install, make sure that
       /opt/local/bin/python exists, and that your path begins with
       /opt/local/bin. Else, the installation of the other packages
       could use the /usr/bin/python version]
-    * py-gtk2 >= 2.12
-
-You will also need the vlc.so python module to control VLC. You can
-download a precompiled version for vlc0.8.6c/i3386 from
-http://liris.cnrs.fr/advene/download/mac/vlc-bindings/ or compile it
-by yourself (which is hard for vlc <= 0.8.6, and should work better
-for vlc >= 0.9.0).
+    * py26-gtk (>= 2.12)
+    * py26-goocanvas
+    * librsvg (optional)
+    * py26-pyobjc2 (optional)
+    * py26-gst-python
+    * gst-plugins-base
+    * gst-plugins-good gst-plugins-bad gst-plugins-ugly
+    * gst-ffmpeg
 
 * Testing
 
 You can run the script ./bin/advene directly from the source
-directory. It will adapt its paths to its location.
+directory. It will adapt its paths to this location.
 
 In a first step, you can try the Advene application without movie player
 support by using the "-pdummy" parameter :
-advene -pdummy
+
+  advene -pdummy
 
 To force the use of the gstreamer player, specify:
-advene -pgstreamer
+
+  advene -pgstreamer
 
 To force the use of the vlc player, specify:
-advene -pvlcnative
+
+  advene -pvlctypes
 
 * Installing
 
 To install the application, you can run the setup.py script with
 appropriate options. For a standard installation, run
 
-python setup.py install
+  python setup.py install
 
 Note that it is not necessary to install the application to run it. It
 can be used directly from its sources directory.
diff --git a/Makefile b/Makefile
index 774f07d..0bb6449 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@ doc: FORCE
 	PYTHONPATH=$(shell pwd)/lib find lib/advene -name '*.py' | xargs -n 500 epydoc -o doc/html -n Advene --inheritance=grouped
 
 archive:
-	tar -C .. --exclude=lib/simpletal --exclude=lib/cherrypy --exclude=\*.pyc --exclude=build/ --exclude=.git --exclude=.svn --exclude=\*~ -cvzf ../$(name).tgz $(name)
+	tar -C .. --exclude=locale --exclude=lib/simpletal --exclude=lib/cherrypy --exclude=\*.pyc --exclude=build/ --exclude=.git --exclude=.svn --exclude=\*~ -cvzf ../$(name).tgz $(name)
 
 FORCE:
 
diff --git a/README.txt b/README.txt
index 8ba152a..fd4d640 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,5 @@
-* Purpose of the software
+Purpose of the software
+=======================
 
 The Advene project (Annotate Digital Video, Exchange on the NEt) aims
 at providing a model and a format to share annotations about digital
@@ -6,15 +7,16 @@ video documents (movies, courses, conferences...), as well as tools to
 edit and visualize the hypervideos generated from both the annotations
 and the audiovisual documents.  
 
-Teachers, moviegoers, etc. can use them to exchange multimedia
-comments and analyses about video documents. The project also aims at
-studying the way that communities of users (teachers, moviegoers,
-students...) will use these self-publishing tools to share their
-audiovisual "readings", and to envision new editing and viewing
+With the Advene software, teachers, moviegoers, etc. can exchange
+multimedia comments and analyses about video documents. The project
+also aims at studying the way that communities of users (teachers,
+moviegoers, students...) will use these self-publishing tools to share
+their audiovisual "readings", and to envision new editing and viewing
 interfaces for interactive comment and analysis of audiovisual
 content.
 
-* Design
+Design
+======
 
 The software consists in a graphical user interface, integrating a
 video player and an embedded webserver. The graphical user interface
@@ -38,9 +40,9 @@ dynamic views and adhoc-views.
 Static views are X(HT)ML templates that, applied on the annotations,
 generate a HTML document. The HTML document is served through the
 embedded webserver to a standard web browser. Snapshots from the video
-(extracted on the fly) can be addressed in the template. It is also
+(extracted on the fly) can be used in the template. It is also
 possible to control the application (video player control, adhoc view
-opening...).
+opening...) though URLs.
 
 Dynamic views are augmented video renderings, guided by the
 annotations. It is possible to caption the video, control the video
@@ -51,13 +53,22 @@ Adhoc-views are programmed views available from the GUI. Among
 available views are a timeline, a transcription view synchronized with
 the video...
 
-* Basic use
+Basic use
+=========
 
 Sample packages are provided on the Advene website:
-http://liris.cnrs.fr/advene/examples.html
+
+ http://liris.cnrs.fr/advene/examples.html
 
 Both the Nosferatu analysis and the Ted Nelson speech analysis can be
 used as tutorials to go through the Advene features.
 
-A user manual is also available:
+A user manual is also available at:
+
 http://liris.cnrs.fr/advene/wiki/index.php/Main_Page
+
+Copyright Information
+=====================
+
+This software is covered by the GNU General Public Licence
+(version 2, or if you choose, a later version).
diff --git a/adveneAllInOne.iss b/adveneAllInOne.iss
index 870bfc8..336224e 100644
--- a/adveneAllInOne.iss
+++ b/adveneAllInOne.iss
@@ -9,7 +9,7 @@ Source: dist\doc\*; DestDir: {app}\doc; Flags: recursesubdirs; Components: adven
 Source: dist\locale\*; DestDir: {app}\locale; Flags: recursesubdirs; Components: advene
 Source: share\pixmaps\advene.ico; DestDir: {app}; DestName: advene.ico; Components: advene
 Source: c:\gtk\etc\*; DestDir: {app}\etc; Flags: recursesubdirs; Components: advene
-Source: examples\*v11.azp; DestDir: {app}\examples; Components: advene
+Source: examples\Nosferatu_v12.azp; DestDir: {app}\examples; Components: advene
 Source: c:\gtk\lib\gtk-2.0\*; DestDir: {app}\lib\gtk-2.0; Flags: recursesubdirs; Components: advene
 Source: c:\gtk\lib\gdk-pixbuf-2.0\*; DestDir: {app}\lib\gdk-pixbuf-2.0; Flags: recursesubdirs; Components: advene
 Source: c:\gtk\share\locale\fr\*; DestDir: {app}\lib\locale\fr; Flags: recursesubdirs; Components: advene
@@ -45,10 +45,6 @@ Source: vcredist_x86.exe; DestDir: {tmp}; Components: advene
 Source: c:\gtk\bin\gdk-pixbuf-query-loaders.exe; DestDir: {app}; Components: advene
 Source: post_install.bat; DestDir: {app}; Components: advene
 
-Source: c:\Program Files (x86)\VLC\libvlccore.dll; DestDir: {app}; Components: vlc
-Source: c:\Program Files (x86)\VLC\libvlc.dll; DestDir: {app}; Components: vlc
-Source: c:\Program Files (x86)\VLC\plugins\*; DestDir: {app}\vlcplugins; Components: vlc
-
 Source: gst\*; DestDir: {app}\gst; Flags: recursesubdirs; Components: gst
 Source: gst_bindings\libgstpython-v2.6.dll; Destdir: {app}; Components: gst
 
@@ -60,22 +56,18 @@ En.CleanPrefs=Clean &preferences
 Fr.CleanPrefs=Effacer les &préférences
 En.ITadvenegst=Advene with included gstreamer
 Fr.ITadvenegst=Advene et gstreamer inclus
-En.ITadvenevlc=Advene with included vlc
-Fr.ITadvenevlc=Advene et vlc inclus
-En.ITadvene=Advene without included vlc
-Fr.ITadvene=Advene sans vlc
+En.ITadvene=Advene without included gstreamer
+Fr.ITadvene=Advene sans gstreamer
 En.ITcustom=Custom installation
 Fr.ITcustom=Installation personnalisée
 
 [Types]
 Name: "AdveneGst"; Description: "{cm:ITadvenegst}"
-Name: "AdveneVlc"; Description: "{cm:ITadvenevlc}"
 Name: "AdveneOnly"; Description: "{cm:ITadvene}"
 Name: "Custom"; Description: "{cm:ITcustom}"; Flags: iscustom
 
 [Components]
-Name: advene; Description: Advene files; Types: AdveneOnly AdveneVlc AdveneGst Custom; Flags: fixed
-Name: vlc; Description: VLC files; Types: AdveneVlc Custom
+Name: advene; Description: Advene files; Types: AdveneOnly AdveneGst Custom; Flags: fixed
 Name: gst; Description: Gstreamer files; Types: AdveneGst Custom
 
 [Languages]
@@ -85,19 +77,19 @@ Name: En; MessagesFile: "compiler:Default.isl"
 [Setup]
 AppCopyright=GPL
 AppName=Advene
-AppVerName=Advene 0.46
+AppVerName=Advene 1.0
 DefaultDirName={pf}\Advene
 ShowLanguageDialog=yes
-VersionInfoVersion=0.46
+VersionInfoVersion=1.0
 VersionInfoCompany=LIRIS
 PrivilegesRequired=none
 LicenseFile=doc\copyright
 DisableFinishedPage=false
 DefaultGroupName=Advene
-VersionInfoDescription=Annotate DVDs, Exchange on the NEt
+VersionInfoDescription=Annotate Digital Videos, Exchange on the NEt
 InfoAfterFile=CHANGES.txt
-OutputBaseFilename=setup_advene_0.46r7211_vlc_1.0.3_gstreamer_0.10.7beta2
-VersionInfoTextVersion=0.46
+OutputBaseFilename=setup_advene_1.0
+VersionInfoTextVersion=1.0
 ChangesAssociations=yes
 
 [Registry]
@@ -116,9 +108,9 @@ Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescrip
 Name: "cleanprefs"; Description: "{cm:CleanPrefs}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
 
 [Icons]
-Name: {group}\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate DVDs, Exchange on the NEt; IconIndex: 0
-Name: {userdesktop}\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate DVDs, Exchange on the NEt; Tasks: desktopicon
-Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate DVDs, Exchange on the NEt; Tasks: quicklaunchicon
+Name: {group}\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate Digital Videos, Exchange on the NEt; IconIndex: 0
+Name: {userdesktop}\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate Digital Videos, Exchange on the NEt; Tasks: desktopicon
+Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate Digital Videos, Exchange on the NEt; Tasks: quicklaunchicon
 
 [InstallDelete]
 Type: files; Name: "{userappdata}\..\advene\advene.prefs"; Tasks: cleanprefs
diff --git a/advene_pad.xml b/advene_pad.xml
index 91c41d0..9d95486 100644
--- a/advene_pad.xml
+++ b/advene_pad.xml
@@ -17,30 +17,30 @@
 	<State_Province></State_Province>
 	<Zip_Postal_Code>69622</Zip_Postal_Code>
 	<Country>France</Country>
-	<Company_WebSite_URL>http://liris.cnrs.fr/advene/</Company_WebSite_URL>
+	<Company_WebSite_URL>http://www.advene.org/</Company_WebSite_URL>
         <Contact_Info>
           <Author_First_Name>Olivier</Author_First_Name>
-	  <Author_Last_Name>Aubert</Author_Last_Name>
-	  <Author_Email>olivier.aubert at liris.cnrs.fr</Author_Email>
-	  <Contact_First_Name>Olivier</Contact_First_Name>
-	  <Contact_Last_Name>Aubert</Contact_Last_Name>
-	  <Contact_Email>advene at liris.cnrs.fr</Contact_Email>
+          <Author_Last_Name>Aubert</Author_Last_Name>
+          <Author_Email>olivier.aubert at liris.cnrs.fr</Author_Email>
+          <Contact_First_Name>Olivier</Contact_First_Name>
+          <Contact_Last_Name>Aubert</Contact_Last_Name>
+          <Contact_Email>advene at liris.cnrs.fr</Contact_Email>
         </Contact_Info>
         <Support_Info>
           <Sales_Email>advene at liris.cnrs.fr</Sales_Email>
-	  <Support_Email>advene at liris.cnrs.fr</Support_Email>
-	  <General_Email>advene at liris.cnrs.fr</General_Email>
-	  <Sales_Phone></Sales_Phone><Support_Phone></Support_Phone>
-	  <General_Phone></General_Phone>
-	  <Fax_Phone></Fax_Phone>
+          <Support_Email>advene at liris.cnrs.fr</Support_Email>
+          <General_Email>advene at liris.cnrs.fr</General_Email>
+          <Sales_Phone></Sales_Phone><Support_Phone></Support_Phone>
+          <General_Phone></General_Phone>
+          <Fax_Phone></Fax_Phone>
         </Support_Info>
     </Company_Info>
     <Program_Info>
       <Program_Name>Advene</Program_Name>
-      <Program_Version>0.44</Program_Version>
-      <Program_Release_Month>09</Program_Release_Month>
-      <Program_Release_Day>13</Program_Release_Day>
-      <Program_Release_Year>2010</Program_Release_Year>
+      <Program_Version>1.0</Program_Version>
+      <Program_Release_Month>12</Program_Release_Month>
+      <Program_Release_Day>22</Program_Release_Day>
+      <Program_Release_Year>2011</Program_Release_Year>
       <Program_Cost_Dollars>0</Program_Cost_Dollars>
       <Program_Cost_Other_Code></Program_Cost_Other_Code>
       <Program_Cost_Other></Program_Cost_Other>
@@ -50,9 +50,9 @@
       <Program_OS_Support>Linux,Mac OS X,Windows2000,Windows2003,WinXP</Program_OS_Support>
       <Program_Language>English,Esperanto,French</Program_Language>
       <File_Info>
-        <File_Size_Bytes>54831024</File_Size_Bytes>
-	<File_Size_K>53545</File_Size_K>
-	<File_Size_MB>53</File_Size_MB>
+        <File_Size_Bytes>62659874FIXME</File_Size_Bytes>
+	<File_Size_K>61191FIXME</File_Size_K>
+	<File_Size_MB>59FIXME</File_Size_MB>
       </File_Info>
       <Expire_Info>
         <Has_Expire_Info>N</Has_Expire_Info><Expire_Count></Expire_Count><Expire_Based_On></Expire_Based_On><Expire_Other_Info></Expire_Other_Info><Expire_Month></Expire_Month><Expire_Day></Expire_Day><Expire_Year></Expire_Year>
@@ -108,14 +108,14 @@
     </Program_Descriptions>
     <Web_Info>
       <Application_URLs>
-        <Application_Info_URL>http://liris.cnrs.fr/advene/</Application_Info_URL>
-	<Application_Order_URL>http://liris.cnrs.fr/advene/download.html</Application_Order_URL>
-	<Application_Screenshot_URL>http://liris.cnrs.fr/advene/screenshots/advene-0.42.png</Application_Screenshot_URL>
-	<Application_Icon_URL>http://liris.cnrs.fr/advene/img/icon_advene32.png</Application_Icon_URL>
-	<Application_XML_File_URL>http://liris.cnrs.fr/advene/advene_pad.xml</Application_XML_File_URL>
+        <Application_Info_URL>http://www.advene.org/</Application_Info_URL>
+	<Application_Order_URL>http://www.advene.org/download.html</Application_Order_URL>
+	<Application_Screenshot_URL>http://www.advene.org/screenshots/advene-1.0.png</Application_Screenshot_URL>
+	<Application_Icon_URL>http://www.advene.org/img/icon_advene32.png</Application_Icon_URL>
+	<Application_XML_File_URL>http://www.advene.org/advene_pad.xml</Application_XML_File_URL>
       </Application_URLs>
       <Download_URLs>
-        <Primary_Download_URL>http://download.gna.org/advene/win32/setup_advene_0.44_vlc_1.0.3_gstreamer_0.10.5_b.exe</Primary_Download_URL>
+        <Primary_Download_URL>http://download.gna.org/advene/win32/setup_advene_1.0.exe</Primary_Download_URL>
 	<Secondary_Download_URL></Secondary_Download_URL>
 	<Additional_Download_URL_1></Additional_Download_URL_1>
 	<Additional_Download_URL_2></Additional_Download_URL_2>
diff --git a/doc/TODO b/doc/TODO
index db0529e..444e608 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,12 +1,4 @@
-* licensecheck -R --copyright advene.git | grep UNKN
-
-* Transcribe: underline zone progress according to player position between 2 marks
-
-* Mac: pb when displaying menus (no border) and progressbar
-
-* Google API for Speech-to-text ?
-
-* gst element that buffers slices of data with rolling index
+* QRcode extractor
 
 * Have webcherry listen on both ipv4/ipv6
 
@@ -20,8 +12,6 @@
 
 * example SVG + lien -> json
 
-* Remove embedded ElementTree now that python2.5 is required
-
 * Update default-fps value when data is available from player
 
 * feature extraction: check against filename encoding
@@ -30,6 +20,10 @@
 
 * finder: in Static view/dynamic view columns, add a "+" item
 
+* finder: filter (global or by column), grouping (by column)
+
+* finder: implement set_current_element method
+
 * gst spectrum videoanalyse
 
 * display clock cursor for lengthy actions (timeline update)
@@ -50,45 +44,23 @@
 
 * Default caption dynamic view: make non-admin (remove _)
 
-* Montage: add "Save" icon
-
 * MacOSX: use Cmd modifier equiv. as control
 
 * Import youtube annotations ( http://www.google.com/reviews/y/read2?video_id=YOUR_VIDEO_ID_HERE )
 
-* Import/export AIFF
-
-* DND annnotation type in comment -> display transcription/table/...
-
--
-
-* Play a sound file: ask wether to keep the reference or to copy the file as resource
-
 * gstreamer pipeline (videomixer) to generate 1-pixel-column sum-up of video:
 gst-launch -e filesrc location=/data/video/Bataille.avi ! decodebin ! videoscale ! ffmpegcolorspace ! video/x-raw-rgb,width=320,pixel-aspect-ratio=\(fraction\)1/1 ! videocrop left=158 right=160 ! progressreport update-freq=1 ! pngenc snapshot=false ! multifilesink location=%05d.png
 montage -tile x1 -mode Concatenate 0*g final.png
 
 * montage: video export
 
-* integrate pyxdg RecentFiles (use gtk.RecentFiles), pyxdg.Mime
-
 * transcribe: allow search/replace
 
-* Integrate transcription view from TBL
-
 * quick edit: integrate EntryCompletion on attributes
 
-* Fix message log file access on win32
-
-* abbreviations: pb when missing end newline
-
-* fullscreen: optionally display information over the video (status, position)
-
 * add PyDiscoverer interface, to get movie details ASAP
 
-* option to stop player synchronisation then use current position as time offset
-
-* trace replay mode  of video navigation (replay video based on navigation events) -> trace player with controlled video player
+* trace replay mode of video navigation (replay video based on navigation events) -> trace player with controlled video player
 
 * Customizable shortcuts
 
@@ -96,21 +68,13 @@ montage -tile x1 -mode Concatenate 0*g final.png
 
 * Ldt ZIP importer
 
-* Make the timeline inspector editable (thus sticky display)
-
 * Screen overlay interface: define a grid with sensitive areas + event
    -> need to implement player.get_dimensions() method
 
-* default bookmarks view, used by default and auto-saved with the package.
-
-* LogMessages: pb of exclusive access on win32
-
 * implement a "Stream record" feature in the player (tee+encode before imagesink)
 
 * Generic subprocess registration (prononce, tts...) to make sure that we terminate them at Advene exit.
 
-* Generic metadata for packages
-
 * table view: keyword occurrences + stats
 
 * gstrecorder: option to specify wether to record from webcam
@@ -125,17 +89,11 @@ montage -tile x1 -mode Concatenate 0*g final.png
 * controller.update_status: accept annotation as parameter, to allow
    more precise notification
 
-* Generateur waveform
-
-* Generic "ImportFromApplication" module/framework (with progressbar, etc)
-
 * gstreamer: multiple video syntax: path;path -> videobox
 
 * gui.edit.rules: SimpleQuery edition will fail since TALESEntry does
    not handle multiple sources
 
-* Note-taking: save == convert option
-
 * Fix autocompletion of attribute names for annotations (should
    record key=value strings)
 
@@ -144,17 +102,9 @@ montage -tile x1 -mode Concatenate 0*g final.png
 * webcherry: use content negociation for invoking appropriate views
 
 * Utilisation npt:/
-* Define content-types: montag <annotation>...</annotation> +
-   extensions (transition...)
-
-* STBV export (captions): cf http://code.google.com/p/libkate/
 
 * transcribe: use textbuffer.get_modified/set_modified
 
-* Customizable shortcuts for annotation creation
-
-* Make initial setup window an assistant (multiple steps)
-
 * gui.main: simple click on Adhocview icon -> share code with viewbook
    (menu New/open existing).
 
@@ -163,21 +113,10 @@ montage -tile x1 -mode Concatenate 0*g final.png
 
 * timeline: fix continous scrolling. Set zoom 96%, 0h59 in Nosferatu
 
-* tabular adhoc view, with options to export as HTML
-
-* HTML editor: popup menu on images to refresh imagecache (and possibly code)
-
-* ssa import filter
-
-* svg editor: add a "advene_comment" field to the svg source (similar
-   to label in advene zones)
-
-* finder: filter (global or by column), grouping (by column)
+* tabular adhoc view, with customizable columns and options to export as HTML
 
 * HTMLeditor: implement basic css parsing (cf python-cssutils)
 
-* use HTMLeditor component as viewer if mozembed is not available.
-
 * htmleditor: when suppressing a tag with tal: instructions (define,
    ...), recreate it ? Or delete the whole block ?
 
@@ -190,22 +129,14 @@ montage -tile x1 -mode Concatenate 0*g final.png
 
 * Revamp player API (player.position, player.duration, ...)
 
-* fix players (vlc, gstreamer) to be able to start from a given position
-
-* finder: implement set_current_element method
-
 * Bug in Advene2 export -> resources
 
 * Template: in _package_view, propose to Open adhoc views
 
 * Imagemap/SVG
 
-* LdT: handle #RRGGBB color specification
-
 * improve search results navigation (cf PA post on May 2 2008)
 
-* streamline ask_for_relationtype method (timeline relation creation)
-
 * Montage: double-click -> goto annotation
 
 * Auto-pause in montage view
@@ -215,12 +146,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
 * timeline popup menu on annotation: offer access to possibly
    overlapping annotations
 
-* transcribe: insert begin/end marks (0, duration)
-
-* website/FAQ: justify "offline" approach (privacy, on the run, performances...)
-
-* activebookmark: DND to accumulator -> move annotation
-
 * Synchronise transcribe with annotations/timeline
  * create new type. On view rename -> set new type title
  * create/fusion/delete annotations when modifying timestamps
@@ -228,8 +153,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
 * make all simple selections (annotation, timestamp, etc) able to get
    multiline data to represent element list
 
-* Dynamic view editing: Categorize events (annotation, player, application)
-
 * Selection: extend-to-next ?
 
 * Global timeline with frame to represent "overview + detail" (p174)
@@ -238,8 +161,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
 
 * Data brushing p.181 -> selection in a view, highlight in others
 
-* Proeminently put GPL license info on the web site.
-
 * timeline: memorize zoom level and position when changing package
    (needs a timeline.zoom_level[package_uri] structure)
 
@@ -248,8 +169,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
 * shapewidget: complete support for <image> element. How to deal with
    images as resources ?
 
-* tts: send configure instructions for aplay to the pipe
-
 * adhoc view: imagemap, with DND of annotation to the image
 
 * fix timeline relation lines display
@@ -258,8 +177,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
 
 * shotdetect: allow to specify begin/end times, to allow to redo a segmentation with a new threshold
 
-* Package: static export (to web site) of a set of views+resources/images
-
 * Assistant for generating HTML views from annotations (propose some
    common layouts: plain TOC, illustrated TOC, etc)
 
@@ -269,8 +186,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
 
 * gtk locale in win32
 
-* clearlook theme in win32 ?
-
 * transcription: option to display timestamp marks and allow to modify
 
 * Montage: extend with 2nd video (cf bout-a-bout) ?
@@ -279,13 +194,9 @@ montage -tile x1 -mode Concatenate 0*g final.png
 
 * annotation highlight: other representation (red thick border ?)
 
-* Thicker frame around widgets in editaccumulator -> not so simple
-
 * editaccumulator: distinguish incomplete annotations (missing entidtime)
 
-* edit.elements.annotation: next/prev should reuse the same window
-
-* Convert event names from strings to objects (faster comparison)
+* Convert event names from strings to objects (faster comparison?)
 
 * Allow to lock workspace modifications (to propose a read-only version)
 
@@ -297,18 +208,10 @@ montage -tile x1 -mode Concatenate 0*g final.png
 
 * highlight: blink (wait for gtk.Transition in 2.12?)
 
-* Short version of shortcuts/tutorial for note taking
-
-* iMovie0.8-like movie exploration (skim through the paused movie through DND in the thumbnail)
-
-* rss checking to display project news
-
 * zippackage: implement a 'serialize'/'freeze' method, to save the data to the temp. directory (w/o overwriting the .azp package). This would allow regular backups of the data.
 
 * controller.get_url_for_alias: use correct baseurl from cherrypy request when possible
 
-* study psyco optimizer (cf scribes)
-
 * timeline
 
 ** Deactivate autoscroll when moving in the timeline
@@ -335,21 +238,13 @@ position of current marks in the video (with small lines) [cf linkmap
 
 ** rewrite importers with ElementTree
 
-** exmeralda importer
-
 * Main GUI
 
 ** new signal: CurrentAnnotation
 
-** review gtk.Style for whole app (viewbook labels and comboboxes smaller, more separation...)
-
-* transcription
- 
-** bug when opening a new package, the dialog "Annotations were modified" blocks the GUI
-
 * New views
 
-** Tag cloud view (maybe in swf via python-ming)
+** Tag cloud view
 
 * Players
 
@@ -377,15 +272,6 @@ position of current marks in the video (with small lines) [cf linkmap
  ] 
 Cf http://blog.hill-street.net/?p=7 for implementations comparison
 
-* add a progress bar for package loading -> need support in model
-
-* new query type: builtin-query, to allow to build adhoc and fast
-  queries such as search_content ? or builtin-condition ?
-
-* importer GUI: when trying to import .azp, advice to use Merge instead.
-
-* importer GUI: allow to define parameters (customize checkbox => new dialog)
-
 * Hook to define new events (spatial events: EnterZone, LeaveZone... for instance)
 
 * Save dynamic view rendering: ~/src/vlc-dev/vlc --plugin-path ~/src/vlc-dev jurannessic_320x192.mpg :sout='#transcode{vcodec=mp1v,vb=4096,acodec=mpga,ab=192,scale=1,channels=2,deinterlace,audio-sync}:std{access=file,mux=ps,url="foo.mpg"}'
@@ -419,18 +305,6 @@ http://service.real.com/help/library/guides/ScriptingGuide/HTML/htmfiles/methodi
 
 * transtyping: preserve/recreate relations
 
-* Study transana code
-
-* replace highlight->activate by hightlight->color->...
-
-* think about printing support
-
-* HTML action to update all displayed screenshots
-
-* bug: begin event is generated when setting position inside an annotation.
-
-* Use screen:// as input stream. Allow to parameterize (source display...)
-
 * VerticalList : equiv. navigation history parameterized with 2 tales expressions: item list, representation [ history / annotation/fragment/formatted/duration ]
 
 * component "scroller" below the vout. Parameters: text, href (optional), past duration, current
@@ -440,8 +314,6 @@ http://service.real.com/help/library/guides/ScriptingGuide/HTML/htmfiles/methodi
    records. Upon release, it creates an annotation with the correct
    bounds.
 
-* embed swfplayer
-
 * import fixer: allow to edit imports without loading the package
    (which fails if imported package is not accessible).
 
@@ -465,14 +337,10 @@ http://service.real.com/help/library/guides/ScriptingGuide/HTML/htmfiles/methodi
 p.imports[0].package.views[1]._getParent().uri, p.imports[1].package.uri
 that should return the same URI. The proposed solution is to enforce the importing package to explicitly import the second level imported ones. Pb: namespace clash
 
-* transcribe: make validity check on bounds only on demand or on export.
-
 * Write a advene-openoffice binding to automate video/presentation sync.
 
 * New action: translate ?
 
-* On-the-fly annotation: display as caption the edited content (for 1s)
-
 * webserver: implement a wiki-like syntax in views that dynamically generates links to Advene elements/TALES expressions (define a application/x-advene-wiki that will get converted into a TAL template)
 
 * handle wiki syntax in transcriptionedit, so that we can do simple notetaking with some markup easily.
@@ -487,15 +355,6 @@ that should return the same URI. The proposed solution is to enforce the importi
 position where the link was activated. Parameters: fragment to play,
 return position, or display in a new video window
 
-* Model: maintain creation date + modification date for elements
-
-* MediaControl.idl :
-  * sound_[sg]et_volume: normalize volume in [0..100]
-  * implement set_visual in API
-  * implement get_aspect_ratio (or get_dimensions ?)
-  * implement get_api_version()
-  * implement get/set_rate
-
 * navigation history: put 2 snapshots (origin, destination) to contextualize
 
 * controller.update: implement a future_approaching and a
@@ -522,19 +381,8 @@ when there is a syntax error in a TALES expression (missing string orbadly writt
 * Create a 'shapes' package which will define various SVG shapes
   (moon, sun, triangle, etc) as views
 
-* Complete the bootstrap package
-
 * Edit element popup: check that the data was not modified before closing
 
-* More fine-grained snapshot specification. Idea: specify a percentage
-  of the annotation time. Can be implemented with an internal
-  "snapshot-schema" defining "snapshot" annotation types, that would
-  be linked through a "snapshot-relation" relation with the
-  corresponding annotations.
-
-* Make the absolute time specification work for display_text (rather
-  than relative positions) -> ok for gstreamer
-
 * Model related:
 
 ** Model: Implement copy/rename of id for all elements
@@ -604,7 +452,6 @@ the current package's pwd first as default.
 http://www.rexx.com/~dkuhlman/generateDS.html (XML-Schema) Or SOAPy
 
 * Assistants:
-  - shot detection
   - voice recognition
   - relation creation (based on criteria like "shot in sequence" -> isPartOf)
 
@@ -2776,6 +2623,25 @@ http://www.onlamp.com/pub/a/onlamp/2005/04/28/kupu.html
 
 * Empty imagecache option
 
+* Remove embedded ElementTree now that python2.5 is required
+
+* Timestamprepresentation popup: save as...
+
+* Save screenshot: use a secondary, full resolution snapshotter
+
+* integrate pyxdg RecentFiles (use gtk.RecentFiles), pyxdg.Mime
+
+* fullscreen: optionally display information over the video (status, position)
+
+* option to stop second player synchronisation then use current position as time offset
+
+* Make the timeline inspector editable (thus sticky display)
+
+* iMovie0.8-like movie exploration (skim through the paused movie through DND in the thumbnail)
+
+* factorize transcription.update_modified.update and timeline.quick_edit.get_parsed_content, and use it in editable table.
+
+* views.table: make content editable
 
 # Local Variables:
 # auto-fill-inhibit-regexp: ".*"
diff --git a/doc/advene.1 b/doc/advene.1
index e6075a0..fe2b4b0 100644
--- a/doc/advene.1
+++ b/doc/advene.1
@@ -2,7 +2,7 @@
 .\" First parameter, NAME, should be all caps
 .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
 .\" other parameters are allowed: see man(7), man(1)
-.TH ADVENE 1 "March  7, 2004"
+.TH ADVENE 1 "December 20, 2011"
 .\" Please adjust this date whenever revising the manpage.
 .\"
 .\" Some roff macros, for reference:
@@ -16,19 +16,29 @@
 .\" .sp <n>    insert n+1 empty lines
 .\" for manpage-specific macros, see man(7)
 .SH NAME
-advene \- Annotate DVds, Exchange on the NEt
+advene \- Annotate Digital Videos, Exchange on the NEt
 .SH SYNOPSIS
 .B advene
 .SH DESCRIPTION
-\fBadvene\fP is a program that permits to annotate a DVD and visualize
-the annotations.
+The cross-platform \fBadvene\fP  application allows users to easily
+create comments and analyses of video comments, through the
+definition of time-aligned annotations and their mobilisation
+into automatically-generated or user-written comment views (HTML
+documents). Annotations can also be used to modify the rendition
+of the audiovisual document, thus providing virtual montage,
+captioning, navigation... capabilities. Users can exchange their
+comments/analyses in the form of Advene packages, independently from
+the video itself.
 
-No documentation exists for the moment. You can try to launch the
-program and try to make sense of the menu items. Use the \-\-help option
-to get a list of command line options.
+Use the \-\-help option to get a list of command line options.
 
 User documentation is available from the website
-http://liris.cnrs.fr/advene/wiki/index.php/Main_Page
+http://www.advene.org/wiki/index.php/Main_Page
+
+.SH ETYMOLOGY
+\fBadvene\fP is an ancient english word, meaning "to be added to
+something or become a part of it, though not essential" (Webster
+1913). Good match for an annotation application.
 
 .SH AUTHOR
 This manual page was written by Olivier Aubert <olivier.aubert at liris.cnrs.fr>,
diff --git a/doc/controller-API.txt b/doc/controller-API.txt
new file mode 100644
index 0000000..03fccd9
--- /dev/null
+++ b/doc/controller-API.txt
@@ -0,0 +1,94 @@
+= Controller API =
+
+Extracted through
+perl -lne 'print $1 if /self.controller\.(.+?)[([. ]/' **/*py | sort -u
+
+* Attributes
+aliases
+cached_duration
+current_stbv
+event_handler
+generic_features
+gui
+package
+packages
+player
+playerfactory
+server
+soundplayer
+tracers
+undomanager
+
+* Helper functions
+build_context
+create_position
+evaluate_query
+get_default_url
+get_defined_tags
+get_element_color
+get_stbv_list
+get_timestamp
+get_title
+get_utbv_list
+log
+open_url
+
+* Model manipulation
+create_annotation
+delete_annotation
+delete_element
+duplicate_annotation
+get_default_media
+merge_annotations
+set_default_media
+split_annotation
+transmute_annotation
+
+* View manipulation
+create_static_view
+website_export
+get_export_filters
+apply_export_filter
+
+* Player handling
+move_frame
+move_position
+position_update
+player_delayed_scrub
+restart_player
+restrict_playing
+update_snapshot
+update_status
+
+* Package handling
+activate_package
+activate_stbv
+load_package
+remove_package
+save_package
+save_session
+unregister_package
+
+* Misc
+init
+notify
+queue_action
+queue_registered_action
+register_event
+register_slave_player
+unregister_slave_player
+register_usertime_action
+register_usertime_delayed_action
+register_videotime_action
+reset
+search_string
+update
+
+* Internal
+load_plugins
+on_exit
+register_gui
+locate_mediafile
+get_urlbase
+select_player
+update_package_title
diff --git a/doc/copyright b/doc/copyright
index adfc90b..6e98389 100644
--- a/doc/copyright
+++ b/doc/copyright
@@ -1,9 +1,9 @@
-This is the Debian package of Advene, a DVD annotation application.
+This is the Debian package of Advene, a Digital Video annotation application.
 The latest version can be found at
 
-http://liris.cnrs.fr/advene/
+http://www.advene.org/
 
-Copyright (C) 2003 Olivier Aubert, Pierre-Antoine Champin, Yannick Prie
+Copyright (C) 2003-2011 Olivier Aubert, Pierre-Antoine Champin, Yannick Prie
 
 This program is free software; you may redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/doc/developper.txt b/doc/developper.txt
index f0c4ae1..faf09fb 100644
--- a/doc/developper.txt
+++ b/doc/developper.txt
@@ -9,8 +9,10 @@ application, and can be reused in other applications.
 
 The main configuration options of the applications are located in
 ``advene.core.config``. The module, upon load, defines a
-``advene.core.config.data`` instance which holds configuration values and is a
-singleton shared by all other modules importing ``advene.core.config``. A common idiom if then to import it through ``import advene.core.config as config`` and to access ``config.data``.
+``advene.core.config.data`` instance which holds configuration values
+and is a singleton shared by all other modules importing
+``advene.core.config``.  A common idiom is to import it through
+``import advene.core.config as config`` and to access ``config.data``.
 
 The Advene application is articulated around the
 ``advene.core.controller`` class. This class holds a reference to 
@@ -22,7 +24,8 @@ The Advene application is articulated around the
 - the GUI (``controller.gui``, may be None if we are only running the webserver)
 
 It also maintains important state information such as
-``controller.active_annotations``
+``controller.active_annotations``, constantly updated while the player
+is running.
 
 The controller should centralize all interaction (esp. interaction
 with the player through the ``controller.update_status`` method) in order
@@ -33,9 +36,11 @@ events is defined in ``advene.rules.elements.ECACatalog``.
 
 The update of the information implies that the ``controller.update``
 method is called regularly. This is done by the GUI mainloop for the
-GUI version.
+GUI version. The ``self_loop`` method allows to start a mainloop
+without a GUI.
 
-The GUI starts in ``advene.gui.main``.
+The GUI code is intialized in ``advene.gui.__init__`` and starts in
+``advene.gui.main``.
 
 Localization
 ------------
@@ -52,7 +57,7 @@ Release
 To release a new version, you have to update :
 - ``lib/advene/core/version.py`` -- the version module
 - ``advene.iss`` -- the Windows installer config file
-- ``debian/changelog`` -- the changelog file
+- ``CHANGES.txt`` -- the changelog file
 
 View plugin infrastructure
 --------------------------
@@ -63,22 +68,5 @@ reference to a view (accessible through the ``widget`` attribute or
 property).
 
 A common API is defined for the views in
-``lib/advene/gui/views/viewplugin.py``
-
-Structure of the Advene code
-----------------------------
-
-Advene model
-++++++++++++
-
-- the Advene model is implemented in lib/advene/model. It offers
-  access to the data, supports saving/loading data from xml packages,
-  and deals with TAL/TALES issues.
-
-GUI
-+++
-
-- The GUI uses Glade to design the main interface. After editing the
-  share/advene.glade file, you have to run the script
-  scripts/fix_glade in order to correct references to pixmaps.
-
+``lib/advene/gui/views/viewplugin.py``. Some documentation is
+available in ``adhoc-views.txt``.
diff --git a/doc/mediacontrol.txt b/doc/mediacontrol.txt
index dda088e..0d9615e 100644
--- a/doc/mediacontrol.txt
+++ b/doc/mediacontrol.txt
@@ -16,7 +16,9 @@ method which returns a Player instance.
 
 * Player
 
-It implements the various methods of the MediaControl IDL.
+It implements the various methods of the MediaControl IDL. Note that
+this API is expected to change in future version: it proved useful,
+but is too verbose and uncommon.
 
 It defines the following methods:
 - is_active(): Checks whether the player is active.
diff --git a/doc/mimetypes.txt b/doc/mimetypes.txt
index c9e5030..c663feb 100644
--- a/doc/mimetypes.txt
+++ b/doc/mimetypes.txt
@@ -7,6 +7,15 @@ Advene uses internally mimetypes to identify specific elements.
 
   Parameters and arguments for adhoc views.
 
+* application/x-advene-bookmark
+
+  A bookmark structure. Used to implement drag-n-drop of bookmarks
+  (timestamp + text).
+
+* application/x-advene-timestamp
+
+  Timestamp information. Used to implement drag-n-drop of timestamps.
+
 * application/x-advene-ruleset
 
   Dynamic views (rulesets).
@@ -29,6 +38,10 @@ Advene uses internally mimetypes to identify specific elements.
 
   Simple query language based on ECA conditions.
 
+* application/x-advene-quicksearch
+
+  Serialization of a quicksearch (from the searchbox).
+
 * application/x-advene-zip-package
 
   An Advene Zip Package (cf advene.model.zippackage)
@@ -46,4 +59,9 @@ Advene uses internally mimetypes to identify specific elements.
 * application/x-advene-values
 
   A space-separated list of float values, 
-  usually in the 0.00 - 100.0 range.
+  in the 0.00 - 100.0 range.
+
+* application/x-advene-workspace
+
+  Serialization of the workspace environment (opened adhoc views,
+  window sizes, etc).
diff --git a/doc/plugins.txt b/doc/plugins.txt
index 2bf591d..9984071 100644
--- a/doc/plugins.txt
+++ b/doc/plugins.txt
@@ -18,9 +18,9 @@ For the builtin core features: lib/advene/plugins
 For the builtin GUI features: lib/advene/gui/plugins
 
 For user-defined plugins: 
- $HOME/.advene/plugins on linux
- %USERPROFILE%/advene/plugins on windows
- $HOME/Library/Preferences/Advene/plugins on MacOSX
+* $HOME/.advene/plugins on linux
+* %USERPROFILE%/advene/plugins on windows
+* $HOME/Library/Preferences/Advene/plugins on MacOSX
 
 Implementation
 ==============
diff --git a/doc/win32.txt b/doc/win32.txt
deleted file mode 100644
index 2570edc..0000000
--- a/doc/win32.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-* Running from sources
-
-If you want to run Advene from sources on win32, you will need to
-install some additional packages:
-
-    * Gtk/win32: gtk-dev-2.10.11-win32-1.exe [ from http://gladewin32.sourceforge.net/ ]
-
-    * Python v. 2.4: [ From http://python.org/ ]
-
-    * PyGtk for python2.4: pygtk-2.10.6-1.win32-py2.4.exe [ From http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.10/ ]
-
-    * PyXML: PyXML-0.8.4.win32-py2.4.exe [ From http://pyxml.sourceforge.net/ ]
-
-    * Pygobject: pygobject-2.12.3-1.win32-py2.4.exe [ From http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.12/ ]
-
-    * Pycairo: pycairo-1.2.6-1.win32-py2.4.exe [ From http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.2/ ]
-
-And eventually the application sources, downloaded from
-http://liris.cnrs.fr/advene/download/index_en.html or from the
-subversion repository svn://liris.cnrs.fr/dev/advene-project/trunk
-
-The bin/advene python scripts tries to autodetect wether it is running
-from a standard location (c:\Program Files\Advene on windows) or from
-a development tree, and setups the right paths in the latter case.
-
-To try the Advene interface without any video player, you can invoke
-it with the -pdummy option, that selects a dummy video player.
-
-* Webserver reactivity
-
-The webserver reactivity problem is due to the interaction of the Gtk
-GUI with threads in python. To alleviate this problem, we try to
-mingle with an internal parameter of the python interpreter. You can
-try to tweak the values of:
-config.data.play_interval
-and
-config.data.noplay_interval
-from the python evaluator, to find values that fit your computer. The
-default value is 100. With a lower value, it seems to work better.
-
diff --git a/examples/Nosferatu_unstable.azp b/examples/Nosferatu_unstable.azp
index d89c466..c2afd8b 100644
Binary files a/examples/Nosferatu_unstable.azp and b/examples/Nosferatu_unstable.azp differ
diff --git a/examples/Nosferatu_v11.azp b/examples/Nosferatu_v12.azp
similarity index 54%
rename from examples/Nosferatu_v11.azp
rename to examples/Nosferatu_v12.azp
index f09bd95..c2afd8b 100644
Binary files a/examples/Nosferatu_v11.azp and b/examples/Nosferatu_v12.azp differ
diff --git a/lib/advene/core/config.py b/lib/advene/core/config.py
index 8e45cdb..c3ca43a 100644
--- a/lib/advene/core/config.py
+++ b/lib/advene/core/config.py
@@ -37,6 +37,14 @@ import mimetypes
 import operator
 import time
 
+APP='advene'
+
+def init_gettext():
+    import gettext
+    gettext.bindtextdomain(APP, data.path['locale'])
+    gettext.textdomain(APP)
+    gettext.install(APP, localedir=data.path['locale'], unicode=True)
+
 def find_in_path(name):
     """Return the fullpath of the filename name if found in $PATH
 
@@ -92,13 +100,13 @@ class Config(object):
         self.debug=False
 
         self.startup_time=time.time()
-        
+
         self.config_file=''
         self.parse_options()
 
         if os.sys.platform in ( 'win32', 'darwin' ):
             self.os=os.sys.platform
-        elif 'linux' in os.sys.platform:
+        elif 'linux2' in os.sys.platform:
             self.os='linux'
         else:
             print "Warning: undefined platform: ", os.sys.platform
@@ -398,6 +406,7 @@ class Config(object):
             '.avi',
             '.dv',
             '.flv',
+            '.m4v',
             '.mjpg', '.mjpg',
             '.mkv',
             '.mov',
@@ -543,7 +552,7 @@ class Config(object):
         h=self.preferences['history']
         if len(h) > self.preferences['history-size-limit']:
             self.preferences['history']=h[-self.preferences['history-size-limit']:]
-        
+
         if self.os == 'darwin':
             # Force display-caption disabling on darwin.
             self.preferences['display-caption']=False
diff --git a/lib/advene/core/controller.py b/lib/advene/core/controller.py
index 3986981..27c4f5d 100755
--- a/lib/advene/core/controller.py
+++ b/lib/advene/core/controller.py
@@ -71,7 +71,7 @@ import advene.model.tal.context
 
 import advene.util.helper as helper
 import advene.util.importer
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 from advene.util.audio import SoundPlayer
 
 from simpletal import simpleTAL, simpleTALES
@@ -236,7 +236,7 @@ class AdveneController(object):
         # view, tracer...). Here is a placeholder for keeping their
         # reference, indexed by view name. The value is a class.
         self.generic_features = {}
-        
+
         # Event handler initialization
         self.event_handler = advene.rules.ecaengine.ECAEngine (controller=self)
         self.modifying_events = self.event_handler.catalog.modifying_events
@@ -432,7 +432,7 @@ class AdveneController(object):
         if name in self.generic_features:
             self.log(_("Warning: redefining an existing feature %s") % name)
         self.generic_features[name] = feature_class
-        
+
     def register_slave_player(self, p):
         """Register a slave video player.
         """
@@ -561,10 +561,10 @@ class AdveneController(object):
     def defined_quicksearch_sources(self):
         """Return a list of TitledElements
         """
-        return [ helper.TitledElement(expression, label) 
+        return [ helper.TitledElement(expression, label)
                  for (label, expression) in [ (_("All annotations"), "all_annotations") ] + [
                 (_("Annotations of type %s") % self.get_title(at),
-                 'here/annotationTypes/%s/annotations' % at.id) for at in self.package.annotationTypes ] + [ (_("Views"), 'here/views'), (_("Tags"), 'tags'), (_("Ids"), 'ids') ] 
+                 'here/annotationTypes/%s/annotations' % at.id) for at in self.package.annotationTypes ] + [ (_("Views"), 'here/views'), (_("Tags"), 'tags'), (_("Ids"), 'ids') ]
                  ]
 
     def search_string(self, searched=None, sources=None, case_sensitive=False):
@@ -597,7 +597,7 @@ class AdveneController(object):
 
         if sources is None:
             sources=[ "all_annotations" ]
-        
+
         # Replace standard \n/\t escape, because \ are parsed by shlex
         searched=searched.replace('\\n', '%n').replace('\\t', '%t')
         try:
@@ -782,16 +782,6 @@ class AdveneController(object):
         self.event_handler.internal_rule (event="PackageLoad",
                                           method=self.manage_package_load)
 
-        if config.data.webserver['mode']:
-            try:
-                self.server = AdveneWebServer(controller=self, port=config.data.webserver['port'])
-                serverthread = threading.Thread (target=self.server.start)
-                serverthread.setName("Advene webserver")
-                serverthread.start ()
-            except socket.error:
-                if config.data.os != 'win32':
-                    self.busy_port_info()
-                self.log(_("Deactivating web server"))
         media=None
         # Arguments handling
         for uri in args:
@@ -844,6 +834,17 @@ class AdveneController(object):
 
         self.player.check_player()
 
+        if config.data.webserver['mode']:
+            try:
+                self.server = AdveneWebServer(controller=self, port=config.data.webserver['port'])
+                serverthread = threading.Thread (target=self.server.start)
+                serverthread.setName("Advene webserver")
+                serverthread.start ()
+            except socket.error:
+                if config.data.os != 'win32':
+                    self.busy_port_info()
+                self.log(_("Deactivating web server"))
+                self.server = None
         return True
 
     def create_annotation(self, position, type, duration=None, content=None):
@@ -970,7 +971,7 @@ class AdveneController(object):
         if snap is not None and snap.height != 0:
             self.package.imagecache[snap.date] = helper.snapshot2png(snap)
             self.notify('SnapshotUpdate', position=snap.date)
-        
+
     def update_snapshot (self, position=None):
         """Event handler used to take a snapshot for the given position.
 
@@ -1009,6 +1010,11 @@ class AdveneController(object):
 
         Cf http://cweiske.de/howto/launch/ for details.
         """
+        if (url.startswith(self.get_urlbase()) and
+                           (self.server is None or not self.server.is_running())):
+            # Cannot open a local URL: the webserver is not active
+            self.log(_("Cannot open Advene URL %s: the webserver is not running.") % url)
+            return True
         if self.gui and self.gui.open_url_embedded(url):
             return True
         if config.data.os == 'win32' or config.data.os == 'darwin':
@@ -1090,6 +1096,14 @@ class AdveneController(object):
             url=u"%s/view/%s" % (url, defaultview)
         return url
 
+    def get_urlbase(self):
+        """Return the URL base.
+        """
+        if self.server is not None:
+            return self.server.urlbase
+        else:
+            return "http:///"
+
     def get_title(self, element, representation=None, max_size=None):
         """Return the title for the given element.
         """
@@ -1398,7 +1412,7 @@ class AdveneController(object):
                                                       an.type.mimetype))
                 an.content.data = annotation.content.data
         elif an.type.mimetype == 'image/svg+xml':
-            # Use a template for text->SVG conversion. 
+            # Use a template for text->SVG conversion.
             # FIXME: we should be able to propose a variety of templates, passed as parameter from the GUI
             an.content.data = """<svg:svg height="320pt" preserveAspectRatio="xMinYMin meet" version="1" viewBox="0 0 400 320" width="400pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg">
   <text fill="green" name="Content" stroke="green" style="stroke-width:1; font-family: sans-serif; font-size: 22" x="8" y="290">%s</text>
@@ -1934,7 +1948,7 @@ class AdveneController(object):
                 self.log(_("Cannot handle master attribute, the package %s is not imported.") % master_uri)
             else:
                 self.log(_("Checking master package %s for not yet imported elements.") % master_uri)
-                self.handle_auto_import(self.package, i[0].package)
+                self.handle_auto_import(p, i[0].package)
 
         return True
 
@@ -2142,46 +2156,6 @@ class AdveneController(object):
                                                              origin=self.player.AbsolutePosition),
                                 notify=notify)
 
-    def generate_sorted_lists (self, position):
-        """Return two sorted lists valid for a given position.
-
-        (i.e. all annotations beginning or ending after the
-        position). The lists are sorted according to the begin and end
-        position respectively.
-
-        The elements of the list are (annotation, begin, end).
-
-        The update_display method only has to check the first element
-        of each list. If there is a match, it should trigger the
-        events and pop the element.
-
-        If there is a seek operation, we should regenerate the lists.
-
-        @param position: the current position
-        @type position: int
-        @return: a tuple of two lists containing triplets
-        @rtype: tuple
-        """
-        l = [ (a, a.fragment.begin, a.fragment.end)
-              for a in self.package.annotations
-              if a.fragment.begin >= position or a.fragment.end >= position ]
-        future_begins = list(l)
-        future_ends = l
-        future_begins.sort(key=operator.itemgetter(1))
-        future_ends.sort(key=operator.itemgetter(2))
-
-        #print "Position: %s" % helper.format_time(position)
-        #print "Begins: %s\nEnds: %s" % ([ a[0].id for a in future_begins[:4] ],
-        #                                [ a[0].id for a in future_ends[:4] ])
-        return future_begins, future_ends
-
-    def reset_annotation_lists (self):
-        """Reset the future annotations lists."""
-        #print "reset annotation lists"
-        self.future_begins = None
-        self.future_ends = None
-        self.active_annotations = []
-
     def update_status (self, status=None, position=None, notify=True):
         """Update the player status.
 
@@ -2193,10 +2167,13 @@ class AdveneController(object):
         @param position: an optional position
         @type position: Position
         """
+        if isinstance(position, Annotation):
+            position = position.fragment.begin
         position_before=self.player.current_position_value
         #print "update status:", status, position
-        if status == 'set' or status == 'start' or status == 'stop':
-            self.reset_annotation_lists()
+        if (status == 'set' or status == 'start' or status == 'stop'):
+            if position != position_before:
+                self.reset_annotation_lists()
             if notify:
                 # Bit of a hack... In a loop context, setting the
                 # position is done with notify=False, so we do not
@@ -2292,6 +2269,58 @@ class AdveneController(object):
 
         return True
 
+    def generate_sorted_lists (self, position):
+        """Return two sorted lists and a list of active annotations valid for a given position.
+
+        (i.e. all annotations beginning or ending after the
+        position). The lists are sorted according to the begin and end
+        position respectively.
+
+        The elements of the begin/end lists are (annotation, begin,
+        end). The elements of active_annotations are annotations.
+
+        The update_display method only has to check the first element
+        of each list. If there is a match, it should trigger the
+        events and pop the element.
+
+        If there is a seek operation, we should regenerate the lists.
+
+        @param position: the current position
+        @type position: int
+        @return: a tuple of three lists containing triplets or simple annotations
+        @rtype: tuple
+        """
+        # Substract 20ms to the current position, so that in case the
+        # generate_sorted_lists is triggered due to selecting an
+        # annotation, the annotation is put in future_begins and its
+        # AnnotatioBegin gets correctly notified.
+        position -= 20
+
+        future_begins = []
+        future_ends = []
+        active = []
+
+        for a in self.package.annotations:
+            if a.fragment.begin >= position:
+                future_begins.append( (a, a.fragment.begin, a.fragment.end) )
+                future_ends.append( (a, a.fragment.begin, a.fragment.end) )
+            elif a.fragment.end >= position:
+                future_ends.append( (a, a.fragment.begin, a.fragment.end) )
+                active.append(a)
+        future_begins.sort(key=operator.itemgetter(1))
+        future_ends.sort(key=operator.itemgetter(2))
+
+        #print "Position: %s" % helper.format_time(position)
+        #print "Begins: %s\nEnds: %s" % ([ a[0].id for a in future_begins[:4] ],
+        #                                [ a[0].id for a in future_ends[:4] ])
+        return future_begins, future_ends, active
+
+    def reset_annotation_lists (self):
+        """Reset the future annotations lists."""
+        self.future_begins = None
+        self.future_ends = None
+        self.active_annotations = []
+
     def update (self):
         """Update the information.
 
@@ -2305,15 +2334,16 @@ class AdveneController(object):
         """
         # Process the event queue
         self.process_queue()
-        
+
         p = self.player
 
         pos=self.position_update ()
-        
-        if pos < self.last_position:
-            # We did a seek compared to the last time, so we
-            # invalidate the future_begins and future_ends lists
-            # as well as the active_annotations
+
+        if pos < self.last_position or pos > self.last_position + 1000:
+            # We did a seek compared to the last time (backward, or
+            # more than 1s forward), so we invalidate the
+            # future_begins and future_ends lists as well as the
+            # active_annotations
             self.reset_annotation_lists()
 
         self.last_position = pos
@@ -2340,14 +2370,17 @@ class AdveneController(object):
                     t = 0
 
         if self.future_begins is None or self.future_ends is None:
-            self.future_begins, self.future_ends = self.generate_sorted_lists (pos)
+            self.future_begins, self.future_ends, self.active_annotations = self.generate_sorted_lists(pos)
+            #print "New lists", [a.id for a in self.active_annotations], [t[0].id for t in self.future_begins ]
 
-        if self.future_begins and p.status == p.PlayingStatus:
+        if self.future_begins and (p.status == p.PlayingStatus or p.status == p.PauseStatus):
             a, b, e = self.future_begins[0]
+            #print "Future begin", a.id, b, pos
             while b <= pos:
                 # Ignore if we were after the annotation end
                 self.future_begins.pop(0)
                 if e > pos:
+                    #print "AnnotationBegin", a.id, e, pos
                     self.notify ("AnnotationBegin",
                                  annotation=a,
                                  immediate=True)
@@ -2357,7 +2390,7 @@ class AdveneController(object):
                 else:
                     break
 
-        if self.future_ends and p.status == p.PlayingStatus:
+        if self.future_ends and (p.status == p.PlayingStatus or p.status == p.PauseStatus):
             a, b, e = self.future_ends[0]
             while e <= pos:
                 #print "Comparing %d < %d for %s" % (e, pos, a.content.data)
@@ -2435,7 +2468,7 @@ class AdveneController(object):
 	<strong tal:content="a/content/data">Nom</strong>
 </a><br />
 <span>(<span tal:content="a/fragment/formatted/begin">Debut</span> - <span tal:content="a/fragment/formatted/end">Fin</span>)</span>
-<br /> 
+<br />
 </div></span>""" % { 'id': elements[0].id,
                      'title': at_title,
                      }
diff --git a/lib/advene/core/imagecache.py b/lib/advene/core/imagecache.py
index 5591525..70b3826 100644
--- a/lib/advene/core/imagecache.py
+++ b/lib/advene/core/imagecache.py
@@ -54,7 +54,7 @@ class TypedString(str):
     """String with a mimetype and a timestamp attribute.
     """
     def __new__(cls, value=""):
-        s=str.__new__(cls, value) 
+        s=str.__new__(cls, value)
         s.contenttype='text/plain'
         s.timestamp=-1
         return s
diff --git a/lib/advene/core/plugin.py b/lib/advene/core/plugin.py
index 36093e3..3571f43 100755
--- a/lib/advene/core/plugin.py
+++ b/lib/advene/core/plugin.py
@@ -60,6 +60,9 @@ class PluginCollection(list):
                 except (PluginException, ImportError, OSError):
                     # Silently ignore non-plugin files
                     pass
+                except (SyntaxError, AttributeError), e:
+                    print "!!!! Cannot load %s plugin" % fname
+                    print unicode(e)
 
     def standard_plugins(self, d):
         for name in os.listdir(d):
diff --git a/lib/advene/core/version.py b/lib/advene/core/version.py
index 580057b..b1845b1 100644
--- a/lib/advene/core/version.py
+++ b/lib/advene/core/version.py
@@ -19,7 +19,7 @@
 """Versioning information.
 """
 
-version='0.46'
-date='20110405'
-svn='7270'
+version='1.0'
+date='20111220'
+svn='7523'
 major,minor=[ long(s) for s in version.split('.') ]
diff --git a/lib/advene/core/webcherry.py b/lib/advene/core/webcherry.py
index 9d027d6..f70226c 100644
--- a/lib/advene/core/webcherry.py
+++ b/lib/advene/core/webcherry.py
@@ -459,12 +459,12 @@ class Media(Common):
         """Return the overlayed snapshot for the given annotation.
 
         Snapshot syntax: /media/overlay/package_alias/id
-        
+
         The expression can be followed by a TALES expression, which is
         then used to specify the element to display.
-        For instance, 
+        For instance,
         /media/overlay/advene/a25/fragment/begin/formatted
-        or 
+        or
         /media/overlay/advene/a25/content/parsed/name
         """
         res=[]
@@ -2191,10 +2191,19 @@ class AdveneWebServer:
     def start(self):
         """Start the webserver.
         """
-        self.controller.queue_action(cherrypy.engine.start)
+        def protected_start():
+            try:
+                cherrypy.engine.start()
+            except Exception, e:
+                self.controller.log(_("Cannot start HTTP server: %s") % unicode(e))
+        self.controller.queue_action(protected_start)
         return True
 
     def stop(self):
         """Stop the webserver.
         """
         cherrypy.engine.exit()
+
+    def is_running(self):
+        return cherrypy.engine.state == cherrypy.engine.states.STARTED
+
diff --git a/lib/advene/gui/edit/elements.py b/lib/advene/gui/edit/elements.py
index d72a7fd..7eb7d2f 100644
--- a/lib/advene/gui/edit/elements.py
+++ b/lib/advene/gui/edit/elements.py
@@ -1308,7 +1308,7 @@ class EditContentForm(EditForm):
             self.mimetype=dialog.list_selector_widget(members=l,
                                                       preselect=mt,
                                                       entry=self.mimetypeeditable)
-            
+
             hbox.pack_start(self.mimetype)
 
             vbox.pack_start(hbox, expand=False)
@@ -1519,30 +1519,41 @@ class TextContentHandler (ContentHandler):
             textview.set_editable (self.editable)
             textview.set_wrap_mode (gtk.WRAP_CHAR)
             textview.set_auto_indent(True)
+            b.begin_not_undoable_action()
             b.set_text (self.element.data)
+            b.end_not_undoable_action()
             textview.connect('key-press-event', self.key_pressed_cb)
 
-            def undo(b):
-                b=textview.get_buffer()
-                if b.can_undo():
-                    b.undo()
-                return True
-
-            def redo(b):
-                b=textview.get_buffer()
-                if b.can_redo():
-                    b.redo()
-                return True
-
             if not compact:
-                b=gtk.ToolButton(gtk.STOCK_UNDO)
-                b.connect('clicked', undo)
-                tb.insert(b, -1)
-
-                b=gtk.ToolButton(gtk.STOCK_REDO)
-                b.connect('clicked', redo)
-                tb.insert(b, -1)
-
+                b_undo = gtk.ToolButton(gtk.STOCK_UNDO)
+                tb.insert(b_undo, -1)
+
+                b_redo = gtk.ToolButton(gtk.STOCK_REDO)
+                tb.insert(b_redo, -1)
+
+                def undo_cb(buf):
+                    b_undo.set_sensitive(buf.can_undo())
+                    b_redo.set_sensitive(buf.can_redo())
+                    return True
+
+                def undo(b):
+                    b=textview.get_buffer()
+                    if b.can_undo():
+                        b.undo()
+                    undo_cb(b)
+                    return True
+
+                def redo(b):
+                    b=textview.get_buffer()
+                    if b.can_redo():
+                        b.redo()
+                    undo_cb(b)
+                    return True
+
+                textview.get_buffer().connect('changed', undo_cb)
+                b_undo.connect('clicked', undo)
+                b_redo.connect('clicked', redo)
+                undo_cb(textview.get_buffer())
         else:
             textview = gtk.TextView ()
             textview.set_editable (self.editable)
@@ -1786,7 +1797,7 @@ class EditFragmentForm(EditForm):
 
 class EditGenericForm(EditForm):
     def __init__(self, title=None, getter=None, setter=None,
-                 controller=None, editable=True, tooltip=None, type=None, elements=None, 
+                 controller=None, editable=True, tooltip=None, type=None, elements=None,
                  focus=False, sizegroup=None):
         self.title=title
         self.getter=getter
@@ -1921,7 +1932,7 @@ class EditGenericForm(EditForm):
 class EditMetaForm(EditGenericForm):
     def __init__(self, title=None, element=None, name=None,
                  namespaceid='advenetool', controller=None,
-                 editable=True, tooltip=None, type=None, 
+                 editable=True, tooltip=None, type=None,
                  elements=None,
                  focus=False, sizegroup=None):
         getter=self.metadata_get_method(element, name, namespaceid)
@@ -2359,7 +2370,7 @@ class EditRelationsForm(EditForm):
                 other=r.members[0]
             hb=gtk.HBox()
 
-            b=RelationRepresentation(r, controller=self.controller, direction=direction)            
+            b=RelationRepresentation(r, controller=self.controller, direction=direction)
             b.set_alignment(0, 0)
             col1.add_widget(b)
             hb.pack_start(b, expand=False)
@@ -2368,7 +2379,7 @@ class EditRelationsForm(EditForm):
             a.set_alignment(0, 0)
             col2.add_widget(a)
             hb.pack_start(a, expand=False)
-            
+
             self.view.pack_start(hb, expand=False)
         self.view.show_all()
         return
diff --git a/lib/advene/gui/edit/frameselector.py b/lib/advene/gui/edit/frameselector.py
index d48208a..ef408b3 100644
--- a/lib/advene/gui/edit/frameselector.py
+++ b/lib/advene/gui/edit/frameselector.py
@@ -28,7 +28,7 @@ from gettext import gettext as _
 
 class FrameSelector(object):
     """Frame selector interface.
-    
+
     Given a timestamp, it displays a series of snapshots around
     the timestamp and allows to select the most appropriate
     one.
@@ -56,7 +56,7 @@ class FrameSelector(object):
         # It is initialized in build_widget()
         self.frames = []
         self.widget = self.build_widget()
-        
+
     def set_timestamp(self, timestamp):
         """Set the reference timestamp.
 
@@ -66,10 +66,10 @@ class FrameSelector(object):
         self.timestamp = timestamp
         self.selected_value = timestamp
         self.update_timestamp(timestamp)
-        
+
     def update_timestamp(self, timestamp, focus_index=None):
         """Set the center timestamp.
-        
+
         If focus_index is not specified, the center timestamp will get
         the focus.
 
@@ -86,7 +86,7 @@ class FrameSelector(object):
             t = 0
         else:
             index_offset = 0
-        
+
         matching_index = -1
         for (i, f) in enumerate(self.frames):
             f.value = t
@@ -204,7 +204,7 @@ class FrameSelector(object):
             timestamp = self.selected_value
         d.destroy()
         return timestamp
-    
+
     def select_time(self, button=None):
         """General callback.
 
@@ -215,7 +215,7 @@ class FrameSelector(object):
         if self.callback is not None:
             self.callback(self.selected_value)
         return True
-        
+
     def build_widget(self):
         vb=gtk.VBox()
 
@@ -265,7 +265,7 @@ class FrameSelector(object):
             if self.border_mode in ('left', 'right'):
                 r.connect('enter-notify-event', enter_bookmark)
                 r.connect('leave-notify-event', leave_bookmark)
-            
+
             hb.pack_start(border, expand=False)
             hb.pack_start(r, expand=False)
 
diff --git a/lib/advene/gui/edit/htmleditor.py b/lib/advene/gui/edit/htmleditor.py
index 0695ef8..0d4a65d 100755
--- a/lib/advene/gui/edit/htmleditor.py
+++ b/lib/advene/gui/edit/htmleditor.py
@@ -420,7 +420,7 @@ class HTMLEditor(textview_class, HTMLParser):
             pixbuf=None
 
         if pixbuf is None:
-            pixbuf=gtk.gdk.pixbuf_new_from_xpm_data(broken_xpm)        
+            pixbuf=gtk.gdk.pixbuf_new_from_xpm_data(broken_xpm)
         pixbuf._tag=tag
         pixbuf._attr=attr
         self.insert_pixbuf(pixbuf)
diff --git a/lib/advene/gui/edit/importer.py b/lib/advene/gui/edit/importer.py
index bd1a37a..59bd922 100644
--- a/lib/advene/gui/edit/importer.py
+++ b/lib/advene/gui/edit/importer.py
@@ -45,7 +45,7 @@ class FileImporter(AdhocView):
     view_name = _("Importer")
     view_id = 'importerview'
 
-    def __init__(self, controller=None, filename=None, message=None, parameters=None):
+    def __init__(self, controller=None, filename=None, message=None, display_unlikely=True, parameters=None):
         super(FileImporter, self).__init__(controller=controller)
         self.controller=controller
         self.parameters=parameters
@@ -54,33 +54,47 @@ class FileImporter(AdhocView):
         self.close_on_package_load = False
         self.contextual_actions = ()
         self.options={
+            'display-unlikely': display_unlikely,
             }
 
         # Flag used to cancel import
         self.should_continue = True
 
         # Assume that the view is initialized in the current
-        # thread. Store it id, so that we detect if calls
+        # thread. Store its id, so that we detect if calls
         # (esp. progress_callback) are made from another thread and
         # act accordingly.
         self.main_thread_id = thread.get_ident()
         self.importer = None
+        self.filename = filename
 
         self.widget=self.build_widget()
 
-        def initial_focus(w, event):
-            self.filename_entry.grab_focus()
-            # Returning False does not seem enough to remove signal handler.
-            self.widget.disconnect(self.sig)
-            del self.sig
-            return False
-        self.sig = self.widget.connect('expose-event', initial_focus)
-
         if filename:
-            self.filename_entry.set_text(filename)
+            self.fb.set_current_name(filename)
+            self.update_importers(filename=filename)
 
-    def update_importers(self):
-        n=unicode(self.filename_entry.get_text())
+    def update_importers(self, filename=None):
+        if filename is not None:
+            n = filename
+        else:
+            n=unicode(self.filename or self.fb.get_uri() or self.fb.get_filename())
+        if n.startswith('file://'):
+            n = n.replace('file://', '')
+        if not self.fb.get_filename():
+            # It was not a filename, hence the Button did not get
+            # updated. Update it explicitly.
+            b = self.fb.get_children()[0]
+            if isinstance(b, gtk.Button):
+                # Normally, the gtk.Button contains a gtk.HBox, which
+                # contains some widgets among which a gtk.Label
+                l = [ c 
+                      for w in b.get_children() 
+                      for c in w.get_children() 
+                      if isinstance(c, gtk.Label) ]
+                if l:
+                    # Found the label
+                    l[0].set_text(n)
         model=self.importers.get_model()
         model.clear()
         if n.lower().endswith('.azp'):
@@ -97,7 +111,7 @@ class FileImporter(AdhocView):
                 model.append( ( _("Advene package importer"), dummy_advene_importer, None) )
             if valid:
                 self.importers.set_active(0)
-            if invalid:
+            if invalid and self.options['display-unlikely']:
                 model.append( ( "--- " + _("Not likely") + " ---", None, None) )
                 for i in invalid:
                     model.append( (i.name, i, None) )
@@ -124,7 +138,7 @@ class FileImporter(AdhocView):
                 'statistics': self.importer.statistics_formatted() }
         dialog.message_dialog(msg, modal=False)
         self.log(msg)
-        
+
     def convert_file(self, b, *p):
         stop_label = _("Stop")
         if b.get_label() == stop_label:
@@ -135,11 +149,12 @@ class FileImporter(AdhocView):
 
         b.set_label(stop_label)
         self.importers.set_sensitive(False)
-        self.filename_entry.set_sensitive(False)
+        self.fb.set_sensitive(False)
         ic = self.importers.get_current_element()
-        fname = unicode(self.filename_entry.get_text())
-        self.widget.get_toplevel().set_title(_('Importing %s') % os.path.basename(fname))
+        fname = unicode(self.filename or self.fb.get_uri() or self.fb.get_filename())
 
+        if fname.startswith('file://'):
+            fname = fname.replace('file://', '')
         if ic == dummy_advene_importer:
             # Invoke the package merge functionality.
             try:
@@ -189,9 +204,9 @@ class FileImporter(AdhocView):
             gtk.gdk.threads_enter()
             try:
                 func(*args, **kw)
-                return False
             finally:
                 gtk.gdk.threads_leave()
+            return False
         gobject.idle_add(idle_func)
 
     def progress_callback(self, value=None, label=None):
@@ -205,8 +220,14 @@ class FileImporter(AdhocView):
             self.progressbar.set_fraction(value)
         if label is not None:
             self.progressbar.set_text(label)
-        while gtk.events_pending():
-            gtk.main_iteration()
+        # We could do a "while gtk.events_pending()" but we want to
+        # avoid process lock because of too many pending events
+        # processing.
+        for i in xrange(8):
+            if gtk.events_pending():
+                gtk.main_iteration()
+            else:
+                break
         return self.should_continue
 
     def update_options(self, combo):
@@ -226,35 +247,20 @@ class FileImporter(AdhocView):
             self.update_importers()
             return True
 
-        def select_filename(b):
-            if config.data.path['data']:
-                d=config.data.path['data']
-            else:
-                d=None
-            filename=dialog.get_filename(title=_("Choose the file to import"),
-                                                  action=gtk.FILE_CHOOSER_ACTION_OPEN,
-                                                  button=gtk.STOCK_OPEN,
-                                                  default_dir=d,
-                                                  filter='any')
-            if not filename:
-                return True
-            self.filename_entry.set_text(filename)
-            return True
-
         line=gtk.HBox()
         vbox.pack_start(line, expand=False)
 
-        self.filename_entry=gtk.Entry()
-        self.filename_entry.connect('changed', updated_filename)
+        self.fb = gtk.FileChooserButton(_("Choose the file to import"))
+        self.fb.set_local_only(False)
+        self.fb.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+        self.fb.set_current_folder(config.data.path['data'])
+        self.fb.connect('file-set', updated_filename)
 
+        line.pack_start(self.fb)
         if self.message is not None:
             line.pack_start(gtk.Label(self.message))
-        else:
-            line.pack_start(gtk.Label(_("Filename")), expand=False)
-            line.pack_start(self.filename_entry)
-            b=gtk.Button(stock=gtk.STOCK_OPEN)
-            b.connect('clicked', select_filename)
-            line.pack_start(b, expand=False)
+            self.fb.set_no_show_all(True)
+            self.fb.hide()
 
         self.progressbar=gtk.ProgressBar()
         vbox.pack_start(self.progressbar, expand=False)
@@ -270,8 +276,11 @@ class FileImporter(AdhocView):
         exp = gtk.Expander(_("Options"))
         exp.set_expanded(True)
         self.options_frame = gtk.VBox()
-        exp.add(self.options_frame)
-        vbox.pack_start(exp, expand=False)
+        sw = gtk.ScrolledWindow()
+        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        sw.add_with_viewport(self.options_frame)
+        exp.add(sw)
+        vbox.pack_start(exp, expand=True)
 
         bb=gtk.HButtonBox()
 
diff --git a/lib/advene/gui/edit/imports.py b/lib/advene/gui/edit/imports.py
index 761a87b..e420be2 100644
--- a/lib/advene/gui/edit/imports.py
+++ b/lib/advene/gui/edit/imports.py
@@ -414,7 +414,7 @@ class Importer:
 
         if self.controller.gui:
             self.controller.gui.init_window_size(window, 'importeditor')
-            window.set_icon_list(self.controller.gui.get_icon_list())
+            window.set_icon_list(*self.controller.gui.get_icon_list())
 
         self.buttonbox = gtk.HButtonBox()
 
diff --git a/lib/advene/gui/edit/montage.py b/lib/advene/gui/edit/montage.py
index 4fd2e01..2537828 100644
--- a/lib/advene/gui/edit/montage.py
+++ b/lib/advene/gui/edit/montage.py
@@ -104,7 +104,7 @@ class Montage(AdhocView):
 
         self.mainbox=None
         self.widget=self.build_widget()
-        
+
         # Annotation widget currently played
         self.current_widget = None
 
@@ -303,7 +303,7 @@ class Montage(AdhocView):
                                                   title = _("Extracting %s") % self.view_name,
                                                   label = _("Exporting montage %(title)s\nto %%(filename)s") % { 'title': self.view_name })
         return True
-        
+
     def play(self, *p):
         """Play the current montage.
         """
diff --git a/lib/advene/gui/edit/properties.py b/lib/advene/gui/edit/properties.py
index 15dcc33..60b2d2e 100644
--- a/lib/advene/gui/edit/properties.py
+++ b/lib/advene/gui/edit/properties.py
@@ -215,13 +215,13 @@ class EditWidget(gtk.VBox):
             combo.show()
             for e in entries:
                 combo.append_text(e)
-            combo.set_tooltip_text(help)        
+            combo.set_tooltip_text(help)
             self.__add_line(1, align, combo)
         else:
             combo = None
             entry = gtk.Entry()
             entry.show()
-            entry.set_tooltip_text(help)        
+            entry.set_tooltip_text(help)
             self.__add_line(1, align, entry)
 
         if (passwd):
@@ -318,7 +318,7 @@ class EditWidget(gtk.VBox):
         align.add(lbl)
 
         value = self.__get_config(property)
-        
+
         adjustment = gtk.Adjustment(value, low, up, 10 ** -digits, 1, 0)
         spin_button = gtk.SpinButton(adjustment, 1, digits)
         spin_button.set_numeric(True)
@@ -499,7 +499,7 @@ class OptionParserGUI(EditWidget):
         self.options = {}
         super(OptionParserGUI, self).__init__(self.options.__setitem__, self.options.get)
         self.parse_options(parser)
-        
+
     def parse_options(self, parser):
         for o in parser.option_list:
             name = o.get_opt_string().replace('--', '')
@@ -520,7 +520,14 @@ class OptionParserGUI(EditWidget):
                     self.add_spin(name, o.dest, o.help, -sys.maxint, sys.maxint)
                 elif o.type == 'string':
                     self.options[o.dest] = val or ""
-                    self.add_entry(name, o.dest, o.help)
+                    if o.help.endswith('[F]'):
+                        # Filename
+                        self.add_file_selector(name, o.dest, o.help)
+                    elif o.help.endswith('[D]'):
+                        # Directory
+                        self.add_dir_selector(name, o.dest, o.help)
+                    else:
+                        self.add_entry(name, o.dest, o.help)
                 elif o.type == 'float':
                     self.options[o.dest] = val
                     self.add_float_spin(name, o.dest, o.help, -sys.maxint, sys.maxint, 2)
diff --git a/lib/advene/gui/edit/rules.py b/lib/advene/gui/edit/rules.py
index 82bb6a9..4316f40 100755
--- a/lib/advene/gui/edit/rules.py
+++ b/lib/advene/gui/edit/rules.py
@@ -762,7 +762,7 @@ class EditCondition(EditGeneric):
 
         if self.parent is None or isinstance(self.parent, EditRule):
             predefined=[
-                ('annotation/type/id', _('The id of the annotation type') ),
+                ('annotation/type/id', _('The annotation type') ),
                 ('annotation/content/data', _('The annotation content') ),
                 ] + [
                 ('annotation/content/parsed/%s' % p, _("The value of the %s attribute") % p)
@@ -790,7 +790,7 @@ class EditCondition(EditGeneric):
                 ('element/fragment/begin', _('The element begin time') ),
                 ('element/fragment/end', _('The element end time') ),
                 ('element/fragment/duration', _('The element duration') ),
-                ('element/type/id', _('The id of the element type') ),
+                ('element/type/id', _('The element type') ),
                 ('element/incomingRelations', _("The element's incoming relations") ),
                 ('element/outgoingRelations', _("The element's outgoing relations") ),
                 ('here', _('The context')),
@@ -806,10 +806,10 @@ class EditCondition(EditGeneric):
 
         if self.parent is None or isinstance(self.parent, EditRule):
             predef=[ ('string:%s' % at.id,
-                      "id of annotation-type %s" % self.controller.get_title(at) )
+                      _("annotation-type %s") % self.controller.get_title(at) )
                      for at in self.controller.package.annotationTypes
                      ] + [ ('string:%s' % at.id,
-                            "id of relation-type %s" % self.controller.get_title(at) )
+                            _("relation-type %s") % self.controller.get_title(at) )
                            for at in self.controller.package.relationTypes
                            ] + predefined
         elif isinstance(self.parent, EditQuery):
diff --git a/lib/advene/gui/edit/schemaeditor.py b/lib/advene/gui/edit/schemaeditor.py
index d9c9580..4e0e1d7 100644
--- a/lib/advene/gui/edit/schemaeditor.py
+++ b/lib/advene/gui/edit/schemaeditor.py
@@ -1,5 +1,6 @@
 #
-# This file is part of Advene.
+# Advene: Annotate Digital Videos, Exchange on the NEt
+# Copyright (C) 2009 Bertrand Richard <bertrand.richard at liris.cnrs.fr>
 #
 # Advene 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/lib/advene/gui/edit/shapewidget.py b/lib/advene/gui/edit/shapewidget.py
index 153babb..dacd79f 100755
--- a/lib/advene/gui/edit/shapewidget.py
+++ b/lib/advene/gui/edit/shapewidget.py
@@ -46,13 +46,7 @@ import re
 import types
 from math import atan2, cos, sin
 
-try:
-    import advene.util.ElementTree as ET
-except ImportError:
-    try:
-        import elementtree.ElementTree as ET
-    except ImportError:
-        import xml.etree.ElementTree as ET # python 2.5
+import xml.etree.ElementTree as ET
 
 from gettext import gettext as _
 
@@ -1129,7 +1123,7 @@ class ShapeDrawer:
         self.selection = [[None, None], [None, None]]
         self.feedback_shape = None
         self.shape_class = Rectangle
-        
+
         self.resize_cursor = gtk.gdk.Cursor(gtk.gdk.BOTTOM_RIGHT_CORNER)
         self.inside_cursor = gtk.gdk.Cursor(gtk.gdk.HAND2)
 
@@ -1146,9 +1140,9 @@ class ShapeDrawer:
         self.widget.connect('button-press-event', self.button_press_event)
         self.widget.connect('button-release-event', self.button_release_event)
         self.widget.connect('motion-notify-event', self.motion_notify_event)
-        self.widget.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK 
+        self.widget.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK
                                | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.KEY_PRESS_MASK | gtk.gdk.KEY_RELEASE_MASK )
-        
+
         self.background=None
         # FIXME: Hardcoded dimensions are bad.
         self.canvaswidth=320
@@ -1493,7 +1487,7 @@ class ShapeDrawer:
 
     def convert_unit(self, s, dimindex=0):
         """Convert a unit.
-        
+
         dimindex is the index of the unit in the .dimensions tuple: 0
         for width, 1 for height.
         """
@@ -1510,7 +1504,7 @@ class ShapeDrawer:
                 return val
         print 'Unhandled SVG dimension format for ', s
         return 0
-            
+
     def parse_svg(self, et, current_path=''):
         """Parse a SVG representation
 
@@ -1524,7 +1518,7 @@ class ShapeDrawer:
         w=et.attrib.get('width')
         h=et.attrib.get('height')
         if w is not None and h is not None:
-            self.svg_dimensions = (self.convert_unit(w, 0), 
+            self.svg_dimensions = (self.convert_unit(w, 0),
                                    self.convert_unit(h, 0))
         for c in et:
             for clazz in defined_shape_classes:
diff --git a/lib/advene/gui/edit/timeadjustment.py b/lib/advene/gui/edit/timeadjustment.py
index 70d33f6..d6e4f6d 100755
--- a/lib/advene/gui/edit/timeadjustment.py
+++ b/lib/advene/gui/edit/timeadjustment.py
@@ -23,11 +23,10 @@ It depends on a Controller instance to be able to interact with the video player
 
 import advene.core.config as config
 
-import re
 import gtk
 import advene.util.helper as helper
 from advene.gui.widget import TimestampRepresentation
-from advene.gui.util import encode_drop_parameters, decode_drop_parameters, dialog
+from advene.gui.util import encode_drop_parameters, decode_drop_parameters
 from gettext import gettext as _
 
 class TimeAdjustment:
@@ -95,7 +94,10 @@ class TimeAdjustment:
             al.add(i)
             b.add(al)
 
-            b.connect('clicked', self.update_value_cb, incr_value)
+            def increment_value_cb(widget, increment):
+                self.set_value(self.value + increment)
+                return True
+            b.connect('clicked', increment_value_cb, incr_value)
             if incr_value < 0:
                 tip=_("Decrement value by %.2f s") % (incr_value / 1000.0)
             else:
@@ -120,7 +122,7 @@ class TimeAdjustment:
             width=50
         else:
             width=100
-        self.image=TimestampRepresentation(self.value, self.controller, width, epsilon=1000/25, visible_label=False)
+        self.image=TimestampRepresentation(self.value, self.controller, width, epsilon=1000/25, visible_label=False, callback=self.set_value)
         self.image.connect('button-press-event', image_button_press)
         self.image.connect('clicked', image_button_clicked)
         self.image.set_tooltip_text(_("Click to play\nControl+click to set to current time\Scroll to modify value (with control/shift)\nRight-click to invalidate screenshot"))
@@ -183,12 +185,8 @@ class TimeAdjustment:
             elif event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_RIGHT:
                 incr=i
 
-            v=self.value
-            v += incr
-            if self.callback and not self.callback(v):
+            if not self.set_value(self.value + incr):
                 return True
-            self.value=v
-            self.update_display()
             return True
 
         if self.editable:
@@ -210,17 +208,11 @@ class TimeAdjustment:
         if targetType == config.data.target_type['annotation']:
             source_uri=unicode(selection.data, 'utf8').split('\n')[0]
             source=self.controller.package.annotations.get(source_uri)
-            if self.callback and not self.callback(source.fragment.begin):
-                return True
-            self.value = source.fragment.begin
-            self.update_display()
+            self.set_value(source.fragment.begin)
         elif targetType == config.data.target_type['timestamp']:
             data=decode_drop_parameters(selection.data)
             v=long(float(data['timestamp']))
-            if self.callback and not self.callback(v):
-                return True
-            self.value=v
-            self.update_display()
+            self.set_value(v)
         else:
             print "Unknown target type for drop: %d" % targetType
         return True
@@ -243,11 +235,7 @@ class TimeAdjustment:
         return True
 
     def use_current_position(self, button):
-        v=self.controller.player.current_position_value
-        if self.callback and not self.callback(v):
-            return True
-        self.value=v
-        self.update_display()
+        self.set_value(self.controller.player.current_position_value)
         return True
 
     def update_snapshot(self, button):
@@ -259,17 +247,12 @@ class TimeAdjustment:
         t=unicode(self.entry.get_text())
         v=helper.parse_time(t)
         if v is not None and v != self.value:
-            v=self.check_bound_value(v)
-            if self.callback and not self.callback(v):
+            if not self.set_value(v):
                 return False
-            self.value = v
-            if self.sync_video:
-                self.controller.move_position(self.value, relative=False)
-            self.update_display()
         return False
 
     def check_bound_value(self, value):
-        if value < 0:
+        if value < 0 or value is None:
             value = 0
         elif (self.controller.cached_duration > 0
               and value > self.controller.cached_duration):
@@ -284,20 +267,25 @@ class TimeAdjustment:
         self.entry.set_text(helper.format_time(self.value))
         self.image.value=self.value
 
-    def update_value_cb(self, widget, increment):
-        if not self.editable:
+    def get_widget(self):
+        return self.widget
+
+    def get_value(self):
+        return self.value
+
+    def set_value(self, v):
+        """Set the new value.
+
+        The method does various consistency checks, and can leave the
+        value unset if a callback is defined and returns False.
+        """
+        if self.value == v:
             return True
-        v=self.check_bound_value(self.value + increment)
+        v = self.check_bound_value(v)
         if self.callback and not self.callback(v):
-            return True
+            return False
         self.value=v
+        self.update_display()
         if self.sync_video:
             self.controller.move_position(self.value, relative=False)
-        self.update_display()
         return True
-
-    def get_widget(self):
-        return self.widget
-
-    def get_value(self):
-        return self.value
diff --git a/lib/advene/gui/edit/transcribe.py b/lib/advene/gui/edit/transcribe.py
index 5987174..140f9f7 100644
--- a/lib/advene/gui/edit/transcribe.py
+++ b/lib/advene/gui/edit/transcribe.py
@@ -964,18 +964,18 @@ class TranscriptionEdit(AdhocView):
         if not self.controller.gui:
             self.message(_("Cannot import annotations: no existing interface"))
             return True
-        at=self.controller.gui.ask_for_annotation_type(text=_("Select the annotation type to import"), 
-                                                       create=False, 
+        at=self.controller.gui.ask_for_annotation_type(text=_("Select the annotation type to import"),
+                                                       create=False,
                                                        default=self.controller.package.get_element_by_id(self.options['annotation-type-id']))
         if at is None:
             return True
 
         self.options['annotation-type-id'] = at.id
-        
+
         if not at.annotations:
             dialog.message_dialog(_("There are no annotations of type %s") % self.controller.get_title(at))
             return True
-            
+
         if not self.buffer_is_empty():
             if not dialog.message_dialog(_("This will overwrite the current textual content. Are you sure?"),
                                                   icon=gtk.MESSAGE_QUESTION):
@@ -1260,6 +1260,9 @@ class TranscriptionEdit(AdhocView):
             elif event.keyval == gtk.keysyms.Page_Up:
                 self.goto_previous_mark()
                 return True
+            elif event.keyval == gtk.keysyms.c:
+                self.convert_transcription_cb()
+                return True
         elif self.options['autoinsert'] and self.options['automatic-mark-insertion-delay']:
             if (gtk.gdk.keyval_to_unicode(event.keyval)
                 and event.keyval != gtk.keysyms.space
diff --git a/lib/advene/gui/evaluator.py b/lib/advene/gui/evaluator.py
index e3689ad..7f070d5 100644
--- a/lib/advene/gui/evaluator.py
+++ b/lib/advene/gui/evaluator.py
@@ -31,22 +31,22 @@ import inspect
 
 class Evaluator:
     """Evaluator window. Shortcuts:
-    
+
     F1: display this help
-    
+
     Control-Return: evaluate the expression. If a selection is
     active, evaluate only the selection.
-    
+
     Control-l: clear the expression buffer
     Control-S: save the expression buffer
     Control-n: next item in history
     Control-p: previous item in history
     Control-b: store the expression as a bookmark
     Control-space: display bookmarks
-    
+
     Control-PageUp/PageDown: scroll the output window
     Control-s: save the output
-    
+
     Control-d: display completion possibilities
     Tab: perform autocompletion
     Control-h:   display docstring for element before cursor
diff --git a/lib/advene/gui/main.py b/lib/advene/gui/main.py
index 3261823..7852b91 100755
--- a/lib/advene/gui/main.py
+++ b/lib/advene/gui/main.py
@@ -54,16 +54,13 @@ import locale
 
 print "Using localedir %s" % config.data.path['locale']
 
-APP='advene'
 # Locale initialisation
 try:
     locale.setlocale(locale.LC_ALL, '')
 except locale.Error:
     print "Error in locale initialization. Interface translation may be incorrect."
     pass
-gettext.bindtextdomain(APP, config.data.path['locale'])
-gettext.textdomain(APP)
-gettext.install(APP, localedir=config.data.path['locale'], unicode=True)
+config.init_gettext()
 # The following line is useless, since gettext.install defines _ as a
 # builtin. However, code checking applications need to be explicitly
 # told that _ is imported.
@@ -83,7 +80,7 @@ import advene.model.tal.context
 
 import advene.core.mediacontrol
 import advene.util.helper as helper
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 from advene.util.odict import odict
 
 import advene.util.importer
@@ -200,6 +197,8 @@ class DummyGlade:
             elif name == _("Packages"):
                 self.package_list_menu=gtk.Menu()
                 i.set_submenu(self.package_list_menu)
+            elif name == _("Open recent"):
+                self.recent_menuitem = i
             menu.append(i)
         return menu
 
@@ -231,6 +230,7 @@ class AdveneGUI(object):
         """Initializes the GUI and other attributes.
         """
         self.logbuffer = gtk.TextBuffer()
+        self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
 
         self.controller = advene.core.controller.AdveneController()
         self.controller.register_gui(self)
@@ -238,12 +238,13 @@ class AdveneGUI(object):
         # available through the request/keyname TALES expression
         self.controller.register_event('KeyboardInput', _("Input from the keyboard (function keys)"))
 
-        # FIXME: we should use gtk.UIManager 
+        # FIXME: we should use gtk.UIManager
         menu_definition=(
             (_("_File"), (
                     ( _("_New package"), self.on_new1_activate, _("Create a new package")),
                     ( _("_Open package"), self.on_open1_activate, _("Open a package") ),
-                    ( _("_Save package"), self.on_save1_activate, _("Save the package") ),
+                    ( _("Open recent"), None, _("Show recently opened packages") ),
+                    ( _("_Save package") + " [Ctrl-S]", self.on_save1_activate, _("Save the package") ),
                     ( _("Save package as..."), self.on_save_as1_activate, _("Save the package as...") ),
                     ( _("Close package"), self.on_close1_activate, _("Close the package") ),
                     ( "", None, "" ),
@@ -257,7 +258,7 @@ class AdveneGUI(object):
                     ( _("Associate a _Video stream"), self.on_select_a_video_stream1_activate, _("Enter a video stream address") ),
                     ( "", None, "" ),
                     ( _("_Import File"), self.on_import_file1_activate, _("Import data from an external source") ),
-                    ( _("Process video"), self.on_process_video_activate, _("Import data from video processing algorithms")),
+                    ( _("_Process video"), self.on_process_video_activate, _("Import data from video processing algorithms")),
                     ( "", None, "" ),
                     ( _("Merge package"), self.on_merge_package_activate, _("Merge elements from another package") ),
                     ( _("Import _DVD chapters"), self.on_import_dvd_chapters1_activate, _("Create annotations based on DVD chapters") ),
@@ -266,12 +267,11 @@ class AdveneGUI(object):
                     ( _("_Website export..."), self.on_website_export_activate, _("Export views to a website") ),
                     ( "", None, "" ),
                     ( _("_Quit"), self.on_exit, "" ),
-                    ( "", None, "" ),
                     ), "" ),
             (_("_Edit"), (
-                    ( _("_Undo"), self.on_undo1_activate, "" ),
+                    ( _("_Undo") + " [Ctrl-Z]", self.undo, "" ),
                     ( _("_Find"), self.on_find1_activate, "" ),
-                    ( _("_Delete"), self.on_delete1_activate, "" ),
+                    ( _("_Delete") + " [Del]", self.on_delete1_activate, "" ),
                     ( _("Create"), (
                             ( _("Schema"), self.on_create_schema_activate, "" ),
                             ( _("View"), self.on_create_view_activate, "" ),
@@ -279,7 +279,7 @@ class AdveneGUI(object):
                             ( _("Annotation Type"), self.on_create_annotation_type_activate, "" ),
                             ( _("Relation Type"), self.on_create_relation_type_activate, "" ),
                             ), "" ),
-                    ( _("Package _Imports"), self.on_package_imports1_activate, _("Edit imported element from other packages") ),
+#                    ( _("Package _Imports"), self.on_package_imports1_activate, _("Edit imported element from other packages") ),
 #                    ( _("_Standard Ruleset"), self.on_edit_ruleset1_activate, _("Edit the standard rules") ),
                     ( _("P_ackage properties"), self.on_package_properties1_activate, _("Edit package properties") ),
                     ( _("P_references"), self.on_preferences1_activate, _("Interface preferences") ),
@@ -289,16 +289,16 @@ class AdveneGUI(object):
                     ( _("_Start Web Browser"), self.on_adhoc_web_browser_activate, _("Start the web browser") ),
                     ( "", None, "" ),
                     ( _("Simplify interface"), self.on_simplify_interface_activate, _("Simplify the application interface (toggle)")),
-                    ( _("Evaluator"), self.on_evaluator2_activate, _("Open python evaluator window") ),
+                    ( _("Evaluator") + " [Ctrl-e]", self.on_evaluator2_activate, _("Open python evaluator window") ),
                     ( _("Webserver log"), self.on_webserver_log1_activate, "" ),
-                    ( _("_MediaInformation"), self.on_view_mediainformation_activate, _("Display information about the media") ),
+                    #( _("_MediaInformation"), self.on_view_mediainformation_activate, _("Display information about the media") ),
                     ), "" ),
             (_("_Player"), (
                     ( _("Go to _Time"), self.goto_time_dialog, _("Goto a specified time code") ),
                     ( _("Save _ImageCache"), self.on_save_imagecache1_activate, _("Save the contents of the ImageCache to disk") ),
                     ( _("Reset ImageCache"), self.on_reset_imagecache_activate, _("Reset the ImageCache") ),
                     ( _("_Restart player"), self.on_restart_player1_activate, _("Restart the player") ),
-                    ( _("Capture screenshots"), self.generate_screenshots, _("Generate screenshots for the current video") ),
+                    #( _("Capture screenshots"), self.generate_screenshots, _("Generate screenshots for the current video") ),
                     ( _("Update annotation screenshots"), self.update_annotation_screenshots, _("Update screenshots for annotation bounds") ),
                     ( _("Detect shots"), self.on_shotdetect_activate, _("Automatically detect shots")),
                     ( _("_Select player"), None, _("Select the player plugin") ),
@@ -318,34 +318,66 @@ class AdveneGUI(object):
             )
 
         self.gui = DummyGlade(menu_definition)
-        for (stock, callback, tip) in (
-            (gtk.STOCK_OPEN, self.on_open1_activate, _("Open a package file")),
-            (gtk.STOCK_SAVE, self.on_save1_activate, _("Save the current package")),
-            (gtk.STOCK_SAVE_AS, self.on_save_as1_activate, _("Save the package with a new name")),
-            ('moviefile.png', self.on_b_addfile_clicked, _("Select movie file...")),
-            (gtk.STOCK_CDROM, self.on_b_selectdvd_clicked, _("Select DVD")),
-            (gtk.STOCK_QUIT, self.on_exit, _("Quit")),
-            (None, None, None),
-            (gtk.STOCK_UNDO, self.undo, _("Undo")),
-            (None, None, None),
-            ('text_annotation.png', self.on_create_text_annotation, _("Create a text annotation")), 
-            ('svg_annotation.png', self.on_create_svg_annotation, _("Create a graphical annotation")),
+
+        f = gtk.RecentFilter()
+        f.add_application(gobject.get_application_name())
+        recent = gtk.RecentChooserMenu()
+        recent.add_filter(f)
+        recent.set_show_icons(False)
+        recent.set_sort_type(gtk.RECENT_SORT_MRU)
+        self.gui.recent_menuitem.set_submenu(recent)
+        def open_history_file(rec):
+            fname = rec.get_current_uri()
+            try:
+                self.set_busy_cursor(True)
+                self.controller.load_package (uri=fname)
+            except (OSError, IOError), e:
+                self.set_busy_cursor(False)
+                dialog.message_dialog(_("Cannot load package %(filename)s:\n%(error)s") % {
+                        'filename': fname,
+                        'error': unicode(e)}, gtk.MESSAGE_ERROR)
+            return True
+        recent.connect('item-activated', open_history_file)
+
+        self.toolbuttons = {}
+        for (ident, stock, callback, tip) in (
+            ('open', gtk.STOCK_OPEN, self.on_open1_activate, _("Open a package file")),
+            ('save', gtk.STOCK_SAVE, self.on_save1_activate, _("Save the current package")),
+            ('save_as', gtk.STOCK_SAVE_AS, self.on_save_as1_activate, _("Save the package with a new name")),
+            ('select_file', 'moviefile.png', self.on_b_addfile_clicked, _("Select movie file...")),
+            ('select_dvd', gtk.STOCK_CDROM, self.on_b_selectdvd_clicked, _("Select DVD")),
+            (None, None, None, None),
+            ('undo', gtk.STOCK_UNDO, self.undo, _("Undo")),
+            (None, None, None, None),
+            ('create_text_annotation', 'text_annotation.png', self.on_create_text_annotation, _("Create a text annotation")),
+            ('create_svg_annotation', 'svg_annotation.png', self.on_create_svg_annotation, _("Create a graphical annotation")),
            ):
             if stock is None:
-                b=gtk.SeparatorToolItem()
+                b = gtk.SeparatorToolItem()
+            elif ident == 'open':
+                b = gtk.MenuToolButton(stock)
+                b.set_arrow_tooltip_text(_("List recently opened packages"))
+                f = gtk.RecentFilter()
+                f.add_application(gobject.get_application_name())
+                recent = gtk.RecentChooserMenu()
+                recent.add_filter(f)
+                recent.set_show_icons(False)
+                recent.set_sort_type(gtk.RECENT_SORT_MRU)
+                b.set_menu(recent)
+                recent.connect('item-activated', open_history_file)
             elif stock.startswith('gtk-'):
-                b=gtk.ToolButton(stock)
+                b = gtk.ToolButton(stock)
             else:
-                i=gtk.Image()
+                i = gtk.Image()
                 i.set_from_file( config.data.advenefile( ('pixmaps', stock ) ) )
-                b=gtk.ToolButton(icon_widget=i)
+                b = gtk.ToolButton(icon_widget=i)
             if tip is not None:
                 b.set_tooltip_text(tip)
             if callback is not None:
                 b.connect('clicked', callback)
             self.gui.fileop_toolbar.insert(b, -1)
-            if stock == gtk.STOCK_SAVE:
-                self.save_toolbutton = b
+            if ident is not None:
+                self.toolbuttons[ident] = b
         self.gui.fileop_toolbar.show_all()
 
         # Snapshotter activity monitor
@@ -356,7 +388,7 @@ class AdveneGUI(object):
             if s:
                 m.append(gtk.MenuItem(_("Snapshotter activity")))
                 m.append(gtk.SeparatorMenuItem())
-                m.append(gtk.MenuItem(_("%d queued requests") % s.timestamp_queue.qsize())) 
+                m.append(gtk.MenuItem(_("%d queued requests") % s.timestamp_queue.qsize()))
                 i = gtk.MenuItem(_("Cancel all requests"))
                 i.connect('activate', lambda i: s.clear() or True)
                 m.append(i)
@@ -371,7 +403,7 @@ class AdveneGUI(object):
             'idle': gtk.image_new_from_file( config.data.advenefile( ( 'pixmaps', 'snapshotter-idle.png') )),
             'running': gtk.image_new_from_file( config.data.advenefile( ( 'pixmaps', 'snapshotter-running.png') )),
             }
-        
+
         def set_state(b, state=None):
             """Set the state of the snapshotter icon.
 
@@ -394,7 +426,7 @@ class AdveneGUI(object):
 
         b = get_pixmap_button('snapshotter-idle.png', display_snapshot_monitor_menu)
         b._state = None
-        b.set_relief(gtk.RELIEF_NONE)        
+        b.set_relief(gtk.RELIEF_NONE)
         self.gui.bottombar.pack_start(b, expand=False)
         self.snapshotter_monitor_icon = b
         b.set_state=set_state.__get__(b)
@@ -406,7 +438,7 @@ class AdveneGUI(object):
             return True
         b=get_pixmap_button('logmessages.png', display_log_messages)
         b.set_tooltip_text(_("Display application log messages"))
-        b.set_relief(gtk.RELIEF_NONE)        
+        b.set_relief(gtk.RELIEF_NONE)
         self.gui.bottombar.pack_start(b, expand=False)
         b.show()
 
@@ -443,29 +475,6 @@ class AdveneGUI(object):
             except OSError:
                 print "OSerror"
                 pass
-        # Adhoc view toolbuttons signal handling
-        def adhoc_view_drag_sent(widget, context, selection, targetType, eventTime, name):
-            if targetType == config.data.target_type['adhoc-view']:
-                selection.set(selection.target, 8, encode_drop_parameters(name=name))
-                return True
-            return False
-
-        def adhoc_view_drag_begin(widget, context, pixmap, view_name):
-            w=gtk.Window(gtk.WINDOW_POPUP)
-            w.set_decorated(False)
-            hb=gtk.HBox()
-            i=gtk.Image()
-            i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
-            hb.pack_start(i, expand=False)
-            hb.pack_start(gtk.Label(view_name), expand=False)
-            w.add(hb)
-            w.show_all()
-            context.set_icon_widget(w, 16, 16)
-            return True
-
-        def open_view(widget, name, destination='default'):
-            self.open_adhoc_view(name, destination=destination)
-            return True
 
         def update_quicksearch_sources(mi):
             """Display a dialog allowing to edit quicksearch-sources setting.
@@ -500,119 +509,6 @@ class AdveneGUI(object):
             d.destroy()
             return True
 
-        def open_view_menu(widget, name):
-            """Open the view menu.
-
-            In expert mode, directly open the view. Else, display a
-            popup menu proposing the various places where the view can
-            be opened.
-            """
-            if name == 'webbrowser':
-                open_view(widget, name)
-                return True
-
-            if config.data.preferences['expert-mode']:
-                # In expert mode, directly open the view. Experts know
-                # how to use drag and drop anyway.
-                open_view(widget, name)
-                return True
-
-            menu=gtk.Menu()
-
-            for (label, destination) in (
-                (_("Open this view..."), 'default'),
-                (_("...in its own window"), 'popup'),
-                (_("...embedded east of the video"), 'east'),
-                (_("...embedded west of the video"), 'west'),
-                (_("...embedded south of the video"), 'south'),
-                (_("...embedded at the right of the window"), 'fareast')):
-                item = gtk.MenuItem(label)
-                item.connect('activate', open_view, name, destination)
-                menu.append(item)
-
-            menu.show_all()
-            menu.popup(None, None, None, 0, gtk.get_current_event_time())
-
-            return True
-
-        # Populate the View submenu
-        menu = self.gui.adhoc_view_menuitem.get_submenu()
-        it = gtk.MenuItem(_("All available views"))
-        menu.prepend(it)
-        it.show()
-        m = gtk.Menu()
-        it.set_submenu(m)
-        for name in sorted(self.registered_adhoc_views, reverse=True):
-            cl=self.registered_adhoc_views[name]
-            it=gtk.MenuItem(cl.view_name, use_underline=False)
-            it.set_tooltip_text(cl.tooltip)
-            it.connect('activate', open_view_menu, name)
-            m.prepend(it)
-
-        # Generate the adhoc view buttons
-        hb=self.gui.adhoc_hbox
-        item_index = 0
-        for name, tip, pixmap in (
-            ('timeline', _('Timeline'), 'timeline.png'),
-            ('tree', _('Tree view'), 'treeview.png'),
-            ('finder', _('Package finder'), 'finder.png'),
-            ('transcription', _('Transcription of annotations'), 'transcription.png'),
-
-            ('', '', ''),
-            ('transcribe', _('Note-taking editor'), 'transcribe.png'),
-            ('activebookmarks', _('Active bookmarks'), 'bookmarks.png'),
-            ('schemaeditor', _("Schema editor"), 'schemaeditor.png'),
-            ('', '', ''),
-
-            ('tagbag', _("Bag of tags"), 'tagbag.png'),
-            ('browser', _('TALES explorer'), 'browser.png'),
-            ('montage', _("Dynamic montage"), 'montage.png'),
-            ('videoplayer', _("Video player"), 'videoplayer.png'),
-            ('', '', ''),
-
-            ('webbrowser', _('Open a comment view in the web browser'), 'web.png'),
-            ('comment', _("Create or open a comment view"), 'comment.png'),
-            ('', '', ''),
-
-            ('editaccumulator', _('Edit window placeholder (annotation and relation edit windows will be put here)'), 'editaccumulator.png'),
-            ('editionhistory', _("Display edition history"), 'editionhistory.png'),
-            ('tracepreview', _("Visualise the activity trace preview"), 'trace.png'),
-            ('tracetimeline', _("Visualise the activity trace as a timeline"), 'tracetimeline.png'),
-            ):
-            if not name:
-                # Separator
-                b=gtk.VSeparator()
-                hb.pack_start(b, expand=False, padding=5)
-
-                it = gtk.SeparatorMenuItem()
-                menu.insert(it, item_index)
-                item_index = item_index + 1
-                continue
-            if name in ('browser', 'schemaeditor') and not config.data.preferences['expert-mode']:
-                continue
-            if name not in ('webbrowser', 'comment') and not name in self.registered_adhoc_views:
-                self.log("Missing basic adhoc view %s" % name)
-                continue
-            b=gtk.Button()
-            i=gtk.Image()
-            i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
-            b.add(i)
-            b.set_tooltip_text(tip)
-            b.connect('drag-begin', adhoc_view_drag_begin, pixmap, tip)
-            b.connect('drag-data-get', adhoc_view_drag_sent, name)
-            b.connect('clicked', open_view_menu, name)
-            b.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                              config.data.drag_type['adhoc-view'], gtk.gdk.ACTION_COPY)
-            hb.pack_start(b, expand=False)
-            if name in self.registered_adhoc_views:
-                it = gtk.MenuItem(self.registered_adhoc_views[name].view_name, use_underline=False)
-                it.connect('activate', open_view_menu, name)
-                it.set_tooltip_text(tip)
-                menu.insert(it, item_index)
-                item_index = item_index + 1
-        hb.show_all()
-        menu.show_all()
-
         # Trace switch button
         tsb = self.gui.traces_switch
         b=gtk.Button()
@@ -698,6 +594,11 @@ class AdveneGUI(object):
         # Populate default STBV and type lists
         self.update_gui()
 
+    def init_gettext(self):
+        """Proxy for the module-level init_gettext method.
+        """
+        config.init_gettext()
+
     def get_icon_list(self):
         """Return the list of icon pixbuf appropriate for Window.set_icon_list.
         """
@@ -708,6 +609,11 @@ class AdveneGUI(object):
             self._icon_list=[ i for i in l if i is not None ]
         return self._icon_list
 
+    def set_busy_cursor(self, busy=False):
+        """Un/Set the busy cursor for the main window.
+        """
+        self.gui.win.window.set_cursor(self.busy_cursor if busy else None)
+
     def update_player_labels(self):
         """Update the representation of player status.
 
@@ -1067,7 +973,7 @@ class AdveneGUI(object):
             self.log(_('%(search)s has been replaced by %(replace)s in %(count)d element(s).') % locals())
         d.destroy()
         return True
-        
+
     def render_montage_dialog(self, elements, basename=None, title=None, label=None):
         """Extract a montage/annotation to a new video.
         """
@@ -1080,7 +986,7 @@ class AdveneGUI(object):
         if label is None:
             label = _("Exporting video montage/fragment to %%(filename)s")
 
-        filename = dialog.get_filename(title=_("Please choose a destination filename"), 
+        filename = dialog.get_filename(title=_("Please choose a destination filename"),
                                        action=gtk.FILE_CHOOSER_ACTION_SAVE,
                                        button=gtk.STOCK_SAVE,
                                        default_file = basename,
@@ -1088,7 +994,7 @@ class AdveneGUI(object):
         if filename is None:
             return
         m = MontageRenderer(self.controller, elements)
-        
+
         w = gtk.Window()
         w.set_title(title)
         v = gtk.VBox()
@@ -1097,7 +1003,7 @@ class AdveneGUI(object):
 
         pg = gtk.ProgressBar()
         v.pack_start(pg, expand=False)
-        
+
         hb = gtk.HButtonBox()
         b = gtk.Button(stock=gtk.STOCK_CLOSE)
         def close_encoder(b):
@@ -1107,7 +1013,7 @@ class AdveneGUI(object):
         b.connect('clicked', close_encoder)
         hb.pack_start(b, expand=False)
         v.pack_start(hb, expand=False)
-        
+
         w.add(v)
         w.show_all()
 
@@ -1128,7 +1034,7 @@ class AdveneGUI(object):
         # FIXME: for debugging
         self.renderer = m
         return True
-        
+
     def main (self, args=None):
         """Mainloop : Gtk mainloop setup.
 
@@ -1214,10 +1120,6 @@ class AdveneGUI(object):
 
         self.visual_id = None
 
-        # Populate the file history menu
-        for filename in config.data.preferences['history']:
-            self.append_file_history_menu(filename)
-
         def build_player_menu(menu):
             if menu.get_children():
                 # The menu was previously populated, but the player may have changed.
@@ -1239,6 +1141,146 @@ class AdveneGUI(object):
                 i.show()
             return True
 
+        # Adhoc view toolbuttons signal handling
+        def adhoc_view_drag_sent(widget, context, selection, targetType, eventTime, name):
+            if targetType == config.data.target_type['adhoc-view']:
+                selection.set(selection.target, 8, encode_drop_parameters(name=name))
+                return True
+            return False
+
+        def adhoc_view_drag_begin(widget, context, pixmap, view_name):
+            w=gtk.Window(gtk.WINDOW_POPUP)
+            w.set_decorated(False)
+            hb=gtk.HBox()
+            i=gtk.Image()
+            i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
+            hb.pack_start(i, expand=False)
+            hb.pack_start(gtk.Label(view_name), expand=False)
+            w.add(hb)
+            w.show_all()
+            context.set_icon_widget(w, 16, 16)
+            return True
+
+        def open_view(widget, name, destination='default'):
+            self.open_adhoc_view(name, destination=destination)
+            return True
+
+        def open_view_menu(widget, name):
+            """Open the view menu.
+
+            In expert mode, directly open the view. Else, display a
+            popup menu proposing the various places where the view can
+            be opened.
+            """
+            if name == 'webbrowser':
+                open_view(widget, name)
+                return True
+
+            if config.data.preferences['expert-mode']:
+                # In expert mode, directly open the view. Experts know
+                # how to use drag and drop anyway.
+                open_view(widget, name)
+                return True
+
+            menu=gtk.Menu()
+
+            for (label, destination) in (
+                (_("Open this view..."), 'default'),
+                (_("...in its own window"), 'popup'),
+                (_("...embedded east of the video"), 'east'),
+                (_("...embedded west of the video"), 'west'),
+                (_("...embedded south of the video"), 'south'),
+                (_("...embedded at the right of the window"), 'fareast')):
+                item = gtk.MenuItem(label)
+                item.connect('activate', open_view, name, destination)
+                menu.append(item)
+
+            menu.show_all()
+            menu.popup(None, None, None, 0, gtk.get_current_event_time())
+
+            return True
+
+        # Populate the View submenu
+        menu = self.gui.adhoc_view_menuitem.get_submenu()
+        it = gtk.MenuItem(_("_All available views"))
+        menu.prepend(it)
+        it.show()
+        m = gtk.Menu()
+        it.set_submenu(m)
+        for name in sorted(self.registered_adhoc_views, reverse=True):
+            cl=self.registered_adhoc_views[name]
+            it=gtk.MenuItem('_' + cl.view_name, use_underline=True)
+            it.set_tooltip_text(cl.tooltip)
+            it.connect('activate', open_view_menu, name)
+            m.prepend(it)
+
+        # Generate the adhoc view buttons
+        hb=self.gui.adhoc_hbox
+        item_index = 0
+        for name, tip, pixmap in (
+            ('timeline', _('Timeline'), 'timeline.png'),
+            ('tree', _('Tree view'), 'treeview.png'),
+            ('finder', _('Package finder'), 'finder.png'),
+            ('transcription', _('Transcription of annotations'), 'transcription.png'),
+
+            ('', '', ''),
+            ('transcribe', _('Note-taking editor'), 'transcribe.png'),
+            ('activebookmarks', _('Active bookmarks'), 'bookmarks.png'),
+            ('schemaeditor', _("Schema editor"), 'schemaeditor.png'),
+            ('', '', ''),
+
+            ('tagbag', _("Bag of tags"), 'tagbag.png'),
+            ('browser', _('TALES explorer'), 'browser.png'),
+            ('montage', _("Dynamic montage"), 'montage.png'),
+            ('videoplayer', _("Video player"), 'videoplayer.png'),
+            ('', '', ''),
+
+            ('webbrowser', _('Open a comment view in the web browser'), 'web.png'),
+            ('comment', _("Create or open a comment view"), 'comment.png'),
+            ('', '', ''),
+
+            ('editaccumulator', _('Edit window placeholder (annotation and relation edit windows will be put here)'), 'editaccumulator.png'),
+            ('editionhistory', _("Display edition history"), 'editionhistory.png'),
+            ('tracepreview', _("Visualise the activity trace preview"), 'trace.png'),
+            ('tracetimeline', _("Visualise the activity trace as a timeline"), 'tracetimeline.png'),
+            ):
+            if not name:
+                # Separator
+                b=gtk.VSeparator()
+                hb.pack_start(b, expand=False, padding=5)
+
+                it = gtk.SeparatorMenuItem()
+                menu.insert(it, item_index)
+                item_index = item_index + 1
+                continue
+            if name in ('browser', 'schemaeditor') and not config.data.preferences['expert-mode']:
+                continue
+            if name not in ('webbrowser', 'comment') and not name in self.registered_adhoc_views:
+                self.log("Missing basic adhoc view %s" % name)
+                continue
+            b=gtk.Button()
+            i=gtk.Image()
+            i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
+            b.add(i)
+            b.set_tooltip_text(tip)
+            b.connect('drag-begin', adhoc_view_drag_begin, pixmap, tip)
+            b.connect('drag-data-get', adhoc_view_drag_sent, name)
+            b.connect('clicked', open_view_menu, name)
+            b.drag_source_set(gtk.gdk.BUTTON1_MASK,
+                              config.data.drag_type['adhoc-view'], gtk.gdk.ACTION_COPY)
+            hb.pack_start(b, expand=False)
+            if name == 'webbrowser' and (self.controller.server is None or not self.controller.server.is_running()):
+                b.set_sensitive(False)
+                b.set_tooltip_text(_("The webserver could not be started. Static views cannot be accessed."))
+            if name in self.registered_adhoc_views:
+                it = gtk.MenuItem(self.registered_adhoc_views[name].view_name, use_underline=False)
+                it.connect('activate', open_view_menu, name)
+                it.set_tooltip_text(tip)
+                menu.insert(it, item_index)
+                item_index = item_index + 1
+        hb.show_all()
+        menu.show_all()
+
         menu=gtk.Menu()
         self.gui.select_player_menuitem.set_submenu(menu)
         menu.connect('map', build_player_menu)
@@ -1364,7 +1406,7 @@ class AdveneGUI(object):
     def update_loop_button(self):
         """Update the loop button tooltip.
         """
-        b=self.loop_toggle_button
+        b=self.player_toolbar.buttons['loop']
         if self.current_annotation is None:
             mes=_("Select an annotation to loop on it")
         else:
@@ -1457,6 +1499,7 @@ class AdveneGUI(object):
             return True
 
         edit_stbv_button=get_small_stock_button(gtk.STOCK_EDIT, on_edit_current_stbv_clicked)
+        edit_stbv_button.set_tooltip_text(_("Edit the current dynamic view."))
         hb.pack_start(edit_stbv_button, expand=False)
 
         def on_stbv_combo_changed (combo=None):
@@ -1467,10 +1510,10 @@ class AdveneGUI(object):
                 return False
             stbv=combo.get_model().get_value(i, 1)
             if stbv is None:
-                edit_stbv_button.set_tooltip_text(_("Create a new dynamic view."))
+                edit_stbv_button.set_sensitive(False)
                 combo.props.tooltip_text=_("No dynamic view")
             else:
-                edit_stbv_button.set_tooltip_text(_("Edit the current dynamic view."))
+                edit_stbv_button.set_sensitive(True)
                 combo.props.tooltip_text=self.controller.get_title(stbv)
             self.controller.activate_stbv(stbv)
             return True
@@ -1489,6 +1532,7 @@ class AdveneGUI(object):
         ti.add(self.audio_volume)
         self.audio_volume.connect('value-changed', volume_change)
         self.player_toolbar.insert(ti, -1)
+        self.player_toolbar.buttons['volume'] = ti
 
         # Append the volume control to the toolbar
         def rate_change(spin):
@@ -1504,6 +1548,7 @@ class AdveneGUI(object):
         ti.add(self.rate_control)
         self.rate_control.connect('value-changed', rate_change)
         self.player_toolbar.insert(ti, -1)
+        self.player_toolbar.buttons['rate'] = ti
 
         # Append the loop checkitem to the toolbar
         def loop_toggle_cb(b):
@@ -1512,7 +1557,7 @@ class AdveneGUI(object):
             if b.get_active():
                 if self.current_annotation:
                     def action_loop(context, target):
-                        if (self.loop_toggle_button.get_active()
+                        if (self.player_toolbar.buttons['loop'].get_active()
                             and context.globals['annotation'] == self.current_annotation):
                             self.controller.update_status('set', self.current_annotation.fragment.begin)
                         return True
@@ -1532,10 +1577,11 @@ class AdveneGUI(object):
                         self.controller.event_handler.remove_rule(self.annotation_loop_rule, type_="internal")
             return True
 
-        self.loop_toggle_button=gtk.ToggleToolButton(gtk.STOCK_REFRESH)
+        b = gtk.ToggleToolButton(gtk.STOCK_REFRESH)
+        self.player_toolbar.buttons['loop'] = b
         self.update_loop_button()
-        self.loop_toggle_button.connect('toggled', loop_toggle_cb)
-        self.player_toolbar.insert(self.loop_toggle_button, -1)
+        b.connect('toggled', loop_toggle_cb)
+        self.player_toolbar.insert(b, -1)
 
         # Append the player status label to the toolbar
         ts=gtk.SeparatorToolItem()
@@ -1656,7 +1702,7 @@ class AdveneGUI(object):
 
         self.pane['fareast'].show_all()
 
-        self.popupwidget.display_message(_("You can drag and drop view icons (timeline, treeview, transcription...) in this notebook to embed various views."), timeout=10000, title=_("Information"))
+        self.popupwidget.display_message(_("You can drag and drop view icons (timeline, treeview, transcription...) in notebooks to embed various views."), timeout=30000, title=_("Information"))
 
         return self.pane['fareast']
 
@@ -1733,7 +1779,7 @@ class AdveneGUI(object):
         """
         widget.connect('key-press-event', self.process_fullscreen_shortcuts)
         widget.connect('key-press-event', self.process_player_shortcuts)
-        widget.connect('scroll-event', self.on_slider_scroll_event) 
+        widget.connect('scroll-event', self.on_slider_scroll_event)
 
     def updated_player_cb(self, context, parameter):
         self.update_player_labels()
@@ -1889,7 +1935,7 @@ class AdveneGUI(object):
 
     def is_focus_on_editable(self):
         """Returns True if the focus is in an editable component.
-        
+
         If not, we can activate control_key_shortcuts without the Control modifier.
         """
         # For the moment, we only check if we are in full or simplified GUI state.
@@ -1997,7 +2043,7 @@ class AdveneGUI(object):
 
     def get_player_control_toolbar(self):
         """Return a player control toolbar.
-        
+
         It has a buttons attribute, which holds references to the buttons according to an identifier.
         """
         tb=gtk.Toolbar()
@@ -2074,7 +2120,7 @@ class AdveneGUI(object):
         checkbox to activate/deactivate looping.
         """
         self.set_current_annotation(a)
-        self.loop_toggle_button.set_active(True)
+        self.player_toolbar.buttons['loop'].set_active(True)
         return True
 
     def debug_cb(self, window, event, *p):
@@ -2150,7 +2196,59 @@ class AdveneGUI(object):
         except AttributeError:
             pass
         return True
-        
+
+    def save_snapshot_as(self, position, filename=None, retry=True):
+        """Save the snapshot for the given position into a file.
+
+        If supported by the player, it will save the full-resolution screenshot.
+        """
+        def do_save_as(fname, png_data, notify=False):
+            try:
+                f = open(fname, 'wb')
+                f.write(str(png_data))
+                f.close()
+                self.controller.log(_("Screenshot saved to %s") % fname)
+                if notify:
+                    self.controller.queue_action(dialog.message_dialog, _("Screenshot saved in\n %s") % unicode(fname), modal=False)
+            except (IOError, OSError), e:
+                self.controller.queue_action(dialog.message_dialog, _("Could not save screenshot:\n %s") % unicode(e), icon=gtk.MESSAGE_ERROR, modal=False)
+
+        if filename is None:
+            name = "%s-%010d.png" % (
+                os.path.splitext(
+                    os.path.basename(
+                        self.controller.get_default_media()))[0],
+                position)
+            filename = dialog.get_filename(title=_("Save screenshot to..."),
+                                           action=gtk.FILE_CHOOSER_ACTION_SAVE,
+                                           button=gtk.STOCK_SAVE,
+                                           default_file=name)
+
+        if filename is not None:
+            if hasattr(self.controller.player, 'async_fullres_snapshot'):
+                def save_callback(snapshot=None, message=None):
+                    if snapshot is None and message is not None:
+                        self.controller.queue_action(dialog.message_dialog, message)
+                    elif snapshot:
+                        if abs(snapshot.date - position) > 100:
+                            # FIXME: It can be due to an
+                            # initialisation issue in the snapshotter,
+                            # on first invocation. Hack around the issue for now.
+                            if retry:
+                                self.controller.queue_action(self.save_snapshot_as, position, filename, retry=False)
+                            else:
+                                self.controller.queue_action(dialog.message_dialog, _("Could not take snapshot with enough precision"), modal=False)
+                        else:
+                            do_save_as(filename, snapshot.data, notify=True)
+                    else:
+                        self.controller.log("Unknown problem in full-resolution snapshot")
+                # Can capture full-res snapshot
+                self.controller.player.async_fullres_snapshot(position - 20, save_callback)
+            else:
+                do_save_as(filename,
+                           self.controller.package.imagecache.get(position))
+        return True
+
     def export_element(self, element):
         def generate_default_filename(filter, filename=None):
             """Generate a filename for the given filter.
@@ -2278,27 +2376,6 @@ class AdveneGUI(object):
         stbv_combo.show_all()
         return True
 
-    def append_file_history_menu(self, filename):
-        """Add the filename at the end of the filemenu Glade widget.
-        """
-        def open_history_file(button, fname):
-            try:
-                self.controller.load_package (uri=fname)
-            except (OSError, IOError), e:
-                dialog.message_dialog(_("Cannot load package %(filename)s:\n%(error)s") % {
-                        'filename': fname,
-                        'error': unicode(e)}, gtk.MESSAGE_ERROR)
-            return True
-
-        # FIXME: should use gtk.RecentChooserMenu
-        menu=self.gui.menubar.get_children()[0].get_submenu()
-        i=gtk.MenuItem(label=unicode(os.path.basename(filename)), use_underline=False)
-        i.connect('activate', open_history_file, filename)
-        i.set_tooltip_text(_("Open %s") % filename)
-
-        i.show()
-        menu.append(i)
-
     def build_utbv_menu(self, action=None):
         if action is None:
             action = self.controller.open_url
@@ -2381,7 +2458,8 @@ class AdveneGUI(object):
             if not hasattr(v, '_destination'):
                 continue
             # Do not save permanent widgets
-            if v in self.viewbook[v._destination].permanent_widgets:
+            book = self.viewbook.get(v._destination)
+            if book and v in book.permanent_widgets:
                 continue
             options, args = v.get_save_arguments()
             if not with_arguments:
@@ -2426,10 +2504,10 @@ class AdveneGUI(object):
             elif node.tag == 'layout':
                 layout=node
         # Restore layout
-        if layout and not preserve_layout:
+        if layout is not None and not preserve_layout:
             w=self.gui.win
             w.move(long(layout.attrib['x']), long(layout.attrib['y']))
-            w.resize(min(long(layout.attrib['width']), gtk.gdk.screen_width()), 
+            w.resize(min(long(layout.attrib['width']), gtk.gdk.screen_width()),
                      min(long(layout.attrib['height']), gtk.gdk.screen_height()))
             for pane in layout:
                 if pane.tag == 'pane' and pane.attrib['id'] in self.pane:
@@ -2587,7 +2665,8 @@ class AdveneGUI(object):
                         'error': unicode(e)}).encode('latin1')
                 view=None
             if view is not None and view.widget.get_parent() is not None:
-                # Widget is already displayed.
+                # Widget is already displayed. Present it.
+                view.widget.get_toplevel().present()
                 view=None
             label=_("Editing %s") % self.controller.get_title(element)
         elif name == 'editaccumulator':
@@ -2697,7 +2776,7 @@ class AdveneGUI(object):
                     pass
         # Reset quicksearch source value
         config.data.preferences['quicksearch-sources']=[ "all_annotations" ]
-        pass
+        self.set_busy_cursor(False)
 
     def manage_package_load (self, context, parameters):
         """Event Handler executed after loading a package.
@@ -2715,13 +2794,8 @@ class AdveneGUI(object):
                 'relations': helper.format_element_name('relation',
                                                         len(p.relations))
                 })
-
-        h=config.data.preferences['history']
-        if not p.uri in h and not p.uri.endswith('new_pkg'):
-            h.append(p.uri)
-            self.append_file_history_menu(p.uri)
-            # Keep the 5 last elements
-            config.data.preferences['history']=h[-config.data.preferences['history-size-limit']:]
+        if not p.uri.endswith('new_pkg'):
+            gtk.recent_manager_get_default().add_item(p.uri)
 
         # Create the content indexer
         p._indexer=Indexer(controller=self.controller,
@@ -2729,6 +2803,7 @@ class AdveneGUI(object):
                            abbreviations=self.text_abbreviations)
         p._indexer.initialize()
 
+        # FIXME: it should not be here, but in activate, and called only once
         self.controller.queue_action(self.check_for_default_adhoc_view, p)
         return True
 
@@ -2754,9 +2829,9 @@ class AdveneGUI(object):
         t=" - ".join((_("Advene"), unicode(os.path.basename(self.controller.package.uri)), self.controller.get_title(self.controller.package)))
         if self.controller.package._modified:
             t += " (*)"
-            self.save_toolbutton.set_sensitive(True)
+            self.toolbuttons['save'].set_sensitive(True)
         else:
-            self.save_toolbutton.set_sensitive(False)
+            self.toolbuttons['save'].set_sensitive(False)
         self.gui.win.set_title(t)
         return True
 
@@ -2873,7 +2948,7 @@ class AdveneGUI(object):
 
     def create_element_popup(self, *p, **kw):
         """Wrapper for CreateElementPopup
-        
+
         This helps to solve a circular import dependency...
         """
         return CreateElementPopup(*p, **kw)
@@ -2918,7 +2993,7 @@ class AdveneGUI(object):
         # Define variables referencing the opened views
         for v in self.adhoc_views:
             ev.locals_[v.view_id]=v
-            
+
         # Hook completer
         completer=Completer(textview=ev.source,
                             controller=self.controller,
@@ -3015,12 +3090,13 @@ class AdveneGUI(object):
         This method is regularly called by the Gtk mainloop, and
         updates elements with a slower rate than update_display
         """
-        vol=self.controller.player.sound_get_volume() / 100.0
+        c = self.controller
+        vol = c.player.sound_get_volume() / 100.0
         if self.audio_volume.get_value() != vol:
             self.audio_volume.set_value(vol)
 
         def do_save(aliases):
-            for alias, p in self.controller.packages.iteritems():
+            for alias, p in c.packages.iteritems():
                 if alias == 'advene':
                     continue
                 if p._modified:
@@ -3028,17 +3104,22 @@ class AdveneGUI(object):
                     if n.startswith('http:'):
                         continue
                     if n.startswith('file://'):
-                        n=n[7:]
-                    n=n+'.backup'+e
-                    print "Temporarily saving ", alias, "as", n
+                        n = n[7:]
+                    n = n + '.backup' + e
                     p.save(name=n)
             return True
 
-        if self.gui.win.get_title().endswith('(*)') ^ self.controller.package._modified:
+        if self.gui.win.get_title().endswith('(*)') ^ c.package._modified:
             self.update_window_title()
+        self.toolbuttons['undo'].set_sensitive(bool(c.undomanager.history))
+        is_playing = (c.player.status in (c.player.PlayingStatus, c.player.PauseStatus))
+        self.toolbuttons['create_text_annotation'].set_sensitive(is_playing)
+        self.toolbuttons['create_svg_annotation'].set_sensitive(is_playing)
+        for l in ('rewind', 'forward', 'previous_frame', 'next_frame', 'loop'):
+            self.player_toolbar.buttons[l].set_sensitive(is_playing)
 
         # Check snapshotter activity
-        s = getattr(self.controller.player, 'snapshotter', None)
+        s = getattr(c.player, 'snapshotter', None)
         if s:
             if s.timestamp_queue.empty():
                 self.snapshotter_monitor_icon.set_state('idle')
@@ -3046,7 +3127,7 @@ class AdveneGUI(object):
                 self.snapshotter_monitor_icon.set_state('running')
         else:
             self.snapshotter_monitor_icon.set_state(None)
-            
+
         # Check auto-save
         if config.data.preferences['package-auto-save'] != 'never':
             t=time.time() * 1000
@@ -3054,14 +3135,14 @@ class AdveneGUI(object):
                 # Need to save
                 l=[ alias for (alias, p) in self.controller.packages.iteritems() if p._modified and alias != 'advene' ]
                 if l:
-                    if self.controller.tracers and config.data.preferences['record-actions']:
+                    if c.tracers and config.data.preferences['record-actions']:
                         try:
-                            fn = self.controller.tracers[0].export()
+                            fn = c.tracers[0].export()
                             print "trace exported to %s" % fn
                         except Exception, e:
                             print "error exporting trace : %s" % unicode(e).encode('utf-8')
                     if config.data.preferences['package-auto-save'] == 'always':
-                        self.controller.queue_action(do_save, l)
+                        c.queue_action(do_save, l)
                     else:
                         # Ask before saving. Use the non-modal dialog
                         # to avoid locking the interface
@@ -3072,10 +3153,10 @@ class AdveneGUI(object):
 
         # Fix the webserver reaction time on win32
         if config.data.os == 'win32':
-            if self.controller.player.status in self.active_player_status:
-                i=config.data.play_interval
+            if c.player.status in self.active_player_status:
+                i = config.data.play_interval
             else:
-                i=config.data.noplay_interval
+                i = config.data.noplay_interval
             if sys.getcheckinterval() != i:
                 sys.setcheckinterval(i)
 
@@ -3426,6 +3507,15 @@ class AdveneGUI(object):
         self.open_adhoc_view('shotvalidation', annotationtype=at)
         return True
 
+    def adjust_timestamp(self, t):
+        """Display the FrameSelector and return the selected value.
+        """
+        fs = FrameSelector(self.controller, t,
+                           label=_("Click on the frame corresponding to the timestamp value"),
+                           border_mode='both')
+        new = fs.get_value(_("Set new timestamp value"))
+        return new
+
     def display_statistics(self, annotations, label=None):
         """Display statistics about the given annotations.
         """
@@ -3433,10 +3523,11 @@ class AdveneGUI(object):
             label = _("<b>Annotation statistics</b>\n\n")
         msg =  label
         msg += "%d annotations\n" % len(annotations)
-        msg += "Min duration : %s\n" % helper.format_time(min( a.fragment.duration for a in annotations))
-        msg += "Max duration : %s\n" % helper.format_time(max( a.fragment.duration for a in annotations))
-        msg += "Mean duration : %s\n" % helper.format_time(sum( a.fragment.duration for a in annotations) / len(annotations))
-        msg += "Total duration : %s\n" % helper.format_time(sum( a.fragment.duration for a in annotations))
+        if annotations:
+            msg += "Min duration : %s\n" % helper.format_time(min( a.fragment.duration for a in annotations))
+            msg += "Max duration : %s\n" % helper.format_time(max( a.fragment.duration for a in annotations))
+            msg += "Mean duration : %s\n" % helper.format_time(sum( a.fragment.duration for a in annotations) / len(annotations))
+            msg += "Total duration : %s\n" % helper.format_time(sum( a.fragment.duration for a in annotations))
         dialog.message_dialog(msg)
         return True
 
@@ -3592,6 +3683,7 @@ class AdveneGUI(object):
             # Ask to save it first.
             dialog.message_dialog(_("An unsaved template package exists\nSave it first."))
         else:
+            self.set_busy_cursor(True)
             self.controller.load_package ()
         return True
 
@@ -3658,8 +3750,10 @@ class AdveneGUI(object):
                         return True
 
             try:
+                self.set_busy_cursor(True)
                 self.controller.load_package (uri=filename, alias=alias)
             except (OSError, IOError), e:
+                self.set_busy_cursor(False)
                 dialog.message_dialog(_("Cannot load package %(filename)s:\n%(error)s") % {
                         'filename': filename,
                         'error': unicode(e)}, gtk.MESSAGE_ERROR)
@@ -3798,19 +3892,13 @@ class AdveneGUI(object):
     def on_process_video_activate(self, button=None, data=None):
         fname = self.controller.get_default_media()
         if fname:
-            self.open_adhoc_view('importerview', filename=fname, message=_("Processing %s video") % fname)
+            self.open_adhoc_view('importerview', filename=fname, message=_("Processing %s video") % fname,
+                                 display_unlikely=False)
         else:
             dialog.message_dialog(_("No associated video file"),
                                   icon=gtk.MESSAGE_ERROR)
         return False
 
-    def on_undo1_activate (self, button=None, data=None):
-        try:
-            self.controller.undomanager.undo()
-        except AttributeError:
-            pass
-        return True
-
     def on_find1_activate (self, button=None, data=None):
         self.open_adhoc_view('interactivequery', destination='east')
         return True
@@ -4238,11 +4326,11 @@ class AdveneGUI(object):
             options[_("GL")] = 'gl'
 
         ew.add_option(_("Video output"), "player-vout", _("Video output module"), options)
-        
+
         ew.add_label(_("Recorder options"))
         ew.add_entry(_("Audio input"), 'player-audio-record-device', _("Device name for audio input (with gstrecorder plugin)"))
         ew.add_checkbox(_("Record video"), 'player-record-video', _("Record both video and audio"))
-        
+
         if config.data.preferences['expert-mode']:
             ew.add_label(_("<i>Experimental</i>"))
             ew.add_checkbox(_("Scroller"), 'display-scroller', _("Embed the caption scroller below the video"))
@@ -4303,7 +4391,7 @@ class AdveneGUI(object):
                 (_("MacOS X say"), 'macosx'),
                 (_("Generic (text output)"), 'generic'),
                 )))
-        
+
         res=ew.popup()
         if res:
             player_need_restart = False
@@ -4371,15 +4459,19 @@ class AdveneGUI(object):
         self.controller.restart_player ()
         return True
 
-    def on_slider_button_press_event (self, button=None, data=None):
+    def on_slider_button_press_event (self, button=None, event=None):
         self.slider_move = True
+        if event.button == 1:
+            event.button = 2
         return False
 
-    def on_slider_button_release_event (self, button=None, data=None):
+    def on_slider_button_release_event (self, button=None, event=None):
         if self.controller.player.playlist_get_list():
             p = self.controller.create_position (value = long(self.gui.slider.get_value ()))
             self.controller.update_status('set', p)
         self.slider_move = False
+        if event.button == 1:
+            event.button = 2
         return False
 
     def on_slider_scroll_event (self, widget=None, event=None):
@@ -4494,7 +4586,9 @@ class AdveneGUI(object):
         try:
             source=Package(uri=filename)
         except Exception, e:
-            self.log("Cannot load %s file: %s" % (filename, unicode(e)))
+            msg = "Cannot load %s file: %s" % (filename, unicode(e))
+            self.log(msg)
+            dialog.message_dialog(msg, icon=gtk.MESSAGE_ERROR)
             return True
         m=Merger(self.controller, sourcepackage=source, destpackage=self.controller.package)
         m.popup()
@@ -4531,7 +4625,7 @@ class AdveneGUI(object):
             return True
 
         if not re.match(r'^[a-zA-Z0-9_]+$', ident):
-            dialog.message_dialog(_("Error: the identifier %s contains invalid characters.") % ident)
+            dialog.message_dialog(_("Error: the identifier %s contains invalid characters.") % ident, icon=gtk.MESSAGE_ERROR)
             return True
 
         v=helper.get_id(self.controller.package.views, ident)
@@ -4542,7 +4636,7 @@ class AdveneGUI(object):
         else:
             # Existing view. Check that it is already an workspace-view
             if v.content.mimetype != 'application/x-advene-workspace-view':
-                dialog.message_dialog(_("Error: the view %s exists and is not a workspace view.") % ident)
+                dialog.message_dialog(_("Error: the view %s exists and is not a workspace view.") % ident, icon=gtk.MESSAGE_ERROR)
                 return True
             create=False
         v.title=title
@@ -4621,17 +4715,22 @@ class AdveneGUI(object):
         hb=gtk.HBox()
         hb.pack_start(gtk.Label(_("Video URL")), expand=False)
         video_entry=gtk.Entry()
-        video_entry.set_tooltip_text(_("URL for the video, if it is available on a sharing website.\nOnly for GoogleVideo and Youtube for the moment"))
+        video_entry.set_tooltip_text(_("URL for the video, if it is available on a sharing website (Only Youtube for the moment).\n It can also be a h264/ogg file, which will in this case be handled by the HTML5 video player."))
         u=self.controller.package.getMetaData(config.data.namespace, 'website-export-video-url')
+        if u is None:
+            u = self.controller.get_default_media()
+            if u:
+                u = os.path.basename(u)
         if u is not None:
             video_entry.set_text(u)
+
         hb.add(video_entry)
         v.pack_start(hb, expand=False)
 
         pb=gtk.ProgressBar()
         v.pack_start(pb, expand=False)
 
-        w.should_continue = True
+        w.should_continue = False
 
         def cb(val, msg):
             if val > 0 and val <= 1.0:
@@ -4644,15 +4743,22 @@ class AdveneGUI(object):
             return w.should_continue
 
         def do_conversion(b):
-            b.set_sensitive(False)
             d=unicode(dirname_entry.get_text())
             if not d:
                 return False
-            self.controller.package.setMetaData(config.data.namespace, 'website-export-directory', d)
+
             video=unicode(video_entry.get_text())
+
+            if (self.controller.package.getMetaData(config.data.namespace, 'website-export-directory') != d
+                or self.controller.package.getMetaData(config.data.namespace, 'website-export-video-url') != video):
+                self.controller.package._modified = True
+            self.controller.package.setMetaData(config.data.namespace, 'website-export-directory', d)
             if video:
                 self.controller.package.setMetaData(config.data.namespace, 'website-export-video-url', video)
+
             b.set_sensitive(False)
+            w.should_continue = True
+
             try:
                 self.controller.website_export(destination=d,
                                                max_depth=max_depth.get_value_as_int(),
@@ -4668,7 +4774,10 @@ class AdveneGUI(object):
         dirname_entry.connect('activate', do_conversion)
 
         def do_cancel(*p):
-            w.should_continue = False
+            if w.should_continue:
+                w.should_continue = False
+            else:
+                w.destroy()
             return True
 
         hb=gtk.HButtonBox()
@@ -4977,7 +5086,6 @@ class AdveneGUI(object):
                    '-s', str(pb._sensitivity.get_value_as_int()) ]
 
             if config.data.os == 'win32':
-                import win32process
                 kw = { 'creationflags': win32process.CREATE_NO_WINDOW }
             else:
                 kw = { 'preexec_fn': subprocess_setup }
@@ -5009,7 +5117,7 @@ class AdveneGUI(object):
                         m=exp_re.match(ms[0])
                         if m:
                             ts=long(float(m.group(1)) * 10 ** int(m.group(2)))
-                            
+
                     pb._datapoints.append(ts)
                     d=self.controller.cached_duration
                     if d > 0:
@@ -5019,7 +5127,7 @@ class AdveneGUI(object):
                     do_gui_operation(pb.set_label_value,
                                      _("Detected shot #%(num)d at %(pos)s ") % {
                             'num': len(pb._datapoints),
-                            'pos': helper.format_time_reference(ts) 
+                            'pos': helper.format_time_reference(ts)
                             },
                                      prg)
 
diff --git a/lib/advene/gui/plugins/contenthandlers.py b/lib/advene/gui/plugins/contenthandlers.py
index 85ea112..be2e3bb 100644
--- a/lib/advene/gui/plugins/contenthandlers.py
+++ b/lib/advene/gui/plugins/contenthandlers.py
@@ -31,7 +31,7 @@ from advene.gui.util import image_from_position, dialog, decode_drop_parameters,
 
 from advene.gui.edit.rules import EditRuleSet, EditQuery
 from advene.rules.elements import RuleSet, SimpleQuery
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 name="Default content handlers"
 
@@ -182,7 +182,7 @@ class SVGContentHandler (ContentHandler):
                 dialog.message_dialog(
                     _("Error while parsing SVG content:\n\n%s") % unicode(e),
                     icon=gtk.MESSAGE_ERROR)
-            if root:
+            if root is not None:
                 self.view.drawer.clear_objects()
                 path=''
                 if self.parent is not None and hasattr(self.parent, 'file_'):
diff --git a/lib/advene/gui/plugins/htmlcontenhandler.py b/lib/advene/gui/plugins/htmlcontenhandler.py
index 25e1ff5..8849459 100644
--- a/lib/advene/gui/plugins/htmlcontenhandler.py
+++ b/lib/advene/gui/plugins/htmlcontenhandler.py
@@ -81,17 +81,13 @@ class AnnotationPlaceholder:
             return """<span advene:error="Non-existent annotation"></span>"""
 
         ctx=self.controller.build_context(self.annotation)
-        try:
-            urlbase=self.controller.server.urlbase.rstrip('/')
-        except AttributeError:
-            urlbase='http://localhost:1234'
         d={
             'id': self.annotation.id,
-            'href': urlbase + ctx.evaluateValue('here/player_url'),
-            'imgurl': urlbase + ctx.evaluateValue('here/snapshot_url'),
+            'href': self.controller.get_urlbase() + ctx.evaluateValue('here/player_url'),
+            'imgurl': self.controller.get_urlbase() + ctx.evaluateValue('here/snapshot_url'),
             'timestamp': helper.format_time(self.annotation.fragment.begin),
             'content': self.controller.get_title(self.annotation),
-            'urlbase': urlbase,
+            'urlbase': self.controller.get_urlbase().rstrip('/'),
             }
         data=[ """<span class="advene:annotation" advene:annotation="%s" advene:presentation="%s">""" % (self.annotation.id, ':'.join(self.presentation)) ]
 
@@ -179,9 +175,9 @@ class AnnotationPlaceholder:
         context.fill()
 
         pixbuf = gtk.gdk.pixbuf_new_from_data(
-            surface.get_data(), 
-            gtk.gdk.COLORSPACE_RGB, True, 8, 
-            surface.get_width(), surface.get_height(), 
+            surface.get_data(),
+            gtk.gdk.COLORSPACE_RGB, True, 8,
+            surface.get_width(), surface.get_height(),
             surface.get_stride())
         return pixbuf
 
@@ -202,7 +198,7 @@ class AnnotationPlaceholder:
                 pixbuf=png_to_pixbuf(self.annotation.rootPackage.imagecache[self.annotation.fragment.begin],
                                      width=self.width)
         elif 'timestamp' in self.presentation:
-            # Generate only a timestamp 
+            # Generate only a timestamp
             pixbuf = self.render_text(helper.format_time(self.annotation.fragment.begin))
         elif 'content' in self.presentation:
             # Display text
@@ -218,7 +214,7 @@ class AnnotationPlaceholder:
 
 class AnnotationTypePlaceholder:
     """AnnotationType representation.
-    
+
     presentation is a list of presentation modalities. Values include:
     * list : display as a bulleted list
     * transcription : display as a transcription
@@ -245,7 +241,7 @@ class AnnotationTypePlaceholder:
 
     def process_enclosed_tags(self, typ, tag, attr=None):
         """Process enclosed data.
-        
+
         FIXME: what should we do here?
         """
         if typ == 'start' and tag == 'span':
@@ -272,15 +268,11 @@ class AnnotationTypePlaceholder:
             return """<span advene:error="Non-existent annotation type"></span>"""
 
         ctx=self.controller.build_context(self.annotationtype)
-        try:
-            urlbase=self.controller.server.urlbase.rstrip('/')
-        except AttributeError:
-            urlbase='http://localhost:1234'
         d={
             'id': self.annotationtype.id,
-            'href': urlbase + ctx.evaluateValue('here/absolute_url'),
+            'href': self.controller.get_urlbase() + ctx.evaluateValue('here/absolute_url'),
             'content': self.controller.get_title(self.annotationtype),
-            'urlbase': urlbase,
+            'urlbase': self.controller.get_urlbase().rstrip('/'),
             }
         data=[ """<span class="advene:annotationtype" advene:annotationtype="%s" advene:presentation="%s">""" % (self.annotationtype.id, ':'.join(self.presentation)) ]
 
@@ -297,7 +289,7 @@ class AnnotationTypePlaceholder:
 	<strong tal:content="a/content/data">Nom</strong>
 </a><br />
 <span>(<span tal:content="a/fragment/formatted/begin">Debut</span> - <span tal:content="a/fragment/formatted/end">Fin</span>)</span>
-<br /> 
+<br />
 </div>""" % d)
         elif 'transcription' in self.presentation:
             data.append("""<span class="transcript" tal:repeat="a package/annotationTypes/%(id)s/annotations/sorted" tal:attributes="annotation-id a/id">
@@ -359,9 +351,9 @@ class AnnotationTypePlaceholder:
         context.fill()
 
         pixbuf = gtk.gdk.pixbuf_new_from_data(
-            surface.get_data(), 
-            gtk.gdk.COLORSPACE_RGB, True, 8, 
-            surface.get_width(), surface.get_height(), 
+            surface.get_data(),
+            gtk.gdk.COLORSPACE_RGB, True, 8,
+            surface.get_width(), surface.get_height(),
             surface.get_stride())
         return pixbuf
 
@@ -552,14 +544,14 @@ class HTMLContentHandler (ContentHandler):
 
     def class_parser(self, tag, attr):
         if attr['class'] == 'advene:annotation':
-            a=AnnotationPlaceholder(annotation=None, 
-                                    controller=self.controller, 
+            a=AnnotationPlaceholder(annotation=None,
+                                    controller=self.controller,
                                     update_pixbuf=self.editor.update_pixbuf)
             self.placeholders.append(a)
             return a.parse_html(tag, attr)
         elif attr['class'] == 'advene:annotationtype':
-            a=AnnotationTypePlaceholder(annotationtype=None, 
-                                        controller=self.controller, 
+            a=AnnotationTypePlaceholder(annotationtype=None,
+                                        controller=self.controller,
                                         update_pixbuf=self.editor.update_pixbuf)
             self.placeholders.append(a)
             return a.parse_html(tag, attr)
@@ -616,7 +608,7 @@ class HTMLContentHandler (ContentHandler):
         return None
 
     def contextual_popup(self, ctx=None, menu=None):
-        """Popup a contextual menu for the given context.        
+        """Popup a contextual menu for the given context.
         """
         if menu is None:
             menu=gtk.Menu()
@@ -655,7 +647,7 @@ class HTMLContentHandler (ContentHandler):
                     new_menuitem(_("Show timestamp only"), select_presentation, ap, ['timestamp', 'link'])
                     new_menuitem(_("Show content only"), select_presentation, ap, ['content', 'link'])
                     new_menuitem(_("Show snapshot only"), select_presentation, ap, ['snapshot', 'link'])
-                    
+
                     new_menuitem(_("Show overlayed timestamp"), select_presentation, ap, ['timestamp', 'snapshot', 'link'])
                     new_menuitem(_("Show overlayed content"), select_presentation, ap, ['overlay', 'link'])
                 elif getattr(ap, 'annotationtype', None) is not None:
diff --git a/lib/advene/gui/plugins/shotvalidation.py b/lib/advene/gui/plugins/shotvalidation.py
index 561bafc..1299ecd 100644
--- a/lib/advene/gui/plugins/shotvalidation.py
+++ b/lib/advene/gui/plugins/shotvalidation.py
@@ -53,7 +53,10 @@ class ShotValidation(AdhocView):
 
     def set_annotationtype(self, at):
         self._annotationtype=at
-        self.annotations = sorted(at.annotations, key=lambda a: a.fragment.begin)
+        if self._annotationtype is not None:
+            self.annotations = sorted(at.annotations, key=lambda a: a.fragment.begin)
+        else:
+            self.annotations = []
         self.current_index.set_upper(len(self.annotations))
 
     def get_annotationtype(self):
@@ -79,7 +82,7 @@ class ShotValidation(AdhocView):
             # Update annotation type, which will trigger an update of self.annotations
             self.annotationtype = annotation.type
             self.current_index.emit('value-changed')
-        
+
     def goto_current(self, *p):
         """Select annotation containing current player time.
         """
@@ -135,7 +138,7 @@ class ShotValidation(AdhocView):
         if self.index > 0:
             self.index = self.index - 1
         return True
-            
+
     def validate_and_next(self, new):
         """Validate the current annotation and display the next one.
         """
@@ -150,7 +153,7 @@ class ShotValidation(AdhocView):
                 self.controller.split_annotation(annotation, new)
                 self.message(_("Split annotation #%(current)d into #%(current)d and #%(next)d") % {
                         'current': i + 1,
-                        'next': i + 2 
+                        'next': i + 2
                         })
             else:
                 self.message(_("Cannot split annotation #%(current)d: out of bounds.") % {
@@ -185,7 +188,7 @@ class ShotValidation(AdhocView):
             return gtk.Label((_("No annotations to adjust")))
 
         vbox = gtk.VBox()
-                    
+
         self.title_widget = gtk.Label()
         vbox.pack_start(self.title_widget)
 
@@ -205,7 +208,7 @@ class ShotValidation(AdhocView):
                 # End: display a message ?
                 pass
         self.current_index.connect('value-changed', handle_index_change)
-        
+
         vbox.add(self.selector.widget)
 
         # Button bar
diff --git a/lib/advene/gui/plugins/tracepreview.py b/lib/advene/gui/plugins/tracepreview.py
index 3b749e6..9514036 100644
--- a/lib/advene/gui/plugins/tracepreview.py
+++ b/lib/advene/gui/plugins/tracepreview.py
@@ -48,7 +48,7 @@ except ImportError:
     # fail the module loading, and use them as a guard in register()
     goocanvas=None
     Group=object
-    
+
 def register(controller):
     if goocanvas is None:
         controller.log("Cannot register TracePreview: the goocanvas python module does not seem to be available.")
@@ -118,7 +118,8 @@ class TracePreview(AdhocView):
 
     def scroll_win(self):
         a = self.sw.get_vadjustment()
-        a.value=a.upper
+        if a:
+            a.value=a.upper
         return
 
     def receive(self, trace, event=None, operation=None, action=None):
@@ -163,7 +164,7 @@ class TracePreview(AdhocView):
                     if l:
                         a=l[-1]
                     else:
-                        a=self.controller.gui.open_adhoc_view(name='tracetimeline', destination='fareast')
+                        a=self.controller.gui.open_adhoc_view(name='tracetimeline', destination='fareast')
                     g = a.find_group(obj_evt)
                     if g is not None:
                         a.zoom_on(canvas_item=g)
@@ -194,19 +195,19 @@ class TracePreview(AdhocView):
                     entetestr = "%s : %s" % (ev_time, "Event not described")
                 if obj_evt.concerned_object['id']:
                     entetestr = entetestr + ' (%s)' % obj_evt.concerned_object['id']
-            elif obj_evt.name.find('Player')>=0:
-                txt = obj_evt.content
-                if txt != None:
-                    # content should be of the form pos_bef \n pos
-                    #but if it is an old trace, we only got pos
-                    poss = txt.split('\n')
-                    if len(poss)>1 and obj_evt.name.find('PlayerSet')>=0:
-                        txt=poss[1]
-                    else:
-                        txt=poss[0]
-                else:
-                    txt = time.strftime("%H:%M:%S", time.gmtime(obj_evt.movietime/1000))
-                entetestr = "%s : %s %s" % (ev_time, self.incomplete_operations_names[obj_evt.name], txt)
+            elif obj_evt.name.find('Player')>=0:
+                txt = obj_evt.content
+                if txt != None:
+                    # content should be of the form pos_bef \n pos
+                    #but if it is an old trace, we only got pos
+                    poss = txt.split('\n')
+                    if len(poss)>1 and obj_evt.name.find('PlayerSet')>=0:
+                        txt=poss[1]
+                    else:
+                        txt=poss[0]
+                else:
+                    txt = time.strftime("%H:%M:%S", time.gmtime(obj_evt.movietime/1000))
+                entetestr = "%s : %s %s" % (ev_time, self.incomplete_operations_names[obj_evt.name], txt)
             else:
                 comp = ''
                 if obj_evt.concerned_object['type'] == Annotation:
@@ -264,8 +265,8 @@ class TracePreview(AdhocView):
                         ( ('pixmaps', 'traces', 'stop.png')))
             elif te.find('Activation')>=0:
                 pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
-                    ( ('pixmaps', 'traces', 'web.png')), 20,20)
-            else:
+                    ( ('pixmaps', 'traces', 'web.png')), 20,20)
+            else:
                 pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'error.png')), 20,20)
                 print 'No icon for %s' % te
@@ -316,18 +317,18 @@ class TracePreview(AdhocView):
                         anchor = gtk.ANCHOR_CENTER,
                         font = "Sans 5")
             else:
-                # no concerned object, we are in an action of navigation
-    
-                txt = obj_evt.content
-                if txt != None:
-                    # content should be of the form pos_bef \n pos
-                    #but if it is an old trace, we only got pos
-                    poss = txt.split('\n')
-                    if len(poss)>1 and obj_evt.name.find('PlayerSet')>=0:
-                        txt=poss[1]
-                    else:
-                        txt=poss[0]
-                else:
+                # no concerned object, we are in an action of navigation
+
+                txt = obj_evt.content
+                if txt != None:
+                    # content should be of the form pos_bef \n pos
+                    #but if it is an old trace, we only got pos
+                    poss = txt.split('\n')
+                    if len(poss)>1 and obj_evt.name.find('PlayerSet')>=0:
+                        txt=poss[1]
+                    else:
+                        txt=poss[0]
+                else:
                     txt = time.strftime("%H:%M:%S", time.gmtime(obj_evt.movietime/1000))
                 goocanvas.Text (parent = objg,
                         text = txt,
diff --git a/lib/advene/gui/plugins/tracetimeline.py b/lib/advene/gui/plugins/tracetimeline.py
index 64fccbd..e07d1e0 100644
--- a/lib/advene/gui/plugins/tracetimeline.py
+++ b/lib/advene/gui/plugins/tracetimeline.py
@@ -134,7 +134,7 @@ class TraceTimeline(AdhocView):
         self.timefactor = 10.0/824
         self.autoscroll = True
         self.auto_refresh = False # de/activate autorefresh
-        self.auto_refresh_keep_100 = False # autorefresh keep 100% ratio 
+        self.auto_refresh_keep_100 = False # autorefresh keep 100% ratio
         self.auto_refresh_delay = 1000 # time between 2 refresh in ms
         self.ar_tag = None # autorefresh id value
         self.links_locked = False
@@ -146,7 +146,7 @@ class TraceTimeline(AdhocView):
         for i, act in enumerate(self.tracer.tracemodel['actions']):
             self.cols[act] = (None, None)
             c=gdk2intrgba(gtk.gdk.color_parse(self.tracer.colormodel['actions'][act]))
-            self.context_cols[act]=(i, c, None) 
+            self.context_cols[act]=(i, c, None)
         self.col_width = 80
         self.colspacing = 5
         self.active_trace = self.tracer.trace
@@ -155,22 +155,22 @@ class TraceTimeline(AdhocView):
         self.populate_head_canvas()
         self.realize_id = self.widget.connect_after('realize', self.widget_realized)
         self.widget.show_all()
-        
+
 
     def widget_realized(self, w):
-        w.disconnect(self.realize_id)
+        w.disconnect(self.realize_id)
         #self.receive(self.active_trace)
         self.tracer.register_view(self)
         self.refresh()
 
     def select_trace(self, trace):
         """Change the selected trace, reinitializing the current display.
-        
+
         Specific display values are stored in self.display_values for each opened trace.
-        
+
         @type trace: advene.plugins.tracebuilder.Trace
         @param trace: the trace to display
-        
+
         """
         if isinstance(trace, (int, long)):
             # Interpret it as an index into the self.tracers.traces
@@ -236,9 +236,9 @@ class TraceTimeline(AdhocView):
         self.quicksearch_entry.set_text(_('Search'))
         def do_search(button, options):
             """Execute a search query in the active trace.
-            
+
             Result is added to the selector as a new trace.
-            
+
             @type options: list
             @param options: a list containing the different options for the search query (see tracebuilder for more infos)
             """
@@ -280,14 +280,14 @@ class TraceTimeline(AdhocView):
         toolbox.set_style(gtk.TOOLBAR_ICONS)
         #toolbox.set_icon_size(gtk.ICON_SIZE_MENU)
         #mainbox.pack_start(toolbox, expand=False)
-        
-       
+
+
         htb = gtk.HBox()
-        htb.pack_start(toolbox, expand=True)      
+        htb.pack_start(toolbox, expand=True)
         htb.pack_start(self.search_box, expand=False)
-        
+
         mainbox.pack_start(htb, expand=False)
-        
+
         c = len(self.cols)
         self.context_canvasX = c*(self.context_col_width+self.context_colspacing) + 5 # 1+4 for select square
 
@@ -296,7 +296,7 @@ class TraceTimeline(AdhocView):
         self.context_canvas = goocanvas.Canvas()
         self.context_canvas.set_bounds (0, 0, self.context_canvasX, self.context_canvasY)
         self.context_canvas.set_size_request(self.context_canvasX, -1)
-        
+
         def context_resize(w, alloc):
             """Adapt context canvas on resize (it should always cover the entire allocated space)
             """
@@ -306,7 +306,7 @@ class TraceTimeline(AdhocView):
                 self.context_canvas.set_bounds(0,0,self.context_canvasX, self.context_canvasY)
                 self.context_update_time()
         self.context_canvas.connect('size-allocate', context_resize)
-        
+
         hbt.pack_start(self.context_canvas, expand=False)
         hbt.pack_start(gtk.VSeparator(), expand=False)
         hbt.pack_start(bx, expand=True)
@@ -340,9 +340,9 @@ class TraceTimeline(AdhocView):
         self.docgroup = DocGroup(controller=self.controller, canvas=self.doc_canvas, name="Nom du film", x = 15, y=10, w=self.doc_canvas_X-30, h=self.doc_canvas_Y-25, fontsize=8, color_c=0x00000050)
         self.canvas.connect('button-press-event', self.canvas_clicked)
         self.canvas.connect('button-release-event', self.canvas_release)
-        
+
         def canvas_resize(w, alloc):
-            """Adapt the main canvas, head canvas and the drawing (Evengroups, marks, lines) according to the new allocated space.                
+            """Adapt the main canvas, head canvas and the drawing (Evengroups, marks, lines) according to the new allocated space.
             """
             if abs(self.canvasX-(alloc.width-20)) < 5:
                 # resize every 5 pixels
@@ -377,11 +377,11 @@ class TraceTimeline(AdhocView):
                 self.now_line.props.width *= ratio
 
         self.head_canvas.connect('size-allocate', canvas_resize)
-        
+
         def doc_canvas_resize(w, alloc):
             """Adapt the doc canvas to the new allocated space and redraw the doc group
             """
-            # FIXME : maybe we should not delete and recreate it 
+            # FIXME : maybe we should not delete and recreate it
             # as we can just move it as everything else :D
             #redraw doc_canvas
             self.doc_canvas_X = alloc.width
@@ -394,7 +394,7 @@ class TraceTimeline(AdhocView):
             self.docgroup.redraw(self.active_trace)
         self.doc_canvas.connect('size-allocate', doc_canvas_resize)
         scrolled_win.add(self.canvas)
-        
+
         def show_tooltip(w, x, y, km, tooltip):
             """Show a tooltip according to the item under the cursor
             """
@@ -408,8 +408,8 @@ class TraceTimeline(AdhocView):
             return False
         scrolled_win.set_has_tooltip(True)
         scrolled_win.connect("query-tooltip", show_tooltip)
-        
-        
+
+
         timeline_box.pack_start(gtk.HSeparator(), expand=False, fill=False)
         timeline_box.add(scrolled_win)
 
@@ -443,7 +443,7 @@ class TraceTimeline(AdhocView):
         b.set_tooltip_text(_('Toggle link mode'))
         toolbox.insert(b, -1)
         b.connect('clicked', self.toggle_link_mode)
-        
+
         def open_trace(b):
             """Open a trace file, add it to the trace selector and make it active
             """
@@ -466,12 +466,12 @@ class TraceTimeline(AdhocView):
         btnar.set_label('')
         btnar.connect('clicked', self.toggle_auto_refresh)
         toolbox.insert(btnar, -1)
-        
+
 
         s=gtk.SeparatorToolItem()
         s.set_draw(True)
         toolbox.insert(s, -1)
-        
+
         b=gtk.ToolButton(stock_id=gtk.STOCK_OPEN)
         b.set_tooltip_text(_('Open an existing trace'))
         toolbox.insert(b, -1)
@@ -488,16 +488,16 @@ class TraceTimeline(AdhocView):
         btnopt.set_label('')
         #btnopt.connect('clicked', open_options)
         toolbox.insert(btnopt, -1)
-        
-        
-        
+
+
+
         self.inspector = Inspector(self.controller)
         bx.pack2(self.inspector)
 
 
         def on_background_scroll(widget, event):
-            """Manage scrolling event on timeline. 
-            
+            """Manage scrolling event on timeline.
+
             Zoom if <ctrl> is pressed.
             Horizontal scrolling if <shift> is pressed.
             Vertical scrolling if nothing special.
@@ -541,7 +541,7 @@ class TraceTimeline(AdhocView):
 
         def on_background_motion(widget, event):
             """Manage background motion when left button is clicked.
-            
+
             if <shift> is pressed, draw a selection frame
             if nothing is pressed, drag the canvas
             """
@@ -569,7 +569,7 @@ class TraceTimeline(AdhocView):
             if self.sel_frame:
                 self.sel_frame.remove()
                 self.sel_frame=None
-            
+
             if not self.drag_coordinates:
                 self.drag_coordinates=(event.x_root, event.y_root)
                 self.widget.get_parent_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.DIAMOND_CROSS))
@@ -592,7 +592,7 @@ class TraceTimeline(AdhocView):
 
         def zoom_out(w, center_v=None):
             """Manage zoom when zooming out.
-            
+
             Verify that we won't too much dezoom.
             @type center_v: number
             @param center_v: the time value on which we need to center
@@ -602,13 +602,13 @@ class TraceTimeline(AdhocView):
                 self.zoom_100(w)
             else:
                 self.zoom_at_ratio(w, 0.8, center_v)
-                
+
         btnm.connect('clicked', zoom_out)
 
         btnp.connect('clicked', self.zoom_at_ratio, 1.25, None)
 
         btnc.connect('clicked', self.zoom_100)
-        
+
         bx.set_position(self.canvasX+15)
         return mainbox
 
@@ -618,11 +618,11 @@ class TraceTimeline(AdhocView):
         h = self.canvas.get_allocation().height
         ratio = (h-1.0)/self.canvasY
         self.zoom_at_ratio(w, ratio, None)
-    
+
 
     def refresh_time(self):
         """Do a refresh of the timeline, extending the canvas to the current time.
-        
+
         Called every x seconds to refresh continuously.
         Keep 100% aspect ratio if self.auto_refresh_keep_100
         """
@@ -641,7 +641,7 @@ class TraceTimeline(AdhocView):
             self.zoom_100()
         self.context_update_time()
         return self.auto_refresh
-        
+
     def toggle_auto_refresh(self, w=None):
         """Activate or deactivate autorefresh
         """
@@ -655,7 +655,7 @@ class TraceTimeline(AdhocView):
             #should change an icon button
             source_remove(self.ar_tag)
             print "auto_refresh stopped"
-        
+
     def show_inspector(self):
         """Expand inspector zone to show it
         """
@@ -702,7 +702,7 @@ class TraceTimeline(AdhocView):
 
     def zoom_at_ratio(self, w=None, ratio=1, center_v=None):
         """Recalculate the canvas bounds and each element of the drawing according to the y zoom ratio
-        
+
         If a center value is given, keep centering the canvas on this value
         """
         h = self.canvas.get_allocation().height
@@ -711,7 +711,7 @@ class TraceTimeline(AdhocView):
             print "TraceTimeline: minimal zoom is 1s"
             return
         va=self.sw.get_vadjustment()
-        
+
         if center_v is None:
             vc = (va.value + h/2.0) * self.timefactor
         else:
@@ -720,7 +720,7 @@ class TraceTimeline(AdhocView):
         self.timefactor *= 1.0/ratio
         self.obj_l *= ratio
         self.extend_canvas()
-        
+
         root = self.canvas.get_root_item()
         n=root.get_n_children()-1
         while n>=0:
@@ -751,7 +751,7 @@ class TraceTimeline(AdhocView):
             va.value=va.lower
         elif va.value>va.upper-va.page_size:
             va.value=va.upper-va.page_size
-            
+
     def zoom_on(self, w=None, canvas_item=None):
         """Zoom on an item (ObjGroup or EventGroup) in the canvas
         """
@@ -780,14 +780,14 @@ class TraceTimeline(AdhocView):
                 i+=1
             for c in egl:
                 #we take max / min Y from eventgroups only because when resizing objgroupsmight also disappear...
-                
+
                 y_mi = c.rect.get_bounds().y1
                 y_ma = c.rect.get_bounds().y2 #y1 + c.rect.props.height why that ???
                 if min_y == -1:
                     min_y = y_mi
                 min_y = min(min_y, y_mi)
                 max_y = max(max_y, y_ma)
-        
+
         h = self.canvas.get_allocation().height
         # if h < 10, the widget is not fully drawn yet, we must use an arbitrary value
         if h < 10:
@@ -798,11 +798,11 @@ class TraceTimeline(AdhocView):
         vc = self.timefactor * ((min_y + max_y) / 2.0) * (va.upper / self.canvasY)
         self.zoom_at_ratio(None, rapp, vc)
 
-        
+
     #FIXME : types / schema / views
     def recreate_item(self, w=None, obj_group=None):
         """Allows to recreate a deleted Advene object from the trace.
-        
+
         Currently only works for annotations and relations
         """
         c = obj_group.operation.content
@@ -875,7 +875,7 @@ class TraceTimeline(AdhocView):
 
     def goto(self, w=None, time=None):
         """Navigate in the movie to the time
-        
+
         @type time: number
         @param time: the timestamp we want to reach
         """
@@ -888,7 +888,7 @@ class TraceTimeline(AdhocView):
 
     def canvas_release(self, w, ev):
         """Manage the release of mouse buttons on the canvas
-            
+
         Remove the selection frame, and zoom if <shift> pressed
         """
         if self.sel_frame:
@@ -920,7 +920,7 @@ class TraceTimeline(AdhocView):
 
     def canvas_clicked(self, w, ev):
         """Manage mouse buttons on the canvas
-        
+
         Draw a selection frame if <shift> pressed and left click
         Display contextual menu according to under the cursor items if right click
         """
@@ -1011,7 +1011,7 @@ class TraceTimeline(AdhocView):
 
     def toggle_lock(self, w=None):
         """Draw or remove links between items
-        
+
         Blocked object handlers accordingly
         """
         self.links_locked = not self.links_locked
@@ -1056,7 +1056,7 @@ class TraceTimeline(AdhocView):
         tinc = 60
         if not self.timemarks:
             wa = self.canvas.get_parent().get_allocation().height
-            
+
             if wa > 100:
                 tinc = wa/5.0 # 5 marks in the widget
             else: # when closing and reopening the view
@@ -1087,7 +1087,7 @@ class TraceTimeline(AdhocView):
                         y = t-5,
                         width = -1,
                         anchor = gtk.ANCHOR_W,
-                        fill_color_rgba=0x121212FF, 
+                        fill_color_rgba=0x121212FF,
                         font = "Sans 7")
             a.props.tooltip=txt
             a=goocanvas.Text(parent = mgroup,
@@ -1142,10 +1142,10 @@ class TraceTimeline(AdhocView):
 
     def refresh(self, center = None):
         """Refresh the drawing of the main canvas
-        
+
         Remove everything on the main canvas and redraw them
         Should only be used when opening the view / changing selected trace
-        
+
         @type center: number
         @param center: the time value on which we need to center
         """
@@ -1156,8 +1156,9 @@ class TraceTimeline(AdhocView):
         # 4/ redraw each action
         # 5/ recenter the canvas according to previous centering
         # 6/ reselect selected item
-        # 7/ re-deactive locked_links
+        # 7/ re-deactivate locked_links
         # center : the timestamp on which the display needs to be centered
+        #print "----------------REFRESH START-----------------"
         if self.links_locked:
             self.toggle_lock()
             self.inspector.clean()
@@ -1185,10 +1186,8 @@ class TraceTimeline(AdhocView):
             elif lvl == 'actions':
                 for i in self.active_trace.levels[lvl]:
                     self.receive_int(self.active_trace, event=None, operation=None, action=i)
-                    # operations are processed within the action    
-       
+                    # operations are processed within the action
         self.draw_marks()
-
         if center:
             va=self.sw.get_vadjustment()
             va.value = center/self.timefactor-va.page_size/2.0
@@ -1198,14 +1197,15 @@ class TraceTimeline(AdhocView):
                 va.value=va.upper-va.page_size
         self.context_update_time()
         self.widget.get_parent_window().set_cursor(None)
+        #print "----------------REFRESH END-----------------"
         return
 
 
     def receive(self, trace, event=None, operation=None, action=None):
         """This function is called by the tracer to update the gui. It is registered in the trace when creating the class.
-        
+
         It should always return False to avoid 100% cpu consumption.
-        
+
         @type trace: advene.plugins.tracebuilder.Trace
         @param trace: the full trace to be managed
         @type event: advene.plugins.tracebuilder.Event
@@ -1215,7 +1215,6 @@ class TraceTimeline(AdhocView):
         @type action: advene.plugins.tracebuilder.Action
         @param action: the new or latest modified action
         """
-
         if self.active_trace == trace:
             self.receive_int(trace, event, operation, action)
         if not (event or operation or action):
@@ -1239,7 +1238,7 @@ class TraceTimeline(AdhocView):
         @param operation: the new or latest modified operation
         @type action: advene.plugins.tracebuilder.Action
         @param action: the new or latest modified action
-        
+
         @rtype: EventGroup
         @return: the newly created or updated EventGroup
         """
@@ -1248,18 +1247,22 @@ class TraceTimeline(AdhocView):
         if event and (event.name=='DurationUpdate' or event.name=='MediaChange'):
             #new film, update duration
             self.docgroup.changeMovielength(trace)
-        if operation:
-            # new operation, add it on docgroup
-            self.docgroup.addLine(operation.movietime)
         if (operation or event) and action is None:
             # no action changed, return
             return ev
+        if operation:
+            # new operation, add it on docgroup
+            self.docgroup.addLine(operation.movietime)
         if action is None:
             # no event, operation or action, this is a refresh query, redraw screen
             return ev
         h,l = self.cols[action.name]
+        #print "INIT %s" % l
+        if (l and not l.get_canvas()):
+            print "Tracetimeline : Synchronization between tracer and view lost - droping event"
+            #to avoid crashing when tracebuilder is calling receive of a tracetimeline being closed
+            return
         color = h.color_c
-        
         if l and l.event == action:
             # action corresponding to the last action of this type, update the drawing
             #calculating old length
@@ -1278,6 +1281,7 @@ class TraceTimeline(AdhocView):
             #update already existing / not existing items before adding the new one
             l.update_objs(blocked=self.links_locked)
             ev=l
+            #print "UPD %s" % ev
         else:
             #totally new action
             # getting x bound from header
@@ -1292,6 +1296,7 @@ class TraceTimeline(AdhocView):
                 self.draw_marks()
             ev = EventGroup(self.link_mode, self.controller, self.inspector, self.canvas, self.docgroup, None, action, x, y, length, self.col_width, self.obj_l, 14, color, self.links_locked)
             self.cols[action.name]=(h,ev)
+            #print "NEW %s" % ev
         self.update_lines()
         self.canvas.show()
         if self.autoscroll:
@@ -1318,10 +1323,10 @@ class TraceTimeline(AdhocView):
 
     def find_group(self, observed):
         """Find an avent Group according to an action or operation
-        
+
         @type observed: advene.plugins.tracebuilder.Operation or advene.plugins.tracebuilder.Action
         @param observed: an action or operation to find
-        
+
         @rtype: EventGroup
         @return: an event group containing the operation or corresponding to the action
         """
@@ -1341,7 +1346,7 @@ class TraceTimeline(AdhocView):
 
     """Context related functions
     """
-    
+
     def context_clean(self):
         """Clean the context canvas
         """
@@ -1352,10 +1357,10 @@ class TraceTimeline(AdhocView):
         self.context_frame = None
         self.context_t_max = self.canvasY*self.timefactor + self.active_trace.start
         for act in self.context_cols:
-            (i, c, toto) = self.context_cols[act] 
-            self.context_cols[act]=(i, c, None) 
-        
-        
+            (i, c, toto) = self.context_cols[act]
+            self.context_cols[act]=(i, c, None)
+
+
     def context_update_time(self):
         """Update the context canvas according to current time
         """
@@ -1372,10 +1377,10 @@ class TraceTimeline(AdhocView):
                     l.props.y *= ratio
                     l.props.height *= ratio
         self.context_update_sel_frame()
-        
+
     def context_add_line(self, action):
         """Add a line corresponding to the action in the context canvas.
-        
+
         @type action: advene.plugins.tracebuilder.Action
         @param action: the action to add to the context
         """
@@ -1393,10 +1398,10 @@ class TraceTimeline(AdhocView):
                                         line_width = 1.0)
         self.context_cols[action.name]=(i,color,l)
         return
-    
+
     def context_update_line(self, action=None):
         """ Update a line corresponding to the action in the context canvas.
-        
+
         @type action: advene.plugins.tracebuilder.Action
         @param action: the action to update in the context
         """
@@ -1406,7 +1411,7 @@ class TraceTimeline(AdhocView):
         y2 = float(action.time[1]-self.active_trace.start)*self.context_canvasY/(self.context_t_max-self.active_trace.start)
         line.props.height = y2-y1
         return
-        
+
     def context_draw_sel_frame(self):
         """Draw the selection frame on context canvas, corresponding to what is displayed in the trace timeline
         """
@@ -1469,7 +1474,7 @@ class HeadGroup (Group):
 
         def change_name(self, name):
             """Change the name of the head group.
-            
+
             @type name: string
             @param name: new name, 5 max chars
             """
@@ -1479,7 +1484,7 @@ class HeadGroup (Group):
 
         def change_font(self, font):
             """Change the font of the head group.
-            
+
             @type font: string
             @param font: new font, whithout size
             """
@@ -1530,12 +1535,12 @@ class EventGroup (Group):
 
     def newRect(self, color, color_c):
         """Create a new rectangle for the group
-        
+
         @type color: number
         @param color: stroke color rgb
         @type color_c: number
         @param color_c: fill color rgba
-        
+
         @rtype: goocanvas.Rect
         @return: the new rect
         """
@@ -1550,7 +1555,7 @@ class EventGroup (Group):
 
     def addObj(self, op, blocked):
         """Add objgroups to the group, if they can be displayed.
-        
+
         @type op: advene.plugins.tracebuilder.Operation
         @param op: the operation to add as obj
         @type blocked: bool
@@ -1559,7 +1564,7 @@ class EventGroup (Group):
         x=self.rect.get_bounds().x1+3
         ratio = float((self.event.time[1]-self.event.time[0]))/self.rect.props.height
         y = (op.time-self.event.time[0]) / ratio + self.rect.get_bounds().y1
-        
+
         l = self.rect.props.height
         w = self.rect.props.width
         ol = min(l-3, float(w)/2 - 3)
@@ -1569,7 +1574,7 @@ class EventGroup (Group):
         true_y=y
         if self.event.time[1] == op.time:
             #last operation, need to change y to display it
-            y = y - ol -5         
+            y = y - ol -5
         #FIXME fontsize according to object length with a min of 6 and a max of ??,
         self.fontsize = ol/3
         self.ol = ol
@@ -1579,13 +1584,13 @@ class EventGroup (Group):
         self.objs.append( ObjGroup(self.link_mode, self.controller, self.inspector, self.canvas, self.dg, x, y, ol/2, self.fontsize, op, blocked))
         if true_y != y:
             #need to store true y value
-            self.objs[-1].true_y = true_y 
+            self.objs[-1].true_y = true_y
 
-        return        
+        return
 
     def update_objs(self, ratiox=1,ratioy=1, blocked=False):
         """Update Objgroups belonging to the group
-        
+
         @type ratiox: number
         @param ratiox: the x zoom ratio
         @type ratioy: number
@@ -1603,7 +1608,7 @@ class EventGroup (Group):
             self.objs=[]
             if self.commentMark:
                 self.removeCommentMark()
-            
+
         else:
             if not self.objs:
                 self.drawObjs(blocked)
@@ -1623,7 +1628,7 @@ class EventGroup (Group):
                     c.fontsize = 2*c.r/3
                     if self.event.time[1] == c.operation.time:
                         #last operation, need to change y to display it
-                        c.y = self.rect.get_bounds().y2 - ol -3  
+                        c.y = self.rect.get_bounds().y2 - ol -3
                     if c.y + ol >= self.rect.get_bounds().y2-2:
                         # not in the rectangle
                         to_be_removed.append(c)
@@ -1636,7 +1641,7 @@ class EventGroup (Group):
                 for c in to_be_removed:
                     self.objs.remove(c)
                     c.remove()
-                for op in self.event.operations:      
+                for op in self.event.operations:
                     #obj may not already exist for this op
                     if op not in already_existing_op:
                         self.addObj(op, blocked)
@@ -1645,10 +1650,10 @@ class EventGroup (Group):
                 self.commentMark.props.y *= ratioy
             elif self.event.comment!='':
                 self.addCommentMark()
-                
+
     def drawObjs(self, blocked):
         """Add objgroup for each operation of the action of the group.
-        
+
         @type blocked: bool
         @param blocked: True if handlers should be blocked at creation
         """
@@ -1772,10 +1777,10 @@ class ObjGroup (Group):
             self.text.props.x = self.x +3 * self.r + 3
             self.text.props.font = "Sans %s" % str(self.fontsize)
 
-            
+
     def update_lines(self):
         """Update lines if the group is the selected item
-        """ 
+        """
         if self.center_sel:
             self.remove_rels()
             self.add_rels()
@@ -1823,12 +1828,12 @@ class ObjGroup (Group):
                     og.deselect()
             i+=1
         return
-          
+
     def add_rels(self):
         """Add relations lines to this group, according to the link mode and raises group to top.
         """
         r = self.canvas.get_root_item()
-        lg=[]        
+        lg=[]
         i=0
         while i<r.get_n_children():
             eg = r.get_child(i)
@@ -1904,7 +1909,7 @@ class ObjGroup (Group):
 
     def toggle_rels(self, on):
         """Toggle relations display
-        
+
         @type on: bool
         @param on: True to display rels
         """
@@ -1916,7 +1921,7 @@ class ObjGroup (Group):
         else:
             self.add_rels()
         return
-        
+
 
     def select(self):
         """Highlight selection.
@@ -1993,7 +1998,7 @@ class ObjGroup (Group):
 
     def newText(self):
         """ Create a new text representation of the advene object
-        
+
         @rtype: goocanvas.Text
         @return: the newly created text
         """
@@ -2086,7 +2091,7 @@ class Inspector (gtk.VBox):
 
     def fillWithItem(self, item):
         """Fill the inspector with informations concerning an object
-            
+
         @type item: ObjGroup
         @param item: the advene object to display informations about
         """
@@ -2103,7 +2108,7 @@ class Inspector (gtk.VBox):
 
     def fillWithAction(self, action=None, op=None):
         """Fill the inspector with informations concerning an action
-        
+
         @type action: EventGroup
         @param action: the action to display informations about
         @type op: advene.plugins.tracebuilder.Operation
@@ -2121,7 +2126,7 @@ class Inspector (gtk.VBox):
 
     def select_operation(self, op):
         """Fill the inspector with an operation informations.
-        
+
         @type op: advene.plugins.tracebuilder.Operation
         @param op: the operation to display informations about
         """
@@ -2130,7 +2135,7 @@ class Inspector (gtk.VBox):
 
     def addOperations(self, op_list=[], op_sel=None):
         """Used to pack operation boxes in the inspector
-        
+
         @type op_list: list
         @param op_list: list of operations to display
         @type op_sel: advene.plugins.tracebuilder.Operation
@@ -2145,7 +2150,7 @@ class Inspector (gtk.VBox):
 
     def addOperation(self, obj_evt=None, sel=False):
         """Build a box to display an operation
-        
+
         @type obj_evt: advene.plugins.tracebuilder.Operation
         @param obj_evt : operation to build a box for
         @type sel: bool
@@ -2310,7 +2315,7 @@ class Inspector (gtk.VBox):
         box = gtk.EventBox()
         def box_pressed(w, event, id):
             """Edit the element if double clicked
-            
+
             @type id: advene id
             @param id: the id of the package element to edit
             """
@@ -2372,7 +2377,7 @@ class DocGroup (Group):
 
     def newRect(self):
         """Create a new rectangle to represent the movie.
-        
+
         @rtype: goocanvas.Rect
         @return: a new rectangle
         """
@@ -2456,7 +2461,7 @@ class DocGroup (Group):
     #FIXME
     def redraw(self, trace=None, action=None, obj=None):
         """Remove everything on the doc canvas and redraw everything.
-        
+
         @type trace: advene.plugins.tracebuilder.Trace
         @param trace: the trace to redraw
         @type action: advene.plugins.tracebuilder.Action
@@ -2483,7 +2488,7 @@ class DocGroup (Group):
 
     def changeMarks(self, action=None, obj=None):
         """Change "v" signs to show selected items
-        
+
         @type action: advene.plugins.tracebuilder.Action
         @param action: the action for which to draw marks
         @type obj: ObjGroup
@@ -2502,7 +2507,7 @@ class DocGroup (Group):
 
     def addMark(self, time=0, color=0x444444ff):
         """Add "v" signs to show selected items
-        
+
         @type time: number
         @param time: the time at which to draw mark
         @type color: number
@@ -2542,7 +2547,7 @@ class DocGroup (Group):
 
     def addLine(self, time=0, color=0x00000050, offset=0):
         """Add a line to represent a movie access time.
-        
+
         @type time: number
         @param time: the time at which to draw line
         @type color: number
diff --git a/lib/advene/gui/plugins/videoplayer.py b/lib/advene/gui/plugins/videoplayer.py
index 10bc67b..a8968fd 100644
--- a/lib/advene/gui/plugins/videoplayer.py
+++ b/lib/advene/gui/plugins/videoplayer.py
@@ -25,6 +25,7 @@ import os
 import advene.core.config as config
 from advene.gui.views import AdhocView
 import advene.gui.util.dialog as dialog
+from advene.gui.util import get_pixmap_button, enable_drag_source, decode_drop_parameters
 
 name="Videoplayer view plugin"
 
@@ -39,7 +40,7 @@ class VideoPlayer(AdhocView):
     def __init__(self, controller=None, uri=None, parameters=None):
         super(VideoPlayer, self).__init__(controller=controller)
         self.close_on_package_load = False
-        self.contextual_actions = [ 
+        self.contextual_actions = [
             (_("Save view"), self.save_view),
             (_("Save default options"), self.save_default_options),
             (_("Select video file"), self.select_file),
@@ -47,16 +48,18 @@ class VideoPlayer(AdhocView):
         self.controller = controller
         self.registered_rules = []
 
+        # Offset in ms
+        self.offset = 0
+        self.uri = uri
+
         # Load options
         opt, arg = self.load_parameters(parameters)
         self.options.update(opt)
         a=dict(arg)
-        if uri is None and a.has_key('uri'):
-            uri=a['uri']
-
-        self.uri = uri
-        # Offset in ms
-        self.offset = 0
+        if uri is None and 'uri' in a:
+            self.uri=a['uri']
+        if 'offset' in a:
+            self.offset=long(a['offset'])
 
         self.widget = self.build_widget()
         if self.uri is None:
@@ -68,7 +71,7 @@ class VideoPlayer(AdhocView):
         """Add the event handlers.
         """
         self.controller.register_slave_player(self)
-        self.registered_rules.extend( 
+        self.registered_rules.extend(
             controller.event_handler.internal_rule(event=name,
                                                    method=self.synchronize)
             for name in ('PlayerStart',
@@ -128,6 +131,9 @@ class VideoPlayer(AdhocView):
             self.set_file(fname)
         return True
 
+    def set_offset(self, offset):
+        self.offset_spin.set_value(offset)
+
     def set_file(self, fname):
         if self.player is None:
             return True
@@ -176,6 +182,20 @@ class VideoPlayer(AdhocView):
             position = position + self.offset
         self.player.update_status(status, position)
 
+    def drag_received_cb(self, widget, context, x, y, selection, targetType, time):
+        refTime = None
+        if targetType == config.data.target_type['annotation']:
+            sources = [ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+            if sources:
+                # use first annotation as reference
+                refTime = sources[0].fragment.begin
+        elif targetType == config.data.target_type['timestamp']:
+            data = decode_drop_parameters(selection.data)
+            refTime = long(data['timestamp'])
+        if refTime is not None:
+            self.set_offset(refTime - self.controller.player.current_position_value)
+        return True
+
     def _popup(self, *p):
         """Open a popup window for temporary anchoring the player video.
         """
@@ -236,20 +256,28 @@ class VideoPlayer(AdhocView):
             return True
 
         ti = gtk.ToolItem()
-        spin = gtk.SpinButton(gtk.Adjustment(value = self.offset,
+        self.offset_spin = gtk.SpinButton(gtk.Adjustment(value = self.offset,
                                                          lower = - 24 * 60 * 60 * 1000,
                                                          upper =   24 * 60 * 60 * 1000,
                                                          step_incr = 1000 / 25,
                                                          page_incr = 1000))
-        spin.get_adjustment().connect('value-changed', offset_changed)
-        ti.add(spin)
-        spin.set_tooltip_text(_("Offset in ms"))
+        self.offset_spin.get_adjustment().connect('value-changed', offset_changed)
+        ti.add(self.offset_spin)
+        self.offset_spin.set_tooltip_text(_("Offset in ms"))
         self.toolbar.insert(ti, -1)
 
         self.label = gtk.Label()
         self.label.set_alignment(0, 0)
         self.label.modify_font(pango.FontDescription("sans 10"))
 
+        timestamp_button = get_pixmap_button('set-to-now.png')
+        timestamp_button.set_tooltip_text(_("Drag and drop to get player time"))
+        enable_drag_source(timestamp_button, lambda: long(self.player.get_stream_information().position), self.controller)
+        # Cannot use a gtk.ToolButton since it cannot be drag_source
+        ti = gtk.ToolItem()
+        ti.add(timestamp_button)
+        self.toolbar.insert(ti, -1)
+
         black=gtk.gdk.color_parse('black')
         white=gtk.gdk.color_parse('white')
         eb=gtk.EventBox()
@@ -267,5 +295,14 @@ class VideoPlayer(AdhocView):
 
         self.drawable.connect_after('realize', self.register_drawable)
 
+        # Accept annotation/timestamp drop, to adjust time offset
+        vbox.connect('drag-data-received', self.drag_received_cb)
+        vbox.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
+                           gtk.DEST_DEFAULT_HIGHLIGHT |
+                           gtk.DEST_DEFAULT_ALL,
+                           config.data.drag_type['annotation'] +
+                           config.data.drag_type['timestamp'],
+                           gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
+
         vbox.show_all()
         return vbox
diff --git a/lib/advene/gui/popup.py b/lib/advene/gui/popup.py
index c49f58e..1dfc76e 100644
--- a/lib/advene/gui/popup.py
+++ b/lib/advene/gui/popup.py
@@ -504,12 +504,17 @@ class Menu:
             self.controller.gui.loop_on_annotation_gui(ann, goto=True)
             return True
 
+        def save_snapshot(menu, ann):
+            self.controller.gui.save_snapshot_as(ann.fragment.begin)
+            return True
+
         add_item(_("Go to..."), self.goto_annotation, element)
         add_item(_("Loop"), loop_on_annotation, element)
         add_item(_("Duplicate"), self.duplicate_annotation, element)
         item = gtk.MenuItem(_("Highlight"), use_underline=False)
         item.set_submenu(self.activate_submenu(element))
         menu.append(item)
+        add_item(_("Save snapshot..."), save_snapshot, element)
         if 'montagerenderer' in self.controller.generic_features:
             add_item(_("Extract video fragment"), self.extract_fragment, element)
 
@@ -645,7 +650,7 @@ class Menu:
         add_item(_('Create a new resource file...'), self.create_element, ResourceData, element)
         add_item(_('Insert a new resource file...'), self.insert_resource_data, element)
         add_item(_('Insert a new resource directory...'), self.insert_resource_directory, element)
-        print "Menu for", id(element), id(self.controller.package.resources), element.id
+        #print "Menu for", id(element), id(self.controller.package.resources), element.id
 
         if element.resourcepath == '':
             # Resources root
@@ -731,7 +736,7 @@ class Menu:
             self.controller.gui.edit_element(v)
             return True
         add_item(_('Create a comment view'), lambda i: create_static(element))
-        add_item(_('Generate a caption dynamic view'), lambda i: self.create_dynamic_view(element))
+        add_item(_('Generate a caption dynamic view...'), lambda i: self.create_dynamic_view(element))
         add_item(_('Display as transcription'), lambda i: self.controller.gui.open_adhoc_view('transcription', source='here/annotationTypes/%s/annotations/sorted' % element.id))
         add_item(_('Display annotations in table'), lambda i: self.controller.gui.open_adhoc_view('table', elements=element.annotations))
         add_item(_('Export to another format...'), lambda i: self.controller.gui.export_element(element))
@@ -740,9 +745,9 @@ class Menu:
         add_item(None)
         add_item(_('Select a color'), self.pick_color, element)
         add_item(_('Create a new annotation...'), self.create_element, Annotation, element)
-        add_item(_('Delete all annotations...'), self.delete_elements, element, element.annotations)
-        add_item(_('Renumber annotations'), self.renumber_annotations, element)
-        add_item(_('Adjust annotation bounds'), lambda m, at: self.controller.gui.adjust_annotationtype_bounds(at), element)
+        add_item(_('Delete all annotations'), self.delete_elements, element, element.annotations)
+        add_item(_('Renumber annotations...'), self.renumber_annotations, element)
+        add_item(_('Adjust annotation bounds...'), lambda m, at: self.controller.gui.adjust_annotationtype_bounds(at), element)
         add_item('')
         add_item(_('%d annotations(s) - statistics') % len(element.annotations), self.display_stats, element)
 
diff --git a/lib/advene/gui/views/__init__.py b/lib/advene/gui/views/__init__.py
index 5474ee2..2eb22c4 100644
--- a/lib/advene/gui/views/__init__.py
+++ b/lib/advene/gui/views/__init__.py
@@ -31,7 +31,7 @@ from advene.model.content import Content
 from advene.gui.util import dialog, get_pixmap_button
 import advene.util.helper as helper
 
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 class AdhocView(object):
     """Implementation of the generic parts of AdhocViews.
diff --git a/lib/advene/gui/views/accumulatorpopup.py b/lib/advene/gui/views/accumulatorpopup.py
index e8371cd..4a62009 100644
--- a/lib/advene/gui/views/accumulatorpopup.py
+++ b/lib/advene/gui/views/accumulatorpopup.py
@@ -51,7 +51,7 @@ class AccumulatorPopup(AdhocView):
     tooltip = ("Stack a limited number of popup widgets")
 
     def __init__ (self, controller=None, autohide=False, size=3,
-                  vertical=False, scrollable=False):
+                  vertical=False, scrollable=False, parameters=None):
         super(AccumulatorPopup, self).__init__(controller=controller)
 
         self.close_on_package_load = False
diff --git a/lib/advene/gui/views/activebookmarks.py b/lib/advene/gui/views/activebookmarks.py
index d00739f..66d9c25 100644
--- a/lib/advene/gui/views/activebookmarks.py
+++ b/lib/advene/gui/views/activebookmarks.py
@@ -773,7 +773,7 @@ class ActiveBookmark(object):
                 end=None
             else:
                 end=long(e)
-            content=urllib.unquote(c)
+            content=urllib.unquote(c).decode('utf-8', 'ignore')
 
         self.annotation=annotation
         if annotation is not None:
@@ -914,7 +914,7 @@ class ActiveBookmark(object):
         return ":".join( (ident,
                           str(self.begin),
                           str(self.end),
-                          urllib.quote(self.content) ) )
+                          urllib.quote(self.content.encode('utf-8')) ) )
 
     def as_html(self):
         if self.annotation is not None:
diff --git a/lib/advene/gui/views/annotationdisplay.py b/lib/advene/gui/views/annotationdisplay.py
index c576a9a..b28007b 100644
--- a/lib/advene/gui/views/annotationdisplay.py
+++ b/lib/advene/gui/views/annotationdisplay.py
@@ -19,13 +19,14 @@
 """Module displaying the contents of an annotation.
 """
 
+import gobject
 import gtk
 from gettext import gettext as _
 
 import advene.core.config as config
 from advene.gui.views import AdhocView
 import advene.util.helper as helper
-from advene.gui.util import overlay_svg_as_pixbuf
+from advene.gui.util import overlay_svg_as_pixbuf, get_pixmap_button
 from advene.model.annotation import Annotation
 from advene.model.schema import AnnotationType
 from advene.gui.widget import TimestampRepresentation
@@ -207,27 +208,93 @@ class AnnotationDisplay(AdhocView):
         h.pack_start(self.label['end'], expand=False)
         v.pack_start(h, expand=False)
 
+        def handle_motion(widget, event):
+            if isinstance(self.annotation, Annotation):
+                i = self.label['image']
+                i.epsilon = self.annotation.fragment.duration / widget.allocation.width
+                v = self.annotation.fragment.begin + i.epsilon * 20 * int(event.x / 20)
+                i.set_value(v)
+            return True
+
+        def handle_leave(widget, event):
+            if isinstance(self.annotation, Annotation):
+                i = self.label['image']
+                i.epsilon = config.data.preferences['bookmark-snapshot-precision']
+                i.set_value(self.annotation.fragment.begin)
+            return True
+
         fr = gtk.Expander ()
         fr.set_label(_("Screenshot"))
         self.label['image'] = TimestampRepresentation(-1, self.controller, width=config.data.preferences['drag-snapshot-width'], epsilon=config.data.preferences['bookmark-snapshot-precision'], visible_label=False)
+        self.label['image'].add_events(gtk.gdk.POINTER_MOTION_MASK
+                                       | gtk.gdk.LEAVE_NOTIFY_MASK)
+        self.label['image'].connect('motion-notify-event', handle_motion)
+        self.label['image'].connect('leave-notify-event', handle_leave)
+
         fr.add(self.label['image'])
         fr.set_expanded(True)
         v.pack_start(fr, expand=False)
 
-        f=gtk.Frame(label=_("Contents"))
+        # Contents frame
+        def handle_ok(b):
+            b.hide()
+            if isinstance(self.annotation, Annotation):
+                self.controller.notify('EditSessionStart', element=self.annotation, immediate=True)
+                self.annotation.content.data = self.label['contents'].get_text()
+                self.controller.notify("AnnotationEditEnd", annotation=self.annotation)
+                self.controller.notify('EditSessionEnd', element=self.annotation)
+            return True
+
+        hbox = gtk.HBox()
+        hbox.pack_start(gtk.Label(_("Contents")), expand=False)
+        ok_button=get_pixmap_button('small_ok.png', handle_ok)
+        ok_button.set_relief(gtk.RELIEF_NONE)
+        ok_button.set_tooltip_text(_("Validate"))
+        ok_button.set_no_show_all(True)
+        hbox.pack_start(ok_button, expand=False)
+
+        f=gtk.Frame()
+        f.set_label_widget(hbox)
+
+        def contents_modified(buf):
+            if buf.get_modified():
+                if not buf.ignore_modified:
+                    ok_button.show()
+            else:
+                ok_button.hide()
+            return True
+
         c=self.label['contents']=gtk.TextView()
         c.set_wrap_mode(gtk.WRAP_WORD_CHAR)
+        c.get_buffer().ignore_modified = False
+        c.get_buffer().connect('modified-changed', contents_modified)
         sw=gtk.ScrolledWindow()
         sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
         sw.add(c)
         def set_text(widget, t):
             b=widget.get_buffer()
+            b.ignore_modified = True
             b.delete(*b.get_bounds())
             b.set_text(t)
+            b.set_modified(False)
+            b.ignore_modified = False
             return True
-        c.set_text=set_text.__get__(c)
+        c.set_text = set_text.__get__(c)
+        def get_text(widget):
+            b=widget.get_buffer()
+            return b.get_text(*b.get_bounds())
+        c.get_text = get_text.__get__(c)
         self.sw['contents']=sw
 
+        def handle_keypress(widget, event):
+            if (event.keyval == gtk.keysyms.Return
+                and event.state & gtk.gdk.CONTROL_MASK
+                and widget.get_buffer().get_modified()):
+                handle_ok(ok_button)
+                return True
+            return False
+        c.connect('key-press-event', handle_keypress)
+
         image=self.label['imagecontents']=gtk.Image()
 
         swi=gtk.ScrolledWindow()
diff --git a/lib/advene/gui/views/caption.py b/lib/advene/gui/views/caption.py
index f1d9e88..df2f202 100644
--- a/lib/advene/gui/views/caption.py
+++ b/lib/advene/gui/views/caption.py
@@ -31,7 +31,7 @@ class CaptionView(AdhocView):
     view_id = 'caption'
     tooltip = _("Display a text caption below the video output")
 
-    def __init__(self, controller=None):
+    def __init__(self, controller=None, parameters=None):
         super(CaptionView, self).__init__(controller=controller)
         self.close_on_package_load = False
         self.contextual_actions = ()
diff --git a/lib/advene/gui/views/checker.py b/lib/advene/gui/views/checker.py
new file mode 100644
index 0000000..95372be
--- /dev/null
+++ b/lib/advene/gui/views/checker.py
@@ -0,0 +1,114 @@
+#
+# Advene: Annotate Digital Videos, Exchange on the NEt
+# Copyright (C) 2008 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+#
+# Advene 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.
+#
+# Advene 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 Advene; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+"""Transcription view.
+"""
+
+import itertools
+import gtk
+
+from gettext import gettext as _
+
+from advene.gui.views import AdhocView
+from advene.gui.views.table import AnnotationTable
+import advene.gui.views.table
+
+name="Checker view plugin"
+
+def register(controller):
+    controller.register_viewclass(CheckerView)
+
+class CheckerView(AdhocView):
+    view_name = _("Checker")
+    view_id = 'checker'
+    tooltip = _("Check various package properties")
+
+    def __init__ (self, controller=None, parameters=None):
+        super(CheckerView, self).__init__(controller=controller)
+        self.close_on_package_load = False
+        self.contextual_actions = (
+            )
+        self.controller=controller
+        self.options = {
+            }
+
+        opt, arg = self.load_parameters(parameters)
+        self.options.update(opt)
+        self.widget=self.build_widget()
+        self.update_model()
+
+    def overlapping_annotations(self):
+        """Return a list of overlapping annotations for each annotation type.
+
+        It returns 2 sets of elements: the ones which have a potentialy
+        bogus begin time, and the ones with a potentialy bogus end
+        time.
+        """
+        begins = set()
+        ends = set()
+        for at in self.controller.package.annotationTypes:
+            for a, b in itertools.izip(at.annotations, at.annotations[1:]):
+                if a.fragment.end > b.fragment.begin:
+                    ends.add(a)
+                    begins.add(b)
+        return begins, ends
+
+    def update_model(self):
+        begins, ends = self.overlapping_annotations()
+        overlap = list(begins.union(ends))
+
+        def custom_data(b):
+            if b is None:
+                return (str, str)
+            begin, end = None, None
+            if b in begins:
+                begin = "#ff6666"
+            if b in ends:
+                end = "#ff6666"
+            return (begin, end)
+        self.overlap_table.set_elements(overlap, custom_data)
+        self.overlap_table.model.set_sort_column_id(advene.gui.views.table.COLUMN_TYPE, gtk.SORT_ASCENDING)
+
+    def build_widget(self):
+        mainbox = gtk.VBox()
+
+        mainbox.pack_start(gtk.Label(_("List of possible issues in the current package")), expand=False)
+
+        notebook=gtk.Notebook()
+        notebook.set_tab_pos(gtk.POS_TOP)
+        notebook.popup_disable()
+        mainbox.add(notebook)
+
+        table=AnnotationTable(controller=self.controller)
+        self.overlap_table = table
+
+        # Set colors
+        table.columns['begin'].add_attribute(table.columns['begin'].get_cell_renderers()[0],
+                                             'cell-background',
+                                             advene.gui.views.table.COLUMN_CUSTOM_FIRST)
+        table.columns['end'].add_attribute(table.columns['end'].get_cell_renderers()[0],
+                                           'cell-background',
+                                           advene.gui.views.table.COLUMN_CUSTOM_FIRST + 1)
+
+        notebook.append_page(table.widget, gtk.Label(_("Overlapping")))
+
+        return mainbox
+
+    def update_annotation (self, annotation=None, event=None):
+        self.update_model()
+        return True
diff --git a/lib/advene/gui/views/finder.py b/lib/advene/gui/views/finder.py
index af9d353..2b5d18e 100644
--- a/lib/advene/gui/views/finder.py
+++ b/lib/advene/gui/views/finder.py
@@ -255,7 +255,7 @@ class ModelColumn(FinderColumn):
         vbox=gtk.VBox()
 
         sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_AUTOMATIC)
+        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
         vbox.add (sw)
 
         self.liststore = self.get_liststore()
@@ -673,24 +673,25 @@ class Finder(AdhocView):
         return True
 
     def scroll_event(self, widget=None, event=None):
-        if event.state & gtk.gdk.SHIFT_MASK:
-            a=widget.get_hadjustment()
-            if event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_RIGHT:
-                val = a.value + a.step_increment
-                if val > a.upper - a.page_size:
-                    val = a.upper - a.page_size
-                if val != a.value:
-                    a.value = val
-                    a.value_changed ()
-                return True
-            elif event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_LEFT:
-                val = a.value - a.step_increment
-                if val < a.lower:
-                    val = a.lower
-                if val != a.value:
-                    a.value = val
-                    a.value_changed ()
-                return True
+        a=widget.get_hadjustment()
+        if ((event.direction == gtk.gdk.SCROLL_DOWN and event.state & gtk.gdk.SHIFT_MASK)
+            or event.direction == gtk.gdk.SCROLL_RIGHT):
+            val = a.value + a.step_increment
+            if val > a.upper - a.page_size:
+                val = a.upper - a.page_size
+            if val != a.value:
+                a.value = val
+                a.value_changed ()
+            return True
+        elif ((event.direction == gtk.gdk.SCROLL_UP and event.state & gtk.gdk.SHIFT_MASK)
+              or event.direction == gtk.gdk.SCROLL_LEFT):
+            val = a.value - a.step_increment
+            if val < a.lower:
+                val = a.lower
+            if val != a.value:
+                a.value = val
+                a.value_changed ()
+            return True
         return False
 
     def build_widget(self):
diff --git a/lib/advene/gui/views/html.py b/lib/advene/gui/views/html.py
index f707acb..1e0c4d8 100644
--- a/lib/advene/gui/views/html.py
+++ b/lib/advene/gui/views/html.py
@@ -223,7 +223,7 @@ class webkit_wrapper:
             self.notify(label=_("Title %s") % title)
 
         def _hover_link_cb(view, title, url):
-            
+
             if not (view and url):
                 url=''
             self.notify(label=url)
@@ -279,7 +279,7 @@ class webkit_wrapper:
         self.component=w
         s=gtk.ScrolledWindow()
         s.add(w)
-        
+
         return s
 
 class HTMLView(AdhocView):
@@ -287,7 +287,7 @@ class HTMLView(AdhocView):
     view_name = _("HTML Viewer")
     view_id = 'htmlview'
     tooltip = _("Embedded HTML widget")
-    def __init__ (self, controller=None, url=None):
+    def __init__ (self, controller=None, parameters=None, url=None):
         super(HTMLView, self).__init__(controller=controller)
         self.close_on_package_load = False
         self.component=None
diff --git a/lib/advene/gui/views/logwindow.py b/lib/advene/gui/views/logwindow.py
index 742d4f5..88a8eb6 100644
--- a/lib/advene/gui/views/logwindow.py
+++ b/lib/advene/gui/views/logwindow.py
@@ -43,7 +43,7 @@ class LogWindow(AdhocView):
     view_name = _("Links")
     view_id = 'linksview'
     tooltip = _("URL stack")
-    def __init__ (self, controller=None):
+    def __init__ (self, controller=None, parameters=None):
         super(LogWindow, self).__init__(controller=controller)
         self.close_on_package_load = False
         self.contextual_actions = (
diff --git a/lib/advene/gui/views/relation.py b/lib/advene/gui/views/relation.py
index 271d7aa..e022194 100755
--- a/lib/advene/gui/views/relation.py
+++ b/lib/advene/gui/views/relation.py
@@ -28,17 +28,17 @@ import gtk
 
 class RelationView:
     """Controller for the MVC representing a relation."""
-    def popup(self, button):
-        menu = advene.gui.popup.Menu(self, controller=self.controller)
-        menu.popup()
-        return True
-
-    def __init__(self, relation=None, controller=None):
+    def __init__(self, relation=None, controller=None, parameters=None):
         self.relation=relation
         self.controller=controller
         self.widget=self.build_widget()
         self.widget.connect('clicked', self.activate)
 
+    def popup(self, button):
+        menu = advene.gui.popup.Menu(self, controller=self.controller)
+        menu.popup()
+        return True
+
     def activate(self, button):
         print "Relation %s activated" % self.relation.id
         if self.controller:
diff --git a/lib/advene/gui/views/scroller.py b/lib/advene/gui/views/scroller.py
index 7a964d4..1bb30d1 100644
--- a/lib/advene/gui/views/scroller.py
+++ b/lib/advene/gui/views/scroller.py
@@ -28,7 +28,7 @@ import gtk
 class ScrollerView(AdhocView):
     view_name = _("Scroller")
     view_id = 'scroller'
-    def __init__(self, controller=None):
+    def __init__(self, controller=None, parameters=None):
         super(ScrollerView, self).__init__(controller=controller)
         self.close_on_package_load = False
         self.contextual_actions = ()
diff --git a/lib/advene/gui/views/singletonpopup.py b/lib/advene/gui/views/singletonpopup.py
index b28eac1..405ce18 100755
--- a/lib/advene/gui/views/singletonpopup.py
+++ b/lib/advene/gui/views/singletonpopup.py
@@ -31,7 +31,7 @@ class SingletonPopup(AdhocView):
     """
     view_name = _("SingletonPopup")
     view_id = 'singletonpopup'
-    def __init__ (self, controller=None, autohide=False):
+    def __init__ (self, controller=None, parameters=None, autohide=False):
         super(SingletonPopup, self).__init__(controller=controller)
         self.close_on_package_load = False
 
diff --git a/lib/advene/gui/views/table.py b/lib/advene/gui/views/table.py
index 8c18890..d0b6a6c 100644
--- a/lib/advene/gui/views/table.py
+++ b/lib/advene/gui/views/table.py
@@ -43,6 +43,7 @@ COLUMN_BEGIN_FORMATTED=7
 COLUMN_END_FORMATTED=8
 COLUMN_PIXBUF=9
 COLUMN_COLOR=10
+COLUMN_CUSTOM_FIRST=11
 
 name="Element tabular view plugin"
 
@@ -55,7 +56,7 @@ class AnnotationTable(AdhocView):
     view_id = 'table'
     tooltip=_("Display annotations in a table")
 
-    def __init__(self, controller=None, parameters=None, elements=None):
+    def __init__(self, controller=None, parameters=None, custom_data=None, elements=None):
         super(AnnotationTable, self).__init__(controller=controller)
         self.registered_rules = []
         self.close_on_package_load = False
@@ -66,8 +67,9 @@ class AnnotationTable(AdhocView):
         self.options={}
 
         self.mouseover_annotation = None
+        self.last_edited_path = None
 
-        self.model=self.build_model(elements)
+        self.model = self.build_model(elements, custom_data)
         self.widget = self.build_widget()
 
         self.registered_rules.append( controller.event_handler.internal_rule (event="SnapshotUpdate",
@@ -105,11 +107,18 @@ class AnnotationTable(AdhocView):
         store, paths=selection.get_selected_rows()
         return [ store.get_value (store.get_iter(p), COLUMN_ELEMENT) for p in paths ]
 
-    def build_model(self, elements):
+    def build_model(self, elements, custom_data=None):
         """Build the ListStore containing the data.
 
+        See set_element docstring for the custom_data method explanation.
         """
-        l=gtk.ListStore(object, str, str, str, long, long, str, str, str, gtk.gdk.Pixbuf, str)
+        if custom_data is not None:
+            custom = custom_data
+        else:
+            def custom(a):
+                return tuple()
+        args = (object, str, str, str, long, long, str, str, str, gtk.gdk.Pixbuf, str) + custom(None)
+        l=gtk.ListStore(*args)
         if not elements:
             return l
         for a in elements:
@@ -125,14 +134,42 @@ class AnnotationTable(AdhocView):
                            helper.format_time(a.fragment.end),
                            png_to_pixbuf(self.controller.package.imagecache[a.fragment.begin],
                                          height=32),
-                           self.controller.get_element_color(a),
-                           ) )
+                           self.controller.get_element_color(a)
+                           ) + custom(a),
+                          )
         return l
 
-    def set_elements(self, elements):
-        self.elements=elements
-        model=self.build_model(elements)
+    def set_elements(self, elements, custom_data=None):
+        """Use a new set of elements.
+
+        If custom_data is not None, then it is a function returning
+        tuples, that can be used to defined additional model columns.
+
+        When called with None as parameter, it must return a tuple
+        with the additional column types. It will be appended at the
+        end of the ListStore, in columns COLUMN_CUSTOM_FIRST,
+        COLUMN_CUSTOM_FIRST+1, etc.
+
+        When called with an annotation as parameter, it must return a
+        tuple with the appropriate values for the annotation in the
+        custom columns.
+        """
+        model=self.build_model(elements, custom_data)
         self.widget.treeview.set_model(model)
+        self.model = model
+        self.elements=elements
+        if self.last_edited_path is not None:
+            # We just edited an annotation. This update must come from
+            # it, so let us try to set the cursor position at the next element.
+            path = str(long(self.last_edited_path) + 1)
+            try:
+                self.model.get_iter(path)
+            except ValueError:
+                path = self.last_edited_path
+            self.widget.treeview.set_cursor(path,
+                                            focus_column=self.columns['content'],
+                                            start_editing=True)
+            self.last_edited_path = None
 
     def motion_notify_event_cb(self, tv, event):
         if not event.window is tv.get_bin_window():
@@ -170,6 +207,7 @@ class AnnotationTable(AdhocView):
         select.set_mode(gtk.SELECTION_MULTIPLE)
 
         tree_view.connect('button-press-event', self.tree_view_button_cb)
+        tree_view.connect('key-press-event', self.tree_view_key_cb)
         tree_view.connect('row-activated', self.row_activated_cb)
         tree_view.connect('motion-notify-event', self.motion_notify_event_cb)
         tree_view.connect('leave-notify-event', self.leave_notify_event_cb)
@@ -188,6 +226,24 @@ class AnnotationTable(AdhocView):
         columns['snapshot'].set_reorderable(True)
         tree_view.append_column(columns['snapshot'])
 
+        def cell_edited(cell, path_string, text):
+            it = self.model.get_iter_from_string(path_string)
+            if not it:
+                return
+            a = self.model.get_value (it, COLUMN_ELEMENT)
+            new_content = helper.title2content(text,
+                                               a.content.data,
+                                               a.type.getMetaData(config.data.namespace, "representation"))
+            if new_content is None:
+                self.log(_("Cannot update the annotation, its representation is too complex"))
+            elif a.content.data != new_content:
+                self.last_edited_path = path_string
+                self.controller.notify('EditSessionStart', element=a)
+                a.content.data = new_content
+                self.controller.notify('AnnotationEditEnd', annotation=a)
+                self.controller.notify('EditSessionEnd', element=a)
+            return True
+
         for (name, label, col) in (
             ('content', _("Content"), COLUMN_CONTENT),
             ('type', _("Type"), COLUMN_TYPE),
@@ -195,7 +251,12 @@ class AnnotationTable(AdhocView):
             ('end', _("End"), COLUMN_END_FORMATTED),
             ('duration', _("Duration"), COLUMN_DURATION),
             ('id', _("Id"), COLUMN_ID) ):
-            columns[name]=gtk.TreeViewColumn(label, gtk.CellRendererText(), text=col)
+            renderer = gtk.CellRendererText()
+            columns[name]=gtk.TreeViewColumn(label, renderer, text=col)
+            if name == 'content':
+                renderer.connect('edited', cell_edited)
+                renderer.props.editable = True
+
             columns[name].set_reorderable(True)
             columns[name].set_sort_column_id(col)
             tree_view.append_column(columns[name])
@@ -215,6 +276,9 @@ class AnnotationTable(AdhocView):
             columns[name].set_min_width(40)
         columns['content'].set_expand(True)
 
+        # Allow user classes to tweak behaviour
+        self.columns = columns
+
         # Drag and drop for annotations
         tree_view.drag_source_set(gtk.gdk.BUTTON1_MASK,
                                   config.data.drag_type['annotation']
@@ -245,6 +309,10 @@ class AnnotationTable(AdhocView):
         def drag_received_cb(widget, context, x, y, selection, targetType, time):
             """Handle the drop of an annotation type.
             """
+            if context.get_source_widget().is_ancestor(self.widget):
+                # Ignore drops from our own widget
+                return False
+
             if targetType == config.data.target_type['annotation']:
                 sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
                 if sources:
@@ -347,6 +415,17 @@ class AnnotationTable(AdhocView):
             return True
         return False
 
+    def tree_view_key_cb(self, widget=None, event=None):
+        if event.keyval == gtk.keysyms.Return and event.state & gtk.gdk.CONTROL_MASK:
+            # Control-return: goto annotation
+            nodes = self.get_selected_nodes ()
+            if len(nodes) == 1 and nodes[0] is not None:
+                ann = nodes[0]
+                self.controller.update_status (status="set", position=ann.fragment.begin)
+                self.controller.gui.set_current_annotation(ann)
+                return True
+        return False
+
     def tree_view_button_cb(self, widget=None, event=None):
         if not event.window is widget.get_bin_window():
             return False
@@ -405,10 +484,11 @@ class GenericTable(AdhocView):
         return [ store.get_value (store.get_iter(p), COLUMN_ELEMENT) for p in paths ]
 
     def set_elements(self, elements):
-        self.elements=elements
         model=self.build_model(elements)
         self.widget.treeview.set_model(model)
-        
+        self.model = model
+        self.elements=elements
+
     def build_model(self, elements):
         """Build the ListStore containing the data.
 
@@ -499,6 +579,10 @@ class GenericTable(AdhocView):
         def drag_received_cb(widget, context, x, y, selection, targetType, time):
             """Handle the drop of an annotation type.
             """
+            if context.get_source_widget().is_ancestor(self.widget):
+                # Ignore drops from our own widget
+                return False
+
             if targetType == config.data.target_type['annotation']:
                 sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
                 if sources:
diff --git a/lib/advene/gui/views/timeline.py b/lib/advene/gui/views/timeline.py
index 746a623..bd69a1a 100755
--- a/lib/advene/gui/views/timeline.py
+++ b/lib/advene/gui/views/timeline.py
@@ -21,10 +21,12 @@ import re
 import operator
 import cgi
 import struct
+import gobject
 import gtk
 import cairo
 import pango
 from gettext import gettext as _
+from threading import Lock
 
 # Advene part
 import advene.core.config as config
@@ -46,19 +48,13 @@ name="Timeline view plugin"
 def register(controller):
     controller.register_viewclass(TimeLine)
 
-# Temporary workaround to timeline update performance issue
-MAX_ANNOTATIONS=1500
-
-parsed_representation = re.compile(r'^here/content/parsed/([\w\d_\.]+)$')
-
 class QuickviewBar(gtk.HBox):
     def __init__(self, controller=None):
         gtk.HBox.__init__(self)
         self.controller=controller
         self.begin=gtk.Label()
         self.end=gtk.Label()
-        self.content=gtk.Label()
-        self.content.set_single_line_mode(True)
+        self.content=gtk.ProgressBar()
         self.content.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
 
         self.annotation=None
@@ -67,6 +63,12 @@ class QuickviewBar(gtk.HBox):
         self.pack_start(self.begin, expand=False)
         self.pack_start(self.end, expand=False)
 
+    def set_text(self, s, progress=0):
+        self.begin.set_text("")
+        self.end.set_text("")
+        self.content.set_text(s)
+        self.content.set_fraction(min(progress, 1.0))
+
     def set_annotation(self, a=None):
         if a is None:
             b=""
@@ -94,7 +96,8 @@ class QuickviewBar(gtk.HBox):
         self.annotation=a
         self.begin.set_text(b)
         self.end.set_text(e)
-        self.content.set_markup(u"<b>%s</b>" % c.replace('<', '<'))
+        self.content.set_text(c)
+        self.content.set_fraction(0)
 
 class TimeLine(AdhocView):
     """Representation of a set of annotations placed on a timeline.
@@ -120,8 +123,8 @@ class TimeLine(AdhocView):
     tooltip = _("Display annotations on a timeline")
 
     def __init__ (self, elements=None,
-                  minimum=None,
-                  maximum=None,
+                  minimum=0,
+                  maximum=0,
                   controller=None,
                   annotationtypes=None,
                   parameters=None):
@@ -145,8 +148,9 @@ class TimeLine(AdhocView):
             }
         self.controller=controller
 
-        self.registered_rules=[]
+        self.update_lock = Lock()
 
+        self.registered_rules=[]
         opt, arg = self.load_parameters(parameters)
         self.options.update(opt)
         ats=[]
@@ -180,58 +184,18 @@ class TimeLine(AdhocView):
         self.list = elements
         self.annotationtypes = annotationtypes
 
+        # package used when the update_model has been called from
+        # __init__. This is used to avoid a double initialization.
+        self.package_from_init = None
+
         self.current_marker = None
         self.current_marker_scale = None
+        self.layout = gtk.Layout ()
 
-        # Now that self.list is initialized, we reuse the l variable
-        # for various checks.
-        if elements is None:
-            elements = controller.package.annotations
-        # Initialize annotation types if needed
-        if self.annotationtypes is None:
-            if self.list is None:
-                # We display the whole package, so display also
-                # empty annotation types
-                l = len(self.controller.package.annotations)
-                if l > MAX_ANNOTATIONS:
-                    # There are too many annotations, causing
-                    # performance issues. Display only the first two
-                    # annotation types.
-                    self.annotationtypes = self.controller.package.annotationTypes[:2]
-                    self.dialog_too_many_annotations(l)
-                else:
-                    self.annotationtypes = list(self.controller.package.annotationTypes)
-            else:
-                # We specified a list. Display only the annotation
-                # types for annotations present in the set
-                self.annotationtypes = list(set([ a.type for a in self.list ]))
-
-        if minimum is None and maximum is None and controller is not None:
-            # No dimension. Get them from the controller.
-            duration = controller.cached_duration
-            if duration <= 0:
-                if controller.package.annotations:
-                    duration = max([a.fragment.end for a in elements])
-                else:
-                    duration = 0
-            minimum=0
-            maximum=duration
-
-        if minimum is None or maximum is None:
-            b, e = self.bounds ()
-            if minimum is None:
-                minimum = b
-            if maximum is None:
-                maximum = e
         self.minimum = minimum
         self.maximum = maximum
-
-        # Ensure that self.maximum > self.minimum
-        if self.maximum == self.minimum:
-            self.maximum = self.minimum + 10000
-
-        if self.minimum > self.maximum:
-            self.minimum, self.maximum = self.maximum, self.minimum
+        if not self.maximum:
+            self.update_min_max()
 
         if default_position is None:
             default_position=self.minimum
@@ -243,6 +207,8 @@ class TimeLine(AdhocView):
             'white': name2color('white'),
             }
 
+        self.locked_inspector = False
+
         def handle_autoscroll_combo(combo):
             self.options['autoscroll'] = combo.get_current_element()
             return True
@@ -270,13 +236,13 @@ class TimeLine(AdhocView):
         # How many units does a pixel represent ?
         # self.scale.value = unit by pixel
         # Unit = ms
-        self.scale = gtk.Adjustment (value=(self.maximum - self.minimum) / gtk.gdk.get_default_root_window().get_size()[0],
+        self.scale = gtk.Adjustment (value=((self.maximum - self.minimum) or 60 * 60 * 1000) / gtk.gdk.get_default_root_window().get_size()[0],
                                                 lower=5,
-                                                upper=36000,
-                                                step_incr=5,
-                                                page_incr=1000)
+                                                upper=sys.maxint,
+                                                step_incr=20,
+                                                page_incr=100)
         self.scale.connect('value-changed', self.scale_event)
-        self.scale.connect('changed', self.scale_event)
+        #self.scale.connect('changed', self.scale_event)
 
         # The same value in relative form
         self.fraction_adj = gtk.Adjustment (value=1.0,
@@ -290,7 +256,12 @@ class TimeLine(AdhocView):
         # Coordinates of the selected region.
         self.layout_selection=[ [None, None], [None, None] ]
 
-        self.layout = gtk.Layout ()
+        # Session-set variable: if we get a horizontal scroll signal,
+        # then we know that the device pointer for the session is able
+        # to do both (vertical and horizontal), and we can act
+        # accordingly.
+        self.can_do_horizontal_scroll = False
+
         self.layout.add_events( gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.BUTTON1_MOTION_MASK )
         self.scale_layout = gtk.Layout()
         self.scale_layout.height=0
@@ -341,43 +312,38 @@ class TimeLine(AdhocView):
         self.bookmarks_to_draw = []
 
         # Current position in units
-        self.current_position = minimum
+        self.current_position = self.minimum
 
         # Holds the ref. to a newly created annotation, so that its
-        # widget gets focus when it is created (cf  udpate_annotation)
+        # widget gets focus when it is created (cf  update_annotation)
         self.transmuted_annotation = None
         # Adjustment corresponding to the Virtual display
         # The page_size is the really displayed area
         self.adjustment = gtk.Adjustment ()
-        self.update_adjustment ()
-        self.adjustment.set_value(u2p(minimum, absolute=True))
 
         # Dictionary holding the vertical position for each type
         self.layer_position = {}
-
-        self.update_layer_position()
-
-        self.populate ()
-
-        self.draw_marks ()
-
         self.draw_current_mark()
         self.widget = self.get_full_widget()
-        self.update_legend_widget(self.legend)
 
         # Set default parameters (zoom) and refresh the legend widget
         # on the first expose signal
         def set_default_parameters(widget, event, zoom, pos, pane):
+            self.update_adjustment ()
+            self.adjustment.set_value(u2p(self.minimum, absolute=True))
             self.fraction_adj.value=zoom
             if pos >= self.minimum and pos <= self.maximum:
                 self.adjustment.set_value(u2p(pos, absolute=True))
-            self.resize_legend_widget(self.legend)
             # Set annotation inspector width, so that it does not auto-resize
             if pane is None:
                 w, h = self.widget.window.get_size()
                 pane=w - 160
             self.inspector_pane.set_position(pane)
+            # Check if display is limited
+            if self.minimum > 0 and self.maximum < self.controller.package.cached_duration:
+                self.limit_navtools.show()
             self.widget.disconnect(self.expose_signal)
+            self.update_model(from_init=True)
             return False
         # Convert values, that could be strings
         if default_position is not None:
@@ -388,7 +354,6 @@ class TimeLine(AdhocView):
         self.expose_signal=self.widget.connect('expose-event', set_default_parameters,
                                                default_zoom, default_position, pane_position)
 
-
     def get_save_arguments(self):
         arguments = [ ('annotation-type', at.id) for at in self.annotationtypes ]
         arguments.append( ('minimum', self.minimum ) )
@@ -415,10 +380,10 @@ class TimeLine(AdhocView):
         if self.bookmarks_to_draw:
             self.draw_bookmarks(layout, event)
         if self.options['display-all-relations']:
-            to_draw = [ (self.get_widget_for_annotation(r.members[0]), 
-                         self.get_widget_for_annotation(r.members[1]), 
-                         r) 
-                        for r in self.controller.package.relations ] 
+            to_draw = [ (self.get_widget_for_annotation(r.members[0]),
+                         self.get_widget_for_annotation(r.members[1]),
+                         r)
+                        for r in self.controller.package.relations ]
         else:
             to_draw = self.relations_to_draw
         if not to_draw:
@@ -538,52 +503,74 @@ class TimeLine(AdhocView):
         d.connect('response', handle_response)
         return True
 
-    def update_model(self, package=None, partial_update=False):
+    def update_min_max(self):
+        oldmax = self.maximum
+        self.minimum=0
+        self.maximum=0
+        duration = self.controller.cached_duration
+        if duration <= 0:
+            duration = self.bounds()[1]
+        if duration:
+            self.maximum = long(duration)
+
+        if not self.maximum:
+            # self.maximum == 0, so try to compute it
+            self.maximum = self.bounds()[1]
+
+        # Ensure that self.maximum > self.minimum
+        if self.maximum == self.minimum:
+            self.maximum = self.minimum + 10000
+
+        if self.minimum > self.maximum:
+            self.minimum, self.maximum = self.maximum, self.minimum
+
+        if self.maximum != oldmax and self.layout.window is not None:
+            # Reset to display whole timeline
+            (w, h) = self.layout.window.get_size()
+            self.scale.set_value( (self.maximum - self.minimum) / float(w) )
+
+    def update_model(self, package=None, partial_update=False, from_init=False):
         """Update the whole model.
 
         @param package: the package
         @type package: Package
-        @param update: it is only an update for the existing package, we do not need to rebuild everything
-        @param update: boolean
+        @param partial_update: it is only an update for the existing package, we do not need to rebuild everything
+        @param partial_update: boolean
         """
+        if not self.update_lock.acquire(False) or self.layout.window is None:
+            # An update is already ongoing or the layout is not realized yet
+            return
+
         if package is None:
             package = self.controller.package
 
+        if from_init:
+            if len(self.layout.get_children()) < 3:
+                self.package_from_init = package
+            else:
+                self.update_lock.release()
+                return
+        else:
+            if package == self.package_from_init:
+                # update_model is called on the same package as in the
+                # __init__ method. This means that is is a result of
+                # the PackageActivate, so do not update it twice. Just
+                # reset package_from_init to enable future updates (in
+                # case of mass-modification of the package: merging,
+                # import...)
+                self.package_from_init = None
+                self.update_lock.release()
+                return
+
+        self.update_min_max()
         if partial_update:
             pos=self.get_middle_position()
         else:
             # It is not just an update, do a full redraw
-            oldmax=self.maximum
-            self.minimum=0
-            self.maximum=0
-            try:
-                duration=package.cached_duration
-            except:
-                duration=0
-            if duration:
-                self.maximum = long(duration)
-
-            if not self.maximum:
-                # self.maximum == 0, so try to compute it
-                self.maximum = self.bounds()[1]
-
-            if self.maximum != oldmax:
-                # Reset to display whole timeline
-                (w, h)=self.layout.window.get_size()
-                self.scale.set_value( (self.maximum - self.minimum) / float(w) )
-
-            if self.list is None:
+            if self.annotationtypes is None or self.list is None:
                 # We display the whole package, so display also
                 # empty annotation types
-                l=len(self.controller.package.annotations)
-                if l > MAX_ANNOTATIONS:
-                    # There are too many annotations, causing
-                    # performance issues. Display only the first two
-                    # annotation types.
-                    self.annotationtypes = self.controller.package.annotationTypes[:2]
-                    self.dialog_too_many_annotations(l)
-                else:
-                    self.annotationtypes = list(self.controller.package.annotationTypes)
+                self.annotationtypes = list(self.controller.package.annotationTypes)
             else:
                 # We specified a list. Display only the annotation
                 # types for annotations present in the set
@@ -596,15 +583,17 @@ class TimeLine(AdhocView):
 
         self.layer_position.clear()
         self.update_layer_position()
-        self.populate()
 
         self.draw_marks()
-
         self.draw_current_mark()
 
-        self.update_legend_widget(self.legend)
-        self.legend.show_all()
-        self.fraction_event(widget=None)
+        def finalize_callback():
+            self.update_legend_widget(self.legend)
+            self.legend.show_all()
+            self.fraction_event(widget=None, forced_window_width=self.layout.window.get_size()[0])
+            self.update_lock.release()
+
+        self.populate(finalize_callback)
 
         if partial_update:
             self.set_middle_position(pos)
@@ -634,7 +623,9 @@ class TimeLine(AdhocView):
         self.update_model(self.controller.package, partial_update=True)
         return True
 
-    def set_annotation(self, a=None):
+    def set_annotation(self, a=None, force=False):
+        if not force and self.locked_inspector:
+            return
         self.quickview.set_annotation(a)
         for v in self._slave_views:
             m=getattr(v, 'set_annotation', None)
@@ -697,9 +688,32 @@ class TimeLine(AdhocView):
         return True
 
     def duration_update_handler(self, context, parameters):
+        """Handle DurationUpdate event.
+
+        There is a potential synchronization issue here: duration may
+        be updated while an update_model is already occuring. In this
+        case, the update_lock is held and the update_model call will
+        not do anything. However, we also will miss the correct update
+        of the timeline duration.
+
+        We should check the update_lock and if it is held, delay the
+        call to update_model intended to update the timeline duration.
+        """
         if self.maximum != long(context.globals['duration']):
-            # Need a refresh
-            self.update_model()
+            # Need a refresh.  It can happen while an update_model is
+            # already taking place. In this case, we have to wait
+            # until the update_model is done before doing our own update.
+            def duration_updated(d):
+                if not self.update_lock.locked():
+                    # There is a race possibility here. Let's assume
+                    # that it will be rare enough...
+                    self.refresh()
+                    return False
+                else:
+                    print "duration_updated timeout"
+                    # Try again at next timeout.
+                    return True
+            gobject.timeout_add(100, duration_updated, long(context.globals['duration']))
         return True
 
     def media_change_handler(self, context, parameters):
@@ -717,7 +731,7 @@ class TimeLine(AdhocView):
         # is kept.
         l=sorted( ( t
                     for t in ( (w, abs(w.mark - pos)) for w in self.scale_layout.get_children()
-                               if isinstance(w, gtk.Image) ) 
+                               if isinstance(w, gtk.Image) )
                     if t[1] <= epsilon and t[1] < abs(t[0].timestamp - pos) ),
                  key=operator.itemgetter(1))
         for t in l:
@@ -1334,19 +1348,19 @@ class TimeLine(AdhocView):
             bestdist = []
 
             mindist = (abs(sa[0].fragment.begin - da[0].fragment.begin)
-                       + abs(sa[0].fragment.end - da[0].fragment.end) 
-                       + abs((sa[0].fragment.end - sa[0].fragment.begin) 
+                       + abs(sa[0].fragment.end - da[0].fragment.end)
+                       + abs((sa[0].fragment.end - sa[0].fragment.begin)
                              - (da[0].fragment.end - da[0].fragment.begin)))
             bestdist.append(mindist)
             bestpath.append([])
             bestpath[0].append(0)
-            
+
             for j in range(1,len(sa)):
                 bestpath.append([])
                 bestpath[j].append(j)
 
                 dist = (abs(sa[j].fragment.begin - da[0].fragment.begin)
-                        + abs(sa[j].fragment.end - da[0].fragment.end) 
+                        + abs(sa[j].fragment.end - da[0].fragment.end)
                         + abs((sa[j].fragment.end - sa[j].fragment.begin)
                               - (da[0].fragment.end - da[0].fragment.begin)))
                 if dist < mindist:
@@ -1356,7 +1370,7 @@ class TimeLine(AdhocView):
                 else:
                     bestpath[j] = list(bestpath[j-1])
                     bestdist.append(bestdist[j-1] + dist)
-            
+
             for i in range(1,len(da)):
                 currentdist = 0
                 prevsubdist = 0
@@ -1364,14 +1378,14 @@ class TimeLine(AdhocView):
                 prevsubpath = []
                 for j in range(0,len(sa)):
                     dist = (abs(sa[j].fragment.begin - da[i].fragment.begin)
-                            + abs(sa[j].fragment.end - da[i].fragment.end) 
-                            + abs((sa[j].fragment.end - sa[j].fragment.begin) 
+                            + abs(sa[j].fragment.end - da[i].fragment.end)
+                            + abs((sa[j].fragment.end - sa[j].fragment.begin)
                                   - (da[i].fragment.end - da[i].fragment.begin)))
-                    
+
                     if j == 0:
                         currentpath = list(bestpath[0])
                         currentdist = bestdist[0]
-                        
+
                         bestpath[0].append(0)
                         bestdist[0] = bestdist[0] + dist
 
@@ -1379,10 +1393,10 @@ class TimeLine(AdhocView):
                         insdist = bestdist[j] + dist
                         deldist = bestdist[j-1] + dist
                         subdist = prevsubdist + dist*1.5
-                        
+
                         currentdist =  bestdist[j]
                         currentpath = list(bestpath[j])
-                        
+
                         if insdist < deldist :
                             if insdist < subdist:
                                 bestpath[j].append(j)
@@ -1398,7 +1412,7 @@ class TimeLine(AdhocView):
                         else:
                            bestpath[j] = list(bestpath[j-1])
                            bestdist[j] = deldist
-                    
+
                     prevsubdist = currentdist
                     prevsubpath = list(currentpath)
 
@@ -1426,13 +1440,13 @@ class TimeLine(AdhocView):
             for (label, action) in (
                 (_("Duplicate all annotations to type %s") % dest_title,
                  (copy_annotations, source, dest, False) ),
-                (_("Move all annotations to type %s") % dest_title, 
+                (_("Move all annotations to type %s") % dest_title,
                  (copy_annotations, source, dest, True) ),
-                (_("Duplicate all annotations matching a string to type %s") % dest_title, 
+                (_("Duplicate all annotations matching a string to type %s") % dest_title,
                  (copy_annotations_filtered, source, dest, False) ),
-                (_("Move all annotations matching a string to type %s") % dest_title, 
+                (_("Move all annotations matching a string to type %s") % dest_title,
                  (copy_annotations_filtered, source, dest, True) ),
-                (_("Align all annotation time codes using %s as reference.") % source_title, 
+                (_("Align all annotation time codes using %s as reference.") % source_title,
                  (DTWalign_annotations, source, dest, 'time', True) ),
                 (_("Align all annotation contents using %s as reference") % source_title,
                  (DTWalign_annotations, source, dest, 'content', True) ),
@@ -1541,6 +1555,10 @@ class TimeLine(AdhocView):
         """Handle button release on annotation widgets.
         """
         if event.button == 1 and getattr(widget, '_single_click_guard', None):
+            # Single click on an annotation -> lock inspector
+            self.set_annotation(annotation, force=True)
+            self.locked_inspector = True
+            self.locked_icon.show()
             self.controller.gui.set_current_annotation(annotation)
             # Goto annotation
             c=self.controller
@@ -1614,44 +1632,21 @@ class TimeLine(AdhocView):
         e.set_text(self.controller.get_title(annotation))
         e.set_activates_default(True)
 
-        def get_parsed_content(widget, ann):
-            """Return the appropriate data generated from the widget content.
-            """
-            rep=ann.type.getMetaData(config.data.namespace, "representation")
-            if rep is None or rep == '' or re.match('^\s+', rep):
-                r=unicode(widget.get_text())
-            else:
-                m=parsed_representation.match(rep)
-                if m:
-                    # We have a simple representation (here/content/parsed/name)
-                    # so we can update the name field.
-                    name=m.group(1)
-                    reg = re.compile('^' + name + '=(.+?)$', re.MULTILINE)
-                    if reg.search(ann.content.data):
-                        r = reg.sub(name + '=' + unicode(widget.get_text()).replace('\n', '\\n'), ann.content.data)
-                    else:
-                        # The key is not present, add it
-                        if ann.content.data:
-                            r = ann.content.data + "\n%s=%s" % (name,
-                                                                unicode(widget.get_text()).replace('\n', '\\n'))
-                        else:
-                            r = "%s=%s" % (name,
-                                           unicode(widget.get_text()).replace('\n', '\\n'))
-                else:
-                    self.controller.log("Cannot update the annotation, its representation is too complex")
-                    r=ann.content.data
-            return r
-
         def key_handler(widget, event, ann, cb, controller, close_eb):
             if event.keyval == gtk.keysyms.Return:
-                r=get_parsed_content(widget, ann)
-                if cb:
-                    cb('validate', ann)
-                if r != ann.content.data:
-                    self.controller.notify('EditSessionStart', element=ann, immediate=True)
-                    ann.content.data = r
-                    controller.notify('AnnotationEditEnd', annotation=ann)
-                    self.controller.notify('EditSessionEnd', element=ann)
+                r = helper.title2content(widget.get_text(),
+                                         ann.content.data,
+                                         ann.type.getMetaData(config.data.namespace, "representation"))
+                if r is None:
+                    self.controller.log(_("Cannot update the annotation, its representation is too complex"))
+                else:
+                    if cb:
+                        cb('validate', ann)
+                    if r != ann.content.data:
+                        self.controller.notify('EditSessionStart', element=ann, immediate=True)
+                        ann.content.data = r
+                        controller.notify('AnnotationEditEnd', annotation=ann)
+                        self.controller.notify('EditSessionEnd', element=ann)
                 close_eb(widget)
                 return True
             elif event.keyval == gtk.keysyms.Escape:
@@ -1662,14 +1657,19 @@ class TimeLine(AdhocView):
                 return True
             elif event.keyval == gtk.keysyms.Tab:
                 # Validate the current annotation and go to the previous/next one
-                r=get_parsed_content(widget, ann)
-                if cb:
-                    cb('validate', ann)
-                if r != ann.content.data:
-                    self.controller.notify('EditSessionStart', element=ann, immediate=True)
-                    ann.content.data = r
-                    controller.notify('AnnotationEditEnd', annotation=ann)
-                    self.controller.notify('EditSessionEnd', element=ann)
+                r = helper.title2content(widget.get_text(),
+                                         ann.content.data,
+                                         ann.type.getMetaData(config.data.namespace, "representation"))
+                if r is None:
+                    self.controller.log("Cannot update the annotation, its representation is too complex")
+                else:
+                    if cb:
+                        cb('validate', ann)
+                    if r != ann.content.data:
+                        self.controller.notify('EditSessionStart', element=ann, immediate=True)
+                        ann.content.data = r
+                        controller.notify('AnnotationEditEnd', annotation=ann)
+                        self.controller.notify('EditSessionEnd', element=ann)
                 # Navigate
                 b=ann.fragment.begin
                 if event.state & gtk.gdk.SHIFT_MASK:
@@ -1905,15 +1905,71 @@ class TimeLine(AdhocView):
         b.show_all()
         return b
 
-    def populate (self):
+    def populate (self, callback=None):
+        """Populate the annotations widget.
+
+        Since we do it asynchronously in the idle loop, the callback
+        can be used to execute actions at the end of the annotation
+        widgets creation.
+        """
         u2p = self.unit2pixel
         if self.list is None:
-            l=self.controller.package.annotations
+            l = self.controller.package.annotations
         else:
-            l=self.list
-
-        for annotation in l:
-            self.create_annotation_widget(annotation)
+            l = self.list
+
+        # Use a list so that the counter variable can be modified in
+        # the closure.
+        counter = [ 0 ]
+        count = 10
+        length = len(l)
+
+        #print '----------------------------------------- populate', length
+        #import traceback; traceback.print_stack()
+        if l:
+            old_position = self.inspector_pane.get_position()
+            self.inspector_pane.set_position(2)
+        def create_annotations(annotations, length):
+            i = counter[0]
+            if i < length:
+                self.quickview.set_text(_("Displaying %(count)d / %(total)d annotations...") % {
+                        'count': min(i + count, length),
+                        'total': length },
+                                        1.0 * (i+count) / length)
+                for a in annotations[i:i+count]:
+                    self.create_annotation_widget(a)
+                counter[0] += count
+                return True
+            else:
+                self.layout.thaw_child_notify()
+                if hasattr(self, 'quickview'):
+                    self.quickview.set_text(_("Displaying done."))
+                    self.locked_inspector = False
+                self.controller.gui.set_busy_cursor(False)
+                if old_position:
+                    self.inspector_pane.set_position(old_position)
+                else:
+                    # old_position was = 0, because its value was
+                    # obtained before the widget was realized. There
+                    # is a good chance that the value is now
+                    # available.
+                    if self.widget.window:
+                        self.inspector_pane.set_position(max((0, self.widget.window.get_size()[0] - 160)))
+                if callback:
+                    callback()
+                return False
+        if l:
+            self.layout.freeze_child_notify()
+            if hasattr(self, 'quickview'):
+                self.quickview.set_text(_("Displaying %(count)d / %(total)d annotations...") % {
+                        'count': count,
+                        'total': length },
+                                        1.0 * count / length)
+                self.locked_inspector = True
+            self.controller.gui.set_busy_cursor(True)
+            gobject.idle_add(create_annotations, l, length)
+        elif callback:
+            callback()
 
         self.layout.set_size (u2p (self.maximum - self.minimum),
                               max(self.layer_position.values() or (0,))
@@ -2011,7 +2067,7 @@ class TimeLine(AdhocView):
             """
             ic=self.controller.package.imagecache
             png=ic.get(widget.mark, epsilon=step/2)
-            if (png == ic.not_yet_available_image 
+            if (png == ic.not_yet_available_image
                 and 'async-snapshot' in self.controller.player.player_capabilities):
                 self.controller.update_snapshot(widget.mark)
             else:
@@ -2150,24 +2206,24 @@ class TimeLine(AdhocView):
     def layout_drag_received(self, widget, context, x, y, selection, targetType, time):
         """Handle the drop from an annotation to the layout.
         """
-        if targetType == config.data.target_type['annotation']:
-            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
-            # We received a drop. Determine the location.
+        # We received a drop. Determine the location.
 
-            # Correct y value according to scrollbar position
-            y += widget.parent.get_vscrollbar().get_adjustment().get_value()
+        # Correct y value according to scrollbar position
+        y += widget.parent.get_vscrollbar().get_adjustment().get_value()
+        drop_types=[ at
+                     for (at, p) in self.layer_position.iteritems()
+                     if (y >= p and y <= p + self.button_height + config.data.preferences['timeline']['interline-height']) ]
 
-            a=[ at
-                for (at, p) in self.layer_position.iteritems()
-                if (y >= p and y <= p + self.button_height) ]
-            if a:
+        if targetType == config.data.target_type['annotation']:
+            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+            if drop_types:
                 # Copy/Move to a[0]
                 if config.data.os == 'win32':
                     # Control/Shift mods for DND is broken on win32. Force ACTION_ASK.
                     ac=gtk.gdk.ACTION_ASK
                 else:
                     ac=context.actions
-                self.move_or_copy_annotations(sources, a[0], position=self.pixel2unit(self.adjustment.value + x, absolute=True), action=ac)
+                self.move_or_copy_annotations(sources, drop_types[0], position=self.pixel2unit(self.adjustment.value + x, absolute=True), action=ac)
             else:
                 # Maybe we should propose to create a new annotation-type ?
                 # Create a type
@@ -2178,14 +2234,10 @@ class TimeLine(AdhocView):
             return True
         elif targetType == config.data.target_type['annotation-type']:
             source=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
-            # We received a drop. Determine the location.
-            a=[ at
-                for (at, p) in self.layer_position.iteritems()
-                if (y >= p and y <= p + self.button_height) ]
-            if a:
-                # Copy/Move to a[0]
-                if source != a[0]:
-                    self.copy_annotation_type(source, a[0])
+            if drop_types:
+                # Copy/Move to drop_types[0]
+                if source != drop_types[0]:
+                    self.copy_annotation_type(source, drop_types[0])
                 else:
                     # Create an annotation in the type.
                     self.controller.create_annotation(position=self.pixel2unit(self.adjustment.value + x, absolute=True),
@@ -2202,11 +2254,8 @@ class TimeLine(AdhocView):
             return True
         elif targetType == config.data.target_type['timestamp']:
             # We received a drop. Create an annotation.
-            a=[ at
-                for (at, p) in self.layer_position.iteritems()
-                if (y >= p and y <= p + self.button_height) ]
-            if a:
-                typ=a[0]
+            if drop_types:
+                typ=drop_types[0]
             else:
                 typ=self.create_annotation_type()
             if typ is not None:
@@ -2310,6 +2359,10 @@ class TimeLine(AdhocView):
     def layout_button_release_cb(self, widget=None, event=None):
         """Handle mouse button release in timeline window.
         """
+        # Any click in the layout background unlocks the inspector
+        self.locked_inspector = False
+        self.locked_icon.hide()
+
         if event.button == 1:
             # Left click button in the upper part of the layout
             # or double-click anywhere in the background
@@ -2348,8 +2401,8 @@ class TimeLine(AdhocView):
                     if not isinstance(widget, AnnotationWidget):
                         continue
                     #x=self.layout.child_get_property(widget, 'x')
-                    #y=self.layout.child_get_property(widget, 'y')
-                    # memory leak in container.child_get_property
+                    #y=self.layout.child_get_property(widget, 'y')
+                    # memory leak in container.child_get_property
                     x,y = widget.window.get_position()
                     w,h = widget.window.get_size()
                     if ( x >= x1 and x + w <= x2
@@ -2362,10 +2415,9 @@ class TimeLine(AdhocView):
                     a=[ at
                         for (at, p) in self.layer_position.iteritems()
                         if (y1 >= p and y1 <= p + self.button_height) ]
-                    if not a:
-                        at = None
-                    else:
-                        at=a[0]
+                    at = None
+                    if a:
+                        at = a[0]
 
                     def create(i):
                         self.controller.create_annotation(position=self.pixel2unit(x1, absolute=True),
@@ -2387,8 +2439,8 @@ class TimeLine(AdhocView):
                         (_("Zoom on region"), zoom),
                         (_("Restrict display to region"), restrict),
                         ):
-                        if at is None and action == 'create':
-                            pass
+                        if at is None and action == create:
+                            continue
                         i=gtk.MenuItem(label)
                         i.connect('activate', action)
                         menu.append(i)
@@ -2541,10 +2593,13 @@ class TimeLine(AdhocView):
         a.changed ()
 
     def scale_event (self, widget=None, data=None):
+        if not self.update_lock.acquire(False) or self.layout.window is None:
+            # An update is pending. Ignore the scale event.
+            return True
         self.update_adjustment ()
 
         # Update the layout and scale_layout dimensions
-        width=self.unit2pixel(self.maximum - self.minimum)
+        width = self.unit2pixel(self.maximum - self.minimum)
         (w, h) = self.layout.get_size ()
         self.layout.set_size (width, h)
         (w, h) = self.scale_layout.get_size ()
@@ -2556,6 +2611,7 @@ class TimeLine(AdhocView):
             self.scale_label.set_text('1mark=%dm%.02fs' % (int(dur / 60), dur % 60))
 
         self.redraw_event ()
+        self.update_lock.release()
         return True
 
     def layout_resize_event(self, widget=None, event=None, *p):
@@ -2575,10 +2631,10 @@ class TimeLine(AdhocView):
     def zoom_on_region(self, begin, end):
         # Deactivate autoscroll...
         self.set_autoscroll_mode(0)
-        
+
         (w, h) = self.layout.window.get_size ()
         self.scale.value=1.3 * (end - begin) / w
-        
+
         # Center on annotation
         self.center_on_position( (begin + end) / 2 )
         return True
@@ -2611,7 +2667,7 @@ class TimeLine(AdhocView):
         self.limit_navtools.hide()
         return True
 
-    def fraction_event (self, widget=None, *p):
+    def fraction_event (self, widget=None, forced_window_width=0, *p):
         """Set the zoom factor to display the given fraction of the movie.
 
         fraction is > 0 and <= 1.
@@ -2620,14 +2676,17 @@ class TimeLine(AdhocView):
         if not parent:
             return True
         (w, h) = parent.get_size ()
+        if forced_window_width != 0:
+            w = forced_window_width
 
-        if w < 2:
+        if w < 10:
             return True
 
         if self.minimum == self.maximum:
             return True
 
-        fraction=self.fraction_adj.value
+        fraction = self.fraction_adj.value
+
         v = (self.maximum - self.minimum) / float(w) * fraction
         # New width in pixel
         if v < 5 or (self.maximum - self.minimum) / v > 65535:
@@ -2644,6 +2703,9 @@ class TimeLine(AdhocView):
     def layout_scroll_cb(self, widget=None, event=None):
         """Handle mouse scrollwheel events.
         """
+        if event.direction == gtk.gdk.SCROLL_RIGHT or event.direction == gtk.gdk.SCROLL_LEFT:
+            self.can_do_horizontal_scroll = True
+
         zoom=event.state & gtk.gdk.CONTROL_MASK
         if zoom:
             # Control+scroll: zoom in/out
@@ -2655,8 +2717,15 @@ class TimeLine(AdhocView):
             mouse_position=self.pixel2unit(event.x, absolute=True)
         else:
             # Plain scroll: scroll the timeline
-            a = self.adjustment
-            incr = a.step_increment
+            if (self.can_do_horizontal_scroll
+                and (event.direction == gtk.gdk.SCROLL_UP
+                     or event.direction == gtk.gdk.SCROLL_DOWN)):
+                # Vertical scroll with a device that knows how to do horizontal. Let's scroll vertically
+                a = self.vadjustment
+                incr = a.step_increment
+            else:
+                a = self.adjustment
+                incr = a.step_increment
 
         if event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_RIGHT:
             val = a.value + incr
@@ -2732,7 +2801,7 @@ class TimeLine(AdhocView):
             # Reposition the next, prev buttons
             layout.foreach(move_nav, width)
 
-        layout.get_parent().get_parent().set_position (width + 30)
+        layout.get_parent().get_parent().set_position (width + 60)
 
     def restrict_playing(self, at, widget=None):
         """Restrict playing to the given annotation-type.
@@ -2776,12 +2845,13 @@ class TimeLine(AdhocView):
             else:
                 l=[a
                    for a in typ.annotations
-                   if a.fragment.end < p ]
+                   if a.fragment.begin < p ]
                 # Sort in reverse order
                 l.sort(key=lambda a: a.fragment.begin, reverse=True)
             if l:
                 a=l[0]
                 self.controller.update_status("set", position=a.fragment.begin)
+                self.set_annotation(a)
             return True
 
         def restrict_playing(m, at, w):
@@ -3122,7 +3192,8 @@ class TimeLine(AdhocView):
         sw_layout = gtk.ScrolledWindow ()
         sw_layout.set_policy (gtk.POLICY_ALWAYS, gtk.POLICY_AUTOMATIC)
         sw_layout.set_hadjustment (self.adjustment)
-        sw_layout.set_vadjustment (sw_legend.get_vadjustment())
+        self.vadjustment = sw_legend.get_vadjustment()
+        sw_layout.set_vadjustment (self.vadjustment)
         sw_layout.add (self.layout)
         content_pane.add2 (sw_layout)
 
@@ -3162,7 +3233,7 @@ class TimeLine(AdhocView):
             self.scale_label.set_no_show_all(True)
 
         self.limit_navtools = gtk.HBox()
-        
+
         def navigate(button, event, direction):
             # Navigate to the previous/next page, when display is limited
             page_duration=self.pixel2unit(self.adjustment.page_size, absolute=False)
@@ -3238,9 +3309,21 @@ class TimeLine(AdhocView):
         self.inspector_pane=gtk.HPaned()
         self.inspector_pane.pack1(vbox, resize=True, shrink=True)
         a=AnnotationDisplay(controller=self.controller)
-        f=gtk.Frame(_('Inspector'))
-        f.add(a.widget)
-        self.inspector_pane.pack2(f, resize=False, shrink=True)
+        self.inspector_frame=gtk.Frame()
+        hbox = gtk.HBox()
+        hbox.pack_start(gtk.Label(_('Inspector')), expand=False)
+        def unlock(b):
+            b.hide()
+            self.locked_inspector = False
+            return True
+        self.locked_icon = get_pixmap_button('small_locked.png', unlock)
+        self.locked_icon.set_tooltip_text(_("Inspector locked. Click here or in the timeline background to unlock."))
+        self.locked_icon.set_no_show_all(True)
+        hbox.pack_start(self.locked_icon, expand=False)
+        self.inspector_frame.set_label_widget(hbox)
+
+        self.inspector_frame.add(a.widget)
+        self.inspector_pane.pack2(self.inspector_frame, resize=False, shrink=True)
         self.controller.gui.register_view (a)
         a.set_master_view(self)
         a.widget.show_all()
@@ -3368,8 +3451,8 @@ class TimeLine(AdhocView):
                     (1.0 / pow(1.5, n)) for n in range(0, 10)
                     ]
                 ],
-                                                                entry=True,
-                                                                callback=zoom_change)
+                                                       entry=True,
+                                                       callback=zoom_change)
         self.zoom_combobox.child.connect('activate', zoom_entry)
         self.zoom_combobox.child.set_width_chars(4)
         i=gtk.ToolItem()
diff --git a/lib/advene/gui/views/transcription.py b/lib/advene/gui/views/transcription.py
index 3dee9a8..bfcadc0 100755
--- a/lib/advene/gui/views/transcription.py
+++ b/lib/advene/gui/views/transcription.py
@@ -36,11 +36,10 @@ from advene.gui.views import AdhocView
 from advene.gui.util import dialog, get_pixmap_button
 import advene.gui.popup
 
-parsed_representation = re.compile(r'^here/content/parsed/([\w\d_\.]+)$')
-empty_representation = re.compile(r'^\s*$')
-
 name="Transcription view plugin"
 
+ZERO_WIDTH_NOBREAK_SPACE = u"\uFEFF"
+
 def register(controller):
     controller.register_viewclass(TranscriptionView)
 
@@ -51,7 +50,7 @@ class TranscriptionView(AdhocView):
 
     def __init__ (self, controller=None, source=None, elements=None, parameters=None):
         super(TranscriptionView, self).__init__(controller=controller)
-        self.close_on_package_load = True
+        self.close_on_package_load = False
         self.contextual_actions = (
             (_("Save view"), self.save_view),
             (_("Save default options"), self.save_default_options),
@@ -193,29 +192,6 @@ class TranscriptionView(AdhocView):
             self.generate_buffer_content()
         return True
 
-    def close(self, *p):
-        l=self.check_modified()
-        if l:
-            if self.options['representation'] and not parsed_representation.match(self.options['representation']):
-                def close_cb():
-                    AdhocView.close(self)
-                    return True
-
-                dialog.message_dialog(label=_("%d annotation(s) were modified\nbut we cannot propagate the modifications\nsince the representation parameter is used.") % len(l), callback=close_cb)
-            else:
-                def handle_modified():
-                    self.log(_("Updating modified annotations"))
-                    self.ignore_updates = True
-                    self.update_modified(l)
-                    AdhocView.close(self)
-                    return True
-                dialog.message_dialog(label=_("%d annotations were modified.\nDo you want to update their content?") % len(l),
-                                      icon=gtk.MESSAGE_QUESTION,
-                                      callback=handle_modified)
-        else:
-            AdhocView.close(self)
-        return True
-
     def check_modified(self):
         b=self.textview.get_buffer()
         modified = []
@@ -225,7 +201,7 @@ class TranscriptionView(AdhocView):
             try:
                 beginiter=b.get_iter_at_mark(b.get_mark("b_%s" % a.id))
                 enditer  =b.get_iter_at_mark(b.get_mark("e_%s" % a.id))
-                if unicode(b.get_text(beginiter, enditer)) != self.representation(a):
+                if unicode(b.get_text(beginiter, enditer)).strip(ZERO_WIDTH_NOBREAK_SPACE) != self.representation(a):
                     modified.append(a)
             except TypeError:
                 # Some missing annotations
@@ -233,30 +209,6 @@ class TranscriptionView(AdhocView):
         return modified
 
     def update_modified(self, l):
-        def update(a, text):
-            """Update an annotation content according to its representation.
-
-            If the update is not possible (too complex representation), return False.
-            """
-            if self.options['default-representation']:
-                rep=a.type.getMetaData(config.data.namespace, 'representation') or ''
-            else:
-                rep=self.options['representation']
-            m=parsed_representation.match(rep)
-            if m:
-                # We have a simple representation (here/content/parsed/name)
-                # so we can update the name field.
-                name=m.group(1)
-                reg = re.compile('^' + name + '=(.+?)$', re.MULTILINE)
-                a.content.data = reg.sub(name + '=' + text, a.content.data)
-            else:
-                m=empty_representation.match(rep)
-                if m:
-                    a.content.data = text
-                else:
-                    return False
-            return True
-
         b=self.textview.get_buffer()
         impossible=[]
         batch_id=object()
@@ -269,12 +221,16 @@ class TranscriptionView(AdhocView):
             if not m:
                 break
             enditer  = b.get_iter_at_mark(m)
-            self.controller.notify('EditSessionStart', element=a, immediate=True)
-            if update(a, unicode(b.get_text(beginiter, enditer))):
-                self.controller.notify("AnnotationEditEnd", annotation=a, batch=batch_id)
-            else:
+            new_content = helper.title2content(unicode(b.get_text(beginiter, enditer)).strip(ZERO_WIDTH_NOBREAK_SPACE),
+                                               a.content.data,
+                                               a.type.getMetaData(config.data.namespace, 'representation') if self.options['default-representation'] else self.options['representation'])
+            if new_content is None:
                 impossible.append(a)
-            self.controller.notify('EditSessionEnd', element=a)
+            elif a.content.data != new_content:
+                self.controller.notify('EditSessionStart', element=a, immediate=True)
+                a.content.data = new_content
+                self.controller.notify("AnnotationEditEnd", annotation=a, batch=batch_id)
+                self.controller.notify('EditSessionEnd', element=a)
         if impossible:
             dialog.message_dialog(label=_("Cannot convert the following annotations,\nthe representation pattern is too complex.\n%s") % ",".join( [ a.id for a in impossible ] ))
         return True
@@ -286,7 +242,7 @@ class TranscriptionView(AdhocView):
     def validate(self, *p):
         l=self.check_modified()
         if l:
-            if self.options['representation'] and not parsed_representation.match(self.options['representation']):
+            if self.options['representation'] and not helper.parsed_representation.match(self.options['representation']):
                 dialog.message_dialog(label=_("Cannot validate the update.\nThe representation pattern is too complex."))
                 return True
             self.ignore_updates = True
@@ -345,6 +301,7 @@ class TranscriptionView(AdhocView):
         b.create_tag("activated", background="skyblue")
         b.create_tag("current", background="lightblue")
         b.create_tag("searched_string", background="green")
+        b.create_tag("bound", editable=False)
 
         self.generate_buffer_content()
 
@@ -411,6 +368,7 @@ class TranscriptionView(AdhocView):
         mainbox.set_no_show_all(True)
 
         mainbox.connect('key-press-event', self.key_press_event_cb)
+        self.textview.connect('key-press-event', self.key_press_event_cb)
 
         return mainbox
 
@@ -427,30 +385,38 @@ class TranscriptionView(AdhocView):
     def generate_buffer_content(self):
         b=self.textview.get_buffer()
         # Clear the buffer
-        begin,end=b.get_bounds()
+        begin, end = b.get_bounds()
         b.delete(begin, end)
 
+        def insert_at_cursor_with_tags_by_name(text, *tags):
+            b.insert_with_tags_by_name(b.get_iter_at_mark(b.get_insert()),
+                                       text, *tags)
+
         l=list(self.model)
         #l.sort(lambda a,b: cmp(a.fragment.begin, b.fragment.begin))
         for a in l:
             if self.options['display-time']:
-                b.insert_at_cursor("[%s]" % helper.format_time(a.fragment.begin))
+                insert_at_cursor_with_tags_by_name("[%s]" % helper.format_time(a.fragment.begin),
+                                                     "bound")
 
             mark = b.create_mark("b_%s" % a.id,
                                  b.get_iter_at_mark(b.get_insert()),
                                  left_gravity=True)
             mark.set_visible(self.options['display-bounds'])
 
+            # Put a 0-width char to make it easier to edit annotations
+            insert_at_cursor_with_tags_by_name(ZERO_WIDTH_NOBREAK_SPACE, "bound")
             b.insert_at_cursor(unicode(self.representation(a)))
+            insert_at_cursor_with_tags_by_name(ZERO_WIDTH_NOBREAK_SPACE, "bound")
             mark = b.create_mark("e_%s" % a.id,
                                  b.get_iter_at_mark(b.get_insert()),
                                  left_gravity=True)
             mark.set_visible(self.options['display-bounds'])
 
             if self.options['display-time']:
-                b.insert_at_cursor("[%s]" % helper.format_time(a.fragment.end))
+                insert_at_cursor_with_tags_by_name("[%s]" % helper.format_time(a.fragment.end), "bound")
 
-            b.insert_at_cursor(self.options['separator'])
+            insert_at_cursor_with_tags_by_name(self.options['separator'], "bound")
         return
 
     def highlight_search_forward(self, searched):
@@ -513,6 +479,11 @@ class TranscriptionView(AdhocView):
         if event.keyval == gtk.keysyms.F3:
             self.searchbox.show_all()
             return True
+        elif event.keyval == gtk.keysyms.Return and event.state & gtk.gdk.CONTROL_MASK:
+            # Control-return: goto annotation
+            if self.currentannotation is not None:
+                self.play_annotation(self.currentannotation)
+            return True
         return False
 
     def button_press_event_cb(self, textview, event):
@@ -636,7 +607,9 @@ class TranscriptionView(AdhocView):
             enditer  =b.get_iter_at_mark(endmark)
 
             b.delete(beginiter, enditer)
+            b.insert_with_tags_by_name(beginiter, ZERO_WIDTH_NOBREAK_SPACE, "bound")
             b.insert(beginiter, unicode(self.representation(annotation)))
+            b.insert_with_tags_by_name(beginiter, ZERO_WIDTH_NOBREAK_SPACE, "bound")
             # After insert, beginiter is updated to point to the end
             # of the invalidated text.
             b.move_mark(endmark, beginiter)
@@ -716,7 +689,7 @@ class TranscriptionView(AdhocView):
     def save_output(self, filename=None):
         b=self.textview.get_buffer()
         begin,end=b.get_bounds()
-        out=unicode(b.get_text(begin, end))
+        out=unicode(b.get_text(begin, end)).replace(ZERO_WIDTH_NOBREAK_SPACE, '')
         try:
             f=open(filename, "w")
         except Exception, e:
diff --git a/lib/advene/gui/views/tree.py b/lib/advene/gui/views/tree.py
index 7a1ba06..2ea34f7 100755
--- a/lib/advene/gui/views/tree.py
+++ b/lib/advene/gui/views/tree.py
@@ -30,7 +30,7 @@ from advene.model.resources import Resources, ResourceData
 from advene.model.query import Query
 from advene.model.view import View
 from advene.gui.views import AdhocView
-from advene.gui.util import drag_data_get_cb, get_target_types, contextual_drag_begin
+from advene.gui.util import drag_data_get_cb, get_target_types, contextual_drag_begin, dialog
 
 import advene.gui.edit.elements
 import advene.gui.popup
@@ -468,6 +468,15 @@ class TreeWidget(AdhocView):
 
         tree_view.connect('drag-data-get', drag_data_get_cb, self.controller)
 
+        tree_view.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
+                                gtk.DEST_DEFAULT_HIGHLIGHT |
+                                gtk.DEST_DEFAULT_ALL,
+                                config.data.drag_type['annotation']
+                                + config.data.drag_type['annotation-type']
+                                + config.data.drag_type['timestamp'],
+                                gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE | gtk.gdk.ACTION_ASK )
+        tree_view.connect('drag-data-received', self.drag_received)
+
         try:
             # set_enable_tree_lines is available in gtk >= 2.10
             tree_view.set_enable_tree_lines(True)
@@ -662,12 +671,190 @@ class TreeWidget(AdhocView):
             print "Unknown target type for drag: %d" % targetType
         return True
 
+    def create_relation(self, source, dest, rt):
+        """Create the reation of type rt between source and dest.
+        """
+        # Get the id from the idgenerator
+        p=self.controller.package
+        id_=self.controller.package._idgenerator.get_id(Relation)
+        relation=p.createRelation(ident=id_,
+                                 members=(source, dest),
+                                 type=rt)
+        p.relations.append(relation)
+        self.controller.notify("RelationCreate", relation=relation)
+        return True
+
+    def move_or_copy_annotations(self, sources, dest, action=gtk.gdk.ACTION_ASK):
+        """Display a popup menu to move or copy the sources annotation to the dest annotation type.
+
+        If action is specified, then the popup menu will be shortcircuited.
+        """
+        # FIXME: this method should be factorized with the original
+        # one (from timeline.py) and used in other views (finder...)
+        if not sources:
+            return True
+        source=sources[0]
+
+        def move_annotation(i, an, typ, position=None):
+            if an.relations and an.type != typ:
+                dialog.message_dialog(_("Cannot delete the annotation : it has relations."),
+                                      icon=gtk.MESSAGE_WARNING)
+                return True
+
+            self.transmuted_annotation=self.controller.transmute_annotation(an,
+                                                                            typ,
+                                                                            delete=True)
+            return self.transmuted_annotation
+
+        def copy_annotation(i, an, typ, position=None, relationtype=None):
+            self.transmuted_annotation=self.controller.transmute_annotation(an,
+                                                                            typ,
+                                                                            delete=False)
+            if relationtype is not None:
+                # Directly create a relation
+                self.create_relation(an, self.transmuted_annotation, relationtype)
+            return self.transmuted_annotation
+
+        def copy_selection(i, sel, typ, delete=False):
+            for an in sel:
+                if an.typ != typ:
+                    self.transmuted_annotation=self.controller.transmute_annotation(an,
+                                                                                    typ,
+                                                                                    delete=delete)
+            return self.transmuted_annotation
+
+        # If there are compatible relation-types, propose to directly create a relation
+        relationtypes = helper.matching_relationtypes(self.controller.package,
+                                                      source.type,
+                                                      dest)
+
+        if action == gtk.gdk.ACTION_COPY:
+            # Direct copy
+            if len(sources) > 1:
+                if source.type == dest:
+                    return True
+                copy_selection(None, sources, dest)
+            else:
+                copy_annotation(None, source, dest)
+            return True
+        elif action == gtk.gdk.ACTION_MOVE:
+            if len(sources) > 1:
+                if source.type == dest:
+                    return True
+                copy_selection(None, sources, dest, delete=True)
+            else:
+                move_annotation(None, source, dest)
+            return True
+
+        # ACTION_ASK: Popup a menu to propose the drop options
+        menu=gtk.Menu()
+
+        dest_title=self.controller.get_title(dest)
+
+        if len(sources) > 1:
+            if source.type == dest:
+                return True
+            item=gtk.MenuItem(_("Duplicate selection to type %s") % dest_title, use_underline=False)
+            item.connect('activate', copy_selection, sources, dest)
+            menu.append(item)
+            item=gtk.MenuItem(_("Move selection to type %s") % dest_title, use_underline=False)
+            item.connect('activate', copy_selection, sources, dest, True)
+            menu.append(item)
+
+            menu.show_all()
+            menu.popup(None, None, None, 0, gtk.get_current_event_time())
+            return True
+
+        if source.type != dest:
+            item=gtk.MenuItem(_("Duplicate annotation to type %s") % dest_title, use_underline=False)
+            item.connect('activate', copy_annotation, source, dest)
+            menu.append(item)
+
+            item=gtk.MenuItem(_("Move annotation to type %s") % dest_title, use_underline=False)
+            item.connect('activate', move_annotation, source, dest)
+            menu.append(item)
+            if source.relations:
+                item.set_sensitive(False)
+
+        relationtypes=helper.matching_relationtypes(self.controller.package,
+                                                    source.type,
+                                                    dest)
+        if relationtypes:
+            if source.type != dest:
+                item=gtk.MenuItem(_("Duplicate and create a relation"), use_underline=False)
+                # build a submenu
+                sm=gtk.Menu()
+                for rt in relationtypes:
+                    sitem=gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
+                    sitem.connect('activate', copy_annotation, source, dest, None, rt)
+                    sm.append(sitem)
+                menu.append(item)
+                item.set_submenu(sm)
+
+        menu.show_all()
+        menu.popup(None, None, None, 0, gtk.get_current_event_time())
+
+    def create_relation_popup(self, source, dest):
+        # FIXME: Idem as above: should be factorized with the original of timeline.py
+        # Popup a menu to propose the drop options
+        menu=gtk.Menu()
+
+        def create_relation(item, s, d, t):
+            self.create_relation(s, d, t)
+            return True
+
+        def create_relation_type_and_relation(item, s, d):
+            if self.controller.gui:
+                sc=self.controller.gui.ask_for_schema(text=_("Select the schema where you want to\ncreate the new relation type."), create=True)
+                if sc is None:
+                    return None
+                cr=self.controller.gui.create_element_popup(type_=RelationType,
+                                                            parent=sc,
+                                                            controller=self.controller)
+                rt=cr.popup(modal=True)
+                self.create_relation(s, d, rt)
+            return True
+
+        relationtypes=helper.matching_relationtypes(self.controller.package,
+                                                    source.type,
+                                                    dest.type)
+        item=gtk.MenuItem(_("Create a relation"))
+        menu.append(item)
+
+        sm=gtk.Menu()
+        for rt in relationtypes:
+            sitem=gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
+            sitem.connect('activate', create_relation, source, dest, rt)
+            sm.append(sitem)
+        if True:
+            # Propose to create a new one
+            sitem=gtk.MenuItem(_("Create a new relation-type."), use_underline=False)
+            sitem.connect('activate', create_relation_type_and_relation, source, dest)
+            sm.append(sitem)
+        item.set_submenu(sm)
+
+        menu.show_all()
+        menu.popup(None, None, None, 0, gtk.get_current_event_time())
+
     def drag_received(self, widget, context, x, y, selection, targetType, time):
-        #print "drag_received event for %s" % widget.annotation.content.data
-        if targetType == config.data.target_type['annotation']:
-            source=self.controller.package.annotations.get(unicode(selection.data, 'utf8').split('\n')[0])
-            dest=widget.annotation
-            self.create_relation_popup(source, dest)
-        else:
-            print "Unknown target type for drop: %d" % targetType
+        widget.stop_emission("drag-data-received")
+        t = widget.get_path_at_pos(x, y)
+        if t is not None:
+            path, col, cx, cy = t
+            it = self.model.get_iter(path)
+            node = self.model.get_value(it,
+                                        AdveneTreeModel.COLUMN_ELEMENT)
+            if not node:
+                return True
+            if isinstance(node, Annotation):
+                # Drop on an Annotation
+                if targetType == config.data.target_type['annotation']:
+                    source = self.controller.package.annotations.get(unicode(selection.data, 'utf8').split('\n')[0])
+                    self.create_relation_popup(source, node)
+            elif isinstance(node, AnnotationType):
+                if targetType == config.data.target_type['annotation']:
+                    sources = [ self.controller.package.annotations.get(u) for u in unicode(selection.data, 'utf8').split('\n') ]
+                    if sources:
+                        self.move_or_copy_annotations(sources, node)
+            return True
         return True
diff --git a/lib/advene/gui/views/viewbook.py b/lib/advene/gui/views/viewbook.py
index 19fd343..f6196d6 100644
--- a/lib/advene/gui/views/viewbook.py
+++ b/lib/advene/gui/views/viewbook.py
@@ -27,7 +27,7 @@ from gettext import gettext as _
 from advene.gui.views import AdhocView
 import advene.util.helper as helper
 from advene.gui.util import get_pixmap_button, dialog, decode_drop_parameters
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 from advene.gui.edit.elements import get_edit_popup
 
 class ViewBook(AdhocView):
@@ -35,7 +35,7 @@ class ViewBook(AdhocView):
     """
     view_name = _("ViewBook")
     view_id = 'viewbook'
-    def __init__ (self, controller=None, views=None, location=None):
+    def __init__ (self, controller=None, parameters=None, views=None, location=None, ):
         super(ViewBook, self).__init__(controller=controller)
         self.controller=controller
         if views is None:
diff --git a/lib/advene/gui/widget.py b/lib/advene/gui/widget.py
index f6d69ff..a71f6be 100644
--- a/lib/advene/gui/widget.py
+++ b/lib/advene/gui/widget.py
@@ -52,11 +52,10 @@ except ImportError:
 import advene.core.config as config
 from advene.core.imagecache import ImageCache
 
-from advene.gui.util import png_to_pixbuf, enable_drag_source, name2color, get_target_types
-from advene.gui.util import encode_drop_parameters, get_color_style
+from advene.gui.util import png_to_pixbuf, enable_drag_source, name2color
+from advene.gui.util import get_color_style
 import advene.util.helper as helper
 from advene.model.annotation import Annotation
-
 import advene.gui.popup
 
 active_color=name2color('#fdfd4b')
@@ -139,8 +138,8 @@ class GenericColorButtonWidget(gtk.DrawingArea):
             width=s[0]
         if height is None:
             height=s[1]
-        if width < 0:
-            print "Error: width ", width, " < 0 for ", self.element.id
+        if width <= 0:
+            print "Error: width ", width, " <= 0 for ", self.element.id
             width=5
         if (self.cached_surface
             and self.cached_surface.get_width() == width
@@ -222,9 +221,8 @@ class GenericColorButtonWidget(gtk.DrawingArea):
         """Refresh the widget.
         """
         if self.window and self.cached_surface:
-            width = self.cached_surface.get_width()
-            height = self.cached_surface.get_height()
-            self.window.invalidate_rect(gtk.gdk.Rectangle(0, 0, width, height), False)
+            self.window.invalidate_rect(gtk.gdk.Rectangle(self.allocation.x, self.allocation.y,
+                                                          self.allocation.width, self.allocation.height), False)
 
     def expose_cb(self, widget, event):
         """Handle the expose event.
@@ -383,7 +381,7 @@ class AnnotationWidget(GenericColorButtonWidget):
             c.queue_action(c.update_status, status="set", position=pos)
             c.gui.set_current_annotation(annotation)
             return True
-        elif event.keyval == gtk.keysyms.Delete:
+        elif event.keyval == gtk.keysyms.Delete or event.keyval == gtk.keysyms.BackSpace:
             # Delete annotation or selection
             try:
                 widgets=self.container.get_selected_annotation_widgets()
@@ -454,6 +452,8 @@ class AnnotationWidget(GenericColorButtonWidget):
             # 100.0) of the height (FIXME: define a scale somewhere)
             l=[ (1 - v / 100.0) for v in self.annotation.content.parsed() ]
             s=len(l)
+            if not s:
+                return
             if width < s:
                 # There are more samples than available pixels. Downsample the data
                 l=l[::(s/width)+1]
@@ -816,7 +816,7 @@ class TimestampRepresentation(gtk.Button):
     @ivar label: the label (timestamp) widget
     @type label: gtk.Label
     """
-    def __init__(self, value, controller, width=None, epsilon=None, comment_getter=None, visible_label=True, bgcolor=None):
+    def __init__(self, value, controller, width=None, epsilon=None, comment_getter=None, visible_label=True, bgcolor=None, callback=None):
         """Instanciate a new TimestampRepresentation.
 
         @param value: the timestamp value
@@ -833,6 +833,8 @@ class TimestampRepresentation(gtk.Button):
         @type visible_label: boolean
         @param bgcolor: background color
         @type bgcolor: string
+        @value callback: a callback that will be called before value modification
+        @type callback: method. If it returns False, then the modification will be cancelled
         """
         super(TimestampRepresentation, self).__init__()
         self._value=value
@@ -852,6 +854,7 @@ class TimestampRepresentation(gtk.Button):
         self._bgcolor = None
         # Displayed text.
         self._text = '<span size="xx-small">%(timestamp)s</span>'
+        self.callback = callback
 
         box=gtk.VBox()
         self.image=gtk.Image()
@@ -930,6 +933,13 @@ class TimestampRepresentation(gtk.Button):
     def get_value(self):
         return self._value
     def set_value(self, v):
+        if v == self._value:
+            return
+        if self.callback is not None and v != self._value:
+            if self.callback(v) is False:
+                # If self.callback explicitly returns False (not
+                # None), then cancel the value setting.
+                return False
         if self.highlight:
             self.controller.notify('BookmarkUnhighlight', timestamp=self._value, immediate=True)
             self.highlight=False
@@ -1042,6 +1052,10 @@ class TimestampRepresentation(gtk.Button):
             c.update_status (status="set", position=pos)
             return True
 
+        def save_as(it):
+            self.controller.gui.save_snapshot_as(self.value)
+            return True
+
         item = gtk.MenuItem(_("Play"))
         item.connect('activate', goto, self.value)
         menu.append(item)
@@ -1050,14 +1064,24 @@ class TimestampRepresentation(gtk.Button):
         item.connect('activate', self.refresh_snapshot)
         menu.append(item)
 
-        item = gtk.MenuItem(_("Use current player position"))
-        item.connect('activate', lambda i: self.set_value(p.current_position_value))
-        if p.status != p.PauseStatus and p.status != p.PlayingStatus:
-            item.set_sensitive(False)
+        item = gtk.MenuItem(_("Save as..."))
+        item.connect('activate', save_as)
         menu.append(item)
 
+        if self.callback is not None:
+            item = gtk.MenuItem(_("Use current player position"))
+            item.connect('activate', lambda i: self.set_value(p.current_position_value))
+            if p.status != p.PauseStatus and p.status != p.PlayingStatus:
+                item.set_sensitive(False)
+            menu.append(item)
+
+            item = gtk.MenuItem(_("Adjust timestamp"))
+            item.connect('activate', lambda i: self.set_value(self.controller.gui.adjust_timestamp(self.get_value())))
+            menu.append(item)
+
         if self.extend_popup_menu is not None:
             self.extend_popup_menu(menu, self)
+
         menu.show_all()
 
         if popup:
diff --git a/lib/advene/model/.cvsignore b/lib/advene/model/.cvsignore
deleted file mode 100644
index 0d20b64..0000000
--- a/lib/advene/model/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.pyc
diff --git a/lib/advene/model/_impl.py b/lib/advene/model/_impl.py
index 81ad130..81b9438 100644
--- a/lib/advene/model/_impl.py
+++ b/lib/advene/model/_impl.py
@@ -79,7 +79,7 @@ class Metaed(object):
         r = StringIO()
         advene.model.util.dom.printElementText(dom_element, r)
         return r.getvalue().decode('utf-8')
-        
+
     def getMetaData(self, namespace_uri, name):
         """Return the text content of metadata with given NS and name
         """
@@ -125,7 +125,7 @@ class Metaed(object):
         return [ (e.namespaceURI, e.localName, self.elementValue(e))
                  for e in meta.childNodes
                  if e.nodeType is ELEMENT_NODE ]
-        
+
 class Authored(Metaed):
     """An implementation for the author property.
        Inheriting classes must have a _getModel method returning a DOM element
@@ -476,7 +476,7 @@ class Aliased(object):
        Inheriting classes must have a _getModel method returning a DOM element
        (inheriting the modeled.Modeled class looks like a good idea).
        Note that this implementation consider 'alias' to be optional.
-       
+
        Note: for historical reasons, this property is stored with the
        name "as" in the DOM tree. This original name introduced a
        clash in python2.6 with a reserved keyword. It has thus been
diff --git a/lib/advene/model/content.py b/lib/advene/model/content.py
index 58b3176..09f568e 100644
--- a/lib/advene/model/content.py
+++ b/lib/advene/model/content.py
@@ -19,7 +19,7 @@
 from cStringIO import StringIO
 import urllib
 try:
-    # In python2.6 stdlib 
+    # In python2.6 stdlib
     import json
 except ImportError:
     try:
@@ -138,7 +138,7 @@ class Content(modeled.Modeled,
             if not self.isTextual():
                 encoding = 'base64'
             else:
-                encoding = 'utf-8'                
+                encoding = 'utf-8'
             self._getModel().setAttributeNS(None, 'encoding', encoding)
             new = self._getDocument().createTextNode(data.encode(encoding))
             self._getModel().appendChild(new)
diff --git a/lib/advene/model/tal/.cvsignore b/lib/advene/model/tal/.cvsignore
deleted file mode 100644
index 0d20b64..0000000
--- a/lib/advene/model/tal/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.pyc
diff --git a/lib/advene/model/util/.cvsignore b/lib/advene/model/util/.cvsignore
deleted file mode 100644
index 0d20b64..0000000
--- a/lib/advene/model/util/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.pyc
diff --git a/lib/advene/model/viewable.py b/lib/advene/model/viewable.py
index 56ea262..676cc57 100644
--- a/lib/advene/model/viewable.py
+++ b/lib/advene/model/viewable.py
@@ -30,7 +30,7 @@ class TypedUnicode(unicode):
     """Unicode string with a mimetype attribute.
     """
     def __new__(cls, value=""):
-        s=unicode.__new__(cls, value) 
+        s=unicode.__new__(cls, value)
         s.contenttype='text/plain'
         return s
 
@@ -38,7 +38,7 @@ class TypedString(str):
     """String with a mimetype attribute.
     """
     def __new__(cls, value=""):
-        s=str.__new__(cls, value) 
+        s=str.__new__(cls, value)
         s.contenttype='text/plain'
         return s
 
diff --git a/lib/advene/model/zippackage.py b/lib/advene/model/zippackage.py
index 0872c47..648f89f 100644
--- a/lib/advene/model/zippackage.py
+++ b/lib/advene/model/zippackage.py
@@ -58,7 +58,7 @@ from advene.model.exception import AdveneException
 from advene.model.resources import Resources
 import mimetypes
 
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 from gettext import gettext as _
 
diff --git a/lib/advene/player/gstreamer.py b/lib/advene/player/gstreamer.py
index 2c2d9a3..bcc9cee 100644
--- a/lib/advene/player/gstreamer.py
+++ b/lib/advene/player/gstreamer.py
@@ -26,6 +26,8 @@ Use appsink to get data out of a pipeline:
 https://thomas.apestaart.org/thomas/trac/browser/tests/gst/crc/crc.py
 """
 
+from gettext import gettext as _
+
 import advene.core.config as config
 from advene.util.helper import format_time
 import os
@@ -35,7 +37,6 @@ import gobject
 gobject.threads_init()
 
 import gtk
-import os
 import sys
 
 if config.data.os == 'win32':
@@ -50,7 +51,7 @@ if config.data.os == 'win32':
         #even if gstpluginpath is defined, gst still may not be in path
         gstpath = unicode(os.getenv('PATH', ""), fsenc)
         h,t = os.path.split(ppath)
-        binpath,t = os.path.split(h) 
+        binpath,t = os.path.split(h)
         os.environ['PATH'] = os.pathsep.join( (os.path.join( binpath, 'bin'), gstpath) ).encode(fsenc)
 
 try:
@@ -170,8 +171,14 @@ class Player:
             self.log(u"Could not initialize snapshotter:" +  unicode(e))
             self.snapshotter = None
 
+        self.fullres_snapshotter = None
+        # This method has the following signature:
+        # self.fullres_snapshot_callback(snapshot=None, message=None)
+        # If snapshot is None, then there should be an explanation (string) in msg.
+        self.fullres_snapshot_callback = None
+
         #self.snapshotter.start()
-        
+
         # This method should be set by caller:
         self.snapshot_notify=None
         self.build_pipeline()
@@ -226,6 +233,7 @@ class Player:
         if config.data.player['svg'] and svgelement:
             try:
                 self.imageoverlay=gst.element_factory_make(svgelement, 'overlay')
+                self.imageoverlay.props.fit_to_frame = True
             except:
                 pass
 
@@ -283,7 +291,7 @@ class Player:
             self._audio_ghostpad = gst.GhostPad('sink', elements[0].get_pad('audio_sink') or elements[0].get_pad('sink'))
             self.audio_sink.add_pad(self._audio_ghostpad)
 
-        
+
         bus = self.player.get_bus()
         bus.enable_sync_message_emission()
         bus.connect('sync-message::element', self.on_sync_message)
@@ -389,7 +397,9 @@ class Player:
         self.player.set_property('uri', item)
         if self.snapshotter:
             self.snapshotter.set_uri(item)
-        
+        if self.fullres_snapshotter:
+            self.fullres_snapshotter.set_uri(item)
+
     def playlist_clear(self):
         self.videofile=None
         self.player.set_property('uri', '')
@@ -400,6 +410,37 @@ class Player:
         else:
             return [ ]
 
+    def fullres_snapshot_taken(self, buffer):
+        if self.fullres_snapshot_callback:
+            s=Snapshot( { 'data': buffer.data,
+                          'type': 'PNG',
+                          'date': buffer.timestamp / gst.MSECOND,
+                          # Hardcoded size values. They are not used
+                          # by the application, since they are
+                          # encoded in the PNG file anyway.
+                          'width': 160,
+                          'height': 100 } )
+            self.fullres_snapshot_callback(snapshot=s)
+            self.fullres_snapshot_callback = None
+
+    def async_fullres_snapshot(self, position, callback):
+        """Take full-resolution snapshots.
+
+        This method is not reentrant: as long as there is a call
+        pending, it is not available for another position.
+        """
+        if self.fullres_snapshot_callback is not None:
+            callback(message=_("Cannot capture full-resolution snapshot, another capture is ongoing."))
+            return
+        if self.fullres_snapshotter is None:
+            # Initialise it.
+            self.fullres_snapshotter = Snapshotter(self.fullres_snapshot_taken)
+            self.fullres_snapshotter.set_uri(self.player.get_property('uri'))
+        self.fullres_snapshot_callback = callback
+        if not self.fullres_snapshotter.thread_running:
+                self.fullres_snapshotter.start()
+        self.fullres_snapshotter.enqueue(position)
+
     def snapshot_taken(self, buffer):
         if self.snapshot_notify:
             s=Snapshot( { 'data': buffer.data,
@@ -411,7 +452,7 @@ class Player:
                           'width': 160,
                           'height': 100 } )
             self.snapshot_notify(s)
-            
+
     def async_snapshot(self, position):
         t = long(self.position2value(position))
         if self.snapshotter:
@@ -424,7 +465,7 @@ class Player:
             # (considering a 25f/s framerate).
             for pos in sorted((t - 20, t / 25 * 25, t)):
                 self.snapshotter.enqueue(pos)
-        
+
     def snapshot(self, position):
         if not self.check_uri():
             return None
@@ -604,12 +645,12 @@ class Player:
             self.log("Reparent " + hex(xid))
 
             gtk.gdk.display_get_default().sync()
-        
+
             self.imagesink.set_xwindow_id(xid)
         self.imagesink.set_property('force-aspect-ratio', True)
         self.imagesink.expose()
         #gtk.gdk.threads_leave()
-        
+
     def set_visual(self, xid):
         if not xid:
             return True
@@ -620,7 +661,7 @@ class Player:
     def set_widget(self, widget):
         self.set_visual( widget.get_id() )
         #self.set_visual( None )
-            
+
     def restart_player(self):
         # FIXME: destroy the previous player
         self.player.set_state(gst.STATE_READY)
@@ -693,7 +734,7 @@ class Player:
                 self.unfullscreen()
                 return True
             return False
-        
+
         def buttonpress(widget, event):
             if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
                 self.unfullscreen()
@@ -821,7 +862,7 @@ class Player:
             if capsname: line.append( '[%s]' % capsname )
             if ghostpath: line.append( "ghosts %s" % self.relpath(path, ghostpath) )
             line.append( "%s %s" % (direc, peerpath) )
-            
+
             #if peerpath and peerpath.find('proxy')!=-1: print peer
             ret.append( ''.join(line) )
         if recurse and isinstance(e, gst.Bin):
diff --git a/lib/advene/player/gstrecorder.py b/lib/advene/player/gstrecorder.py
index 4b3f966..a58166e 100644
--- a/lib/advene/player/gstrecorder.py
+++ b/lib/advene/player/gstrecorder.py
@@ -138,7 +138,7 @@ class Player:
             # Generate black image
             videosrc = 'videotestsrc pattern=2'
 
-        self.pipeline=gst.parse_launch('%(videosrc)s name=videosrc ! video/x-raw-yuv,width=352,pixel-aspect-ratio=(fraction)1/1 ! queue ! tee name=tee ! ffmpegcolorspace ! theoraenc drop-frames=1 ! queue ! oggmux name=mux ! filesink location=%(videofile)s  %(audiosrc)s name=audiosrc ! audioconvert ! audiorate ! queue ! vorbisenc quality=0.9 ! mux.  tee. ! queue ! %(videosink)s name=sink sync=false' % locals())
+        self.pipeline=gst.parse_launch('%(videosrc)s name=videosrc ! video/x-raw-yuv,width=352,pixel-aspect-ratio=(fraction)1/1 ! queue ! tee name=tee ! ffmpegcolorspace ! theoraenc drop-frames=1 ! queue ! oggmux name=mux ! filesink location=%(videofile)s  %(audiosrc)s name=audiosrc ! audioconvert ! audiorate ! queue ! vorbisenc quality=0.5 ! mux.  tee. ! queue ! %(videosink)s name=sink sync=false' % locals())
         self.imagesink=self.pipeline.get_by_name('sink')
         self.videosrc=self.pipeline.get_by_name('videosrc')
         self.audiosrc=self.pipeline.get_by_name('audiosrc')
@@ -226,7 +226,7 @@ class Player:
 
     def resume(self, position=None):
         # Ignore
-        return 
+        return
 
     def stop(self, position=None):
         self.stream_duration=self.current_position
diff --git a/lib/advene/player/vlc.py b/lib/advene/player/vlc.py
index 58cf14b..1e5cca6 100644
--- a/lib/advene/player/vlc.py
+++ b/lib/advene/player/vlc.py
@@ -143,7 +143,7 @@ LibVLC Available Events
 
     def __ne__(self, other):
         return not self.__eq__(other)
-    
+
 EventType.MediaSubItemAdded=EventType(1)
 EventType.MediaDurationChanged=EventType(2)
 EventType.MediaPreparsedChanged=EventType(3)
@@ -214,7 +214,7 @@ LibVLC Media Meta
 
     def __ne__(self, other):
         return not self.__eq__(other)
-    
+
 Meta.Title=Meta(0)
 Meta.Artist=Meta(1)
 Meta.Genre=Meta(2)
@@ -262,7 +262,7 @@ STOPPING=5, ENDED=6, ERROR=7
 
     def __ne__(self, other):
         return not self.__eq__(other)
-    
+
 State.NothingSpecial=State(0)
 State.Opening=State(1)
 State.Buffering=State(2)
@@ -297,7 +297,7 @@ class AudioOutputDeviceTypes(ctypes.c_ulong):
 
     def __ne__(self, other):
         return not self.__eq__(other)
-    
+
 AudioOutputDeviceTypes.Error=AudioOutputDeviceTypes(-1)
 AudioOutputDeviceTypes.Mono=AudioOutputDeviceTypes(1)
 AudioOutputDeviceTypes.Stereo=AudioOutputDeviceTypes(2)
@@ -330,7 +330,7 @@ class AudioOutputChannel(ctypes.c_ulong):
 
     def __ne__(self, other):
         return not self.__eq__(other)
-    
+
 AudioOutputChannel.Error=AudioOutputChannel(-1)
 AudioOutputChannel.Stereo=AudioOutputChannel(1)
 AudioOutputChannel.RStereo=AudioOutputChannel(2)
@@ -360,7 +360,7 @@ class PositionOrigin(ctypes.c_ulong):
 
     def __ne__(self, other):
         return not self.__eq__(other)
-    
+
 PositionOrigin.AbsolutePosition=PositionOrigin(0)
 PositionOrigin.RelativePosition=PositionOrigin(1)
 PositionOrigin.ModuloPosition=PositionOrigin(2)
@@ -387,7 +387,7 @@ class PositionKey(ctypes.c_ulong):
 
     def __ne__(self, other):
         return not self.__eq__(other)
-    
+
 PositionKey.ByteCount=PositionKey(0)
 PositionKey.SampleCount=PositionKey(1)
 PositionKey.MediaTime=PositionKey(2)
@@ -418,7 +418,7 @@ libvlc_state_t and input_state_e enums.
 
     def __ne__(self, other):
         return not self.__eq__(other)
-    
+
 PlayerStatus.UndefinedStatus=PlayerStatus(0)
 PlayerStatus.InitStatus=PlayerStatus(1)
 PlayerStatus.BufferingStatus=PlayerStatus(2)
@@ -722,7 +722,7 @@ class Instance(object):
       - a list of strings as first parameters
       - the parameters given as the constructor parameters (must be strings)
       - a MediaControl instance
-    
+
     """
 
     @staticmethod
@@ -1533,7 +1533,7 @@ class MediaControl(object):
       - a list of strings as first parameters
       - the parameters given as the constructor parameters (must be strings)
       - a vlc.Instance
-    
+
     """
 
     @staticmethod
@@ -2049,7 +2049,7 @@ class MediaListPlayer(object):
     It may take as parameter either:
       - a vlc.Instance
       - nothing
-    
+
     """
 
     @staticmethod
@@ -2271,7 +2271,7 @@ class MediaPlayer(object):
     It may take as parameter either:
       - a string (media URI). In this case, a vlc.Instance will be created.
       - a vlc.Instance
-    
+
     """
 
     @staticmethod
diff --git a/lib/advene/player/vlcctypes.py b/lib/advene/player/vlcctypes.py
index a8403a6..3d2e2e4 100644
--- a/lib/advene/player/vlcctypes.py
+++ b/lib/advene/player/vlcctypes.py
@@ -95,7 +95,7 @@ class Player(object):
             pass
         class InternalException(Exception):
             pass
-        
+
     def __getattribute__ (self, name):
         """
         Use the defined method if necessary. Else, forward the request
@@ -159,7 +159,7 @@ class Player(object):
             args.append ('--vout-filter=%s' %":".join(filters))
         #print "player args", args
         return [ str(i) for i in args ]
-    
+
     def restart_player (self):
         """Restart (cleanly) the player."""
         del self.mc
diff --git a/lib/advene/plugins/aeidon.py b/lib/advene/plugins/aeidon.py
index d3d08c3..08ed050 100644
--- a/lib/advene/plugins/aeidon.py
+++ b/lib/advene/plugins/aeidon.py
@@ -18,7 +18,7 @@
 #
 
 # AEIDON importer
-# See http://home.gna.org/gaupol/ 
+# See http://home.gna.org/gaupol/
 # Install python-aeidon on Debian
 
 name="AEIDON importer"
@@ -32,6 +32,13 @@ try:
 except ImportError:
     aeidon = None
 
+# Reset textdomain. aeidon/gaupol improperly overwrites textdomain
+# with its own. It should follow
+# http://www.python.org/doc//current/library/gettext.html#localizing-your-module
+# instead.
+import advene.core.config as config
+config.init_gettext()
+
 def register(controller=None):
     if aeidon is not None:
         controller.register_importer(AeidonImporter)
@@ -79,7 +86,8 @@ class AeidonImporter(GenericImporter):
         incr=0.98/len(project.subtitles)
         for s in project.subtitles:
             progress += incr
-            self.progress(progress)
+            if not self.progress(progress):
+                break
             yield {
                 'type': self.annotationtype,
                 'content': s.main_text,
diff --git a/lib/advene/plugins/annotationgraph.py b/lib/advene/plugins/annotationgraph.py
index f0c0ce3..b41031a 100644
--- a/lib/advene/plugins/annotationgraph.py
+++ b/lib/advene/plugins/annotationgraph.py
@@ -25,7 +25,7 @@ from gettext import gettext as _
 
 import advene.core.config as config
 from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 def register(controller=None):
     controller.register_importer(AnnotationGraphImporter)
diff --git a/lib/advene/plugins/anvil.py b/lib/advene/plugins/anvil.py
index e8a948e..a625024 100644
--- a/lib/advene/plugins/anvil.py
+++ b/lib/advene/plugins/anvil.py
@@ -25,7 +25,7 @@ from gettext import gettext as _
 
 import advene.core.config as config
 from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 def register(controller=None):
     controller.register_importer(AnvilImporter)
diff --git a/lib/advene/plugins/brltty.py b/lib/advene/plugins/brltty.py
index 3172c60..7118f47 100644
--- a/lib/advene/plugins/brltty.py
+++ b/lib/advene/plugins/brltty.py
@@ -34,8 +34,8 @@ name="BrlTTY actions"
 # The Alva Satellite that we are using for experiments sends strange
 # keycodes. It may be a misconfiguration of brltty that should be
 # fixed, but in the meantime, hardcode appropriate values.
-ALVA_LPAD_UP=536870976 
-ALVA_LPAD_DOWN=536870977 
+ALVA_LPAD_UP=536870976
+ALVA_LPAD_DOWN=536870977
 ALVA_LPAD_LEFT=536870973
 ALVA_LPAD_RIGHT=536870975
 ALVA_LPAD_LEFTLEFT=536870974
@@ -66,7 +66,6 @@ def register(controller=None):
         controller.log(_("BrlTTY not installed. There will be no braille support."))
     else:
         engine=BrlEngine(controller)
-        engine.brldisplay("Advene connected")
         try:
             engine.init_brlapi()
             if engine.brlconnection is not None:
@@ -74,6 +73,7 @@ def register(controller=None):
                                      gobject.IO_IN,
                                      engine.input_handler)
                 method=engine.action_brldisplay
+                engine.brldisplay("Advene connected")
         except:
             controller.log(_("Could not initialize BrlTTY. No braille support."))
 
@@ -145,7 +145,7 @@ class BrlEngine:
         if k is None:
             return True
         #command=self.brlconnection.expandKey(k)['command']
-        if k == brlapi.KEY_SYM_RIGHT or k == ALVA_LPAD_RIGHT or k == ALVA_MPAD_BUTTON4: 
+        if k == brlapi.KEY_SYM_RIGHT or k == ALVA_LPAD_RIGHT or k == ALVA_MPAD_BUTTON4:
             if self.currenttype == 'scroll':
                 i = self.char_index + self.brlconnection.displaySize[0]
                 if i <= len(self.current_message):
diff --git a/lib/advene/plugins/cinelab.py b/lib/advene/plugins/cinelab.py
index 52163db..0c7f648 100644
--- a/lib/advene/plugins/cinelab.py
+++ b/lib/advene/plugins/cinelab.py
@@ -31,7 +31,7 @@ import re
 
 import advene.core.config as config
 from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 from advene.model.exception import AdveneException
 
 MIMETYPE = "application/x-cinelab-zip-package"
@@ -52,7 +52,7 @@ def ns(path):
     """
     return prefix_re.sub(lambda m: '{%s}' % prefixes.get(m.group(1), 'FIXME'),
                          path)
-    
+
 def meta(node, t):
     n = node.find(ns('cinelab:meta/%s' % t))
     if n is not None:
@@ -89,11 +89,11 @@ class CinelabImporter(GenericImporter):
 
     def tempfile(self, *names):
         """Return a tempfile name in the filesystem encoding.
-        
+
         Try to deal appropriately with filesystem encodings:
-        
+
         self._tempdir is a unicode string.
-        
+
         tempfile takes unicode parameters, and returns a path encoded
         in sys.getfilesystemencoding()
         """
@@ -175,7 +175,7 @@ class CinelabImporter(GenericImporter):
         # Finalize
         self.progress(.3, _("Converting annotation types"))
         ats = root.find(ns('cinelab:annotation-types'))
-        # Note: do not use the shortcut ats = root.find(...) or [], 
+        # Note: do not use the shortcut ats = root.find(...) or [],
         # the result of root.find is always False
         if ats is None:
             return []
@@ -213,7 +213,7 @@ class CinelabImporter(GenericImporter):
                         data = dict( l.split('=') for l in c.text.splitlines() )
                         if data.get('mimetype'):
                             at.mimetype = data.get('mimetype')
-        
+
         self.progress(.6, _("Converting views"))
         size = len(views)
         for (i, node) in enumerate(views):
diff --git a/lib/advene/plugins/cutter.py b/lib/advene/plugins/cutter.py
index 1612190..bf3d7c5 100644
--- a/lib/advene/plugins/cutter.py
+++ b/lib/advene/plugins/cutter.py
@@ -77,11 +77,11 @@ class CutterImporter(GenericImporter):
                     'begin': begin,
                     'end': end,
                     'content': 'sound',
-                    } 
+                    }
                           for begin, end in self.buffer )
             self.end_callback()
             return True
-        
+
         if message.type == gst.MESSAGE_EOS:
             finalize()
         ##elif message.type == gst.MESSAGE_STATE_CHANGED:
@@ -98,7 +98,7 @@ class CutterImporter(GenericImporter):
             s=message.structure
             #print "MSG " + bus.get_name() + ": " + s.to_string()
             if s.get_name() == 'progress' and self.progress is not None:
-                if not self.progress(s['percent-double'] / 100, _("Detected %(count)d segments until %(time)s") % { 'count': len(self.buffer), 
+                if not self.progress(s['percent-double'] / 100, _("Detected %(count)d segments until %(time)s") % { 'count': len(self.buffer),
                                                                                                                     'time': helper.format_time(s['current'] * 1000) }):
                     finalize()
             elif s.get_name() == 'cutter':
@@ -118,7 +118,7 @@ class CutterImporter(GenericImporter):
 
         at = self.ensure_new_type('sound_segment', title=_("Sound segment"))
         at.setMetaData(config.data.namespace_prefix['dc'], "description", _("Sound segmentation with a threshold of %(threshold)d dB - channel: %(channel)s") % self.__dict__)
-        
+
         # Build pipeline
         self.pipeline = gst.parse_launch('uridecodebin name=decoder ! audioconvert ! audiopanorama method=1 panorama=%d ! audioconvert ! cutter threshold-dB=%s ! progressreport silent=true update-freq=1 name=report ! fakesink' % (self.channel_mapping[self.channel], str(self.threshold)))
         self.decoder = self.pipeline.get_by_name('decoder')
diff --git a/lib/advene/plugins/dcp.py b/lib/advene/plugins/dcp.py
index 8afcec8..5b083d4 100644
--- a/lib/advene/plugins/dcp.py
+++ b/lib/advene/plugins/dcp.py
@@ -37,7 +37,7 @@ def register(controller=None):
 timestamp_re = re.compile('(\d\d):(\d\d):(\d\d):(\d\d)')
 
 # Column -> (type, attr) mapping.
-# 
+#
 type_mapping = {
     u'Inquadratura'                      : (u'Inquadratura', 'num'),
     u'Descrizione inquadratura'          : (u'Inquadratura', 'descrizione'),
@@ -112,12 +112,12 @@ class DCPImporter(GenericImporter):
         incr = 1.0 / self.row_count
         # Column cache: store (in_time, content) for each column
         column_cache = {}
-        # Row cache: for coalesced types, store 
+        # Row cache: for coalesced types, store
         # (in_time, content) indexed by DCP type
         row_cache = {}
         for row in rows:
             row_cache.clear()
-            self.progress(progress, _("Converting #%(num)d / %(count)d") % { 'num': rows.line_num, 
+            self.progress(progress, _("Converting #%(num)d / %(count)d") % { 'num': rows.line_num,
                                                                              'count': self.row_count})
             progress += incr
             t = self.str2time(row[1])
diff --git a/lib/advene/plugins/aiff.py b/lib/advene/plugins/fcp.py
similarity index 88%
rename from lib/advene/plugins/aiff.py
rename to lib/advene/plugins/fcp.py
index 6ec866b..78c76d6 100644
--- a/lib/advene/plugins/aiff.py
+++ b/lib/advene/plugins/fcp.py
@@ -17,22 +17,20 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
 
-# AIFF importer.
-
-name="AIFF importer"
+name="Final Cut Pro XML importer"
 
 from gettext import gettext as _
 
 import advene.core.config as config
 from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 def register(controller=None):
-    controller.register_importer(AiffImporter)
+    controller.register_importer(XMLFCPImporter)
     return True
 
-class AiffImporter(GenericImporter):
-    name = _("Aiff importer")
+class XMLFCPImporter(GenericImporter):
+    name = _("Final Cut Pro XML importer")
 
     def can_handle(fname):
         """Return a score between 0 and 100.
@@ -49,12 +47,12 @@ class AiffImporter(GenericImporter):
         root=tree.getroot()
 
         p, at = self.init_package(filename=dest,
-                                schemaid='aiff', annotationtypeid='aiff_subtitle')
+                                schemaid='fcp', annotationtypeid='fcp_subtitle')
         at.mimetype='text/plain'
-        at.title = "AIFF Subtitle"
+        at.title = "FCP Subtitle"
 
         self.at = {
-            'clipitem': self.create_annotation_type(at.schema, 'aiff_clipitem', title=_("AIFF clipitem")),
+            'clipitem': self.create_annotation_type(at.schema, 'fcp_clipitem', title=_("FCP clipitem")),
             'subtitle': at,
             }
 
@@ -66,7 +64,7 @@ class AiffImporter(GenericImporter):
 
     def iterator(self, root):
         if root.tag != 'xmeml':
-            print "Invalid AIFF file format: ", root.tag
+            print "Invalid FCP XML file format: ", root.tag
             return
 
         progress=0.01
diff --git a/lib/advene/plugins/featuredetect.py b/lib/advene/plugins/featuredetect.py
index b260683..ba941e0 100644
--- a/lib/advene/plugins/featuredetect.py
+++ b/lib/advene/plugins/featuredetect.py
@@ -168,7 +168,7 @@ class FeatureDetectImporter(GenericImporter):
                 start_pos = None
             if not self.progress(cv.GetCaptureProperty(video,
                                                        cv.CV_CAP_PROP_POS_AVI_RATIO),
-                                 _("Detected %(count)d feature(s) until %(time)s") % { 'count': count, 
+                                 _("Detected %(count)d feature(s) until %(time)s") % { 'count': count,
                                                                                        'time': helper.format_time(pos) }):
                 break
             pos = cv.GetCaptureProperty(video, cv.CV_CAP_PROP_POS_MSEC)
diff --git a/lib/advene/plugins/goodshotdetector.py b/lib/advene/plugins/goodshotdetector.py
index 1537c56..83d9574 100644
--- a/lib/advene/plugins/goodshotdetector.py
+++ b/lib/advene/plugins/goodshotdetector.py
@@ -136,7 +136,7 @@ class ShotDetector:
         self.DISS_START_THRESHOLD = 0.16
         self.DISS_END_THRESHOLD = 0.26
         self.DISS_MIN_FRAMES = 3
-        
+
 
     def dummy_progress(self, prg, label):
         pass
@@ -233,7 +233,7 @@ class ShotDetector:
             h = (histos[i] + histos[i-1]) / 2
             c = 0
             for k in range(1, K):
-                if i - k < 0 : 
+                if i - k < 0 :
                     break
                 c += numpy.sum(numpy.abs(h - histos[i - k])) / nbpix
             r.append(c / K)
diff --git a/lib/advene/plugins/montagerenderer.py b/lib/advene/plugins/montagerenderer.py
index ed0ad15..6c356f1 100644
--- a/lib/advene/plugins/montagerenderer.py
+++ b/lib/advene/plugins/montagerenderer.py
@@ -185,7 +185,7 @@ class MontageRenderer(object):
             if capsname: line.append( '[%s]' % capsname )
             if ghostpath: line.append( "ghosts %s" % self.relpath(path, ghostpath) )
             line.append( "%s %s" % (direc, peerpath) )
-            
+
             #if peerpath and peerpath.find('proxy')!=-1: print peer
             ret.append( ''.join(line) )
         if recurse and isinstance(e, gst.Bin):
diff --git a/lib/advene/plugins/mpeg7.py b/lib/advene/plugins/mpeg7.py
index de7de98..8cc28cb 100644
--- a/lib/advene/plugins/mpeg7.py
+++ b/lib/advene/plugins/mpeg7.py
@@ -29,7 +29,7 @@ import time
 
 import advene.core.config as config
 from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 def register(controller=None):
     controller.register_importer(MPEG7Importer)
diff --git a/lib/advene/plugins/pocketsphinx.py b/lib/advene/plugins/pocketsphinx.py
new file mode 100644
index 0000000..f09fe89
--- /dev/null
+++ b/lib/advene/plugins/pocketsphinx.py
@@ -0,0 +1,193 @@
+#
+# Advene: Annotate Digital Videos, Exchange on the NEt
+# Copyright (C) 2008 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+#
+# Advene 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.
+#
+# Advene 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 Advene; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+
+name="Speech recognition"
+
+from gettext import gettext as _
+
+import os
+import gobject
+import gst
+
+import advene.core.config as config
+from advene.util.importer import GenericImporter
+import advene.util.helper as helper
+
+def register(controller=None):
+    if (gst.element_factory_find('vader')
+         and gst.element_factory_find('pocketsphinx')):
+        controller.register_importer(PocketSphinxImporter)
+    else:
+        controller.log(_("Cannot register speech recognition: Pocketsphinx plugins not found. See http://cmusphinx.sourceforge.net/wiki/gstreamer for details."))
+    return True
+
+class PocketSphinxImporter(GenericImporter):
+    name = _("Speech recognition (PocketSphinx)")
+
+    def __init__(self, *p, **kw):
+        super(PocketSphinxImporter, self).__init__(*p, **kw)
+
+        # Noise level [0..1]
+        self.noise = 1.0 / 128
+        # Silence duration (in ms)
+        self.silence = 300
+        # Use default model
+        self.use_default_model = True
+        # Acoustic model (directory)
+        self.acoustic_model = "/usr/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k"
+        # Phonetic dictionary
+        self.phonetic_dict = "/usr/share/pocketsphinx/model/lm/en_US/cmu07a.dic"
+        # Lang model (lm)
+        self.lang_model = "/usr/share/pocketsphinx/model/lm/en_US/hub4.5000.DMP"
+
+        self.optionparser.add_option("-n", "--noise",
+                                     action="store", type="float", dest="noise", default=self.noise,
+                                     help=_("Filtering noise level [0..1]."))
+
+        self.optionparser.add_option("-s", "--silence",
+                                     action="store", type="int", dest="silence", default=self.silence,
+                                     help=_("Minimum amount (in milliseconds) of silence required to terminate the current annotation and start a new one. Decreasing this length will result in a large amount of short annotations and increasing this length will result in a small amount of long annotations."))
+
+        self.optionparser.add_option("-d", "--default-model",
+                                     action="store_true", dest="use_default_model", default= self.use_default_model,
+                                     help=_("Use default acoustic and language models."))
+
+        self.optionparser.add_option("-a", "--acoustic-model",
+                                     action="store", type="string", dest="acoustic_model", default=self.acoustic_model,
+                                     help=_("Acoustic model (directory)") + '[D]')
+
+        self.optionparser.add_option("-p", "--phonetic-dict",
+                                     action="store", type="string", dest="phonetic_dict", default=self.phonetic_dict,
+                                     help=_("Phonetic dictionary (.dic file)") + '[F]')
+
+        self.optionparser.add_option("-l", "--language-model",
+                                     action="store", type="string", dest="lang_model", default=self.lang_model,
+                                     help=_("Language model (.DMP file)") + '[F]')
+
+        self.buffer_list = []
+        self.start_position = 0
+        self.text = None
+
+    def can_handle(fname):
+        """Return a score between 0 and 100.
+
+        100 is for the best match (specific extension), 0 is for no match at all.
+        """
+        ext = os.path.splitext(fname)[1]
+        if ext in config.data.video_extensions:
+            return 80
+        return 0
+    can_handle=staticmethod(can_handle)
+
+    def on_vader_start(self, vader, pos):
+        """Store start position.
+        """
+        self.start_position = pos / gst.MSECOND
+        return True
+
+    def on_vader_stop(self, vader, pos):
+        """Store stop position.
+        """
+        if self.start_position and self.text:
+            self.buffer_list.append( (self.start_position, pos / gst.MSECOND, self.text) )
+            self.text = None
+            self.start_position = 0
+        return True
+
+    def on_pocketsphinx_result(self, sphinx, text, uttid):
+        self.text = text
+        return True
+
+    def generate_annotations(self):
+        n = 1.0 * len(self.buffer_list)
+        self.progress(0, _("Generating annotations"))
+        for i, tup in enumerate(self.buffer_list):
+            self.progress(i / n)
+            self.convert( [ {
+                        'begin': tup[0],
+                        'end': tup[1],
+                        'content': tup[2],
+                        } ])
+
+    def on_bus_message(self, bus, message):
+        def finalize():
+            """Finalize data creation.
+            """
+            gobject.idle_add(lambda: self.pipeline.set_state(gst.STATE_NULL) and False)
+            self.generate_annotations()
+            if self.end_callback:
+                self.end_callback()
+            return False
+
+        if message.type == gst.MESSAGE_EOS:
+            finalize()
+        elif message.structure:
+            s = message.structure
+            #print "MSG " + s.get_name() + ": " + s.to_string()
+            if s.get_name() == 'progress' and self.progress is not None:
+                if not self.progress(s['percent-double'] / 100, _("%(count)d utterances until %(time)s") % {
+                        'count': len(self.buffer_list),
+                        'time': helper.format_time(s['current'] * 1000) }):
+                    finalize()
+        return True
+
+    def async_process_file(self, filename, end_callback=None):
+        self.end_callback = end_callback
+
+        at = self.ensure_new_type('speech', title=_("Speech"))
+        at.mimetype = 'text/plain'
+        at.setMetaData(config.data.namespace_prefix['dc'], "description", _("Recognized speech"))
+
+        if self.use_default_model:
+            args = ""
+        else:
+            args = 'hmm="%s" dict="%s" lm="%s" ' % (
+                self.acoustic_model,
+                self.phonetic_dict,
+                self.lang_model)
+
+        # Build pipeline
+        self.pipeline = gst.parse_launch('uridecodebin name=decoder ! audioconvert ! audioresample ! progressreport silent=true update-freq=1 name=report  ! vader name=vader auto-threshold=false threshold=%(noise).9f run-length=%(silence)d ! pocketsphinx name=pocketsphinx %(pocketsphinxargs)s ! fakesink' % ( {
+                'noise': self.noise,
+                'silence': self.silence * gst.MSECOND,
+                'pocketsphinxargs': args }))
+        self.decoder = self.pipeline.get_by_name('decoder')
+
+        vader = self.pipeline.get_by_name("vader")
+        vader.connect("vader-start", self.on_vader_start)
+        vader.connect("vader-stop", self.on_vader_stop)
+        sphinx = self.pipeline.get_by_name("pocketsphinx")
+        sphinx.connect("result", self.on_pocketsphinx_result)
+        sphinx.set_property("configured", True)
+
+        bus = self.pipeline.get_bus()
+        # Enabling sync_message_emission will in fact force the
+        # self.progress call from a thread other than the main thread,
+        # which surprisingly works better ATM.
+        bus.enable_sync_message_emission()
+        bus.add_signal_watch()
+        bus.connect('sync-message', self.on_bus_message)
+
+        if config.data.os == 'win32':
+            self.decoder.props.uri = 'file:///' + os.path.abspath(unicode(filename))
+        else:
+            self.decoder.props.uri = 'file://' + os.path.abspath(filename)
+        self.progress(0, _("Recognizing speech"))
+        self.pipeline.set_state(gst.STATE_PLAYING)
+        return self.package
diff --git a/lib/advene/plugins/shotdetect.py b/lib/advene/plugins/shotdetect.py
index 8105f5f..16c5593 100644
--- a/lib/advene/plugins/shotdetect.py
+++ b/lib/advene/plugins/shotdetect.py
@@ -25,7 +25,7 @@ from gettext import gettext as _
 
 import advene.core.config as config
 from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 def register(controller=None):
     controller.register_importer(ShotdetectImporter)
diff --git a/lib/advene/plugins/ted.py b/lib/advene/plugins/ted.py
index 41d60a6..09ac0ce 100644
--- a/lib/advene/plugins/ted.py
+++ b/lib/advene/plugins/ted.py
@@ -29,7 +29,6 @@ try:
 except ImportError:
     import simplejson as json
 
-import advene.core.config as config
 from advene.util.importer import GenericImporter
 
 def register(controller=None):
@@ -60,7 +59,7 @@ class TEDImporter(GenericImporter):
             f=open(filename, 'r')
         data='\n'.join(f.readlines())
         f.close()
-        
+
         p, at=self.init_package(filename=filename, schemaid='ted')
         if self.package is None:
             self.package=p
@@ -70,14 +69,15 @@ class TEDImporter(GenericImporter):
             offset=long(offset[0])
         else:
             offset=0
+        m = re.findall('/talks/subtitles/id/(\d+)', data, re.MULTILINE)
+        if m:
+            ident=m[0]
+        else:
+            self.log("Cannot find talk id")
+            ident=None
         podcast=re.findall('(itpc://[^"]+)', data, re.MULTILINE)
         if podcast:
             podcast=podcast[0]
-            ident=re.findall('(\d+)$', podcast)
-            if ident:
-                ident=ident[0]
-            else:
-                ident=None
             self.progress(0.2, "Fetching podcast information")
             podcast=urllib.urlopen(podcast.replace('itpc:', 'http:'))
             data=podcast.read()
diff --git a/lib/advene/plugins/tracebuilder.py b/lib/advene/plugins/tracebuilder.py
index 8235a9e..5076a38 100644
--- a/lib/advene/plugins/tracebuilder.py
+++ b/lib/advene/plugins/tracebuilder.py
@@ -39,7 +39,7 @@ from gettext import gettext as _
 import advene.core.config as config
 
 import advene.model.view
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 import advene.util.helper as helper
 import advene.util.handyxml as handyxml
@@ -820,7 +820,7 @@ class TraceBuilder(Thread):
         if typ == "Undefined":
             # some operations can be mapped to different actions, we check that
             typ = self.find_action_name(obj)
-        if self.opened_actions[typ]:
+        if self.opened_actions.get(typ):
             # an action is already opened for this event
             ac = self.opened_actions[typ]
             if typ == "Navigation" and (ope.name == "PlayerStop" or ope.name == "PlayerPause"):
diff --git a/lib/advene/plugins/transcriber.py b/lib/advene/plugins/transcriber.py
index 43656a7..b455e15 100644
--- a/lib/advene/plugins/transcriber.py
+++ b/lib/advene/plugins/transcriber.py
@@ -26,7 +26,7 @@ name="Transcriber importer"
 from gettext import gettext as _
 
 from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ETree
+import xml.etree.ElementTree as ETree
 
 def register(controller=None):
     controller.register_importer(TrsImporter)
@@ -85,7 +85,7 @@ class TrsImporter(GenericImporter):
                 for s in Section:
                     self.progress(progress, _("Parsing section information"))
                     progress += incr
-                    
+
                     try:
                         s_begin=float(s.get('startTime')) ## 'startTime' is a "Section" required attribute
                     except AttributeError, e:
@@ -107,7 +107,7 @@ class TrsImporter(GenericImporter):
                     except AttributeError, e:
                         print str(e)
                         continue
-                    
+
                     topic = ""  ## 'topic' is a "Section" optional  attribute
                     try :
                         if s.get('topic') is not None:
@@ -134,7 +134,7 @@ class TrsImporter(GenericImporter):
                                 continue
 
                             t_begin=int(t_begin*1000)
-                            
+
                             try:
                                 t_end=float(t.get('endTime'))   ## 'endTime' is a "Turn" required attribute
                             except AttributeError, e:
@@ -163,7 +163,7 @@ class TrsImporter(GenericImporter):
                             seg = None
 
                             for elem in t.getchildren():
-                   
+
                                 if elem.tag == "Sync" :
                                     try:
                                         seg_time = float(elem.get('time'))
@@ -185,7 +185,7 @@ class TrsImporter(GenericImporter):
                                         'end': None,
                                         'content': "%s" % text
                                        }
-                                    
+
                                     text = elem.tail.replace("\n","")
 
                                 elif elem.tag == 'Background':
@@ -224,12 +224,12 @@ class TrsImporter(GenericImporter):
                                             'end': None,
                                             'content': None
                                             }
-                                        
+
                             if seg is not None:
                                 seg['end'] = t_end
                                 seg['content'] = text+"\n"
                                 yield seg
-                                    
+
                     except AttributeError,e: ## catch exception on Turn elements
                         print str(e)
                         continue
@@ -245,7 +245,7 @@ class TrsImporter(GenericImporter):
     def process_file(self, filename):
         trstree=ETree.parse(filename)
         trs = trstree.getroot()
-        
+
         if trs.tag != 'Trans':
             self.log("This does not look like a Transcriber file.")
             return
diff --git a/lib/advene/plugins/ttl.py b/lib/advene/plugins/ttl.py
index 5a99f36..c22890e 100644
--- a/lib/advene/plugins/ttl.py
+++ b/lib/advene/plugins/ttl.py
@@ -109,7 +109,7 @@ class TTLImporter(GenericImporter):
                     data = data.strip('"')
 
                 item[propname] = data
-                    
+
                 continue
 
             if l.startswith('.'):
@@ -135,7 +135,7 @@ class TTLImporter(GenericImporter):
                 item['_begin'] = helper.format_time_reference(item['begin'])
                 item['_end'] = helper.format_time_reference(item['end'])
 
-                yield { 
+                yield {
                     'content': "\n".join( "%s=%s" % (k, str(item[k])) for k in sorted(item.iterkeys())).encode('utf8'),
                     'begin': begin,
                     'end' : end,
diff --git a/lib/advene/plugins/undomanager.py b/lib/advene/plugins/undomanager.py
index da5986c..3e5f13c 100644
--- a/lib/advene/plugins/undomanager.py
+++ b/lib/advene/plugins/undomanager.py
@@ -119,7 +119,7 @@ class UndoHistory:
     def element_edit_end(self, context, parameters):
         """Record the modified elements.
         """
-        if 'undone' in context.globals:
+        if context.globals.get('undone'):
             # The change is done in the context of an Undo.
             # Do not record it.
             #print "EditEnd in Undo context"
@@ -151,6 +151,11 @@ class UndoHistory:
     def element_create(self, context, parameters):
         """Record the created element id.
         """
+        if context.globals.get('undone'):
+            # The change is done in the context of an Undo.
+            # Do not record it.
+            #print "Create in Undo context"
+            return
         event=context.evaluateValue('event')
         el=event.replace('Create', '').lower()
         element=context.evaluateValue(el)
@@ -176,6 +181,11 @@ class UndoHistory:
     def element_delete(self, context, parameters):
         """Record the deleted elements.
         """
+        if context.globals.get('undone'):
+            # The change is done in the context of an Undo.
+            # Do not record it.
+            #print "Delete in Undo context"
+            return
         event=context.evaluateValue('event')
         el=event.replace('Delete', '').lower()
         element=context.evaluateValue(el)
diff --git a/lib/advene/rules/actions.py b/lib/advene/rules/actions.py
index 82223c2..528e56b 100644
--- a/lib/advene/rules/actions.py
+++ b/lib/advene/rules/actions.py
@@ -731,7 +731,7 @@ class DefaultActionsRepository:
         except ValueError:
             # Maybe it was a string value
             self.controller.package.state[name]=self.controller.package.state[name]+"1"
-            
+
         return True
 
     def ClearState(self, context, parameters):
diff --git a/lib/advene/rules/ecaengine.py b/lib/advene/rules/ecaengine.py
index ecb986c..381ac3f 100755
--- a/lib/advene/rules/ecaengine.py
+++ b/lib/advene/rules/ecaengine.py
@@ -35,7 +35,7 @@ import advene.rules.elements
 
 class MyThread(threading.Thread):
     """Override the standard run() method.
-    
+
     Its behaviour changed in 2.6, and removed the __target, _args and
     _kwargs variable. Since we keep reusing them, this broke our code.
     """
@@ -46,7 +46,7 @@ class MyThread(threading.Thread):
     def run(self):
         if self._target:
             self._target()
-            
+
 class ECAEngine:
     """ECAEngine class.
 
@@ -340,7 +340,7 @@ class ECAEngine:
         for k in sorted(self.ruledict.keys()):
             res.append("%s: %s" % (k, len(self.ruledict[k])))
         return res
-            
+
     def notify (self, event_name, *param, **kw):
         """Invoked by the application on the occurence of an event.
 
diff --git a/lib/advene/rules/elements.py b/lib/advene/rules/elements.py
index 8b7c403..0769c48 100755
--- a/lib/advene/rules/elements.py
+++ b/lib/advene/rules/elements.py
@@ -24,7 +24,7 @@ events that match a condition."""
 import re
 import StringIO
 import urllib
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 import itertools
 
 import advene.core.config as config
@@ -861,7 +861,7 @@ class Quicksearch(EtreeMixin):
         @return: an ElementTree.Element
         """
         qnode=ET.Element(tag('quicksearch'))
-        
+
         for source in self.sources:
             qnode.append(ET.Element(tag('source'), { 'value': source } ))
 
diff --git a/lib/advene/util/ElementPath.py b/lib/advene/util/ElementPath.py
deleted file mode 100644
index 558b560..0000000
--- a/lib/advene/util/ElementPath.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#
-# ElementTree
-# $Id: ElementPath.py 1858 2004-06-17 21:31:41Z Fredrik $
-#
-# limited xpath support for element trees
-#
-# history:
-# 2003-05-23 fl   created
-# 2003-05-28 fl   added support for // etc
-# 2003-08-27 fl   fixed parsing of periods in element names
-#
-# Copyright (c) 2003-2004 by Fredrik Lundh.  All rights reserved.
-#
-# fredrik at pythonware.com
-# http://www.pythonware.com
-#
-# --------------------------------------------------------------------
-# The ElementTree toolkit is
-#
-# Copyright (c) 1999-2004 by Fredrik Lundh
-#
-# By obtaining, using, and/or copying this software and/or its
-# associated documentation, you agree that you have read, understood,
-# and will comply with the following terms and conditions:
-#
-# Permission to use, copy, modify, and distribute this software and
-# its associated documentation for any purpose and without fee is
-# hereby granted, provided that the above copyright notice appears in
-# all copies, and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Secret Labs AB or the author not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
-# ABILITY AND FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-# --------------------------------------------------------------------
-
-##
-# Implementation module for XPath support.  There's usually no reason
-# to import this module directly; the <b>ElementTree</b> does this for
-# you, if needed.
-##
-
-import re
-
-xpath_tokenizer = re.compile(
-    "(::|\.\.|\(\)|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/:\[\]\(\)@=\s]+)|\s+"
-    ).findall
-
-class xpath_descendant_or_self:
-    pass
-
-##
-# Wrapper for a compiled XPath.
-
-class Path:
-
-    ##
-    # Create an Path instance from an XPath expression.
-
-    def __init__(self, path):
-        tokens = xpath_tokenizer(path)
-        # the current version supports 'path/path'-style expressions only
-        self.path = []
-        self.tag = None
-        if tokens and tokens[0][0] == "/":
-            raise SyntaxError("cannot use absolute path on element")
-        while tokens:
-            op, tag = tokens.pop(0)
-            if tag or op == "*":
-                self.path.append(tag or op)
-            elif op == ".":
-                pass
-            elif op == "/":
-                self.path.append(xpath_descendant_or_self())
-                continue
-            else:
-                raise SyntaxError("unsupported path syntax (%s)" % op)
-            if tokens:
-                op, tag = tokens.pop(0)
-                if op != "/":
-                    raise SyntaxError(
-                        "expected path separator (%s)" % (op or tag)
-                        )
-        if self.path and isinstance(self.path[-1], xpath_descendant_or_self):
-            raise SyntaxError("path cannot end with //")
-        if len(self.path) == 1 and isinstance(self.path[0], type("")):
-            self.tag = self.path[0]
-
-    ##
-    # Find first matching object.
-
-    def find(self, element):
-        tag = self.tag
-        if tag is None:
-            nodeset = self.findall(element)
-            if not nodeset:
-                return None
-            return nodeset[0]
-        for elem in element:
-            if elem.tag == tag:
-                return elem
-        return None
-
-    ##
-    # Find text for first matching object.
-
-    def findtext(self, element, default=None):
-        tag = self.tag
-        if tag is None:
-            nodeset = self.findall(element)
-            if not nodeset:
-                return default
-            return nodeset[0].text or ""
-        for elem in element:
-            if elem.tag == tag:
-                return elem.text or ""
-        return default
-
-    ##
-    # Find all matching objects.
-
-    def findall(self, element):
-        nodeset = [element]
-        index = 0
-        while 1:
-            try:
-                path = self.path[index]
-                index = index + 1
-            except IndexError:
-                return nodeset
-            set = []
-            if isinstance(path, xpath_descendant_or_self):
-                try:
-                    tag = self.path[index]
-                    if not isinstance(tag, type("")):
-                        tag = None
-                    else:
-                        index = index + 1
-                except IndexError:
-                    tag = None # invalid path
-                for node in nodeset:
-                    new = list(node.getiterator(tag))
-                    if new and new[0] is node:
-                        set.extend(new[1:])
-                    else:
-                        set.extend(new)
-            else:
-                for node in nodeset:
-                    for node in node:
-                        if path == "*" or node.tag == path:
-                            set.append(node)
-            if not set:
-                return []
-            nodeset = set
-
-_cache = {}
-
-##
-# (Internal) Compile path.
-
-def _compile(path):
-    p = _cache.get(path)
-    if p is not None:
-        return p
-    p = Path(path)
-    if len(_cache) >= 100:
-        _cache.clear()
-    _cache[path] = p
-    return p
-
-##
-# Find first matching object.
-
-def find(element, path):
-    return _compile(path).find(element)
-
-##
-# Find text for first matching object.
-
-def findtext(element, path, default=None):
-    return _compile(path).findtext(element, default)
-
-##
-# Find all matching objects.
-
-def findall(element, path):
-    return _compile(path).findall(element)
-
diff --git a/lib/advene/util/ElementTree.py b/lib/advene/util/ElementTree.py
deleted file mode 100644
index 98d0208..0000000
--- a/lib/advene/util/ElementTree.py
+++ /dev/null
@@ -1,1254 +0,0 @@
-#
-# ElementTree
-# $Id: ElementTree.py 2326 2005-03-17 07:45:21Z fredrik $
-#
-# light-weight XML support for Python 1.5.2 and later.
-#
-# history:
-# 2001-10-20 fl   created (from various sources)
-# 2001-11-01 fl   return root from parse method
-# 2002-02-16 fl   sort attributes in lexical order
-# 2002-04-06 fl   TreeBuilder refactoring, added PythonDoc markup
-# 2002-05-01 fl   finished TreeBuilder refactoring
-# 2002-07-14 fl   added basic namespace support to ElementTree.write
-# 2002-07-25 fl   added QName attribute support
-# 2002-10-20 fl   fixed encoding in write
-# 2002-11-24 fl   changed default encoding to ascii; fixed attribute encoding
-# 2002-11-27 fl   accept file objects or file names for parse/write
-# 2002-12-04 fl   moved XMLTreeBuilder back to this module
-# 2003-01-11 fl   fixed entity encoding glitch for us-ascii
-# 2003-02-13 fl   added XML literal factory
-# 2003-02-21 fl   added ProcessingInstruction/PI factory
-# 2003-05-11 fl   added tostring/fromstring helpers
-# 2003-05-26 fl   added ElementPath support
-# 2003-07-05 fl   added makeelement factory method
-# 2003-07-28 fl   added more well-known namespace prefixes
-# 2003-08-15 fl   fixed typo in ElementTree.findtext (Thomas Dartsch)
-# 2003-09-04 fl   fall back on emulator if ElementPath is not installed
-# 2003-10-31 fl   markup updates
-# 2003-11-15 fl   fixed nested namespace bug
-# 2004-03-28 fl   added XMLID helper
-# 2004-06-02 fl   added default support to findtext
-# 2004-06-08 fl   fixed encoding of non-ascii element/attribute names
-# 2004-08-23 fl   take advantage of post-2.1 expat features
-# 2005-02-01 fl   added iterparse implementation
-# 2005-03-02 fl   fixed iterparse support for pre-2.2 versions
-#
-# Copyright (c) 1999-2005 by Fredrik Lundh.  All rights reserved.
-#
-# fredrik at pythonware.com
-# http://www.pythonware.com
-#
-# --------------------------------------------------------------------
-# The ElementTree toolkit is
-#
-# Copyright (c) 1999-2005 by Fredrik Lundh
-#
-# By obtaining, using, and/or copying this software and/or its
-# associated documentation, you agree that you have read, understood,
-# and will comply with the following terms and conditions:
-#
-# Permission to use, copy, modify, and distribute this software and
-# its associated documentation for any purpose and without fee is
-# hereby granted, provided that the above copyright notice appears in
-# all copies, and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Secret Labs AB or the author not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
-# ABILITY AND FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-# --------------------------------------------------------------------
-
-__all__ = [
-    # public symbols
-    "Comment",
-    "dump",
-    "Element", "ElementTree",
-    "fromstring",
-    "iselement", "iterparse",
-    "parse",
-    "PI", "ProcessingInstruction",
-    "QName",
-    "SubElement",
-    "tostring",
-    "TreeBuilder",
-    "VERSION", "XML",
-    "XMLTreeBuilder",
-    ]
-
-##
-# The <b>Element</b> type is a flexible container object, designed to
-# store hierarchical data structures in memory. The type can be
-# described as a cross between a list and a dictionary.
-# <p>
-# Each element has a number of properties associated with it:
-# <ul>
-# <li>a <i>tag</i>. This is a string identifying what kind of data
-# this element represents (the element type, in other words).</li>
-# <li>a number of <i>attributes</i>, stored in a Python dictionary.</li>
-# <li>a <i>text</i> string.</li>
-# <li>an optional <i>tail</i> string.</li>
-# <li>a number of <i>child elements</i>, stored in a Python sequence</li>
-# </ul>
-#
-# To create an element instance, use the {@link #Element} or {@link
-# #SubElement} factory functions.
-# <p>
-# The {@link #ElementTree} class can be used to wrap an element
-# structure, and convert it from and to XML.
-##
-
-import string, sys, re
-
-class _SimpleElementPath:
-    # emulate pre-1.2 find/findtext/findall behaviour
-    def find(self, element, tag):
-        for elem in element:
-            if elem.tag == tag:
-                return elem
-        return None
-    def findtext(self, element, tag, default=None):
-        for elem in element:
-            if elem.tag == tag:
-                return elem.text or ""
-        return default
-    def findall(self, element, tag):
-        if tag[:3] == ".//":
-            return element.getiterator(tag[3:])
-        result = []
-        for elem in element:
-            if elem.tag == tag:
-                result.append(elem)
-        return result
-
-try:
-    import ElementPath
-except ImportError:
-    # FIXME: issue warning in this case?
-    ElementPath = _SimpleElementPath()
-
-# TODO: add support for custom namespace resolvers/default namespaces
-# TODO: add improved support for incremental parsing
-
-VERSION = "1.2.6"
-
-##
-# Internal element class.  This class defines the Element interface,
-# and provides a reference implementation of this interface.
-# <p>
-# You should not create instances of this class directly.  Use the
-# appropriate factory functions instead, such as {@link #Element}
-# and {@link #SubElement}.
-#
-# @see Element
-# @see SubElement
-# @see Comment
-# @see ProcessingInstruction
-
-class _ElementInterface:
-    # <tag attrib>text<child/>...</tag>tail
-
-    ##
-    # (Attribute) Element tag.
-
-    tag = None
-
-    ##
-    # (Attribute) Element attribute dictionary.  Where possible, use
-    # {@link #_ElementInterface.get},
-    # {@link #_ElementInterface.set},
-    # {@link #_ElementInterface.keys}, and
-    # {@link #_ElementInterface.items} to access
-    # element attributes.
-
-    attrib = None
-
-    ##
-    # (Attribute) Text before first subelement.  This is either a
-    # string or the value None, if there was no text.
-
-    text = None
-
-    ##
-    # (Attribute) Text after this element's end tag, but before the
-    # next sibling element's start tag.  This is either a string or
-    # the value None, if there was no text.
-
-    tail = None # text after end tag, if any
-
-    def __init__(self, tag, attrib):
-        self.tag = tag
-        self.attrib = attrib
-        self._children = []
-
-    def __repr__(self):
-        return "<Element %s at %x>" % (self.tag, id(self))
-
-    ##
-    # Creates a new element object of the same type as this element.
-    #
-    # @param tag Element tag.
-    # @param attrib Element attributes, given as a dictionary.
-    # @return A new element instance.
-
-    def makeelement(self, tag, attrib):
-        return Element(tag, attrib)
-
-    ##
-    # Returns the number of subelements.
-    #
-    # @return The number of subelements.
-
-    def __len__(self):
-        return len(self._children)
-
-    ##
-    # Returns the given subelement.
-    #
-    # @param index What subelement to return.
-    # @return The given subelement.
-    # @exception IndexError If the given element does not exist.
-
-    def __getitem__(self, index):
-        return self._children[index]
-
-    ##
-    # Replaces the given subelement.
-    #
-    # @param index What subelement to replace.
-    # @param element The new element value.
-    # @exception IndexError If the given element does not exist.
-    # @exception AssertionError If element is not a valid object.
-
-    def __setitem__(self, index, element):
-        assert iselement(element)
-        self._children[index] = element
-
-    ##
-    # Deletes the given subelement.
-    #
-    # @param index What subelement to delete.
-    # @exception IndexError If the given element does not exist.
-
-    def __delitem__(self, index):
-        del self._children[index]
-
-    ##
-    # Returns a list containing subelements in the given range.
-    #
-    # @param start The first subelement to return.
-    # @param stop The first subelement that shouldn't be returned.
-    # @return A sequence object containing subelements.
-
-    def __getslice__(self, start, stop):
-        return self._children[start:stop]
-
-    ##
-    # Replaces a number of subelements with elements from a sequence.
-    #
-    # @param start The first subelement to replace.
-    # @param stop The first subelement that shouldn't be replaced.
-    # @param elements A sequence object with zero or more elements.
-    # @exception AssertionError If a sequence member is not a valid object.
-
-    def __setslice__(self, start, stop, elements):
-        for element in elements:
-            assert iselement(element)
-        self._children[start:stop] = list(elements)
-
-    ##
-    # Deletes a number of subelements.
-    #
-    # @param start The first subelement to delete.
-    # @param stop The first subelement to leave in there.
-
-    def __delslice__(self, start, stop):
-        del self._children[start:stop]
-
-    ##
-    # Adds a subelement to the end of this element.
-    #
-    # @param element The element to add.
-    # @exception AssertionError If a sequence member is not a valid object.
-
-    def append(self, element):
-        assert iselement(element)
-        self._children.append(element)
-
-    ##
-    # Inserts a subelement at the given position in this element.
-    #
-    # @param index Where to insert the new subelement.
-    # @exception AssertionError If the element is not a valid object.
-
-    def insert(self, index, element):
-        assert iselement(element)
-        self._children.insert(index, element)
-
-    ##
-    # Removes a matching subelement.  Unlike the <b>find</b> methods,
-    # this method compares elements based on identity, not on tag
-    # value or contents.
-    #
-    # @param element What element to remove.
-    # @exception ValueError If a matching element could not be found.
-    # @exception AssertionError If the element is not a valid object.
-
-    def remove(self, element):
-        assert iselement(element)
-        self._children.remove(element)
-
-    ##
-    # Returns all subelements.  The elements are returned in document
-    # order.
-    #
-    # @return A list of subelements.
-    # @defreturn list of Element instances
-
-    def getchildren(self):
-        return self._children
-
-    ##
-    # Finds the first matching subelement, by tag name or path.
-    #
-    # @param path What element to look for.
-    # @return The first matching element, or None if no element was found.
-    # @defreturn Element or None
-
-    def find(self, path):
-        return ElementPath.find(self, path)
-
-    ##
-    # Finds text for the first matching subelement, by tag name or path.
-    #
-    # @param path What element to look for.
-    # @param default What to return if the element was not found.
-    # @return The text content of the first matching element, or the
-    #     default value no element was found.  Note that if the element
-    #     has is found, but has no text content, this method returns an
-    #     empty string.
-    # @defreturn string
-
-    def findtext(self, path, default=None):
-        return ElementPath.findtext(self, path, default)
-
-    ##
-    # Finds all matching subelements, by tag name or path.
-    #
-    # @param path What element to look for.
-    # @return A list or iterator containing all matching elements,
-    #    in document order.
-    # @defreturn list of Element instances
-
-    def findall(self, path):
-        return ElementPath.findall(self, path)
-
-    ##
-    # Resets an element.  This function removes all subelements, clears
-    # all attributes, and sets the text and tail attributes to None.
-
-    def clear(self):
-        self.attrib.clear()
-        self._children = []
-        self.text = self.tail = None
-
-    ##
-    # Gets an element attribute.
-    #
-    # @param key What attribute to look for.
-    # @param default What to return if the attribute was not found.
-    # @return The attribute value, or the default value, if the
-    #     attribute was not found.
-    # @defreturn string or None
-
-    def get(self, key, default=None):
-        return self.attrib.get(key, default)
-
-    ##
-    # Sets an element attribute.
-    #
-    # @param key What attribute to set.
-    # @param value The attribute value.
-
-    def set(self, key, value):
-        self.attrib[key] = value
-
-    ##
-    # Gets a list of attribute names.  The names are returned in an
-    # arbitrary order (just like for an ordinary Python dictionary).
-    #
-    # @return A list of element attribute names.
-    # @defreturn list of strings
-
-    def keys(self):
-        return self.attrib.keys()
-
-    ##
-    # Gets element attributes, as a sequence.  The attributes are
-    # returned in an arbitrary order.
-    #
-    # @return A list of (name, value) tuples for all attributes.
-    # @defreturn list of (string, string) tuples
-
-    def items(self):
-        return self.attrib.items()
-
-    ##
-    # Creates a tree iterator.  The iterator loops over this element
-    # and all subelements, in document order, and returns all elements
-    # with a matching tag.
-    # <p>
-    # If the tree structure is modified during iteration, the result
-    # is undefined.
-    #
-    # @param tag What tags to look for (default is to return all elements).
-    # @return A list or iterator containing all the matching elements.
-    # @defreturn list or iterator
-
-    def getiterator(self, tag=None):
-        nodes = []
-        if tag == "*":
-            tag = None
-        if tag is None or self.tag == tag:
-            nodes.append(self)
-        for node in self._children:
-            nodes.extend(node.getiterator(tag))
-        return nodes
-
-# compatibility
-_Element = _ElementInterface
-
-##
-# Element factory.  This function returns an object implementing the
-# standard Element interface.  The exact class or type of that object
-# is implementation dependent, but it will always be compatible with
-# the {@link #_ElementInterface} class in this module.
-# <p>
-# The element name, attribute names, and attribute values can be
-# either 8-bit ASCII strings or Unicode strings.
-#
-# @param tag The element name.
-# @param attrib An optional dictionary, containing element attributes.
-# @param **extra Additional attributes, given as keyword arguments.
-# @return An element instance.
-# @defreturn Element
-
-def Element(tag, attrib={}, **extra):
-    attrib = attrib.copy()
-    attrib.update(extra)
-    return _ElementInterface(tag, attrib)
-
-##
-# Subelement factory.  This function creates an element instance, and
-# appends it to an existing element.
-# <p>
-# The element name, attribute names, and attribute values can be
-# either 8-bit ASCII strings or Unicode strings.
-#
-# @param parent The parent element.
-# @param tag The subelement name.
-# @param attrib An optional dictionary, containing element attributes.
-# @param **extra Additional attributes, given as keyword arguments.
-# @return An element instance.
-# @defreturn Element
-
-def SubElement(parent, tag, attrib={}, **extra):
-    attrib = attrib.copy()
-    attrib.update(extra)
-    element = parent.makeelement(tag, attrib)
-    parent.append(element)
-    return element
-
-##
-# Comment element factory.  This factory function creates a special
-# element that will be serialized as an XML comment.
-# <p>
-# The comment string can be either an 8-bit ASCII string or a Unicode
-# string.
-#
-# @param text A string containing the comment string.
-# @return An element instance, representing a comment.
-# @defreturn Element
-
-def Comment(text=None):
-    element = Element(Comment)
-    element.text = text
-    return element
-
-##
-# PI element factory.  This factory function creates a special element
-# that will be serialized as an XML processing instruction.
-#
-# @param target A string containing the PI target.
-# @param text A string containing the PI contents, if any.
-# @return An element instance, representing a PI.
-# @defreturn Element
-
-def ProcessingInstruction(target, text=None):
-    element = Element(ProcessingInstruction)
-    element.text = target
-    if text:
-        element.text = element.text + " " + text
-    return element
-
-PI = ProcessingInstruction
-
-##
-# QName wrapper.  This can be used to wrap a QName attribute value, in
-# order to get proper namespace handling on output.
-#
-# @param text A string containing the QName value, in the form {uri}local,
-#     or, if the tag argument is given, the URI part of a QName.
-# @param tag Optional tag.  If given, the first argument is interpreted as
-#     an URI, and this argument is interpreted as a local name.
-# @return An opaque object, representing the QName.
-
-class QName:
-    def __init__(self, text_or_uri, tag=None):
-        if tag:
-            text_or_uri = "{%s}%s" % (text_or_uri, tag)
-        self.text = text_or_uri
-    def __str__(self):
-        return self.text
-    def __hash__(self):
-        return hash(self.text)
-    def __cmp__(self, other):
-        if isinstance(other, QName):
-            return cmp(self.text, other.text)
-        return cmp(self.text, other)
-
-##
-# ElementTree wrapper class.  This class represents an entire element
-# hierarchy, and adds some extra support for serialization to and from
-# standard XML.
-#
-# @param element Optional root element.
-# @keyparam file Optional file handle or name.  If given, the
-#     tree is initialized with the contents of this XML file.
-
-class ElementTree:
-
-    def __init__(self, element=None, file=None):
-        assert element is None or iselement(element)
-        self._root = element # first node
-        if file:
-            self.parse(file)
-
-    ##
-    # Gets the root element for this tree.
-    #
-    # @return An element instance.
-    # @defreturn Element
-
-    def getroot(self):
-        return self._root
-
-    ##
-    # Replaces the root element for this tree.  This discards the
-    # current contents of the tree, and replaces it with the given
-    # element.  Use with care.
-    #
-    # @param element An element instance.
-
-    def _setroot(self, element):
-        assert iselement(element)
-        self._root = element
-
-    ##
-    # Loads an external XML document into this element tree.
-    #
-    # @param source A file name or file object.
-    # @param parser An optional parser instance.  If not given, the
-    #     standard {@link XMLTreeBuilder} parser is used.
-    # @return The document root element.
-    # @defreturn Element
-
-    def parse(self, source, parser=None):
-        if not hasattr(source, "read"):
-            source = open(source, "rb")
-        if not parser:
-            parser = XMLTreeBuilder()
-        while 1:
-            data = source.read(32768)
-            if not data:
-                break
-            parser.feed(data)
-        self._root = parser.close()
-        return self._root
-
-    ##
-    # Creates a tree iterator for the root element.  The iterator loops
-    # over all elements in this tree, in document order.
-    #
-    # @param tag What tags to look for (default is to return all elements)
-    # @return An iterator.
-    # @defreturn iterator
-
-    def getiterator(self, tag=None):
-        assert self._root is not None
-        return self._root.getiterator(tag)
-
-    ##
-    # Finds the first toplevel element with given tag.
-    # Same as getroot().find(path).
-    #
-    # @param path What element to look for.
-    # @return The first matching element, or None if no element was found.
-    # @defreturn Element or None
-
-    def find(self, path):
-        assert self._root is not None
-        if path[:1] == "/":
-            path = "." + path
-        return self._root.find(path)
-
-    ##
-    # Finds the element text for the first toplevel element with given
-    # tag.  Same as getroot().findtext(path).
-    #
-    # @param path What toplevel element to look for.
-    # @param default What to return if the element was not found.
-    # @return The text content of the first matching element, or the
-    #     default value no element was found.  Note that if the element
-    #     has is found, but has no text content, this method returns an
-    #     empty string.
-    # @defreturn string
-
-    def findtext(self, path, default=None):
-        assert self._root is not None
-        if path[:1] == "/":
-            path = "." + path
-        return self._root.findtext(path, default)
-
-    ##
-    # Finds all toplevel elements with the given tag.
-    # Same as getroot().findall(path).
-    #
-    # @param path What element to look for.
-    # @return A list or iterator containing all matching elements,
-    #    in document order.
-    # @defreturn list of Element instances
-
-    def findall(self, path):
-        assert self._root is not None
-        if path[:1] == "/":
-            path = "." + path
-        return self._root.findall(path)
-
-    ##
-    # Writes the element tree to a file, as XML.
-    #
-    # @param file A file name, or a file object opened for writing.
-    # @param encoding Optional output encoding (default is US-ASCII).
-
-    def write(self, file, encoding="us-ascii"):
-        assert self._root is not None
-        if not hasattr(file, "write"):
-            file = open(file, "wb")
-        if not encoding:
-            encoding = "us-ascii"
-        elif encoding != "utf-8" and encoding != "us-ascii":
-            file.write("<?xml version='1.0' encoding='%s'?>\n" % encoding)
-        self._write(file, self._root, encoding, {})
-
-    def _write(self, file, node, encoding, namespaces):
-        # write XML to file
-        tag = node.tag
-        if tag is Comment:
-            file.write("<!-- %s -->" % _escape_cdata(node.text, encoding))
-        elif tag is ProcessingInstruction:
-            file.write("<?%s?>" % _escape_cdata(node.text, encoding))
-        else:
-            items = node.items()
-            xmlns_items = [] # new namespaces in this scope
-            try:
-                if isinstance(tag, QName) or tag[:1] == "{":
-                    tag, xmlns = fixtag(tag, namespaces)
-                    if xmlns: xmlns_items.append(xmlns)
-            except TypeError:
-                _raise_serialization_error(tag)
-            file.write("<" + _encode(tag, encoding))
-            if items or xmlns_items:
-                items.sort() # lexical order
-                for k, v in items:
-                    try:
-                        if isinstance(k, QName) or k[:1] == "{":
-                            k, xmlns = fixtag(k, namespaces)
-                            if xmlns: xmlns_items.append(xmlns)
-                    except TypeError:
-                        _raise_serialization_error(k)
-                    try:
-                        if isinstance(v, QName):
-                            v, xmlns = fixtag(v, namespaces)
-                            if xmlns: xmlns_items.append(xmlns)
-                    except TypeError:
-                        _raise_serialization_error(v)
-                    file.write(" %s=\"%s\"" % (_encode(k, encoding),
-                                               _escape_attrib(v, encoding)))
-                for k, v in xmlns_items:
-                    file.write(" %s=\"%s\"" % (_encode(k, encoding),
-                                               _escape_attrib(v, encoding)))
-            if node.text or len(node):
-                file.write(">")
-                if node.text:
-                    file.write(_escape_cdata(node.text, encoding))
-                for n in node:
-                    self._write(file, n, encoding, namespaces)
-                file.write("</" + _encode(tag, encoding) + ">")
-            else:
-                file.write(" />")
-            for k, v in xmlns_items:
-                del namespaces[v]
-        if node.tail:
-            file.write(_escape_cdata(node.tail, encoding))
-
-# --------------------------------------------------------------------
-# helpers
-
-##
-# Checks if an object appears to be a valid element object.
-#
-# @param An element instance.
-# @return A true value if this is an element object.
-# @defreturn flag
-
-def iselement(element):
-    # FIXME: not sure about this; might be a better idea to look
-    # for tag/attrib/text attributes
-    return isinstance(element, _ElementInterface) or hasattr(element, "tag")
-
-##
-# Writes an element tree or element structure to sys.stdout.  This
-# function should be used for debugging only.
-# <p>
-# The exact output format is implementation dependent.  In this
-# version, it's written as an ordinary XML file.
-#
-# @param elem An element tree or an individual element.
-
-def dump(elem):
-    # debugging
-    if not isinstance(elem, ElementTree):
-        elem = ElementTree(elem)
-    elem.write(sys.stdout)
-    tail = elem.getroot().tail
-    if not tail or tail[-1] != "\n":
-        sys.stdout.write("\n")
-
-def _encode(s, encoding):
-    try:
-        return s.encode(encoding)
-    except AttributeError:
-        return s # 1.5.2: assume the string uses the right encoding
-
-if sys.version[:3] == "1.5":
-    _escape = re.compile(r"[&<>\"\x80-\xff]+") # 1.5.2
-else:
-    _escape = re.compile(eval(r'u"[&<>\"\u0080-\uffff]+"'))
-
-_escape_map = {
-    "&": "&",
-    "<": "<",
-    ">": ">",
-    '"': """,
-}
-
-_namespace_map = {
-    # "well-known" namespace prefixes
-    "http://www.w3.org/XML/1998/namespace": "xml",
-    "http://www.w3.org/1999/xhtml": "html",
-    "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
-    "http://schemas.xmlsoap.org/wsdl/": "wsdl",
-}
-
-def _raise_serialization_error(text):
-    raise TypeError(
-        "cannot serialize %r (type %s)" % (text, type(text).__name__)
-        )
-
-def _encode_entity(text, pattern=_escape):
-    # map reserved and non-ascii characters to numerical entities
-    def escape_entities(m, map=_escape_map):
-        out = []
-        append = out.append
-        for char in m.group():
-            text = map.get(char)
-            if text is None:
-                text = "&#%d;" % ord(char)
-            append(text)
-        return string.join(out, "")
-    try:
-        return _encode(pattern.sub(escape_entities, text), "ascii")
-    except TypeError:
-        _raise_serialization_error(text)
-
-#
-# the following functions assume an ascii-compatible encoding
-# (or "utf-16")
-
-def _escape_cdata(text, encoding=None, replace=string.replace):
-    # escape character data
-    try:
-        if encoding:
-            try:
-                text = _encode(text, encoding)
-            except UnicodeError:
-                return _encode_entity(text)
-        text = replace(text, "&", "&")
-        text = replace(text, "<", "<")
-        text = replace(text, ">", ">")
-        return text
-    except (TypeError, AttributeError):
-        _raise_serialization_error(text)
-
-def _escape_attrib(text, encoding=None, replace=string.replace):
-    # escape attribute value
-    try:
-        if encoding:
-            try:
-                text = _encode(text, encoding)
-            except UnicodeError:
-                return _encode_entity(text)
-        text = replace(text, "&", "&")
-        text = replace(text, "'", "'") # FIXME: overkill
-        text = replace(text, "\"", """)
-        text = replace(text, "<", "<")
-        text = replace(text, ">", ">")
-        return text
-    except (TypeError, AttributeError):
-        _raise_serialization_error(text)
-
-def fixtag(tag, namespaces):
-    # given a decorated tag (of the form {uri}tag), return prefixed
-    # tag and namespace declaration, if any
-    if isinstance(tag, QName):
-        tag = tag.text
-    namespace_uri, tag = string.split(tag[1:], "}", 1)
-    prefix = namespaces.get(namespace_uri)
-    if prefix is None:
-        prefix = _namespace_map.get(namespace_uri)
-        if prefix is None:
-            prefix = "ns%d" % len(namespaces)
-        namespaces[namespace_uri] = prefix
-        if prefix == "xml":
-            xmlns = None
-        else:
-            xmlns = ("xmlns:%s" % prefix, namespace_uri)
-    else:
-        xmlns = None
-    return "%s:%s" % (prefix, tag), xmlns
-
-##
-# Parses an XML document into an element tree.
-#
-# @param source A filename or file object containing XML data.
-# @param parser An optional parser instance.  If not given, the
-#     standard {@link XMLTreeBuilder} parser is used.
-# @return An ElementTree instance
-
-def parse(source, parser=None):
-    tree = ElementTree()
-    tree.parse(source, parser)
-    return tree
-
-##
-# Parses an XML document into an element tree incrementally, and reports
-# what's going on to the user.
-#
-# @param source A filename or file object containing XML data.
-# @param events A list of events to report back.  If omitted, only "end"
-#     events are reported.
-# @return A (event, elem) iterator.
-
-class iterparse:
-
-    def __init__(self, source, events=None):
-        if not hasattr(source, "read"):
-            source = open(source, "rb")
-        self._file = source
-        self._events = []
-        self._index = 0
-        self.root = self._root = None
-        self._parser = XMLTreeBuilder()
-        # wire up the parser for event reporting
-        parser = self._parser._parser
-        append = self._events.append
-        if events is None:
-            events = ["end"]
-        for event in events:
-            if event == "start":
-                try:
-                    parser.ordered_attributes = 1
-                    parser.specified_attributes = 1
-                    def handler(tag, attrib_in, event=event, append=append,
-                                start=self._parser._start_list):
-                        append((event, start(tag, attrib_in)))
-                    parser.StartElementHandler = handler
-                except AttributeError:
-                    def handler(tag, attrib_in, event=event, append=append,
-                                start=self._parser._start):
-                        append((event, start(tag, attrib_in)))
-                    parser.StartElementHandler = handler
-            elif event == "end":
-                def handler(tag, event=event, append=append,
-                            end=self._parser._end):
-                    append((event, end(tag)))
-                parser.EndElementHandler = handler
-            elif event == "start-ns":
-                def handler(prefix, uri, event=event, append=append):
-                    try:
-                        uri = _encode(uri, "ascii")
-                    except UnicodeError:
-                        pass
-                    append((event, (prefix or "", uri)))
-                parser.StartNamespaceDeclHandler = handler
-            elif event == "end-ns":
-                def handler(prefix, event=event, append=append):
-                    append((event, None))
-                parser.EndNamespaceDeclHandler = handler
-
-    def next(self):
-        while 1:
-            try:
-                item = self._events[self._index]
-            except IndexError:
-                if self._parser is None:
-                    self.root = self._root
-                    try:
-                        raise StopIteration
-                    except NameError:
-                        raise IndexError
-                # load event buffer
-                del self._events[:]
-                self._index = 0
-                data = self._file.read(16384)
-                if data:
-                    self._parser.feed(data)
-                else:
-                    self._root = self._parser.close()
-                    self._parser = None
-            else:
-                self._index = self._index + 1
-                return item
-
-    try:
-        iter
-        def __iter__(self):
-            return self
-    except NameError:
-        def __getitem__(self, index):
-            return self.next()
-
-##
-# Parses an XML document from a string constant.  This function can
-# be used to embed "XML literals" in Python code.
-#
-# @param source A string containing XML data.
-# @return An Element instance.
-# @defreturn Element
-
-def XML(text):
-    parser = XMLTreeBuilder()
-    parser.feed(text)
-    return parser.close()
-
-##
-# Parses an XML document from a string constant, and also returns
-# a dictionary which maps from element id:s to elements.
-#
-# @param source A string containing XML data.
-# @return A tuple containing an Element instance and a dictionary.
-# @defreturn (Element, dictionary)
-
-def XMLID(text):
-    parser = XMLTreeBuilder()
-    parser.feed(text)
-    tree = parser.close()
-    ids = {}
-    for elem in tree.getiterator():
-        id = elem.get("id")
-        if id:
-            ids[id] = elem
-    return tree, ids
-
-##
-# Parses an XML document from a string constant.  Same as {@link #XML}.
-#
-# @def fromstring(text)
-# @param source A string containing XML data.
-# @return An Element instance.
-# @defreturn Element
-
-fromstring = XML
-
-##
-# Generates a string representation of an XML element, including all
-# subelements.
-#
-# @param element An Element instance.
-# @return An encoded string containing the XML data.
-# @defreturn string
-
-def tostring(element, encoding=None):
-    class dummy:
-        pass
-    data = []
-    file = dummy()
-    file.write = data.append
-    ElementTree(element).write(file, encoding)
-    return string.join(data, "")
-
-##
-# Generic element structure builder.  This builder converts a sequence
-# of {@link #TreeBuilder.start}, {@link #TreeBuilder.data}, and {@link
-# #TreeBuilder.end} method calls to a well-formed element structure.
-# <p>
-# You can use this class to build an element structure using a custom XML
-# parser, or a parser for some other XML-like format.
-#
-# @param element_factory Optional element factory.  This factory
-#    is called to create new Element instances, as necessary.
-
-class TreeBuilder:
-
-    def __init__(self, element_factory=None):
-        self._data = [] # data collector
-        self._elem = [] # element stack
-        self._last = None # last element
-        self._tail = None # true if we're after an end tag
-        if element_factory is None:
-            element_factory = _ElementInterface
-        self._factory = element_factory
-
-    ##
-    # Flushes the parser buffers, and returns the toplevel documen
-    # element.
-    #
-    # @return An Element instance.
-    # @defreturn Element
-
-    def close(self):
-        assert len(self._elem) == 0, "missing end tags"
-        assert self._last != None, "missing toplevel element"
-        return self._last
-
-    def _flush(self):
-        if self._data:
-            if self._last is not None:
-                text = string.join(self._data, "")
-                if self._tail:
-                    assert self._last.tail is None, "internal error (tail)"
-                    self._last.tail = text
-                else:
-                    assert self._last.text is None, "internal error (text)"
-                    self._last.text = text
-            self._data = []
-
-    ##
-    # Adds text to the current element.
-    #
-    # @param data A string.  This should be either an 8-bit string
-    #    containing ASCII text, or a Unicode string.
-
-    def data(self, data):
-        self._data.append(data)
-
-    ##
-    # Opens a new element.
-    #
-    # @param tag The element name.
-    # @param attrib A dictionary containing element attributes.
-    # @return The opened element.
-    # @defreturn Element
-
-    def start(self, tag, attrs):
-        self._flush()
-        self._last = elem = self._factory(tag, attrs)
-        if self._elem:
-            self._elem[-1].append(elem)
-        self._elem.append(elem)
-        self._tail = 0
-        return elem
-
-    ##
-    # Closes the current element.
-    #
-    # @param tag The element name.
-    # @return The closed element.
-    # @defreturn Element
-
-    def end(self, tag):
-        self._flush()
-        self._last = self._elem.pop()
-        assert self._last.tag == tag,\
-               "end tag mismatch (expected %s, got %s)" % (
-                   self._last.tag, tag)
-        self._tail = 1
-        return self._last
-
-##
-# Element structure builder for XML source data, based on the
-# <b>expat</b> parser.
-#
-# @keyparam target Target object.  If omitted, the builder uses an
-#     instance of the standard {@link #TreeBuilder} class.
-# @keyparam html Predefine HTML entities.  This flag is not supported
-#     by the current implementation.
-# @see #ElementTree
-# @see #TreeBuilder
-
-class XMLTreeBuilder:
-
-    def __init__(self, html=0, target=None):
-        try:
-            from xml.parsers import expat
-        except ImportError:
-            raise ImportError(
-                "No module named expat; use SimpleXMLTreeBuilder instead"
-                )
-        self._parser = parser = expat.ParserCreate(None, "}")
-        if target is None:
-            target = TreeBuilder()
-        self._target = target
-        self._names = {} # name memo cache
-        # callbacks
-        parser.DefaultHandlerExpand = self._default
-        parser.StartElementHandler = self._start
-        parser.EndElementHandler = self._end
-        parser.CharacterDataHandler = self._data
-        # let expat do the buffering, if supported
-        try:
-            self._parser.buffer_text = 1
-        except AttributeError:
-            pass
-        # use new-style attribute handling, if supported
-        try:
-            self._parser.ordered_attributes = 1
-            self._parser.specified_attributes = 1
-            parser.StartElementHandler = self._start_list
-        except AttributeError:
-            pass
-        encoding = None
-        if not parser.returns_unicode:
-            encoding = "utf-8"
-        # target.xml(encoding, None)
-        self._doctype = None
-        self.entity = {}
-
-    def _fixtext(self, text):
-        # convert text string to ascii, if possible
-        try:
-            return _encode(text, "ascii")
-        except UnicodeError:
-            return text
-
-    def _fixname(self, key):
-        # expand qname, and convert name string to ascii, if possible
-        try:
-            name = self._names[key]
-        except KeyError:
-            name = key
-            if "}" in name:
-                name = "{" + name
-            self._names[key] = name = self._fixtext(name)
-        return name
-
-    def _start(self, tag, attrib_in):
-        fixname = self._fixname
-        tag = fixname(tag)
-        attrib = {}
-        for key, value in attrib_in.items():
-            attrib[fixname(key)] = self._fixtext(value)
-        return self._target.start(tag, attrib)
-
-    def _start_list(self, tag, attrib_in):
-        fixname = self._fixname
-        tag = fixname(tag)
-        attrib = {}
-        if attrib_in:
-            for i in range(0, len(attrib_in), 2):
-                attrib[fixname(attrib_in[i])] = self._fixtext(attrib_in[i+1])
-        return self._target.start(tag, attrib)
-
-    def _data(self, text):
-        return self._target.data(self._fixtext(text))
-
-    def _end(self, tag):
-        return self._target.end(self._fixname(tag))
-
-    def _default(self, text):
-        prefix = text[:1]
-        if prefix == "&":
-            # deal with undefined entities
-            try:
-                self._target.data(self.entity[text[1:-1]])
-            except KeyError:
-                from xml.parsers import expat
-                raise expat.error(
-                    "undefined entity %s: line %d, column %d" %
-                    (text, self._parser.ErrorLineNumber,
-                    self._parser.ErrorColumnNumber)
-                    )
-        elif prefix == "<" and text[:9] == "<!DOCTYPE":
-            self._doctype = [] # inside a doctype declaration
-        elif self._doctype is not None:
-            # parse doctype contents
-            if prefix == ">":
-                self._doctype = None
-                return
-            text = string.strip(text)
-            if not text:
-                return
-            self._doctype.append(text)
-            n = len(self._doctype)
-            if n > 2:
-                type = self._doctype[1]
-                if type == "PUBLIC" and n == 4:
-                    name, type, pubid, system = self._doctype
-                elif type == "SYSTEM" and n == 3:
-                    name, type, system = self._doctype
-                    pubid = None
-                else:
-                    return
-                if pubid:
-                    pubid = pubid[1:-1]
-                self.doctype(name, pubid, system[1:-1])
-                self._doctype = None
-
-    ##
-    # Handles a doctype declaration.
-    #
-    # @param name Doctype name.
-    # @param pubid Public identifier.
-    # @param system System identifier.
-
-    def doctype(self, name, pubid, system):
-        pass
-
-    ##
-    # Feeds data to the parser.
-    #
-    # @param data Encoded data.
-
-    def feed(self, data):
-        self._parser.Parse(data, 0)
-
-    ##
-    # Finishes feeding data to the parser.
-    #
-    # @return An element structure.
-    # @defreturn Element
-
-    def close(self):
-        self._parser.Parse("", 1) # end of data
-        tree = self._target.close()
-        del self._target, self._parser # get rid of circular references
-        return tree
diff --git a/lib/advene/util/audio.py b/lib/advene/util/audio.py
index e722d01..3f1980b 100644
--- a/lib/advene/util/audio.py
+++ b/lib/advene/util/audio.py
@@ -36,7 +36,7 @@ if config.data.os == 'win32':
         #even if gstpluginpath is defined, gst still may not be in path
         gstpath = unicode(os.getenv('PATH', ""), fsenc)
         h,t = os.path.split(ppath)
-        binpath,t = os.path.split(h) 
+        binpath,t = os.path.split(h)
         os.environ['PATH'] = os.pathsep.join( (os.path.join( binpath, 'bin'), gstpath) ).encode(fsenc)
 
 try:
diff --git a/lib/advene/util/handyxml.py b/lib/advene/util/handyxml.py
index 597566f..0e557ba 100644
--- a/lib/advene/util/handyxml.py
+++ b/lib/advene/util/handyxml.py
@@ -1,21 +1,3 @@
-#
-# Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
-#
-# Advene 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.
-#
-# Advene 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 Advene; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
 """ HandyXml
     Make simple XML use convenient.
     Ned Batchelder, http://nedbatchelder.com
diff --git a/lib/advene/util/helper.py b/lib/advene/util/helper.py
index a450982..4c4d185 100755
--- a/lib/advene/util/helper.py
+++ b/lib/advene/util/helper.py
@@ -48,7 +48,6 @@ from advene.model.schema import Schema, AnnotationType, RelationType
 from advene.model.resources import Resources, ResourceData
 from advene.model.view import View
 from advene.model.query import Query
-from advene.model.util.defaultdict import DefaultDict
 import advene.model.zippackage
 
 from advene.model.tal.context import AdveneContext
@@ -57,7 +56,7 @@ from advene.model.exception import AdveneException
 # Initialize ElementTree namespace map with our own prefixes.  This
 # helps generating readable XML through ElementTree (the appropriate
 # namespace prefixes will be used)
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 ET._namespace_map.update({
     config.data.namespace: 'advene',
     'http://www.w3.org/2000/svg': 'svg',
@@ -114,7 +113,7 @@ class TypedUnicode(unicode):
     """Unicode string with a mimetype attribute.
     """
     def __new__(cls, value=""):
-        s=unicode.__new__(cls, value) 
+        s=unicode.__new__(cls, value)
         s.contenttype='text/plain'
         return s
 
@@ -122,7 +121,7 @@ class TypedString(str):
     """String with a mimetype attribute.
     """
     def __new__(cls, value=""):
-        s=str.__new__(cls, value) 
+        s=str.__new__(cls, value)
         s.contenttype='text/plain'
         return s
 
@@ -248,7 +247,7 @@ def unaccent(t):
 
 def format_time_reference(val = 0):
     """Formats a value (in milliseconds) into a time string.
-    
+
     Use the most complete format (HH:MM:SS.sss), for reference into
     saved files.
     """
@@ -259,7 +258,7 @@ def format_time_reference(val = 0):
     (s, ms) = divmod(long(val), 1000)
     # Format: HH:MM:SS.mmm
     return "%s.%03d" % (time.strftime("%H:%M:%S", time.gmtime(s)), ms)
-        
+
 def format_time (val = 0):
     """Formats a value (in milliseconds) into a time string, respecting user preferences.
 
@@ -293,7 +292,7 @@ class InvalidTimestamp(Exception):
     pass
 
 small_time_regexp=re.compile('(?P<m>\d+):(?P<s>\d+)(?P<sep>[.,f]?)(?P<ms>\d+)?$')
-time_regexp=re.compile('(?P<h>\d+):(?P<m>\d+):(?P<s>\d+)(?P<sep>[.,f]?)(?P<ms>\d+)?$')
+time_regexp=re.compile('(?P<h>\d+):(?P<m>\d+):(?P<s>\d+)(?P<sep>[.,:f]?)(?P<ms>\d+)?$')
 float_regexp = re.compile('(?P<s>\d*)\.(?P<ms>\d*)')
 def parse_time(s):
     """Convert a time string as long.
@@ -307,7 +306,7 @@ def parse_time(s):
     - float numbers are considered as seconds
       Regexp: \d*\.\d*
       Example: 2.134 or .134 or 2.
-      
+
     - formatted timestamps with colons in them will be interpreted as follows.
       m:s (1 colon)
       m:s.ms (1 colon)
@@ -315,7 +314,7 @@ def parse_time(s):
       h:m:s (2 colons)
       h:m:s.ms (2 colons)
       h:m:sfNN
-      
+
       Legend:
       h: hours
       m: minutes
@@ -323,7 +322,6 @@ def parse_time(s):
       ms: milliseconds
       NN: frame number
     """
-    f = config.data.preferences['timestamp-format']
     try:
         val=long(s)
     except ValueError:
@@ -627,7 +625,9 @@ def get_id(source, id_):
 root_elements = ('here', 'nothing', 'default', 'options', 'repeat', 'request',
                  # Root elements available in STBVs
                  'package', 'packages', 'annotation', 'relation',
-                 'activeAnnotations', 'player', 'event', 'view',
+                 'player', 'event', 'view',
+                 # For UserEvent:
+                 'identifier',
                  # Root elements available in queries
                  'element',
                  )
@@ -768,23 +768,6 @@ def find_in_path(name):
             return fullname
     return None
 
-def overlapping_annotations(t):
-    """Return a set of overlapping annotations (couples)
-    """
-    res=DefaultDict(default=[])
-    l=t.annotations[:]
-    l.sort(key=lambda a: a.fragment.begin)
-    while l:
-        a=l.pop()
-        begin=a.fragment.begin
-        end=a.fragment.end
-        for b in l:
-            be=b.fragment.begin
-            en=b.fragment.end
-            if not (end <= be or en <= begin):
-                res.append( (a, b) )
-    return res
-
 def common_fieldnames(elements):
     """Extract common fieldnames from simple structured elements.
     """
@@ -794,3 +777,38 @@ def common_fieldnames(elements):
         if e.content.mimetype == 'application/x-advene-structured':
             res.update( (regexp.findall(l) or [ '_error' ])[0] for l in e.content.data.split('\n') )
     return res
+
+parsed_representation = re.compile(r'^here/content/parsed/([\w\d_\.]+)$')
+empty_representation = re.compile(r'^\s*$')
+
+def title2content(new_title, original_content, representation):
+    """Converts a title (short representation) to the appropriate content.
+
+    It takes the 'representation' parameter into account. If it is
+    present, and in a common form (typically extraction of a field),
+    then we can convert the short representation back to the
+    appropriate content.
+
+    @return the new content or None if the content could not be updated.
+    """
+    r = None
+    if representation is None or empty_representation.match(representation):
+        r = unicode(new_title)
+    else:
+        m = parsed_representation.match(representation)
+        if m:
+            # We have a simple representation (here/content/parsed/name)
+            # so we can update the name field.
+            new_title = unicode(new_title).replace('\n', '\\n')
+            name=m.group(1)
+            reg = re.compile('^' + name + '=(.*?)$', re.MULTILINE)
+            if reg.search(original_content):
+                r = reg.sub(name + '=' + new_title, original_content)
+            else:
+                # The key is not present, add it
+                if original_content:
+                    r = original_content + "\n%s=%s" % (name, new_title)
+                else:
+                    r = "%s=%s" % (name, new_title)
+        # else: too complex representation. Return None as default value.
+    return r
diff --git a/lib/advene/util/importer.py b/lib/advene/util/importer.py
index 6fb733e..cecce25 100644
--- a/lib/advene/util/importer.py
+++ b/lib/advene/util/importer.py
@@ -73,7 +73,7 @@ from advene.model.fragment import MillisecondFragment
 import advene.util.helper as helper
 import advene.util.handyxml as handyxml
 import xml.dom
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
 
 IMPORTERS=[]
 
@@ -326,8 +326,8 @@ class GenericImporter(object):
 
     def init_package(self,
                      filename=None,
-                     annotationtypeid='imported-type',
-                     schemaid='imported-schema'):
+                     annotationtypeid=None,
+                     schemaid=None):
         """Create (if necessary) a package with the given schema and  annotation type.
         Returns a tuple (package, annotationtype)
         """
@@ -342,11 +342,17 @@ class GenericImporter(object):
         else:
             p=self.package
 
+
         at=None
-        if schemaid:
-            s=self.create_schema(id_=schemaid, title=schemaid)
-            if annotationtypeid:
-                at=self.create_annotation_type(s, id_=annotationtypeid)
+        if annotationtypeid:
+            at = self.ensure_new_type(prefix=annotationtypeid, schemaid=schemaid)
+        elif schemaid is not None:
+            s = self.package.get_element_by_id(schemaid)
+            if s is None:
+                s = self.create_schema(id_=schemaid, title=schemaid)
+            if not isinstance(s, Schema):
+                raise Exception("Error during conversion: %s is not a schema" % schemaid)
+
         return p, at
 
     def convert(self, source):
@@ -365,7 +371,7 @@ class GenericImporter(object):
           - complete: boolean. Used to mark the completeness of the annotation.
         """
         if self.package is None:
-            self.package, self.defaulttype=self.init_package()
+            self.package, self.defaulttype=self.init_package(annotationtypeid='imported', schemaid='imported-schema')
         for d in source:
             try:
                 begin=helper.parse_time(d['begin'])
@@ -543,7 +549,7 @@ class ExternalAppImporter(GenericImporter):
         in the end.
         """
         pass
-        
+
     def get_process_args(self, filename):
         """Get the process args.
 
@@ -592,7 +598,7 @@ class TextImporter(GenericImporter):
     - float numbers are considered as seconds
       Regexp: \d*\.\d*
       Example: 2.134 or .134 or 2.
-      
+
     - formatted timestamps with colons in them will be interpreted as follows.
       m:s (1 colon)
       m:s.ms (1 colon)
@@ -600,7 +606,7 @@ class TextImporter(GenericImporter):
       h:m:s (2 colons)
       h:m:s.ms (2 colons)
       h:m:sfNN
-      
+
       Legend:
       h: hours
       m: minutes
@@ -1094,18 +1100,23 @@ class SubtitleImporter(GenericImporter):
                                      help=_("Specify the encoding of the input file (latin1, utf8...)"))
 
     def can_handle(fname):
-        if fname.endswith('.srt'):
+        if fname.lower().endswith('.srt') or fname.lower().endswith('.webvtt'):
             return 100
         else:
             return 0
     can_handle=staticmethod(can_handle)
 
-    def srt_iterator(self, f):
-        base=r'\d+:\d+:\d+[,\.]\d+'
+    def srt_iterator(self, f, filesize):
+        if filesize == 0:
+            # Dummy value, but we will be sure not to divide by 0
+            filesize = 1
+        base=r'\d+:\d+:\d+[,\.:]\d+'
         pattern=re.compile('(' + base + ').+(' + base + ')')
         tc=None
         content=[]
         for line in f:
+            if not self.progress(1.0 * f.tell() / filesize):
+                break
             line=line.rstrip()
             match=pattern.search(line)
             if match is not None:
@@ -1117,13 +1128,13 @@ class SubtitleImporter(GenericImporter):
                     if content:
                         print "Strange error: no timestamp was found for content ", "".join(content)
                         content = []
-                    continue
-                d={'begin': tc[0],
-                   'end': tc[1],
-                   'content': u"\n".join(content)}
-                tc=None
-                content=[]
-                yield d
+                else:
+                    d={'begin': tc[0],
+                       'end': tc[1],
+                       'content': u"\n".join(content)}
+                    tc=None
+                    content=[]
+                    yield d
             else:
                 if tc is not None:
                     if self.encoding:
@@ -1138,13 +1149,19 @@ class SubtitleImporter(GenericImporter):
                             data=unicode(line, 'latin1')
                     content.append(data)
                     # else We could check line =~ /^\d+$/
+        # End of for-loop: if there is a last item, convert it.
+        if tc is not None:
+            d={'begin': tc[0],
+               'end': tc[1],
+               'content': u"\n".join(content)}
+            yield d
 
     def process_file(self, filename):
         f=open(filename, 'r')
-        self.init_package(filename=filename)
-        self.ensure_new_type('subtitle', _("Subtitles from %s") % os.path.basename(filename))
+        p, at = self.init_package(filename=filename, annotationtypeid='subtitle')
+        at.title = _("Subtitles from %s") % os.path.basename(filename)
         # FIXME: implement subtitle type detection
-        self.convert(self.srt_iterator(f))
+        self.convert(self.srt_iterator(f, os.path.getsize(filename)))
         f.close()
         self.progress(1.0)
         return self.package
diff --git a/lib/advene/util/odict.py b/lib/advene/util/odict.py
index 3bf708a..e1742f8 100644
--- a/lib/advene/util/odict.py
+++ b/lib/advene/util/odict.py
@@ -130,7 +130,7 @@ class odict(dict):
     >>> d.update({'foo': 'bar'})
     >>> d
     odict.odict([('a', 'b'), ('c', 'd'), ('foo', 'bar')])
-    
+
     Keep in mind that when updating from dict-literals the order is not
     preserved as these dicts are unsorted!
 
@@ -179,7 +179,7 @@ class odict(dict):
     >>> d.reverse()
     >>> d
     odict.odict([('spam', []), ('foo', 'bar'), ('c', 'd'), ('a', 'b')])
-    
+
     And sort it like a list:
 
     >>> d.sort(key=lambda x: x[0].lower())
diff --git a/lib/advene/util/slicebuffer.py b/lib/advene/util/slicebuffer.py
index 3d2a8f1..e7ad33d 100755
--- a/lib/advene/util/slicebuffer.py
+++ b/lib/advene/util/slicebuffer.py
@@ -6,7 +6,7 @@ Copyright 2011 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
+the Free Software Foundation, either version 2.1 of the License, or
 (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
@@ -38,7 +38,7 @@ class SliceBuffer(gst.Element):
         'slicewidth':  ( gobject.TYPE_INT, 'slicewidth', 'Width of slices', 0, 65536, 0, gobject.PARAM_WRITABLE ),
         'offset': (gobject.TYPE_INT, 'offset', 'Offset of samples in the source video. If < 0, use the original offset.', -65536, 65536, 0, gobject.PARAM_WRITABLE),
         }
-    
+
     _sinkpadtemplate = gst.PadTemplate ("sink",
                                          gst.PAD_SINK,
                                          gst.PAD_ALWAYS,
@@ -47,7 +47,7 @@ class SliceBuffer(gst.Element):
                                          gst.PAD_SRC,
                                          gst.PAD_ALWAYS,
                                          gst.caps_from_string ("video/x-raw-rgb,bpp=32,depth=32,blue_mask=-16777216,green_mask=16711680, red_mask=65280, alpha_mask=255,width=[ 1, 2147483647 ],height=[ 1, 2147483647 ],framerate=[ 0/1, 2147483647/1 ]"))
-    
+
     def __init__(self):
         gst.Element.__init__(self)
 
@@ -108,7 +108,7 @@ class SliceBuffer(gst.Element):
 
     def eventfunc(self, pad, event):
         return self.srcpad.push_event (event)
-        
+
     def srcqueryfunc (self, pad, query):
         return self.sinkpad.query (query)
 
@@ -139,7 +139,7 @@ if __name__ == '__main__':
     if files:
         player=gst.element_factory_make('playbin')
         player.props.uri = 'file://' + files[0]
-    
+
         bin=gst.Bin()
         elements = [
             gst.element_factory_make('ffmpegcolorspace'),
@@ -166,7 +166,7 @@ if __name__ == '__main__':
     else:
         player = gst.parse_launch('videotestsrc ! clockoverlay ! ffmpegcolorspace ! videoscale ! slicebuffer %s ! ffmpegcolorspace ! xvimagesink' % " ".join(params))
         bin = player
-    
+
     pipe=player
     overlay=bin.get_by_name('overlay')
 
@@ -176,7 +176,7 @@ if __name__ == '__main__':
             return True
         if msg.structure.has_field('gerror'):
             print "MSG", msg.structure['debug']
-        
+
     def on_eos (bus, msg):
         mainloop.quit()
     bus = pipe.get_bus()
diff --git a/lib/advene/util/snapshotter.py b/lib/advene/util/snapshotter.py
index 80c0b30..104f89c 100755
--- a/lib/advene/util/snapshotter.py
+++ b/lib/advene/util/snapshotter.py
@@ -39,6 +39,9 @@ gtk.gdk.threads_init ()
 
 from threading import Event, Thread
 import Queue
+from Queue import PriorityQueue
+import heapq
+
 try:
     from evaluator import Evaluator
 except ImportError:
@@ -86,6 +89,26 @@ class NotifySink(gst.BaseSink):
 gst.element_register(NotifySink, 'notifysink')
 gobject.type_register(NotifySink)
 
+class UniquePriorityQueue(Queue.PriorityQueue):
+    """PriorityQueue with unique elements.
+
+    Adapted from http://stackoverflow.com/questions/5997189/how-can-i-make-a-unique-value-priority-queue-in-python
+    Thanks to Eli Bendersky.
+    """
+    def _init(self, maxsize):
+        PriorityQueue._init(self, maxsize)
+        self.values = set()
+
+    def _put(self, item, heappush=heapq.heappush):
+        if item[1] not in self.values:
+            self.values.add(item[1])
+            PriorityQueue._put(self, item, heappush)
+
+    def _get(self, heappop=heapq.heappop):
+        item = PriorityQueue._get(self, heappop)
+        self.values.remove(item[1])
+        return item
+
 class Snapshotter(object):
     """Snapshotter class.
 
@@ -105,12 +128,7 @@ class Snapshotter(object):
     def __init__(self, notify=None, width=None):
         self.notify=notify
         # Snapshot queue handling
-        try:
-            self.timestamp_queue=Queue.PriorityQueue()
-        except AttributeError:
-            # python <= 2.5 does not implement PriorityQueue. Use a
-            # plain Queue.
-            self.timestamp_queue=Queue.Queue()
+        self.timestamp_queue=UniquePriorityQueue()
 
         self.snapshot_ready=Event()
         self.thread_running=False
@@ -129,7 +147,7 @@ class Snapshotter(object):
         if width is not None:
             filter=gst.element_factory_make("capsfilter")
             filter.set_property("caps", gst.Caps("video/x-raw-rgb,width=%d,pixel-aspect-ratio=(fraction)1/1" % width))
-            scale=gst.element_factory_make('videoscale')            
+            scale=gst.element_factory_make('videoscale')
             l=(csp, scale, filter, pngenc, queue, sink)
         else:
             l=(csp, pngenc, queue, sink)
@@ -172,7 +190,6 @@ class Snapshotter(object):
         f.write(buffer.data)
         f.close()
         print "Snapshot written to", fname
-        os.system('qiv %s &' % fname)
         return True
 
     def snapshot(self, t):
@@ -198,7 +215,7 @@ class Snapshotter(object):
 
     def process_queue(self):
         """Process the timestamp queue.
-        
+
         This method is meant to run continuously in its own thread.
         """
         self.thread_running=True
diff --git a/lib/advene/util/svgoverlay.py b/lib/advene/util/svgoverlay.py
index 32e0a1b..fc30e6a 100755
--- a/lib/advene/util/svgoverlay.py
+++ b/lib/advene/util/svgoverlay.py
@@ -6,7 +6,7 @@ Copyright 2009 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
+the Free Software Foundation, either version 2.1 of the License, or
 (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
@@ -45,7 +45,7 @@ class SVGOverlay(gst.Element):
         'data': ( gobject.TYPE_STRING, 'data', 'SVG data to overlay', None, gobject.PARAM_WRITABLE ),
         'location': ( gobject.TYPE_STRING, 'location', 'SVG file to overlay', None, gobject.PARAM_WRITABLE ),
         }
-    
+
     _sinkpadtemplate = gst.PadTemplate ("sink",
                                          gst.PAD_SINK,
                                          gst.PAD_ALWAYS,
@@ -54,7 +54,7 @@ class SVGOverlay(gst.Element):
                                          gst.PAD_SRC,
                                          gst.PAD_ALWAYS,
                                          gst.caps_from_string ("video/x-raw-rgb,bpp=32,depth=32,blue_mask=-16777216,green_mask=16711680, red_mask=65280, alpha_mask=255,width=[ 1, 2147483647 ],height=[ 1, 2147483647 ],framerate=[ 0/1, 2147483647/1 ]"))
-    
+
     def __init__(self):
         gst.Element.__init__(self)
 
@@ -87,7 +87,7 @@ class SVGOverlay(gst.Element):
 
     def eventfunc(self, pad, event):
         return self.srcpad.push_event (event)
-        
+
     def srcqueryfunc (self, pad, query):
         return self.sinkpad.query (query)
 
@@ -148,7 +148,7 @@ if __name__ == '__main__':
     if sys.argv[1:]:
         player=gst.element_factory_make('playbin')
         player.props.uri = 'file://' + sys.argv[1]
-    
+
         bin=gst.Bin()
         elements = [
             gst.element_factory_make('textoverlay'),
@@ -162,12 +162,12 @@ if __name__ == '__main__':
         bin.add(*elements)
         gst.element_link_many(*elements)
         bin.add_pad(gst.GhostPad('sink', elements[0].get_pad('video_sink') or elements[0].get_pad('sink')))
-        
+
         player.props.video_sink=bin
     else:
-        player = gst.parse_launch('videotestsrc ! ffmpegcolorspace ! videoscale ! svgoverlay name=overlay ! ffmpegcolorspace ! autovideosink')
+        player = gst.parse_launch('videotestsrc ! ffmpegcolorspace ! videoscale ! pysvgoverlay name=overlay ! ffmpegcolorspace ! autovideosink')
         bin = player
-    
+
     pipe=player
     overlay=bin.get_by_name('overlay')
 
@@ -195,14 +195,14 @@ if __name__ == '__main__':
 </svg:svg>''' % (t[5], time.strftime("%H:%M:%S", t))
 ##        overlay.props.data='''<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 ##<svg height="800" version="1.0" width="600" x="0" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" y="0">
-##  <rect x='50' y='290' width='230' height='60' fill='black' stroke='black' /> 
+##  <rect x='50' y='290' width='230' height='60' fill='black' stroke='black' />
 ##  <text x='55' y='335' fill="white" font-size="48" stroke="white" font-family="sans-serif">
 ##%s
 ##  </text>
 ##</svg>
 ##''' % time.strftime("%H:%M:%S", time.localtime())
         return True
-    
+
     gobject.timeout_add(1000, display)
     try:
         mainloop.run()
diff --git a/lib/advene/util/website_export.py b/lib/advene/util/website_export.py
index afbdb7e..5e1da35 100644
--- a/lib/advene/util/website_export.py
+++ b/lib/advene/util/website_export.py
@@ -67,9 +67,6 @@ class WebsiteExporter(object):
             self.log(_("%s does not exist") % self.destination)
             return
 
-        if not os.path.isdir(self.imgdir):
-            helper.recursive_mkdir(self.imgdir)
-
         if views is None:
             views=[ v
                     for v in self.controller.package.views
@@ -103,7 +100,7 @@ class WebsiteExporter(object):
                 p=cl(self.destination, self.video_url)
                 break
 
-        
+
         return p
 
     def progress_callback(self, value, msg):
@@ -201,7 +198,7 @@ class WebsiteExporter(object):
                 used_overlays.add( (ident, tales) )
                 continue
 
-            l=url.replace(self.controller.server.urlbase, '')
+            l=url.replace(self.controller.get_urlbase(), '')
 
             if l.startswith('http:'):
                 # It is an external url
@@ -266,7 +263,7 @@ class WebsiteExporter(object):
                                 if ext is not None:
                                     output = output + ext
                         elif len(path) > 1 and path[-2] in ('annotations', 'relations',
-                                                            'views', 
+                                                            'views',
                                                             'schemas', 'annotationTypes', 'relationTypes',
                                                             'queries'):
                             # Reference to an Advene element, without
@@ -373,6 +370,8 @@ class WebsiteExporter(object):
         # Copy snapshots
         for t in used_snapshots:
             # FIXME: not robust wrt. multiple packages/videos
+            if not os.path.isdir(self.imgdir):
+                helper.recursive_mkdir(self.imgdir)
             f=open(os.path.join(self.imgdir, '%s.png' % t), 'wb')
             f.write(str(self.controller.package.imagecache[t]))
             f.close()
@@ -385,6 +384,8 @@ class WebsiteExporter(object):
                 print "Cannot find annotation %s for overlaying"
                 continue
             name=ident+tales.replace('/', '_')
+            if not os.path.isdir(self.imgdir):
+                helper.recursive_mkdir(self.imgdir)
             f=open(os.path.join(self.imgdir, 'overlay_%s.png' % name), 'wb')
             if tales:
                 # There is a TALES expression
@@ -477,6 +478,12 @@ class WebsiteExporter(object):
             dest=os.path.join(self.destination, dest)
             if os.path.isdir(path):
                 # Copy tree
+                if os.path.exists(dest):
+                    # First remove old version
+                    if os.path.isdir(dest):
+                        shutil.rmtree(dest, True)
+                    else:
+                        shutil.unlink(dest)
                 shutil.copytree(path, dest)
             else:
                 # Copy file
@@ -501,7 +508,7 @@ class WebsiteExporter(object):
         else:
             default_href=''
             default=''
-            
+
         f.write("""<html><head>%(title)s</head>
 <body>
 <h1>%(title)s views</h1>
@@ -526,7 +533,7 @@ class WebsiteExporter(object):
   <frame name="video_player" src="" />
 </frameset>
 </html>
-""" % { 
+""" % {
                 'title': self.controller.get_title(self.controller.package),
                 'index': default_href or name,
                 })
@@ -694,9 +701,9 @@ class HTML5VideoPlayer(VideoPlayer):
     @staticmethod
     def can_handle(video_url):
         """Static method indicating wether the class can handle the given video url.
-        """        
+        """
         # We always can handle videos.
-        return True  
+        return True
 
     def player_url(self, begin, end=None):
         """Return the URL to play video at the given time.
diff --git a/locale/de/LC_MESSAGES/advene.mo b/locale/de/LC_MESSAGES/advene.mo
deleted file mode 100644
index 2c39330..0000000
Binary files a/locale/de/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/locale/eo/LC_MESSAGES/advene.mo b/locale/eo/LC_MESSAGES/advene.mo
deleted file mode 100644
index 7084ec2..0000000
Binary files a/locale/eo/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/locale/es/LC_MESSAGES/advene.mo b/locale/es/LC_MESSAGES/advene.mo
deleted file mode 100644
index 215f00c..0000000
Binary files a/locale/es/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/locale/fr/LC_MESSAGES/advene.mo b/locale/fr/LC_MESSAGES/advene.mo
deleted file mode 100644
index 21d2963..0000000
Binary files a/locale/fr/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/locale/it/LC_MESSAGES/advene.mo b/locale/it/LC_MESSAGES/advene.mo
deleted file mode 100644
index b4f6930..0000000
Binary files a/locale/it/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/po/POTFILES b/po/POTFILES
index bb966e3..8ea77d3 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -1,5 +1,6 @@
 ../lib/advene/core/controller.py
 ../lib/advene/core/webcherry.py
+../lib/advene/player/gstreamer.py
 ../lib/advene/plugins/featuredetect.py
 ../lib/advene/plugins/anvil.py
 ../lib/advene/plugins/ted.py
@@ -7,10 +8,11 @@
 ../lib/advene/plugins/goodshotdetector.py
 ../lib/advene/plugins/montagerenderer.py
 ../lib/advene/plugins/shotdetectapp.py
+../lib/advene/plugins/pocketsphinx.py
 ../lib/advene/plugins/tts.py
+../lib/advene/plugins/fcp.py
 ../lib/advene/plugins/mpeg7.py
 ../lib/advene/plugins/cinelab.py
-../lib/advene/plugins/aiff.py
 ../lib/advene/plugins/dcp.py
 ../lib/advene/plugins/brltty.py
 ../lib/advene/plugins/ttl.py
@@ -29,6 +31,7 @@
 ../lib/advene/gui/views/viewbook.py
 ../lib/advene/gui/views/editionhistory.py
 ../lib/advene/gui/views/browser.py
+../lib/advene/gui/views/checker.py
 ../lib/advene/gui/views/table.py
 ../lib/advene/gui/views/relation.py
 ../lib/advene/gui/views/tree.py
diff --git a/po/advene.pot b/po/advene.pot
index 641256a..90b8c35 100644
--- a/po/advene.pot
+++ b/po/advene.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -82,111 +82,116 @@ msgid ""
 "The following processes seem to use the %(port)s port: %(processes)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
 #, python-format
 msgid "Loaded %(uri)s as %(alias)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
 #, python-format
 msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
 #, python-format
 msgid "Cannot get audio volume: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
 msgid "None"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
 #, python-format
 msgid "Found matching video file in moviepath: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
 msgid "Analysis of "
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
 msgid "Cannot split the annotation: the given position is outside."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
 #, python-format
 msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
 #, python-format
 msgid "Cannot read the imported package %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
 msgid "Package URI has changed. Reloading package with new URI."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
 msgid ""
 "Cannot load package: the following annotations do not have Millisecond "
 "fragments:"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
 #, python-format
 msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
 #, python-format
 msgid "Checking master package %s for not yet imported elements."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
 msgid "Standard summary"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
 msgid "Default view"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
 #, python-format
 msgid ""
 "Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
 #, python-format
 msgid "Got exception %s when stopping player."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
 #, python-format
 msgid "Raised exception in update_status: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
 msgid "Unable to start the player."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
 #, python-format
 msgid "Comment on set of %d annotations"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
 #, python-format
 msgid "Comment on %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
 #, python-format
 msgid ""
 "<h1>Comment on %(title)s</h1>\n"
@@ -198,23 +203,23 @@ msgid ""
 "\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
 #, python-format
 msgid "List of %s annotations"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
 #, python-format
 msgid "Cannot export to %(filename)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
 #, python-format
 msgid "Error when exporting: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
 #, python-format
 msgid "Data exported to %s"
 msgstr ""
@@ -950,11 +955,15 @@ msgid ""
 "fr/advene/\">Advene</a> v. %s.</em></p>"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
 #, python-format
 msgid "Cannot start HTTP server: %s"
 msgstr ""
 
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
 #: ../lib/advene/plugins/featuredetect.py:42
 msgid "Feature detection (face...)"
 msgstr ""
@@ -996,7 +1005,7 @@ msgstr ""
 msgid "Anvil importer"
 msgstr ""
 
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
 msgid "TED importer"
 msgstr ""
 
@@ -1062,11 +1071,71 @@ msgid ""
 "too many shots are detected, try to increase its value."
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
 #, python-format
 msgid "Detected shot #%(num)d at %(pos)s "
 msgstr ""
 
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+msgid "Generating annotations"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
 #: ../lib/advene/plugins/tts.py:77
 msgid "Pronounce a text"
 msgstr ""
@@ -1086,12 +1155,12 @@ msgstr ""
 msgid "The annotation content"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
 #: ../lib/advene/gui/plugins/actions.py:234
 msgid "Unknown rule"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
 #: ../lib/advene/gui/plugins/actions.py:235
 #, python-format
 msgid ""
@@ -1113,6 +1182,26 @@ msgstr ""
 msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+msgid "Importing subtitles"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
 #: ../lib/advene/plugins/mpeg7.py:54
 msgid "MPEG7 importer"
 msgstr ""
@@ -1138,26 +1227,6 @@ msgstr ""
 msgid "Importing annotations"
 msgstr ""
 
-#: ../lib/advene/plugins/aiff.py:35
-msgid "Aiff importer"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-msgid "Importing subtitles"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:92
-msgid "Importing clips"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
 #: ../lib/advene/plugins/dcp.py:65
 msgid "DCP importer"
 msgstr ""
@@ -1167,11 +1236,11 @@ msgstr ""
 msgid "Converting #%(num)d / %(count)d"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
 msgid "Input from the braille table."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
 msgid "BrlTTY not installed. There will be no braille support."
 msgstr ""
 
@@ -1187,16 +1256,16 @@ msgstr ""
 msgid "Message to display."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
 msgid "BrlTTY connection error: %s"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
 msgid "Braille display: "
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
 msgid "No message"
 msgstr ""
 
@@ -1239,17 +1308,17 @@ msgid "Parsing section information"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
 msgid "Creating package"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
 msgid "Creating annotation types"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
 msgid "Parsing header information"
 msgstr ""
 
@@ -1276,10 +1345,6 @@ msgstr ""
 msgid "Channel selection."
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-msgid "Generating annotations"
-msgstr ""
-
 #: ../lib/advene/plugins/soundenveloppe.py:115
 #, python-format
 msgid "At %s"
@@ -1317,7 +1382,7 @@ msgstr ""
 msgid "Starting silence detection"
 msgstr ""
 
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
 msgid "Aeidon (subtitles) importer"
 msgstr ""
 
@@ -1357,230 +1422,230 @@ msgstr ""
 msgid "Converted from %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
 msgid "ExternalApp importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
 #, python-format
 msgid ""
 "The <b>%s</b> application does not seem to be installed. Please check that "
 "it is present and that its path is correctly specified in preferences."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
 #, python-format
 msgid "The file %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
 #, python-format
 msgid "Could not run %(appname)s: %(msg)s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
 #, python-format
 msgid "Processing %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
 msgid "Cleaning up..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
 msgid "Text importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
 msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
 msgid "lsdvd importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
 msgid "Processing data"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
 msgid "DVD Chapter"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
 msgid "Launching lsdvd..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
 msgid "chaplin importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
 msgid "Xi importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
 msgid "ELAN importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
 #, python-format
 msgid "Converting tier %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
 msgid "Processing time slots"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
 msgid "Fixing forward references"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
 msgid "Creating relations"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
 msgid "Subtitle (SRT) importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
 #, python-format
 msgid "Subtitles from %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
 msgid "PRAAT importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
 msgid "CMML importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
 msgid "Parsing clip information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
 msgid "Creating CMML schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
 msgid "Parsing stream information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
 msgid "IRI importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
 msgid "Generate one type per view"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
 #, python-format
 msgid "Parsing ensemble %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
 #, python-format
 msgid "Parsing decoupage %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
 msgid "Parsing views"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
 msgid "Initializing package"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
 msgid "IRIData importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
 msgid "Parsing sound values"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
 msgid "Creating annotations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
 msgid "Package"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
 msgid "Annotation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
 msgid "Relation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
 msgid "Schema"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
 msgid "Annotation Type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
 msgid "Relation Type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
 #: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
 msgid "View"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
 #: ../lib/advene/gui/main.py:278
 msgid "Query"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
 msgid "Resource Folder"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
 msgid "Resource File"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
 msgid "---- Elements ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
 msgid "---- Attributes ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
 msgid "---- Methods ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
 #, python-format
 msgid "Cannot read %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
 #: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
 #, python-format
 msgid "File %s is not an Advene zip package."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
 #, python-format
 msgid ""
 "Error:\n"
 "%s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
 #, python-format
 msgid ""
 "Package %(title)s:\n"
@@ -1594,81 +1659,81 @@ msgid ""
 "%(description)s\n"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schema"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schemas"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation types"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation types"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "query"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "queries"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "view"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "views"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "package"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "packages"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
 #, python-format
 msgid "No %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
 #, python-format
 msgid "1 %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
 #, python-format
 msgid "%(count)d %(plural)s"
 msgstr ""
@@ -1683,32 +1748,32 @@ msgstr ""
 msgid "%s does not exist"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
 msgid "Starting export"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
 #, python-format
 msgid "Depth %d"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
 #, python-format
 msgid "Depth %(depth)d: processing %(url)s"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
 msgid "Finalizing"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
 #, python-format
 msgid ""
 "<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
 "strong></p>"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
 msgid "Export complete"
 msgstr ""
 
@@ -1770,12 +1835,12 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
 #, python-format
 msgid "Renumbering annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
 msgid ""
 "<b>Renumber all annotations according to their order.</b>\n"
 "\n"
@@ -1789,26 +1854,26 @@ msgid ""
 "The offset parameter allows you to renumber from a given annotation."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
 msgid "Offset"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
 #, python-format
 msgid "Renumbering %d annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
 #, python-format
 msgid "Annotation #%d"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
 #, python-format
 msgid "Extracting %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
 #, python-format
 msgid ""
 "Exporting annotation %(title)s\n"
@@ -1816,262 +1881,266 @@ msgid ""
 "to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
 msgid "Edit"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
 msgid "Browse"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
 msgid "Open in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
 msgid "Delete"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
 msgid "Search/replace content"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
 msgid "Activate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
 msgid "Desactivate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
 #: ../lib/advene/gui/plugins/tracetimeline.py:980
 #: ../lib/advene/gui/plugins/tracetimeline.py:1001
 #: ../lib/advene/gui/edit/transcribe.py:502
 msgid "Go to..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
 msgid "Loop"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
 msgid "Duplicate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+msgid "Save snapshot..."
+msgstr ""
+
+#: ../lib/advene/gui/popup.py:519
 msgid "Extract video fragment"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
 msgid "Incoming"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
 msgid "Outgoing"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
 msgid "Related annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
 msgid "Incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
 msgid "Outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
 #, python-format
 msgid "Begin: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
 #, python-format
 msgid "End: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
 #, python-format
 msgid "Duration: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
 msgid "Members:"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
 msgid "Edit package properties..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
 #, python-format
 msgid "%d annotations(s) - statistics"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
 msgid "Create a new static view..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
 msgid "Create a new dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
 msgid "Create a new annotation..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
 msgid "Create a new schema..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
 msgid "Create a new query..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
 msgid "Create a new folder..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
 msgid "Create a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
 msgid "Insert a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
 msgid "Insert a new resource directory..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
 msgid "Insert a soundclip..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
 msgid "Play sound"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
 msgid "Create a new annotation type..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
 msgid "Create a new relation type..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
 msgid "Select a color"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
 #, python-format
 msgid "A caption dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
 #, python-format
 msgid "Caption %s annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
 msgid "Caption the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
 msgid "Create a comment view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:740
-msgid "Generate a caption dynamic view"
+#: ../lib/advene/gui/popup.py:739
+msgid "Generate a caption dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
 msgid "Display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
 msgid "Display annotations in table"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
 msgid "Export to another format..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
+#: ../lib/advene/gui/popup.py:748
+msgid "Delete all annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
+#: ../lib/advene/gui/popup.py:749
+msgid "Renumber annotations..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:751
-msgid "Adjust annotation bounds"
+#: ../lib/advene/gui/popup.py:750
+msgid "Adjust annotation bounds..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
 #, python-format
 msgid "A follow dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
 #, python-format
 msgid "Follow %s relation-type"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
 msgid "Follow the relation"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
 msgid "Delete all relations..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
 msgid "Create montage from related annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
 msgid "Create dynamic view following relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
 #, python-format
 msgid "Exception in query: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
 msgid "Apply query on..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
 msgid "the package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
 msgid "all annotations of the package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
 msgid "the first annotation of the package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
 msgid "Activate view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
 msgid "Open adhoc view"
 msgstr ""
 
@@ -2234,31 +2303,31 @@ msgid "Cannot remove this widget, it is essential."
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
 msgid "...in its own window"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:125
 #: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
 msgid "...embedded east of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:126
 #: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
 msgid "...embedded west of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:127
 #: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
 msgid "...embedded south of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:128
 #: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
 msgid "...embedded at the right of the window"
 msgstr ""
 
@@ -2333,7 +2402,7 @@ msgid "to create a new static view"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
 msgid "as a transcription"
 msgstr ""
 
@@ -2459,8 +2528,8 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
 #: ../lib/advene/gui/edit/elements.py:508
 #: ../lib/advene/gui/edit/elements.py:557
 #: ../lib/advene/gui/edit/elements.py:657
@@ -2468,44 +2537,65 @@ msgid "Type"
 msgstr ""
 
 #: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
 msgid "Value"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+msgid "Check various package properties"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:90
+msgid "List of possible issues in the current package"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:55
 msgid "Annotation table view"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
 msgid "Display annotations in a table"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
 msgid "Snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
 #: ../lib/advene/gui/edit/elements.py:675
 #: ../lib/advene/gui/edit/elements.py:717
 #: ../lib/advene/gui/edit/elements.py:1108
 msgid "Content"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
 msgid "Begin"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
 msgid "End"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
 msgid "Duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
 #: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
 #: ../lib/advene/gui/edit/elements.py:507
 #: ../lib/advene/gui/edit/elements.py:556
@@ -2519,56 +2609,56 @@ msgstr ""
 msgid "Id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
 msgid "Export data to file..."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
 #, python-format
 msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "begin"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "end"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "content"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
 msgid "Generic table view"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
 msgid "Display Advene elements in a table."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element title"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
 #: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
 #: ../lib/advene/gui/edit/imports.py:331
 #: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2607,13 +2697,13 @@ msgstr ""
 msgid "Adhoc views"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
 msgid "Tree view"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
 msgid "Refresh"
 msgstr ""
 
@@ -2621,25 +2711,76 @@ msgstr ""
 msgid "Package View"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, python-format
+msgid "Move selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, python-format
+msgid "Move annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr ""
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
 msgid "AnnotationDisplay"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
 msgid "Display the contents of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
 msgid "No annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
 msgid "Current time"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
 #, python-format
 msgid ""
 "Schema %(schema)s\n"
@@ -2648,15 +2789,20 @@ msgid ""
 "Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
 msgid "Screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
 #: ../lib/advene/gui/views/relationdisplay.py:104
 msgid "Contents"
 msgstr ""
 
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+msgid "Validate"
+msgstr ""
+
 #: ../lib/advene/gui/views/__init__.py:193
 msgid "Invalid view id"
 msgstr ""
@@ -2680,7 +2826,7 @@ msgstr ""
 msgid "Enter a view name to save this parametered view"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
 #, python-format
 msgid "Error: the identifier %s contains invalid characters."
 msgstr ""
@@ -2713,7 +2859,7 @@ msgstr ""
 msgid "Click or drag-and-drop to reattach view"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
 msgid "Caption"
 msgstr ""
 
@@ -2731,130 +2877,111 @@ msgstr ""
 msgid "Navigation popup"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
 msgid "Transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
 msgid "Display annotations as a text transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
 #: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
 #: ../lib/advene/gui/edit/montage.py:54
 #: ../lib/advene/gui/edit/transcribe.py:85
 msgid "Save view"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
 #: ../lib/advene/gui/views/interactivequery.py:60
 #: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
 #: ../lib/advene/gui/edit/transcribe.py:86
 msgid "Save default options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
 #, python-format
 msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
 msgid "Transcription options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Default representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Use the default representation for annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 #: ../lib/advene/gui/edit/elements.py:962
 msgid "Representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 msgid ""
 "If default representation is unchecked,\n"
 "this TALES expression that will be used to format the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
 msgid "Separator"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
 msgid "This separator will be inserted between the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
 msgid "Whitespace"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
 msgid "Newline"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
 msgid "Tabulation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
 msgid "Dash"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
 msgid "User defined"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid "User-defined separator"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid ""
 "Separator used if user-defined is selected.Use \\n for a newline and \\t for "
 "a tabulation."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Display timestamps"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Insert timestsamp values"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
 msgid "Display annotation bounds"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
 #, python-format
 msgid ""
 "Cannot convert the following annotations,\n"
@@ -2862,53 +2989,53 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
 msgid ""
 "Cannot validate the update.\n"
 "The representation pattern is too complex."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
 msgid "Save transcription to a text file"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
 msgid "Apply the modifications"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
 msgid "Find text"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
 msgid "Quickly switch display options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
 msgid "Refresh the transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
 msgid "Edit preferences"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
 #, python-format
 msgid "Annotation %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
 msgid "Play"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
 #, python-format
 msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
 #: ../lib/advene/gui/edit/transcribe.py:884
 #, python-format
 msgid "Transcription saved to %s"
@@ -3061,7 +3188,7 @@ msgstr ""
 msgid "Convert bookmarks to annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
 msgid "Comment here"
 msgstr ""
 
@@ -3126,7 +3253,7 @@ msgid "Result of a query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
 #, python-format
 msgid "'%s'"
 msgstr ""
@@ -3151,7 +3278,7 @@ msgid "Search/replace content in %d elements"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
 msgid "Empty quicksearch string"
 msgstr ""
 
@@ -3165,7 +3292,7 @@ msgid "Edit query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
 msgid "String to search"
 msgstr ""
 
@@ -3302,7 +3429,7 @@ msgstr ""
 msgid "Edit resource"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
 msgid "Package finder"
 msgstr ""
 
@@ -3314,7 +3441,7 @@ msgstr ""
 msgid "Tag Bag"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
 msgid "Bag of tags"
 msgstr ""
 
@@ -3323,8 +3450,8 @@ msgid "New tag"
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
 #: ../lib/advene/gui/edit/properties.py:46
 #: ../lib/advene/gui/edit/transcribe.py:147
 #: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3340,7 +3467,7 @@ msgid "Enter a new tag name and select its color."
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
 msgid "Name"
 msgstr ""
 
@@ -3348,13 +3475,13 @@ msgstr ""
 #: ../lib/advene/gui/edit/elements.py:871
 #: ../lib/advene/gui/edit/elements.py:951
 #: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
 #: ../lib/advene/rules/actions.py:133
 msgid "Color"
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
 msgid "The tag contains invalid characters"
 msgstr ""
 
@@ -3403,58 +3530,54 @@ msgstr ""
 msgid "EditAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-msgid "Validate"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
 msgid "Timeline"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
 msgid "Display annotations on a timeline"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
 msgid "Limit display to current area"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
 msgid "Display whole movie"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
 #, python-format
 msgid "Cannot find annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
 msgid "No scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
 msgid "Continuous scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
 msgid "Discrete scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
 msgid "Annotation scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
 #, python-format
 msgid "%d annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
 msgid "Display all types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
 #, python-format
 msgid ""
 "There are %d annotations.\n"
@@ -3464,399 +3587,393 @@ msgid ""
 "click on the 'Display all types' button below."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
 msgid "Split at current player position"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
 msgid "Center and zoom"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
 #: ../lib/advene/rules/elements.py:1000
 msgid "Creation of a new annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
 msgid "Merge with this annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
 msgid "Align both begin times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
 msgid "Align both end times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
 msgid "Align end time to selected begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
 msgid "Align begin time to selected end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
 msgid "Align all times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
 msgid "Select the appropriate relation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, python-format
-msgid "Move selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, python-format
-msgid "Move annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
 #, python-format
 msgid "Duplicate to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
 #, python-format
 msgid "Move to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
 #, python-format
 msgid "Duplicate at %s and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
 msgid "Annotation filter"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
 msgid "Enter the searched string"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
 #, python-format
 msgid "Duplicate all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
 #, python-format
 msgid "Move all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
 #, python-format
 msgid "Duplicate all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
 #, python-format
 msgid "Move all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
 #, python-format
 msgid "Align all annotation time codes using %s as reference."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
 #, python-format
 msgid "Align all annotation contents using %s as reference"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:1946
+msgid "Displaying done."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:2438
 msgid "Create a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
 msgid "Zoom on region"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
 msgid "Restrict display to region"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
 #: ../lib/advene/gui/edit/transcribe.py:496
 #, python-format
 msgid "Position %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
 msgid "New annotation at player time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
 msgid "New annotation at mouse position"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
 msgid "Selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
 msgid "Cannot zoom more"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
 #, python-format
 msgid "From schema %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
 msgid "Restrict playing to this annotation-type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
 msgid "Goto previous annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
 msgid "Goto next annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
 msgid "+"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
 #: ../lib/advene/gui/edit/transcribe.py:1027
 msgid "Create a new annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
 msgid "Open an annotation display view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
 msgid "Open a slave montage view (coordinated zoom level)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
 msgid "No selected annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
 #, python-format
 msgid "%d selected annotation(s)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
 msgid "Unselect all annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
 msgid "Create a static view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
 msgid "Highlight selection in other views"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
 msgid "Tag selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
 msgid "Delete selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
 msgid "Display selection in a table"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
 msgid "Center and zoom on selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
 msgid "Edit selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
 msgid "Merge annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+msgid "Display statistics"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3254
 msgid "Goto previous page"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
 msgid "Goto next page"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
 #: ../lib/advene/gui/edit/montage.py:535
 msgid "Inspector"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
 msgid ""
 "Delete the selected annotations or drop an annotation here to delete it."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
 msgid ""
 "Drag an annotation type here to remove it from display.\n"
 "Click to edit all displayed types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
 msgid "Selection actions"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
 msgid "Display relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
 msgid "Display all relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
 #: ../lib/advene/gui/plugins/tracetimeline.py:421
 #: ../lib/advene/gui/edit/montage.py:439
 msgid "Zoom out"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
 #: ../lib/advene/gui/plugins/tracetimeline.py:426
 #: ../lib/advene/gui/edit/montage.py:444
 msgid "Zoom in"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
 msgid "Center on current player position."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
 msgid "Automatically activate loop when clicking on an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
 msgid "Displayed"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
 msgid "Not displayed"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
 msgid "< All <"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
 msgid "> All >"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
 msgid "Displayed annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Relation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Display relation types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Relation content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Display relation content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight active annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
 msgid "Enter the tag for the selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
 msgid "Scroller"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
 #, python-format
 msgid "Set of %s annotations"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
 msgid "Refresh snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+msgid "Save as..."
+msgstr ""
+
+#: ../lib/advene/gui/widget.py:1072
 msgid "Use current player position"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+msgid "Adjust timestamp"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
 msgid "Video player"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
 msgid "Complementary video player"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
 msgid "Select video file"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
 msgid "Select a video file"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
 msgid "Synchronize"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
 msgid "Offset in ms"
 msgstr ""
 
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+msgid "Drag and drop to get player time"
+msgstr ""
+
 #: ../lib/advene/gui/plugins/actions.py:52
 msgid "Display a popup"
 msgstr ""
@@ -4106,130 +4223,130 @@ msgstr ""
 msgid "New bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
 #, python-format
 msgid "Rendering type %(type)s as %(presentation)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
 msgid "Snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
 msgid "Overlayed snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
 msgid "Timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
 msgid "Snapshot+timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
 msgid "Annotation content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
 msgid "as a list"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
 msgid "as a table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
 msgid "Play video"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
 msgid "Show timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
 msgid "Show content only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
 msgid "Show snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
 msgid "Show overlayed timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
 msgid "Show overlayed content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
 #, python-format
 msgid "Annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
 msgid "display as list"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
 msgid "display as table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
 msgid "display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
 msgid "Open link"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
 #, python-format
 msgid "HTML editor: cannot parse content (%s)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
 #, python-format
 msgid "Heading %d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
 msgid "Bold"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
 msgid "Italic"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
 msgid "Header"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
 msgid "Copy"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
 msgid "Cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
 msgid "Paste"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
 msgid "Undo"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
 msgid "WYSIWYG editor"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
 msgid "Edit HTML source"
 msgstr ""
 
@@ -4241,92 +4358,92 @@ msgstr ""
 msgid "Display shot validation interface"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
 #, python-format
 msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
 msgid "Last action undone"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
 #, python-format
 msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
 #, python-format
 msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
 #, python-format
 msgid "Changed cut between #%(first)d and %(second)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
 msgid "Changed begin time for first annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
 msgid "No annotations to adjust"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
 msgid ""
 "Click on the frame just after the cut to adjust the cut time.\n"
 "Control-click on a frame to indicate a missing cut."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
 #, python-format
 msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
 msgid "< Previous cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
 msgid "Display previous cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
 msgid "Next cut >"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
 msgid "Display next cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
 msgid "Go to annotation containing current player time."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
 #: ../lib/advene/gui/edit/frameselector.py:192
 msgid "Refresh snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
 #: ../lib/advene/gui/edit/frameselector.py:193
 msgid "Refresh missing snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
 msgid "Undo last modification"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
 msgid "Merge with previous"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
 msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
 msgid "Close view."
 msgstr ""
 
@@ -4370,7 +4487,7 @@ msgid " Filters"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Reset"
 msgstr ""
 
@@ -4405,56 +4522,56 @@ msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:559
 #: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
 #, python-format
 msgid "of an annotation (%s)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:561
 #: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
 #, python-format
 msgid "of a relation (%s)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:563
 #: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
 #, python-format
 msgid "of an annotation type (%s)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:565
 #: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
 #, python-format
 msgid "of a relation type (%s)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:567
 #: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
 #, python-format
 msgid "of a schema (%s)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:569
 #: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
 #, python-format
 msgid "of a view (%s)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:571
 #: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
 #, python-format
 msgid "of a package (%s)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:573
 #: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
 #, python-format
 msgid "of an unknown item (%s)"
 msgstr ""
@@ -4498,7 +4615,7 @@ msgid "Search"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
 #, python-format
 msgid "%(name)s (%(index)s)"
 msgstr ""
@@ -4551,27 +4668,27 @@ msgstr ""
 msgid "Zoom on action"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
 msgid "Item Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
 msgid "Item name or class"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
 msgid "Type or schema"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
 msgid "Operations"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
 msgid "Comment"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
 #: ../lib/advene/gui/edit/merge.py:191
 msgid "Action"
 msgstr ""
@@ -4615,18 +4732,22 @@ msgstr ""
 msgid "Log Messages"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
 msgid "_Select player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
 msgid "_View"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
 msgid "Packages"
 msgstr ""
 
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+msgid "Open recent"
+msgstr ""
+
 #: ../lib/advene/gui/main.py:239
 msgid "Input from the keyboard (function keys)"
 msgstr ""
@@ -4652,126 +4773,130 @@ msgid "Open a package"
 msgstr ""
 
 #: ../lib/advene/gui/main.py:246
+msgid "Show recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:247
 msgid "_Save package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
 msgid "Save the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 msgid "Save package as..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 msgid "Save the package as..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 msgid "Close package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 msgid "Close the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save session"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save the current session (list of opened packages)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
 msgid "Save workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
 msgid "...as package view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "...as standard workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "Use the current layout as standard workspace in the future"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 msgid "Associate a video _File"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 msgid "Associate a video file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 msgid "Associate a _DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 msgid "Associate a chapter from a DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 msgid "Associate a _Video stream"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 msgid "Enter a video stream address"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "_Import File"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "Import data from an external source"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
+#: ../lib/advene/gui/main.py:261
+msgid "_Process video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
 msgid "Import data from video processing algorithms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge elements from another package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Import _DVD chapters"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Create annotations based on DVD chapters"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 msgid "_Export..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 msgid "Export data to another format"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "_Website export..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "Export views to a website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
 msgid "_Quit"
 msgstr ""
 
@@ -4795,14 +4920,6 @@ msgstr ""
 msgid "Create"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:284
 msgid "P_ackage properties"
 msgstr ""
@@ -4843,18 +4960,10 @@ msgstr ""
 msgid "Open python evaluator window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
 msgid "Webserver log"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:296
 msgid "_Player"
 msgstr ""
@@ -4891,14 +5000,6 @@ msgstr ""
 msgid "Restart the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:302
 msgid "Update annotation screenshots"
 msgstr ""
@@ -4965,245 +5066,256 @@ msgstr ""
 msgid "_About"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
 msgid "Open a package file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
 msgid "Save the current package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
 msgid "Save the package with a new name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
 msgid "Select movie file..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
 msgid "Select DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
 msgid "Create a text annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
 msgid "Create a graphical annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
 msgid "Snapshotter activity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
 #, python-format
 msgid "%d queued requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
 msgid "Cancel all requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
 msgid "No snapshotter"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
 msgid "No snapshotting activity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
 msgid "Snapshotting"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
 msgid "Display application log messages"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
 msgid "Quicksearch lists"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
 msgid "Please specify the lists of elements to be searched."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:498
+#: ../lib/advene/gui/main.py:507
 #, python-format
 msgid ""
 "Searching on %s.\n"
 "Left click to launch the search, right-click to set the quicksearch options"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:499
+#: ../lib/advene/gui/main.py:508
 #, python-format
 msgid "String to search in %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:540
-msgid "All available views"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-msgid "Schema editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:573
-msgid "Open a comment view in the web browser"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:574
-msgid "Create or open a comment view"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-msgid "Display edition history"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:579
-msgid "Visualise the activity trace preview"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:580
-msgid "Visualise the activity trace as a timeline"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
 msgid "Tracing : "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
 msgid "off"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
 msgid "on"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
 msgid "Launch search"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
 msgid "Ignore case"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
 msgid "Searched elements"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
 msgid "Playing"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
 msgid "Pause"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
 msgid "Init"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
 msgid "Undefined"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
 msgid "Enter the new time value"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
 #, python-format
 msgid "Replace content in %d elements"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
 msgid "Find word"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
 msgid "Replace by"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
 #, python-format
 msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
 msgid "The video extracting feature is not available."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
 msgid "Video export"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
 #, python-format
 msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
 msgid "Please choose a destination filename"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
 msgid ""
 "No media association is defined in the package. Please use the 'File/"
 "Associate a video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
 #, python-format
 msgid ""
 "The associated media %s could not be found. Please use the 'File/Associate a "
 "video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
 #, python-format
 msgid ""
 "You are now working with the following video:\n"
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1205
+msgid "_All available views"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+msgid "Schema editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1238
+msgid "Open a comment view in the web browser"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1239
+msgid "Create or open a comment view"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+msgid "Display edition history"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1244
+msgid "Visualise the activity trace preview"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1245
+msgid "Visualise the activity trace as a timeline"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
 #, python-format
 msgid ""
 "<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5212,430 +5324,459 @@ msgid ""
 "cnrs.fr/advene/</span>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
 msgid "Go to the website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
 msgid "Advene release"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 #, python-format
 msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 msgid "Advene is up-to-date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
 msgid "Choose a color"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
 msgid "Select an annotation to loop on it"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
 #, python-format
 msgid "Looping on %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
 msgid "No active dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
 msgid "Create a new dynamic view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1471
-msgid "No dynamic view"
+#: ../lib/advene/gui/main.py:1502
+msgid "Edit the current dynamic view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1473
-msgid "Edit the current dynamic view."
+#: ../lib/advene/gui/main.py:1514
+msgid "No dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
 msgid "Playing rate"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
 msgid "History"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
 msgid "Popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid ""
 "You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid "Information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
 msgid "Cannot create annotation. There is no schema to put it in."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
 msgid "Default annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
 msgid "Annotation created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
 msgid "Play/Pause [Control-Tab / Control-Space]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
 #, python-format
 msgid "Rewind (%.02f s) [Control-Left]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
 #, python-format
 msgid "Forward (%.02f s) [Control-Right]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
 msgid "Previous frame [Control-Down]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
 msgid "Next frame [Control-Up]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
 msgid "Fullscreen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2180
-msgid "Export package data"
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2212
 #, python-format
-msgid "Export annotation type %s"
+msgid ""
+"Screenshot saved in\n"
+" %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2214
 #, python-format
-msgid "Export element %s"
+msgid ""
+"Could not save screenshot:\n"
+" %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2210
-msgid "Export format"
+#: ../lib/advene/gui/main.py:2222
+msgid "Save screenshot to..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2247
-msgid " (modified)"
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
+msgid "Export package data"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2280
 #, python-format
-msgid "Activate %s"
+msgid "Export annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
+#: ../lib/advene/gui/main.py:2282
 #, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
+msgid "Export element %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2297
+#: ../lib/advene/gui/main.py:2308
+msgid "Export format"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2345
+msgid " (modified)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2348
 #, python-format
-msgid "Open %s"
+msgid "Activate %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
 msgid "Saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
 msgid "Restoring workspace..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
 #, python-format
 msgid "Do you wish to restore the %s workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
 msgid "Clear the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
 #, python-format
 msgid "View %s is not an adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
 #, python-format
 msgid "Cannot identify the adhoc view %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
 msgid "Choose the annotation type to display as transcription."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
 #, python-format
 msgid ""
 "Error: unable to find an edit popup for %(element)s:\n"
 "%(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
 #, python-format
 msgid "Editing %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
 #, python-format
 msgid "Comment view (%s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
 #, python-format
 msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
 #, python-format
 msgid "Activating package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
 #, python-format
 msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
 msgid "Do you want to restore the saved workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
 msgid "Advene"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
 #, python-format
 msgid "Got exception %s. Trying to continue."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
 msgid "Unknown"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
 #, python-format
 msgid ""
 "The package(s) %s are modified.\n"
 "Save them now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
 msgid "Choose an annotation type."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
 msgid "No annotation type is defined."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
 msgid "Creating a new type."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
 msgid "Title of the new type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
 msgid ""
 "Id of the new type. It is generated from the title, but you may change it if "
 "necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
 msgid "Specify the content-type for the annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
 msgid "Content type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
 msgid "Create a new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
 msgid "Choose an existing schema for the new type, or create a new one"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
 msgid "Specify the schema title"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
 msgid "Title of the new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
 msgid ""
 "Id of the new schema. It is generated from the title, but you may change it "
 "if necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
 msgid ""
 "You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
 msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
 msgid ""
 "You specified an existing identifier that does not reference a schema. "
 "Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
 msgid "Choose a schema."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
 msgid "You specified an existing identifier. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
 #, python-format
 msgid "Package %s modified"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
 #, python-format
 msgid ""
 "The package %s has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
 #, python-format
 msgid "%s snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
 #, python-format
 msgid "Do you want to save the snapshots for media %s?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
 #, python-format
 msgid "Cannot save imagecache for %(media)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
 msgid "first frame"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
 msgid "last frame"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
 #, python-format
 msgid "Click on %(bound)s of %(annotation)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
 #, python-format
 msgid "Update %(bound)s of %(annotation)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+msgid "Set new timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3523
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3602
 msgid "Text annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
 msgid "Cannot find an appropriate annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
 msgid "Graphical annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
 msgid ""
 "An unsaved template package exists\n"
 "Save it first."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
 msgid "Package modified"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
 msgid ""
 "The package that you want to close has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
 msgid "Load a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
 msgid ""
 "A video file was selected. Pretend that the user selected 'Select a video "
 "file'..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
 #, python-format
 msgid ""
 "The file %s does not look like a valid Advene package. It should have a .azp "
 "or .xml extension. Try to open anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
 msgid ""
 "You are trying to load a session file, but there are unsaved packages. "
 "Proceed anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
 msgid "Do you want to save the current workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
 #, python-format
 msgid "Could not save the package: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
 #, python-format
 msgid "Save the package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
 msgid "Invalid file extension"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
 #, python-format
 msgid ""
 "Your package contains resources,\n"
@@ -5643,90 +5784,90 @@ msgid ""
 "Should I put the correct extension?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
 msgid "OK, the resources will be lost."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
 msgid "Aborting package saving"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
 msgid "Save the session in..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
 #, python-format
 msgid "Session saved in %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
 msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
 msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
 msgid "The associated media is not a DVD."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
 #, python-format
 msgid "Processing %s video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
 msgid "No associated video file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
 msgid "Standard RuleSet"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
 #, python-format
 msgid ""
 "Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
 msgid ""
 "GNU General Public License\n"
 "See http://www.gnu.org/copyleft/gpl.html for more details"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
 msgid "Visit the Advene web site for examples and documentation."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
 msgid "Select a movie file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
 msgid "Title/Chapter selection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
 msgid "Select a video stream"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
 msgid "Enter the address of a video stream"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
 #, python-format
 msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
 msgid "Package properties"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
 #: ../lib/advene/gui/edit/elements.py:559
 #: ../lib/advene/gui/edit/elements.py:644
 #: ../lib/advene/gui/edit/elements.py:706
@@ -5738,11 +5879,11 @@ msgstr ""
 msgid "Author"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
 msgid "Author name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
 #: ../lib/advene/gui/edit/elements.py:560
 #: ../lib/advene/gui/edit/elements.py:645
 #: ../lib/advene/gui/edit/elements.py:707
@@ -5754,764 +5895,766 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
 msgid "Package creation date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
 msgid "Package title"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
 msgid "Associated media"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Media duration in ms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
 msgid "Paths"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Data"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Standard directory for data files"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 msgid "Movie path"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 #, python-format
 msgid ""
 "List of directories (separated by %s) to search for movie files (_ means "
 "package directory)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Imagecache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Directory for storing the snapshot cache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Directory of the video player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 msgid "Shotdetect"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 msgid "Shotdetect application"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
 msgid "GUI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid "Interface language (after restart)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid ""
 "Language used for the interface (necessitates to restart the application)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
 msgid "System default"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
 msgid "Record activity trace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Expert mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Offer advanced possibilities"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Prefer WYSIWYG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Use WYSIWYG editors when possible (HTML, SVG)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid "Player control in edit popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid ""
 "Enable generic player controls in edit windows. This may be undesirable "
 "since it overloads some standard text-edition behaviours (esp. control-left/"
 "right)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
 msgid "Open popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
 msgid "Where should we open adhoc views?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
 msgid "as a popup window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
 msgid "embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
 msgid "embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
 msgid "embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
 msgid "embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History filelist size limit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember window size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember the size of opened windows"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Bookmark snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Width of the snapshots representing bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Bookmark snapshot precision"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Precision (in ms) of the displayed bookmark snapshots."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
 msgid "General"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
 msgid "Weekly update check"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
 msgid "Weekly check for updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
 msgid "On exit,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
 msgid "How to handle screenshots on exit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
 msgid "never save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
 msgid "always save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
 msgid "ask before saving screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
 msgid "Auto-save"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
 msgid "Data auto-save functionality"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
 msgid "is desactivated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
 msgid "is done automatically"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
 msgid "is done after confirmation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Auto-save interval (in s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Interval (in seconds) between package auto-saves"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
 msgid "Workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
 msgid "On package saving,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
 msgid "Do you wish to save the default workspace with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
 msgid "never save the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
 msgid "always save the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
 msgid "ask before saving the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
 msgid "On package load,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
 msgid "Do you wish to load the workspace saved with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
 msgid "never load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
 msgid "always load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
 msgid "ask before loading the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
 msgid "Video Player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid "Autostart"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid ""
 "Automatically start the player when loading a media file (either directly or "
 "through a package)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Fulscreen timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 msgid "Enable captions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 msgid "Enable captions over the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "Caption font"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "TrueType font for captions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG captions over the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
 msgid "Enable snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width in pixels."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity level. -1 for no messages."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
 msgid "Devices"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
 msgid "Standard"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "DVD drive"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "Drive letter for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
 msgid "GDI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
 msgid "Direct X"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "DVD device"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "Device for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
 msgid "X11"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
 msgid "XVideo"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
 msgid "GL"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output module"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
 msgid "Recorder options"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 msgid "Audio input"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record both video and audio"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
 msgid "<i>Experimental</i>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
 msgid "Embed the caption scroller below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
 msgid "Embed the caption view below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
 msgid "Time-related"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 msgid "Time format"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 msgid "Format used to display timecodes"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
 msgid "Default FPS"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
 msgid ""
 "Default FPS (frame-per-second) value, when entering or displaying timestamps "
 "with frame numbers."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid "Time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid ""
 "Skip duration, when using control-left/right or forward/rewind buttons (in "
 "ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Second time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Third time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid "Custom Up/Down"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid ""
 "Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid "Scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid ""
 "On most annotations, control+scrollwheel will increment/decrement their "
 "bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid "Second scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid ""
 "On most annotations, control+shift+scrollwheel will increment/decrement "
 "their bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid "Player sync"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid ""
 "Interval (in ms) with which we synchronize slave players. Setting a too-low "
 "value could render the application unusable. Use 0 to disable continuous "
 "synchronization."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
 msgid "Timeline parameters"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
 msgid "Font size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
 msgid "Font size for annotation widgets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Button height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Height of annotation widgets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Interline height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Height of interlines"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
 msgid "Text content"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 msgid "Completion mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 msgid "Enable dynamic completion mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 msgid "Abbreviation mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 msgid "Enable abbreviation mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 msgid "Abbreviations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 msgid ""
 "Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
 "followed by its replacement."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
 msgid "Text-To-Speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
 msgid "TTS language"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
 msgid "What language settings should be used for text-to-speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
 msgid "English"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
 msgid "French"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
 msgid "Spanish"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
 msgid "TTS Encoding"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
 msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
 msgid "TTS Engine"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
 msgid ""
 "Which TTS engine should be used (modification requires restarting Advene to "
 "take into account)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
 msgid "Automatic"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
 msgid "eSpeak"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
 msgid "Custom script with standard input"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
 msgid "Custom script with arguments"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
 msgid "SAPI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
 msgid "MacOS X say"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
 msgid "Generic (text output)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
 msgid "You should restart Advene to take some options into account."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
 #, python-format
 msgid "Imagecache saved to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
 msgid "Restarting player..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
 msgid "Advene log"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
 msgid "Select the package to merge"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
 msgid "Saving workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
 msgid "Enter a view name to save the workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
 msgid "Default workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
 msgid "Open this workspace when opening the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
 #, python-format
 msgid "Error: the view %s exists and is not a workspace view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
 #, python-format
 msgid "Cannot save default workspace: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
 msgid "Standard workspace has been saved"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
 msgid "Website export"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
 msgid "Exporting views to a website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
 msgid "Output directory"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
 msgid "Specify the output directory"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
 msgid "Maximum recursion depth"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
 msgid "Video URL"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
 msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
 msgid "Could not export data: "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
 #, python-format
 msgid "Website export to %s completed"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
 msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
 #, python-format
 msgid "Updating %d snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
 msgid "No snapshot to update"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
 msgid "You first must load a movie into Advene"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
 #, python-format
 msgid "The movie %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
 msgid "Generating screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
 msgid ""
 "<b>Screenshot generation</b>\n"
 "\n"
@@ -6523,42 +6666,42 @@ msgid ""
 "open."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
 msgid ""
 "The <b>shotdetect</b> application does not seem to be installed. Please "
 "check that it is present and that its path is correctly specified in "
 "preferences."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
 msgid ""
 "Cannot import shotdetect output. Did you install the shotdetect software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
 msgid "Incomplete shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
 #, python-format
 msgid "Detected %s shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
 #, python-format
 msgid "Could not run shotdetect: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
 #, python-format
 msgid "Detecting shots from %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
 msgid "Shot detection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
 msgid ""
 "<b>Shot detection</b>\n"
 "\n"
@@ -6568,13 +6711,13 @@ msgid ""
 "to augment its value."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
 msgid "Sensitivity"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
 msgid "Plain text content"
 msgstr ""
 
@@ -6583,8 +6726,8 @@ msgid "HTML content"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
 msgid "Simple-structured content"
 msgstr ""
 
@@ -6593,8 +6736,8 @@ msgid "List of numeric values"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
 msgid "SVG graphics content"
 msgstr ""
 
@@ -6873,46 +7016,38 @@ msgstr ""
 msgid "Importer"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
 msgid "Advene package importer"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
 msgid "Not likely"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
 #, python-format
 msgid "Completed conversion: %(statistics)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
 #: ../lib/advene/gui/edit/dvdselect.py:73
 msgid "Stop"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
 msgid "Choose the file to import"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
 msgid "Filter"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
 msgid "Options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
 msgid "Start"
 msgstr ""
 
@@ -6979,8 +7114,8 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
 msgid "Rectangular zone content"
 msgstr ""
 
@@ -7043,7 +7178,7 @@ msgid "New resource data"
 msgstr ""
 
 #: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
 msgid "Properties"
 msgstr ""
 
@@ -7280,7 +7415,7 @@ msgid "Error: cannot find a content handler for %s"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
 #, python-format
 msgid ""
 "Cannot read the data:\n"
@@ -7288,12 +7423,12 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
 msgid "Save content to..."
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
 #, python-format
 msgid ""
 "Cannot save the data:\n"
@@ -7301,17 +7436,17 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
 msgid "Open a file (C-o)"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
 msgid "Save to a file (C-s)"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
 msgid "Reload the file (C-r)"
 msgstr ""
 
@@ -7319,15 +7454,15 @@ msgstr ""
 msgid "Insert a value from the browser (C-i)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
 msgid "Begin time is greater than end time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
 msgid "Expecting an integer."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
 #, python-format
 msgid ""
 "The %(attribute)s attribute could not be updated:\n"
@@ -7337,7 +7472,7 @@ msgid ""
 "Resetting to the original value."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
 #, python-format
 msgid ""
 "The following attributes cannot be updated:\n"
@@ -7345,7 +7480,7 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
 #, python-format
 msgid ""
 "The following attributes could not be updated:\n"
@@ -7353,25 +7488,25 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
 msgid "Attribute"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
 msgid "Insert an element"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
 msgid "Choose the element to insert."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
 #, python-format
 msgid "Some tags contain invalid characters: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
 msgid "Tags:"
 msgstr ""
 
@@ -7482,7 +7617,7 @@ msgid "Condition expression: %s"
 msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
+msgid "The annotation type"
 msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:768
@@ -7541,7 +7676,7 @@ msgid "The element duration"
 msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
+msgid "The element type"
 msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:794
@@ -7560,6 +7695,16 @@ msgstr ""
 msgid "The context fragment"
 msgstr ""
 
+#: ../lib/advene/gui/edit/rules.py:809
+#, python-format
+msgid "annotation-type %s"
+msgstr ""
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, python-format
+msgid "relation-type %s"
+msgstr ""
+
 #: ../lib/advene/gui/edit/rules.py:834
 msgid "Select a condition"
 msgstr ""
@@ -7577,52 +7722,52 @@ msgstr ""
 msgid "Activate?"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
 msgid "Schema Editor"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
 msgid "Display"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
 msgid "Remove relation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
 msgid "Create HTML view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
 msgid "Remove annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
 msgid "Create relation type between this one and..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
 msgid "New schema"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
 msgid "New annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
 msgid "New relation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
 msgid "Hide this schema"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
 msgid "Export drawing to pdf"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
 msgid "Choose a filename to export the schema as PDF"
 msgstr ""
 
@@ -7909,102 +8054,102 @@ msgstr ""
 msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
 msgid "Generic shape"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
 #, python-format
 msgid "Link to %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
 msgid "Link"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
 msgid "Link label"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
 msgid "Linewidth"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
 msgid "Filled"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
 #, python-format
 msgid "Properties of %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
 msgid "Rectangle"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
 msgid "Text"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
 msgid "Textsize"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
 msgid "Image"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
 msgid "Href"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
 msgid "Line"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
 msgid "Draw an arrow"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
 msgid "Arrow size"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
 msgid "Circle"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
 msgid "Ellipse"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
 msgid "SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
 msgid "Load SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
 msgid "Save SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
 #, python-format
 msgid "Decrement value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
 #, python-format
 msgid "Increment value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
 msgid ""
 "Click to play\n"
 "Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8012,7 +8157,7 @@ msgid ""
 "Right-click to invalidate screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
 msgid ""
 "Enter a timecode.\n"
 "An integer value will be considered as milliseconds.\n"
@@ -8020,7 +8165,7 @@ msgid ""
 "HH:MM:SS.sss values are possible."
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
 msgid "Set to current player position"
 msgstr ""
 
diff --git a/po/de.po b/po/de.po
index 67aa4b4..c5c0bac 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: advene\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
 "PO-Revision-Date: 2007-08-11 18:51+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: German <de at li.org>\n"
@@ -83,111 +83,116 @@ msgid ""
 "The following processes seem to use the %(port)s port: %(processes)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
 #, python-format
 msgid "Loaded %(uri)s as %(alias)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
 #, python-format
 msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
 #, python-format
 msgid "Cannot get audio volume: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
 msgid "None"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
 #, python-format
 msgid "Found matching video file in moviepath: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
 msgid "Analysis of "
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
 msgid "Cannot split the annotation: the given position is outside."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
 #, python-format
 msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
 #, python-format
 msgid "Cannot read the imported package %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
 msgid "Package URI has changed. Reloading package with new URI."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
 msgid ""
 "Cannot load package: the following annotations do not have Millisecond "
 "fragments:"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
 #, python-format
 msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
 #, python-format
 msgid "Checking master package %s for not yet imported elements."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
 msgid "Standard summary"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
 msgid "Default view"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
 #, python-format
 msgid ""
 "Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
 #, python-format
 msgid "Got exception %s when stopping player."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
 #, python-format
 msgid "Raised exception in update_status: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
 msgid "Unable to start the player."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
 #, fuzzy, python-format
 msgid "Comment on set of %d annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
 #, python-format
 msgid "Comment on %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
 #, python-format
 msgid ""
 "<h1>Comment on %(title)s</h1>\n"
@@ -199,23 +204,23 @@ msgid ""
 "\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
 #, fuzzy, python-format
 msgid "List of %s annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
 #, python-format
 msgid "Cannot export to %(filename)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
 #, python-format
 msgid "Error when exporting: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
 #, python-format
 msgid "Data exported to %s"
 msgstr ""
@@ -975,11 +980,15 @@ msgid ""
 "fr/advene/\">Advene</a> v. %s.</em></p>"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
 #, python-format
 msgid "Cannot start HTTP server: %s"
 msgstr ""
 
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
 #: ../lib/advene/plugins/featuredetect.py:42
 msgid "Feature detection (face...)"
 msgstr ""
@@ -1021,7 +1030,7 @@ msgstr ""
 msgid "Anvil importer"
 msgstr ""
 
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
 #, fuzzy
 msgid "TED importer"
 msgstr "Datei _importieren"
@@ -1091,11 +1100,72 @@ msgid ""
 "too many shots are detected, try to increase its value."
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
 #, python-format
 msgid "Detected shot #%(num)d at %(pos)s "
 msgstr ""
 
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+#, fuzzy
+msgid "Generating annotations"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
 #: ../lib/advene/plugins/tts.py:77
 msgid "Pronounce a text"
 msgstr ""
@@ -1116,12 +1186,12 @@ msgstr ""
 msgid "The annotation content"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
 #: ../lib/advene/gui/plugins/actions.py:234
 msgid "Unknown rule"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
 #: ../lib/advene/gui/plugins/actions.py:235
 #, python-format
 msgid ""
@@ -1143,6 +1213,28 @@ msgstr ""
 msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/plugins/fcp.py:90
+#, fuzzy
+msgid "Importing clips"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
 #: ../lib/advene/plugins/mpeg7.py:54
 msgid "MPEG7 importer"
 msgstr ""
@@ -1172,29 +1264,6 @@ msgstr "Aktivieren und Abspielen"
 msgid "Importing annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/plugins/aiff.py:35
-#, fuzzy
-msgid "Aiff importer"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/plugins/aiff.py:92
-#, fuzzy
-msgid "Importing clips"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
 #: ../lib/advene/plugins/dcp.py:65
 #, fuzzy
 msgid "DCP importer"
@@ -1205,11 +1274,11 @@ msgstr "Datei _importieren"
 msgid "Converting #%(num)d / %(count)d"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
 msgid "Input from the braille table."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
 msgid "BrlTTY not installed. There will be no braille support."
 msgstr ""
 
@@ -1225,16 +1294,16 @@ msgstr ""
 msgid "Message to display."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
 msgid "BrlTTY connection error: %s"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
 msgid "Braille display: "
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
 #, fuzzy
 msgid "No message"
 msgstr "Kein Pakte"
@@ -1279,17 +1348,17 @@ msgid "Parsing section information"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
 msgid "Creating package"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
 msgid "Creating annotation types"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
 msgid "Parsing header information"
 msgstr ""
 
@@ -1316,11 +1385,6 @@ msgstr ""
 msgid "Channel selection."
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#, fuzzy
-msgid "Generating annotations"
-msgstr "von einem Anmerkungs Typ"
-
 #: ../lib/advene/plugins/soundenveloppe.py:115
 #, python-format
 msgid "At %s"
@@ -1360,7 +1424,7 @@ msgstr ""
 msgid "Starting silence detection"
 msgstr ""
 
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
 msgid "Aeidon (subtitles) importer"
 msgstr ""
 
@@ -1400,234 +1464,234 @@ msgstr ""
 msgid "Converted from %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
 #, fuzzy
 msgid "ExternalApp importer"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
 #, python-format
 msgid ""
 "The <b>%s</b> application does not seem to be installed. Please check that "
 "it is present and that its path is correctly specified in preferences."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
 #, python-format
 msgid "The file %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
 #, python-format
 msgid "Could not run %(appname)s: %(msg)s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
 #, fuzzy, python-format
 msgid "Processing %s"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
 msgid "Cleaning up..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
 msgid "Text importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
 msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
 msgid "lsdvd importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
 msgid "Processing data"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
 #, fuzzy
 msgid "DVD Chapter"
 msgstr "Importiere _DVD Kapitel"
 
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
 msgid "Launching lsdvd..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
 msgid "chaplin importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
 msgid "Xi importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
 msgid "ELAN importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
 #, python-format
 msgid "Converting tier %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
 msgid "Processing time slots"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
 msgid "Fixing forward references"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
 msgid "Creating relations"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
 msgid "Subtitle (SRT) importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
 #, python-format
 msgid "Subtitles from %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
 msgid "PRAAT importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
 msgid "CMML importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
 msgid "Parsing clip information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
 msgid "Creating CMML schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
 msgid "Parsing stream information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
 msgid "IRI importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
 msgid "Generate one type per view"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
 #, python-format
 msgid "Parsing ensemble %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
 #, python-format
 msgid "Parsing decoupage %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
 msgid "Parsing views"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
 msgid "Initializing package"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
 msgid "IRIData importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
 msgid "Parsing sound values"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
 #, fuzzy
 msgid "Creating annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
 msgid "Package"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
 msgid "Annotation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
 msgid "Relation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
 msgid "Schema"
 msgstr "Schema"
 
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
 msgid "Annotation Type"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
 #, fuzzy
 msgid "Relation Type"
 msgstr "Verbindungs Type"
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
 #: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
 msgid "View"
 msgstr "Darstellung"
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
 #: ../lib/advene/gui/main.py:278
 msgid "Query"
 msgstr "Abfragen"
 
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
 msgid "Resource Folder"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
 msgid "Resource File"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
 msgid "---- Elements ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
 msgid "---- Attributes ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
 msgid "---- Methods ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
 #, python-format
 msgid "Cannot read %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
 #: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
 #, python-format
 msgid "File %s is not an Advene zip package."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
 #, python-format
 msgid ""
 "Error:\n"
 "%s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
 #, python-format
 msgid ""
 "Package %(title)s:\n"
@@ -1641,81 +1705,81 @@ msgid ""
 "%(description)s\n"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schema"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schemas"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation types"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation types"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "query"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "queries"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "view"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "views"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "package"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "packages"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
 #, python-format
 msgid "No %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
 #, python-format
 msgid "1 %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
 #, python-format
 msgid "%(count)d %(plural)s"
 msgstr ""
@@ -1730,32 +1794,32 @@ msgstr ""
 msgid "%s does not exist"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
 msgid "Starting export"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
 #, python-format
 msgid "Depth %d"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
 #, python-format
 msgid "Depth %(depth)d: processing %(url)s"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
 msgid "Finalizing"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
 #, python-format
 msgid ""
 "<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
 "strong></p>"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
 #, fuzzy
 msgid "Export complete"
 msgstr "Datei _importieren"
@@ -1819,12 +1883,12 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
 #, fuzzy, python-format
 msgid "Renumbering annotations of type %s"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
 msgid ""
 "<b>Renumber all annotations according to their order.</b>\n"
 "\n"
@@ -1838,26 +1902,26 @@ msgid ""
 "The offset parameter allows you to renumber from a given annotation."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
 msgid "Offset"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
 #, fuzzy, python-format
 msgid "Renumbering %d annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
 #, fuzzy, python-format
 msgid "Annotation #%d"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
 #, fuzzy, python-format
 msgid "Extracting %s"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
 #, python-format
 msgid ""
 "Exporting annotation %(title)s\n"
@@ -1865,273 +1929,280 @@ msgid ""
 "to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
 msgid "Edit"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
 msgid "Browse"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
 msgid "Open in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
 msgid "Delete"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
 msgid "Search/replace content"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
 msgid "Activate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
 msgid "Desactivate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
 #: ../lib/advene/gui/plugins/tracetimeline.py:980
 #: ../lib/advene/gui/plugins/tracetimeline.py:1001
 #: ../lib/advene/gui/edit/transcribe.py:502
 msgid "Go to..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
 msgid "Loop"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
 msgid "Duplicate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+#, fuzzy
+msgid "Save snapshot..."
+msgstr "Zeige Shortcuts"
+
+#: ../lib/advene/gui/popup.py:519
 #, fuzzy
 msgid "Extract video fragment"
 msgstr "Gebe eine Video Stream Adresse ein"
 
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
 msgid "Incoming"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
 msgid "Outgoing"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
 #, fuzzy
 msgid "Related annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
 msgid "Incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
 msgid "Outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
 #, python-format
 msgid "Begin: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
 #, python-format
 msgid "End: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
 #, fuzzy, python-format
 msgid "Duration: %s"
 msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
 msgid "Members:"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
 #, fuzzy
 msgid "Edit package properties..."
 msgstr "Bearbeite Packet Eigentschaften"
 
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
 #, python-format
 msgid "%d annotations(s) - statistics"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
 msgid "Create a new static view..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
 msgid "Create a new dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
 msgid "Create a new annotation..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
 msgid "Create a new schema..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
 msgid "Create a new query..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
 msgid "Create a new folder..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
 msgid "Create a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
 msgid "Insert a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
 msgid "Insert a new resource directory..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
 msgid "Insert a soundclip..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
 msgid "Play sound"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
 msgid "Create a new annotation type..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
 msgid "Create a new relation type..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
 msgid "Select a color"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
 #, python-format
 msgid "A caption dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
 #, fuzzy, python-format
 msgid "Caption %s annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
 msgid "Caption the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
 #, fuzzy
 msgid "Create a comment view"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/popup.py:740
-msgid "Generate a caption dynamic view"
+#: ../lib/advene/gui/popup.py:739
+msgid "Generate a caption dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
 msgid "Display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
 #, fuzzy
 msgid "Display annotations in table"
 msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
 #, fuzzy
 msgid "Export to another format..."
 msgstr "Importiere Daten von einer Externen Quelle"
 
+#: ../lib/advene/gui/popup.py:748
+#, fuzzy
+msgid "Delete all annotations"
+msgstr "von einem Anmerkungs Typ"
+
 #: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
-msgstr ""
+#, fuzzy
+msgid "Renumber annotations..."
+msgstr "von einem Anmerkungs Typ"
 
 #: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
-msgstr ""
-
-#: ../lib/advene/gui/popup.py:751
 #, fuzzy
-msgid "Adjust annotation bounds"
+msgid "Adjust annotation bounds..."
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
 #, python-format
 msgid "A follow dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
 #, fuzzy, python-format
 msgid "Follow %s relation-type"
 msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
 msgid "Follow the relation"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
 msgid "Delete all relations..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
 #, fuzzy
 msgid "Create montage from related annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
 msgid "Create dynamic view following relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
 #, python-format
 msgid "Exception in query: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
 msgid "Apply query on..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
 #, fuzzy
 msgid "the package"
 msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
 #, fuzzy
 msgid "all annotations of the package"
 msgstr "Transkription für das gesamte Packet"
 
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
 #, fuzzy
 msgid "the first annotation of the package"
 msgstr "Transkription für das gesamte Packet"
 
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
 msgid "Activate view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
 msgid "Open adhoc view"
 msgstr ""
 
@@ -2295,31 +2366,31 @@ msgid "Cannot remove this widget, it is essential."
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
 msgid "...in its own window"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:125
 #: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
 msgid "...embedded east of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:126
 #: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
 msgid "...embedded west of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:127
 #: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
 msgid "...embedded south of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:128
 #: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
 msgid "...embedded at the right of the window"
 msgstr ""
 
@@ -2395,7 +2466,7 @@ msgid "to create a new static view"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
 #, fuzzy
 msgid "as a transcription"
 msgstr "T_ranskription"
@@ -2529,8 +2600,8 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
 #: ../lib/advene/gui/edit/elements.py:508
 #: ../lib/advene/gui/edit/elements.py:557
 #: ../lib/advene/gui/edit/elements.py:657
@@ -2538,44 +2609,66 @@ msgid "Type"
 msgstr ""
 
 #: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
 msgid "Value"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+#, fuzzy
+msgid "Check various package properties"
+msgstr "Bearbeite Packet Eigentschaften"
+
+#: ../lib/advene/gui/views/checker.py:90
+msgid "List of possible issues in the current package"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:55
 msgid "Annotation table view"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
 msgid "Display annotations in a table"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
 msgid "Snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
 #: ../lib/advene/gui/edit/elements.py:675
 #: ../lib/advene/gui/edit/elements.py:717
 #: ../lib/advene/gui/edit/elements.py:1108
 msgid "Content"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
 msgid "Begin"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
 msgid "End"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
 msgid "Duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
 #: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
 #: ../lib/advene/gui/edit/elements.py:507
 #: ../lib/advene/gui/edit/elements.py:556
@@ -2589,56 +2682,56 @@ msgstr ""
 msgid "Id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
 msgid "Export data to file..."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
 #, python-format
 msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "begin"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "end"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "content"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
 msgid "Generic table view"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
 msgid "Display Advene elements in a table."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element title"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
 #: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
 #: ../lib/advene/gui/edit/imports.py:331
 #: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2677,13 +2770,13 @@ msgstr ""
 msgid "Adhoc views"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
 msgid "Tree view"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
 msgid "Refresh"
 msgstr ""
 
@@ -2691,28 +2784,79 @@ msgstr ""
 msgid "Package View"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, fuzzy, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, fuzzy, python-format
+msgid "Move annotation to type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr ""
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
 #, fuzzy
 msgid "AnnotationDisplay"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
 #, fuzzy
 msgid "Display the contents of an annotation"
 msgstr "Zeige die Transkription für eine Anmerkung"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
 #, fuzzy
 msgid "No annotation"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
 msgid "Current time"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
 #, python-format
 msgid ""
 "Schema %(schema)s\n"
@@ -2721,15 +2865,20 @@ msgid ""
 "Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
 msgid "Screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
 #: ../lib/advene/gui/views/relationdisplay.py:104
 msgid "Contents"
 msgstr ""
 
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+msgid "Validate"
+msgstr ""
+
 #: ../lib/advene/gui/views/__init__.py:193
 msgid "Invalid view id"
 msgstr ""
@@ -2753,7 +2902,7 @@ msgstr ""
 msgid "Enter a view name to save this parametered view"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
 #, python-format
 msgid "Error: the identifier %s contains invalid characters."
 msgstr ""
@@ -2786,7 +2935,7 @@ msgstr ""
 msgid "Click or drag-and-drop to reattach view"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
 msgid "Caption"
 msgstr ""
 
@@ -2804,131 +2953,112 @@ msgstr ""
 msgid "Navigation popup"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
 msgid "Transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
 #, fuzzy
 msgid "Display annotations as a text transcription"
 msgstr "Zeige die Anmerkung als Transkription"
 
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
 #: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
 #: ../lib/advene/gui/edit/montage.py:54
 #: ../lib/advene/gui/edit/transcribe.py:85
 msgid "Save view"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
 #: ../lib/advene/gui/views/interactivequery.py:60
 #: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
 #: ../lib/advene/gui/edit/transcribe.py:86
 msgid "Save default options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
 #, python-format
 msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
 msgid "Transcription options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Default representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Use the default representation for annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 #: ../lib/advene/gui/edit/elements.py:962
 msgid "Representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 msgid ""
 "If default representation is unchecked,\n"
 "this TALES expression that will be used to format the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
 msgid "Separator"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
 msgid "This separator will be inserted between the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
 msgid "Whitespace"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
 msgid "Newline"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
 msgid "Tabulation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
 msgid "Dash"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
 msgid "User defined"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid "User-defined separator"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid ""
 "Separator used if user-defined is selected.Use \\n for a newline and \\t for "
 "a tabulation."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Display timestamps"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Insert timestsamp values"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
 msgid "Display annotation bounds"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
 #, python-format
 msgid ""
 "Cannot convert the following annotations,\n"
@@ -2936,56 +3066,56 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
 msgid ""
 "Cannot validate the update.\n"
 "The representation pattern is too complex."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
 #, fuzzy
 msgid "Save transcription to a text file"
 msgstr "Zeige die Transkription für eine Anmerkung"
 
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
 msgid "Apply the modifications"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
 msgid "Find text"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
 msgid "Quickly switch display options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
 #, fuzzy
 msgid "Refresh the transcription"
 msgstr "T_ranskription"
 
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
 #, fuzzy
 msgid "Edit preferences"
 msgstr "E_instellungen"
 
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
 #, python-format
 msgid "Annotation %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
 msgid "Play"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
 #, python-format
 msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
 #: ../lib/advene/gui/edit/transcribe.py:884
 #, python-format
 msgid "Transcription saved to %s"
@@ -3144,7 +3274,7 @@ msgstr ""
 msgid "Convert bookmarks to annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
 msgid "Comment here"
 msgstr ""
 
@@ -3209,7 +3339,7 @@ msgid "Result of a query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
 #, python-format
 msgid "'%s'"
 msgstr ""
@@ -3234,7 +3364,7 @@ msgid "Search/replace content in %d elements"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
 msgid "Empty quicksearch string"
 msgstr ""
 
@@ -3248,7 +3378,7 @@ msgid "Edit query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
 msgid "String to search"
 msgstr ""
 
@@ -3388,7 +3518,7 @@ msgstr ""
 msgid "Edit resource"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
 #, fuzzy
 msgid "Package finder"
 msgstr "Pakete"
@@ -3401,7 +3531,7 @@ msgstr ""
 msgid "Tag Bag"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
 msgid "Bag of tags"
 msgstr ""
 
@@ -3410,8 +3540,8 @@ msgid "New tag"
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
 #: ../lib/advene/gui/edit/properties.py:46
 #: ../lib/advene/gui/edit/transcribe.py:147
 #: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3427,7 +3557,7 @@ msgid "Enter a new tag name and select its color."
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
 msgid "Name"
 msgstr ""
 
@@ -3435,13 +3565,13 @@ msgstr ""
 #: ../lib/advene/gui/edit/elements.py:871
 #: ../lib/advene/gui/edit/elements.py:951
 #: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
 #: ../lib/advene/rules/actions.py:133
 msgid "Color"
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
 msgid "The tag contains invalid characters"
 msgstr ""
 
@@ -3490,61 +3620,57 @@ msgstr ""
 msgid "EditAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-msgid "Validate"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
 msgid "Timeline"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
 msgid "Display annotations on a timeline"
 msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
 #, fuzzy
 msgid "Limit display to current area"
 msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
 msgid "Display whole movie"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
 #, python-format
 msgid "Cannot find annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
 msgid "No scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
 msgid "Continuous scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
 msgid "Discrete scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
 #, fuzzy
 msgid "Annotation scrolling"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
 #, fuzzy, python-format
 msgid "%d annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
 #, fuzzy
 msgid "Display all types"
 msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
 #, python-format
 msgid ""
 "There are %d annotations.\n"
@@ -3554,415 +3680,413 @@ msgid ""
 "click on the 'Display all types' button below."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
 #, fuzzy
 msgid "Split at current player position"
 msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
 msgid "Center and zoom"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
 #: ../lib/advene/rules/elements.py:1000
 msgid "Creation of a new annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
 msgid "Merge with this annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
 msgid "Align both begin times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
 msgid "Align both end times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
 msgid "Align end time to selected begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
 msgid "Align begin time to selected end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
 msgid "Align all times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
 msgid "Select the appropriate relation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, fuzzy, python-format
-msgid "Move selection to type %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, fuzzy, python-format
-msgid "Duplicate annotation to type %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, fuzzy, python-format
-msgid "Move annotation to type %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
 #, python-format
 msgid "Duplicate to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
 #, python-format
 msgid "Move to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
 #, python-format
 msgid "Duplicate at %s and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
 #, fuzzy
 msgid "Annotation filter"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
 msgid "Enter the searched string"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
 #, fuzzy, python-format
 msgid "Duplicate all annotations to type %s"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
 #, fuzzy, python-format
 msgid "Move all annotations to type %s"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
 #, python-format
 msgid "Duplicate all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
 #, python-format
 msgid "Move all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
 #, python-format
 msgid "Align all annotation time codes using %s as reference."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
 #, python-format
 msgid "Align all annotation contents using %s as reference"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Zeige die Transkription für eine Anmerkung"
+
+#: ../lib/advene/gui/views/timeline.py:1946
+#, fuzzy
+msgid "Displaying done."
+msgstr "Verbindungs Type"
+
+#: ../lib/advene/gui/views/timeline.py:2438
 msgid "Create a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
 msgid "Zoom on region"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
 #, fuzzy
 msgid "Restrict display to region"
 msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
 #: ../lib/advene/gui/edit/transcribe.py:496
 #, python-format
 msgid "Position %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
 #, fuzzy
 msgid "New annotation at player time"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
 #, fuzzy
 msgid "New annotation at mouse position"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
 msgid "Selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
 msgid "Cannot zoom more"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
 #, python-format
 msgid "From schema %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
 msgid "Restrict playing to this annotation-type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
 msgid "Goto previous annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
 #, fuzzy
 msgid "Goto next annotation"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
 msgid "+"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
 #: ../lib/advene/gui/edit/transcribe.py:1027
 msgid "Create a new annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
 #, fuzzy
 msgid "Open an annotation display view"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
 msgid "Open a slave montage view (coordinated zoom level)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
 #, fuzzy
 msgid "No selected annotation"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
 #, python-format
 msgid "%d selected annotation(s)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
 msgid "Unselect all annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
 msgid "Create a static view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
 msgid "Highlight selection in other views"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
 msgid "Tag selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
 msgid "Delete selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
 #, fuzzy
 msgid "Display selection in a table"
 msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
 msgid "Center and zoom on selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
 msgid "Edit selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
 msgid "Merge annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+#, fuzzy
+msgid "Display statistics"
+msgstr "Zeige Shortcuts"
+
+#: ../lib/advene/gui/views/timeline.py:3254
 msgid "Goto previous page"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
 #, fuzzy
 msgid "Goto next page"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
 #: ../lib/advene/gui/edit/montage.py:535
 msgid "Inspector"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
 msgid ""
 "Delete the selected annotations or drop an annotation here to delete it."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
 msgid ""
 "Drag an annotation type here to remove it from display.\n"
 "Click to edit all displayed types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
 msgid "Selection actions"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
 msgid "Display relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
 #, fuzzy
 msgid "Display all relations"
 msgstr "Zeige Packet inhalt als Baumdarstellung"
 
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
 #: ../lib/advene/gui/plugins/tracetimeline.py:421
 #: ../lib/advene/gui/edit/montage.py:439
 msgid "Zoom out"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
 #: ../lib/advene/gui/plugins/tracetimeline.py:426
 #: ../lib/advene/gui/edit/montage.py:444
 msgid "Zoom in"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
 msgid "Center on current player position."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
 msgid "Automatically activate loop when clicking on an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
 msgid "Displayed"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
 msgid "Not displayed"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
 msgid "< All <"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
 msgid "> All >"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
 msgid "Displayed annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Relation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Display relation types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Relation content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Display relation content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight active annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
 msgid "Enter the tag for the selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
 msgid "Scroller"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
 #, fuzzy, python-format
 msgid "Set of %s annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
 #, fuzzy
 msgid "Refresh snapshot"
 msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+#, fuzzy
+msgid "Save as..."
+msgstr "Kein Pakte"
+
+#: ../lib/advene/gui/widget.py:1072
 #, fuzzy
 msgid "Use current player position"
 msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+msgid "Adjust timestamp"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
 #, fuzzy
 msgid "Video player"
 msgstr "_Einstellung Spieler"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
 msgid "Complementary video player"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
 #, fuzzy
 msgid "Select video file"
 msgstr "Wähle einen video stream"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
 #, fuzzy
 msgid "Select a video file"
 msgstr "Wähle einen video stream"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
 msgid "Synchronize"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
 msgid "Offset in ms"
 msgstr ""
 
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+#, fuzzy
+msgid "Drag and drop to get player time"
+msgstr "Kommentar Typ"
+
 #: ../lib/advene/gui/plugins/actions.py:52
 msgid "Display a popup"
 msgstr ""
@@ -4217,134 +4341,134 @@ msgstr ""
 msgid "New bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
 #, python-format
 msgid "Rendering type %(type)s as %(presentation)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
 msgid "Snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
 msgid "Overlayed snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
 msgid "Timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
 msgid "Snapshot+timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
 #, fuzzy
 msgid "Annotation content"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
 msgid "as a list"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
 msgid "as a table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
 msgid "Play video"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
 msgid "Show timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
 msgid "Show content only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
 msgid "Show snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
 msgid "Show overlayed timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
 msgid "Show overlayed content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
 #, fuzzy, python-format
 msgid "Annotation type %s"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
 #, fuzzy
 msgid "display as list"
 msgstr "Zeige Packet inhalt als Baumdarstellung"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
 #, fuzzy
 msgid "display as table"
 msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
 #, fuzzy
 msgid "display as transcription"
 msgstr "T_ranskription"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
 msgid "Open link"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
 #, fuzzy, python-format
 msgid "HTML editor: cannot parse content (%s)"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
 #, fuzzy, python-format
 msgid "Heading %d"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
 msgid "Bold"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
 msgid "Italic"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
 msgid "Header"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
 msgid "Copy"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
 msgid "Cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
 msgid "Paste"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
 msgid "Undo"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
 msgid "WYSIWYG editor"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
 msgid "Edit HTML source"
 msgstr ""
 
@@ -4357,98 +4481,98 @@ msgstr ""
 msgid "Display shot validation interface"
 msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
 #, python-format
 msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
 msgid "Last action undone"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
 #, python-format
 msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
 #, python-format
 msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
 #, python-format
 msgid "Changed cut between #%(first)d and %(second)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
 #, fuzzy
 msgid "Changed begin time for first annotation"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
 #, fuzzy
 msgid "No annotations to adjust"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
 msgid ""
 "Click on the frame just after the cut to adjust the cut time.\n"
 "Control-click on a frame to indicate a missing cut."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
 #, python-format
 msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
 msgid "< Previous cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
 #, fuzzy
 msgid "Display previous cut"
 msgstr "Zeige die Transkription für eine Anmerkung"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
 msgid "Next cut >"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
 #, fuzzy
 msgid "Display next cut"
 msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
 #, fuzzy
 msgid "Go to annotation containing current player time."
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
 #: ../lib/advene/gui/edit/frameselector.py:192
 #, fuzzy
 msgid "Refresh snapshots"
 msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
 #: ../lib/advene/gui/edit/frameselector.py:193
 msgid "Refresh missing snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
 msgid "Undo last modification"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
 msgid "Merge with previous"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
 msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
 msgid "Close view."
 msgstr ""
 
@@ -4494,7 +4618,7 @@ msgid " Filters"
 msgstr "_Datei"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Reset"
 msgstr ""
 
@@ -4532,56 +4656,56 @@ msgstr "_Datei"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:559
 #: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
 #, fuzzy, python-format
 msgid "of an annotation (%s)"
 msgstr "von einem Anmerkungs Typ"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:561
 #: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
 #, fuzzy, python-format
 msgid "of a relation (%s)"
 msgstr "Verbindungs Type"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:563
 #: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
 #, fuzzy, python-format
 msgid "of an annotation type (%s)"
 msgstr "von einem Anmerkungs Typ"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:565
 #: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
 #, fuzzy, python-format
 msgid "of a relation type (%s)"
 msgstr "von einem Anmerkungs Typ"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:567
 #: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
 #, fuzzy, python-format
 msgid "of a schema (%s)"
 msgstr "Kein Pakte"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:569
 #: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
 #, python-format
 msgid "of a view (%s)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:571
 #: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
 #, fuzzy, python-format
 msgid "of a package (%s)"
 msgstr "Kein Pakte"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:573
 #: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
 #, fuzzy, python-format
 msgid "of an unknown item (%s)"
 msgstr "Unbekannte STBV identifier: %s"
@@ -4628,7 +4752,7 @@ msgid "Search"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
 #, python-format
 msgid "%(name)s (%(index)s)"
 msgstr ""
@@ -4684,29 +4808,29 @@ msgstr ""
 msgid "Zoom on action"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
 msgid "Item Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
 msgid "Item name or class"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
 #, fuzzy
 msgid "Type or schema"
 msgstr "Schema"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
 msgid "Operations"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
 #, fuzzy
 msgid "Comment"
 msgstr "Erstelle"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
 #: ../lib/advene/gui/edit/merge.py:191
 msgid "Action"
 msgstr ""
@@ -4752,19 +4876,23 @@ msgstr ""
 msgid "Log Messages"
 msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
 #, fuzzy
 msgid "_Select player"
 msgstr "Wähle einen DVD"
 
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
 msgid "_View"
 msgstr "_Zeige"
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
 msgid "Packages"
 msgstr "Pakete"
 
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+msgid "Open recent"
+msgstr ""
+
 #: ../lib/advene/gui/main.py:239
 msgid "Input from the keyboard (function keys)"
 msgstr ""
@@ -4795,140 +4923,146 @@ msgstr "Kein Pakte"
 
 #: ../lib/advene/gui/main.py:246
 #, fuzzy
+msgid "Show recently opened packages"
+msgstr "Aktuelle Sitzung speichern"
+
+#: ../lib/advene/gui/main.py:247
+#, fuzzy
 msgid "_Save package"
 msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
 #, fuzzy
 msgid "Save the package"
 msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 #, fuzzy
 msgid "Save package as..."
 msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 #, fuzzy
 msgid "Save the package as..."
 msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 #, fuzzy
 msgid "Close package"
 msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 #, fuzzy
 msgid "Close the package"
 msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save session"
 msgstr "Sitzung speichern"
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 #, fuzzy
 msgid "Save the current session (list of opened packages)"
 msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
 msgid "Save workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
 msgid "...as package view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "...as standard workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "Use the current layout as standard workspace in the future"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 #, fuzzy
 msgid "Associate a video _File"
 msgstr "Wähle eine Video Datei"
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 #, fuzzy
 msgid "Associate a video file"
 msgstr "Wähle eine Video Datei"
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 #, fuzzy
 msgid "Associate a _DVD"
 msgstr "Wähle eine DVD Kapitel"
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 #, fuzzy
 msgid "Associate a chapter from a DVD"
 msgstr "Wähle eine DVD Kapitel"
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 #, fuzzy
 msgid "Associate a _Video stream"
 msgstr "Wähle einen video stream"
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 msgid "Enter a video stream address"
 msgstr "Gebe eine Video Stream Adresse ein"
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "_Import File"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "Import data from an external source"
 msgstr "Importiere Daten von einer Externen Quelle"
 
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr ""
+#: ../lib/advene/gui/main.py:261
+#, fuzzy
+msgid "_Process video"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
 #, fuzzy
 msgid "Import data from video processing algorithms"
 msgstr "Importiere Daten von einer Externen Quelle"
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge package"
 msgstr "Vereine Packete"
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge elements from another package"
 msgstr "Füge Elemente von anderen Packeten hinzu"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Import _DVD chapters"
 msgstr "Importiere _DVD Kapitel"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Create annotations based on DVD chapters"
 msgstr "Erschaffe Anmerkung auf Basis des DVD Kapitels"
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 #, fuzzy
 msgid "_Export..."
 msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 #, fuzzy
 msgid "Export data to another format"
 msgstr "Importiere Daten von einer Externen Quelle"
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "_Website export..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "Export views to a website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
 #, fuzzy
 msgid "_Quit"
 msgstr "_Bearbeite"
@@ -4954,14 +5088,6 @@ msgstr ""
 msgid "Create"
 msgstr "Erstelle"
 
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr "Packet _Importierungen"
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Bearbeite importierte Element von anderen Packeten"
-
 #: ../lib/advene/gui/main.py:284
 msgid "P_ackage properties"
 msgstr "P_acket Eigenschaften"
@@ -5003,18 +5129,10 @@ msgstr ""
 msgid "Open python evaluator window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
 msgid "Webserver log"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:296
 msgid "_Player"
 msgstr "_Spieler"
@@ -5054,14 +5172,6 @@ msgstr "_Neustart Spieler"
 msgid "Restart the player"
 msgstr "_Neustart Spieler"
 
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:302
 #, fuzzy
 msgid "Update annotation screenshots"
@@ -5132,255 +5242,266 @@ msgstr ""
 msgid "_About"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
 msgid "Open a package file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
 msgid "Save the current package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
 msgid "Save the package with a new name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
 msgid "Select movie file..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
 msgid "Select DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
 #, fuzzy
 msgid "Create a text annotation"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
 #, fuzzy
 msgid "Create a graphical annotation"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
 msgid "Snapshotter activity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
 #, python-format
 msgid "%d queued requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
 msgid "Cancel all requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
 #, fuzzy
 msgid "No snapshotter"
 msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
 msgid "No snapshotting activity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
 msgid "Snapshotting"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
 #, fuzzy
 msgid "Display application log messages"
 msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
 msgid "Quicksearch lists"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
 msgid "Please specify the lists of elements to be searched."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:498
-#, python-format
-msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:499
-#, python-format
-msgid "String to search in %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:540
-msgid "All available views"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-#, fuzzy
-msgid "Schema editor"
-msgstr "Schema"
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:573
-msgid "Open a comment view in the web browser"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:574
-msgid "Create or open a comment view"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-#, fuzzy
-msgid "Display edition history"
-msgstr "Zeige Kommentare an einer Timeline"
-
-#: ../lib/advene/gui/main.py:579
-#, fuzzy
-msgid "Visualise the activity trace preview"
-msgstr "Aktivieren und Abspielen"
-
-#: ../lib/advene/gui/main.py:580
-#, fuzzy
-msgid "Visualise the activity trace as a timeline"
-msgstr "Aktivieren und Abspielen"
+#: ../lib/advene/gui/main.py:507
+#, python-format
+msgid ""
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:508
+#, python-format
+msgid "String to search in %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
 msgid "Tracing : "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
 msgid "off"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
 #, fuzzy
 msgid "on"
 msgstr "Erledigt"
 
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
 msgid "Launch search"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
 msgid "Ignore case"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
 msgid "Searched elements"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
 msgid "Playing"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
 msgid "Pause"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
 msgid "Init"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
 msgid "Undefined"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
 msgid "Enter the new time value"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
 #, python-format
 msgid "Replace content in %d elements"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
 msgid "Find word"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
 msgid "Replace by"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
 #, python-format
 msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
 msgid "The video extracting feature is not available."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
 #, fuzzy
 msgid "Video export"
 msgstr "_Einstellung Spieler"
 
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
 #, python-format
 msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
 msgid "Please choose a destination filename"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
 msgid ""
 "No media association is defined in the package. Please use the 'File/"
 "Associate a video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
 #, python-format
 msgid ""
 "The associated media %s could not be found. Please use the 'File/Associate a "
 "video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
 #, python-format
 msgid ""
 "You are now working with the following video:\n"
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1205
+msgid "_All available views"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+#, fuzzy
+msgid "Schema editor"
+msgstr "Schema"
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1238
+msgid "Open a comment view in the web browser"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1239
+msgid "Create or open a comment view"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+#, fuzzy
+msgid "Display edition history"
+msgstr "Zeige Kommentare an einer Timeline"
+
+#: ../lib/advene/gui/main.py:1244
+#, fuzzy
+msgid "Visualise the activity trace preview"
+msgstr "Aktivieren und Abspielen"
+
+#: ../lib/advene/gui/main.py:1245
+#, fuzzy
+msgid "Visualise the activity trace as a timeline"
+msgstr "Aktivieren und Abspielen"
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
 #, python-format
 msgid ""
 "<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5389,440 +5510,469 @@ msgid ""
 "cnrs.fr/advene/</span>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
 msgid "Go to the website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
 #, fuzzy
 msgid "Advene release"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 #, python-format
 msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 msgid "Advene is up-to-date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
 msgid "Choose a color"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
 msgid "Select an annotation to loop on it"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
 #, python-format
 msgid "Looping on %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
 msgid "No active dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
 msgid "Create a new dynamic view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1471
-msgid "No dynamic view"
+#: ../lib/advene/gui/main.py:1502
+msgid "Edit the current dynamic view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1473
-msgid "Edit the current dynamic view."
+#: ../lib/advene/gui/main.py:1514
+msgid "No dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
 msgid "Playing rate"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
 msgid "History"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
 msgid "Popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid ""
 "You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid "Information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
 msgid "Cannot create annotation. There is no schema to put it in."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
 #, fuzzy
 msgid "Default annotation type"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
 #, fuzzy
 msgid "Annotation created"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
 msgid "Play/Pause [Control-Tab / Control-Space]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
 #, python-format
 msgid "Rewind (%.02f s) [Control-Left]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
 #, python-format
 msgid "Forward (%.02f s) [Control-Right]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
 msgid "Previous frame [Control-Down]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
 msgid "Next frame [Control-Up]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
 msgid "Fullscreen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2214
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:2222
+msgid "Save screenshot to..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
 #, fuzzy
 msgid "Export package data"
 msgstr "durchsuche Packet daten"
 
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
 #, fuzzy, python-format
 msgid "Export annotation type %s"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
 #, fuzzy, python-format
 msgid "Export element %s"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
 #, fuzzy
 msgid "Export format"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
 msgid " (modified)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
 #, python-format
 msgid "Activate %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
 msgid "Saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
 msgid "Restoring workspace..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
 #, python-format
 msgid "Do you wish to restore the %s workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
 #, fuzzy
 msgid "Clear the current workspace"
 msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
 #, python-format
 msgid "View %s is not an adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
 #, python-format
 msgid "Cannot identify the adhoc view %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
 msgid "Choose the annotation type to display as transcription."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
 #, python-format
 msgid ""
 "Error: unable to find an edit popup for %(element)s:\n"
 "%(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
 #, fuzzy, python-format
 msgid "Editing %s"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
 #, python-format
 msgid "Comment view (%s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
 #, python-format
 msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
 #, python-format
 msgid "Activating package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
 #, python-format
 msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
 msgid "Do you want to restore the saved workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
 msgid "Advene"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
 #, python-format
 msgid "Got exception %s. Trying to continue."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
 msgid "Unknown"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
 #, python-format
 msgid ""
 "The package(s) %s are modified.\n"
 "Save them now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
 msgid "Choose an annotation type."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
 msgid "No annotation type is defined."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
 msgid "Creating a new type."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
 msgid "Title of the new type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
 msgid ""
 "Id of the new type. It is generated from the title, but you may change it if "
 "necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
 #, fuzzy
 msgid "Specify the content-type for the annotation type"
 msgstr "Zeige die Transkription für eine Anmerkung"
 
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
 msgid "Content type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
 msgid "Create a new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
 msgid "Choose an existing schema for the new type, or create a new one"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
 msgid "Specify the schema title"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
 msgid "Title of the new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
 msgid ""
 "Id of the new schema. It is generated from the title, but you may change it "
 "if necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
 msgid ""
 "You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
 msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
 msgid ""
 "You specified an existing identifier that does not reference a schema. "
 "Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
 msgid "Choose a schema."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
 msgid "You specified an existing identifier. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
 #, python-format
 msgid "Package %s modified"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
 #, python-format
 msgid ""
 "The package %s has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
 #, python-format
 msgid "%s snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
 #, python-format
 msgid "Do you want to save the snapshots for media %s?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
 #, python-format
 msgid "Cannot save imagecache for %(media)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
 msgid "first frame"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
 msgid "last frame"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
 #, fuzzy, python-format
 msgid "Click on %(bound)s of %(annotation)s"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
 #, fuzzy, python-format
 msgid "Update %(bound)s of %(annotation)s"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+msgid "Set new timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3523
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3602
 #, fuzzy
 msgid "Text annotation"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
 #, fuzzy
 msgid "Cannot find an appropriate annotation type"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
 #, fuzzy
 msgid "Graphical annotation"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
 msgid ""
 "An unsaved template package exists\n"
 "Save it first."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
 msgid "Package modified"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
 msgid ""
 "The package that you want to close has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
 msgid "Load a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
 msgid ""
 "A video file was selected. Pretend that the user selected 'Select a video "
 "file'..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
 #, python-format
 msgid ""
 "The file %s does not look like a valid Advene package. It should have a .azp "
 "or .xml extension. Try to open anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
 msgid ""
 "You are trying to load a session file, but there are unsaved packages. "
 "Proceed anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
 msgid "Do you want to save the current workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
 #, python-format
 msgid "Could not save the package: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
 #, python-format
 msgid "Save the package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
 msgid "Invalid file extension"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
 #, python-format
 msgid ""
 "Your package contains resources,\n"
@@ -5830,91 +5980,91 @@ msgid ""
 "Should I put the correct extension?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
 msgid "OK, the resources will be lost."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
 msgid "Aborting package saving"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
 msgid "Save the session in..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
 #, python-format
 msgid "Session saved in %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
 msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
 msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
 msgid "The associated media is not a DVD."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
 #, fuzzy, python-format
 msgid "Processing %s video"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
 #, fuzzy
 msgid "No associated video file"
 msgstr "Wähle eine Video Datei"
 
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
 msgid "Standard RuleSet"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
 #, python-format
 msgid ""
 "Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
 msgid ""
 "GNU General Public License\n"
 "See http://www.gnu.org/copyleft/gpl.html for more details"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
 msgid "Visit the Advene web site for examples and documentation."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
 msgid "Select a movie file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
 msgid "Title/Chapter selection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
 msgid "Select a video stream"
 msgstr "Wähle einen video stream"
 
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
 msgid "Enter the address of a video stream"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
 #, python-format
 msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
 msgid "Package properties"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
 #: ../lib/advene/gui/edit/elements.py:559
 #: ../lib/advene/gui/edit/elements.py:644
 #: ../lib/advene/gui/edit/elements.py:706
@@ -5926,11 +6076,11 @@ msgstr ""
 msgid "Author"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
 msgid "Author name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
 #: ../lib/advene/gui/edit/elements.py:560
 #: ../lib/advene/gui/edit/elements.py:645
 #: ../lib/advene/gui/edit/elements.py:707
@@ -5942,777 +6092,779 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
 msgid "Package creation date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
 msgid "Package title"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
 msgid "Associated media"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Media duration in ms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
 msgid "Paths"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Data"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Standard directory for data files"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 msgid "Movie path"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 #, python-format
 msgid ""
 "List of directories (separated by %s) to search for movie files (_ means "
 "package directory)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Imagecache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Directory for storing the snapshot cache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Directory of the video player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 msgid "Shotdetect"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 msgid "Shotdetect application"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
 msgid "GUI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid "Interface language (after restart)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid ""
 "Language used for the interface (necessitates to restart the application)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
 msgid "System default"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
 msgid "Record activity trace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Expert mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Offer advanced possibilities"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Prefer WYSIWYG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Use WYSIWYG editors when possible (HTML, SVG)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid "Player control in edit popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid ""
 "Enable generic player controls in edit windows. This may be undesirable "
 "since it overloads some standard text-edition behaviours (esp. control-left/"
 "right)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
 msgid "Open popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
 msgid "Where should we open adhoc views?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
 msgid "as a popup window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
 msgid "embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
 msgid "embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
 msgid "embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
 msgid "embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History filelist size limit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember window size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember the size of opened windows"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Bookmark snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Width of the snapshots representing bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Bookmark snapshot precision"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Precision (in ms) of the displayed bookmark snapshots."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
 msgid "General"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
 msgid "Weekly update check"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
 msgid "Weekly check for updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
 msgid "On exit,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
 msgid "How to handle screenshots on exit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
 msgid "never save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
 msgid "always save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
 msgid "ask before saving screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
 msgid "Auto-save"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
 msgid "Data auto-save functionality"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
 msgid "is desactivated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
 msgid "is done automatically"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
 msgid "is done after confirmation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Auto-save interval (in s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Interval (in seconds) between package auto-saves"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
 #, fuzzy
 msgid "Workspace"
 msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
 msgid "On package saving,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
 msgid "Do you wish to save the default workspace with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
 #, fuzzy
 msgid "never save the current workspace"
 msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
 #, fuzzy
 msgid "always save the current workspace"
 msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
 msgid "ask before saving the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
 #, fuzzy
 msgid "On package load,"
 msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
 msgid "Do you wish to load the workspace saved with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
 msgid "never load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
 msgid "always load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
 msgid "ask before loading the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
 #, fuzzy
 msgid "Video Player"
 msgstr "_Einstellung Spieler"
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid "Autostart"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid ""
 "Automatically start the player when loading a media file (either directly or "
 "through a package)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Fulscreen timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 msgid "Enable captions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 #, fuzzy
 msgid "Enable captions over the video"
 msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "Caption font"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "TrueType font for captions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG captions over the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
 msgid "Enable snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width in pixels."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity level. -1 for no messages."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
 msgid "Devices"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
 msgid "Standard"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "DVD drive"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "Drive letter for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
 msgid "GDI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
 msgid "Direct X"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "DVD device"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "Device for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
 msgid "X11"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
 msgid "XVideo"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
 msgid "GL"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output module"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
 msgid "Recorder options"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 msgid "Audio input"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record both video and audio"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
 msgid "<i>Experimental</i>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
 msgid "Embed the caption scroller below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
 msgid "Embed the caption view below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
 msgid "Time-related"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 #, fuzzy
 msgid "Time format"
 msgstr "T_imeline"
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 msgid "Format used to display timecodes"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
 msgid "Default FPS"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
 msgid ""
 "Default FPS (frame-per-second) value, when entering or displaying timestamps "
 "with frame numbers."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 #, fuzzy
 msgid "Time increment"
 msgstr "T_imeline"
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid ""
 "Skip duration, when using control-left/right or forward/rewind buttons (in "
 "ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Second time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 #, fuzzy
 msgid "Third time increment"
 msgstr "T_imeline"
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid "Custom Up/Down"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid ""
 "Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid "Scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid ""
 "On most annotations, control+scrollwheel will increment/decrement their "
 "bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid "Second scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid ""
 "On most annotations, control+shift+scrollwheel will increment/decrement "
 "their bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 #, fuzzy
 msgid "Player sync"
 msgstr "_Spieler"
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid ""
 "Interval (in ms) with which we synchronize slave players. Setting a too-low "
 "value could render the application unusable. Use 0 to disable continuous "
 "synchronization."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
 msgid "Timeline parameters"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
 msgid "Font size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
 msgid "Font size for annotation widgets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Button height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Height of annotation widgets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Interline height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Height of interlines"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
 #, fuzzy
 msgid "Text content"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 msgid "Completion mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 msgid "Enable dynamic completion mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 msgid "Abbreviation mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 msgid "Enable abbreviation mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 msgid "Abbreviations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 msgid ""
 "Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
 "followed by its replacement."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
 msgid "Text-To-Speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
 msgid "TTS language"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
 msgid "What language settings should be used for text-to-speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
 msgid "English"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
 msgid "French"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
 msgid "Spanish"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
 msgid "TTS Encoding"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
 msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
 msgid "TTS Engine"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
 msgid ""
 "Which TTS engine should be used (modification requires restarting Advene to "
 "take into account)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
 msgid "Automatic"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
 msgid "eSpeak"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
 msgid "Custom script with standard input"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
 msgid "Custom script with arguments"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
 msgid "SAPI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
 msgid "MacOS X say"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
 msgid "Generic (text output)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
 msgid "You should restart Advene to take some options into account."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
 #, python-format
 msgid "Imagecache saved to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
 msgid "Restarting player..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
 #, fuzzy
 msgid "Advene log"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
 msgid "Select the package to merge"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
 msgid "Saving workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
 msgid "Enter a view name to save the workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
 #, fuzzy
 msgid "Default workspace"
 msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
 msgid "Open this workspace when opening the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
 #, python-format
 msgid "Error: the view %s exists and is not a workspace view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
 #, python-format
 msgid "Cannot save default workspace: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
 msgid "Standard workspace has been saved"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
 msgid "Website export"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
 msgid "Exporting views to a website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
 msgid "Output directory"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
 msgid "Specify the output directory"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
 msgid "Maximum recursion depth"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
 msgid "Video URL"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
 msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
 msgid "Could not export data: "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
 #, fuzzy, python-format
 msgid "Website export to %s completed"
 msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
 msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
 #, python-format
 msgid "Updating %d snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
 msgid "No snapshot to update"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
 msgid "You first must load a movie into Advene"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
 #, python-format
 msgid "The movie %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
 msgid "Generating screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
 msgid ""
 "<b>Screenshot generation</b>\n"
 "\n"
@@ -6724,42 +6876,42 @@ msgid ""
 "open."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
 msgid ""
 "The <b>shotdetect</b> application does not seem to be installed. Please "
 "check that it is present and that its path is correctly specified in "
 "preferences."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
 msgid ""
 "Cannot import shotdetect output. Did you install the shotdetect software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
 msgid "Incomplete shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
 #, python-format
 msgid "Detected %s shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
 #, python-format
 msgid "Could not run shotdetect: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
 #, python-format
 msgid "Detecting shots from %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
 msgid "Shot detection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
 msgid ""
 "<b>Shot detection</b>\n"
 "\n"
@@ -6769,13 +6921,13 @@ msgid ""
 "to augment its value."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
 msgid "Sensitivity"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
 msgid "Plain text content"
 msgstr ""
 
@@ -6784,8 +6936,8 @@ msgid "HTML content"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
 msgid "Simple-structured content"
 msgstr ""
 
@@ -6794,8 +6946,8 @@ msgid "List of numeric values"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
 msgid "SVG graphics content"
 msgstr ""
 
@@ -7076,48 +7228,40 @@ msgstr ""
 msgid "Importer"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
 #, fuzzy
 msgid "Advene package importer"
 msgstr "Bearbeite Packet Eigentschaften"
 
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
 msgid "Not likely"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
 #, python-format
 msgid "Completed conversion: %(statistics)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
 #: ../lib/advene/gui/edit/dvdselect.py:73
 msgid "Stop"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
 msgid "Choose the file to import"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
 #, fuzzy
 msgid "Filter"
 msgstr "_Datei"
 
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
 msgid "Options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
 msgid "Start"
 msgstr ""
 
@@ -7184,8 +7328,8 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
 msgid "Rectangular zone content"
 msgstr ""
 
@@ -7248,7 +7392,7 @@ msgid "New resource data"
 msgstr ""
 
 #: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
 msgid "Properties"
 msgstr ""
 
@@ -7491,7 +7635,7 @@ msgid "Error: cannot find a content handler for %s"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
 #, python-format
 msgid ""
 "Cannot read the data:\n"
@@ -7499,12 +7643,12 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
 msgid "Save content to..."
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
 #, python-format
 msgid ""
 "Cannot save the data:\n"
@@ -7512,17 +7656,17 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
 msgid "Open a file (C-o)"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
 msgid "Save to a file (C-s)"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
 msgid "Reload the file (C-r)"
 msgstr ""
 
@@ -7530,15 +7674,15 @@ msgstr ""
 msgid "Insert a value from the browser (C-i)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
 msgid "Begin time is greater than end time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
 msgid "Expecting an integer."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
 #, python-format
 msgid ""
 "The %(attribute)s attribute could not be updated:\n"
@@ -7548,7 +7692,7 @@ msgid ""
 "Resetting to the original value."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
 #, python-format
 msgid ""
 "The following attributes cannot be updated:\n"
@@ -7556,7 +7700,7 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
 #, python-format
 msgid ""
 "The following attributes could not be updated:\n"
@@ -7564,25 +7708,25 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
 msgid "Attribute"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
 msgid "Insert an element"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
 msgid "Choose the element to insert."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
 #, python-format
 msgid "Some tags contain invalid characters: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
 msgid "Tags:"
 msgstr ""
 
@@ -7694,8 +7838,9 @@ msgid "Condition expression: %s"
 msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
-msgstr ""
+#, fuzzy
+msgid "The annotation type"
+msgstr "Kommentar Typ"
 
 #: ../lib/advene/gui/edit/rules.py:768
 #, fuzzy, python-format
@@ -7754,8 +7899,9 @@ msgid "The element duration"
 msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
-msgstr ""
+#, fuzzy
+msgid "The element type"
+msgstr "Wähle einen DVD"
 
 #: ../lib/advene/gui/edit/rules.py:794
 msgid "The element's incoming relations"
@@ -7773,6 +7919,16 @@ msgstr ""
 msgid "The context fragment"
 msgstr ""
 
+#: ../lib/advene/gui/edit/rules.py:809
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "Kommentar Typ"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "von einem Anmerkungs Typ"
+
 #: ../lib/advene/gui/edit/rules.py:834
 msgid "Select a condition"
 msgstr ""
@@ -7791,59 +7947,59 @@ msgstr ""
 msgid "Activate?"
 msgstr "Aktivieren und Abspielen"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
 #, fuzzy
 msgid "Schema Editor"
 msgstr "Schema"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
 #, fuzzy
 msgid "Display"
 msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
 #, fuzzy
 msgid "Remove relation type"
 msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
 msgid "Create HTML view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
 #, fuzzy
 msgid "Remove annotation type"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
 msgid "Create relation type between this one and..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
 #, fuzzy
 msgid "New schema"
 msgstr "Schema"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
 #, fuzzy
 msgid "New annotation type"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
 #, fuzzy
 msgid "New relation type"
 msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
 msgid "Hide this schema"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
 msgid "Export drawing to pdf"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
 msgid "Choose a filename to export the schema as PDF"
 msgstr ""
 
@@ -8134,102 +8290,102 @@ msgstr ""
 msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
 msgid "Generic shape"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
 #, python-format
 msgid "Link to %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
 msgid "Link"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
 msgid "Link label"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
 msgid "Linewidth"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
 msgid "Filled"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
 #, python-format
 msgid "Properties of %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
 msgid "Rectangle"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
 msgid "Text"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
 msgid "Textsize"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
 msgid "Image"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
 msgid "Href"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
 msgid "Line"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
 msgid "Draw an arrow"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
 msgid "Arrow size"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
 msgid "Circle"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
 msgid "Ellipse"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
 msgid "SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
 msgid "Load SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
 msgid "Save SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
 #, python-format
 msgid "Decrement value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
 #, python-format
 msgid "Increment value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
 msgid ""
 "Click to play\n"
 "Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8237,7 +8393,7 @@ msgid ""
 "Right-click to invalidate screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
 msgid ""
 "Enter a timecode.\n"
 "An integer value will be considered as milliseconds.\n"
@@ -8245,7 +8401,7 @@ msgid ""
 "HH:MM:SS.sss values are possible."
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
 msgid "Set to current player position"
 msgstr ""
 
@@ -8885,12 +9041,18 @@ msgid "Directory %s is not an extracted Advene zip package."
 msgstr ""
 
 #, fuzzy
-#~ msgid "Display overlay"
-#~ msgstr "Verbindungs Type"
+#~ msgid "Aiff importer"
+#~ msgstr "Datei _importieren"
+
+#~ msgid "Package _Imports"
+#~ msgstr "Packet _Importierungen"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Bearbeite importierte Element von anderen Packeten"
 
 #, fuzzy
-#~ msgid "Display snapshot"
-#~ msgstr "Zeige Shortcuts"
+#~ msgid "Display overlay"
+#~ msgstr "Verbindungs Type"
 
 #, fuzzy
 #~ msgid "Exporter"
@@ -8982,10 +9144,6 @@ msgstr ""
 #~ msgstr "Zeige die Transkription für eine Anmerkung"
 
 #, fuzzy
-#~ msgid "Deleting an annotation"
-#~ msgstr "von einem Anmerkungs Typ"
-
-#, fuzzy
 #~ msgid "Creating a relation"
 #~ msgstr "von einem Anmerkungs Typ"
 
diff --git a/po/eo.po b/po/eo.po
index af50be6..f024512 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
 "PO-Revision-Date: 2006-04-07 11:42+0200\n"
 "Last-Translator: Olivier Aubert <olivier.aubert at liris.cnrs.fr>\n"
 "Language-Team: advene at liris.cnrs.fr\n"
@@ -81,113 +81,118 @@ msgid ""
 "The following processes seem to use the %(port)s port: %(processes)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
 #, python-format
 msgid "Loaded %(uri)s as %(alias)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
 #, python-format
 msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
 #, python-format
 msgid "Cannot get audio volume: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
 msgid "None"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
 #, python-format
 msgid "Found matching video file in moviepath: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
 msgid "Analysis of "
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
 msgid "Cannot split the annotation: the given position is outside."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
 #, python-format
 msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
 #, python-format
 msgid "Cannot read the imported package %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
 msgid "Package URI has changed. Reloading package with new URI."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
 msgid ""
 "Cannot load package: the following annotations do not have Millisecond "
 "fragments:"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
 #, python-format
 msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
 #, python-format
 msgid "Checking master package %s for not yet imported elements."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
 #, fuzzy
 msgid "Standard summary"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
 #, fuzzy
 msgid "Default view"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
 #, python-format
 msgid ""
 "Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
 #, python-format
 msgid "Got exception %s when stopping player."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
 #, python-format
 msgid "Raised exception in update_status: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
 msgid "Unable to start the player."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
 #, fuzzy, python-format
 msgid "Comment on set of %d annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
 #, fuzzy, python-format
 msgid "Comment on %s"
 msgstr "Arbvido"
 
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
 #, python-format
 msgid ""
 "<h1>Comment on %(title)s</h1>\n"
@@ -199,23 +204,23 @@ msgid ""
 "\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
 #, fuzzy, python-format
 msgid "List of %s annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
 #, python-format
 msgid "Cannot export to %(filename)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
 #, python-format
 msgid "Error when exporting: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
 #, python-format
 msgid "Data exported to %s"
 msgstr ""
@@ -952,11 +957,15 @@ msgid ""
 "fr/advene/\">Advene</a> v. %s.</em></p>"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
 #, python-format
 msgid "Cannot start HTTP server: %s"
 msgstr ""
 
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
 #: ../lib/advene/plugins/featuredetect.py:42
 msgid "Feature detection (face...)"
 msgstr ""
@@ -1000,7 +1009,7 @@ msgstr ""
 msgid "Anvil importer"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
 #, fuzzy
 msgid "TED importer"
 msgstr "Importi dosieron"
@@ -1073,11 +1082,72 @@ msgid ""
 "too many shots are detected, try to increase its value."
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
 #, fuzzy, python-format
 msgid "Detected shot #%(num)d at %(pos)s "
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+#, fuzzy
+msgid "Generating annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, fuzzy, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
 #: ../lib/advene/plugins/tts.py:77
 msgid "Pronounce a text"
 msgstr ""
@@ -1098,12 +1168,12 @@ msgstr ""
 msgid "The annotation content"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
 #: ../lib/advene/gui/plugins/actions.py:234
 msgid "Unknown rule"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
 #: ../lib/advene/gui/plugins/actions.py:235
 #, python-format
 msgid ""
@@ -1125,6 +1195,28 @@ msgstr ""
 msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "Importi dosieron"
+
+#: ../lib/advene/plugins/fcp.py:90
+#, fuzzy
+msgid "Importing clips"
+msgstr "Importi dosieron"
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
 #: ../lib/advene/plugins/mpeg7.py:54
 #, fuzzy
 msgid "MPEG7 importer"
@@ -1155,29 +1247,6 @@ msgstr "Krei komentajxojn de DVD cxapitroj"
 msgid "Importing annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/plugins/aiff.py:35
-#, fuzzy
-msgid "Aiff importer"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/plugins/aiff.py:92
-#, fuzzy
-msgid "Importing clips"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
 #: ../lib/advene/plugins/dcp.py:65
 #, fuzzy
 msgid "DCP importer"
@@ -1188,11 +1257,11 @@ msgstr "Importi dosieron"
 msgid "Converting #%(num)d / %(count)d"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
 msgid "Input from the braille table."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
 msgid "BrlTTY not installed. There will be no braille support."
 msgstr ""
 
@@ -1209,16 +1278,16 @@ msgstr "Krei komentajxojn de DVD cxapitroj"
 msgid "Message to display."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
 msgid "BrlTTY connection error: %s"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
 msgid "Braille display: "
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
 msgid "No message"
 msgstr ""
 
@@ -1263,18 +1332,18 @@ msgid "Parsing section information"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
 msgid "Creating package"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
 #, fuzzy
 msgid "Creating annotation types"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
 #: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
 msgid "Parsing header information"
 msgstr ""
 
@@ -1303,11 +1372,6 @@ msgstr ""
 msgid "Channel selection."
 msgstr "Vido"
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#, fuzzy
-msgid "Generating annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
 #: ../lib/advene/plugins/soundenveloppe.py:115
 #, python-format
 msgid "At %s"
@@ -1349,7 +1413,7 @@ msgstr ""
 msgid "Starting silence detection"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
 #, fuzzy
 msgid "Aeidon (subtitles) importer"
 msgstr "Importi dosieron"
@@ -1391,236 +1455,236 @@ msgstr ""
 msgid "Converted from %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
 #, fuzzy
 msgid "ExternalApp importer"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
 #, python-format
 msgid ""
 "The <b>%s</b> application does not seem to be installed. Please check that "
 "it is present and that its path is correctly specified in preferences."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
 #, fuzzy, python-format
 msgid "The file %s does not seem to exist."
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
 #, fuzzy, python-format
 msgid "Could not run %(appname)s: %(msg)s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
 #, fuzzy, python-format
 msgid "Processing %s"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
 msgid "Cleaning up..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
 msgid "Text importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
 msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
 msgid "lsdvd importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
 msgid "Processing data"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
 #, fuzzy
 msgid "DVD Chapter"
 msgstr "Importi DVD cxapitrojn"
 
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
 msgid "Launching lsdvd..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
 msgid "chaplin importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
 msgid "Xi importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
 msgid "ELAN importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
 #, python-format
 msgid "Converting tier %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
 msgid "Processing time slots"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
 #, fuzzy
 msgid "Fixing forward references"
 msgstr "Interfacaj preferoj"
 
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
 msgid "Creating relations"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
 msgid "Subtitle (SRT) importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
 #, python-format
 msgid "Subtitles from %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
 msgid "PRAAT importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
 msgid "CMML importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
 msgid "Parsing clip information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
 msgid "Creating CMML schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
 msgid "Parsing stream information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
 #, fuzzy
 msgid "IRI importer"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
 msgid "Generate one type per view"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
 #, python-format
 msgid "Parsing ensemble %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
 #, python-format
 msgid "Parsing decoupage %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
 msgid "Parsing views"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
 msgid "Initializing package"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
 #, fuzzy
 msgid "IRIData importer"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
 msgid "Parsing sound values"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
 #, fuzzy
 msgid "Creating annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
 msgid "Package"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
 msgid "Annotation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
 msgid "Relation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
 msgid "Schema"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
 msgid "Annotation Type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
 msgid "Relation Type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
 #: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
 msgid "View"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
 #: ../lib/advene/gui/main.py:278
 msgid "Query"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
 msgid "Resource Folder"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
 msgid "Resource File"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
 msgid "---- Elements ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
 msgid "---- Attributes ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
 msgid "---- Methods ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
 #, python-format
 msgid "Cannot read %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
 #: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
 #, python-format
 msgid "File %s is not an Advene zip package."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
 #, python-format
 msgid ""
 "Error:\n"
 "%s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
 #, python-format
 msgid ""
 "Package %(title)s:\n"
@@ -1634,81 +1698,81 @@ msgid ""
 "%(description)s\n"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schema"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schemas"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation types"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation types"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "query"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "queries"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "view"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "views"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "package"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "packages"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
 #, python-format
 msgid "No %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
 #, python-format
 msgid "1 %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
 #, python-format
 msgid "%(count)d %(plural)s"
 msgstr ""
@@ -1723,32 +1787,32 @@ msgstr ""
 msgid "%s does not exist"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
 msgid "Starting export"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
 #, python-format
 msgid "Depth %d"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
 #, python-format
 msgid "Depth %(depth)d: processing %(url)s"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
 msgid "Finalizing"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
 #, python-format
 msgid ""
 "<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
 "strong></p>"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
 #, fuzzy
 msgid "Export complete"
 msgstr "Importi dosieron"
@@ -1815,12 +1879,12 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
 #, fuzzy, python-format
 msgid "Renumbering annotations of type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
 msgid ""
 "<b>Renumber all annotations according to their order.</b>\n"
 "\n"
@@ -1834,26 +1898,26 @@ msgid ""
 "The offset parameter allows you to renumber from a given annotation."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
 msgid "Offset"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
 #, fuzzy, python-format
 msgid "Renumbering %d annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
 #, fuzzy, python-format
 msgid "Annotation #%d"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
 #, fuzzy, python-format
 msgid "Extracting %s"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
 #, python-format
 msgid ""
 "Exporting annotation %(title)s\n"
@@ -1861,281 +1925,287 @@ msgid ""
 "to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
 msgid "Edit"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
 msgid "Browse"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
 #, fuzzy
 msgid "Open in web browser"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
 msgid "Delete"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
 #, fuzzy
 msgid "Search/replace content"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
 msgid "Activate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
 msgid "Desactivate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
 #: ../lib/advene/gui/plugins/tracetimeline.py:980
 #: ../lib/advene/gui/plugins/tracetimeline.py:1001
 #: ../lib/advene/gui/edit/transcribe.py:502
 msgid "Go to..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
 msgid "Loop"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
 msgid "Duplicate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+#, fuzzy
+msgid "Save snapshot..."
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/popup.py:519
 #, fuzzy
 msgid "Extract video fragment"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
 msgid "Incoming"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
 msgid "Outgoing"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
 #, fuzzy
 msgid "Related annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
 msgid "Incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
 msgid "Outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
 #, python-format
 msgid "Begin: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
 #, python-format
 msgid "End: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
 #, fuzzy, python-format
 msgid "Duration: %s"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
 msgid "Members:"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
 #, fuzzy
 msgid "Edit package properties..."
 msgstr "Redakti komentarajn attributojn"
 
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
 #, fuzzy, python-format
 msgid "%d annotations(s) - statistics"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
 #, fuzzy
 msgid "Create a new static view..."
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
 #, fuzzy
 msgid "Create a new dynamic view..."
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
 msgid "Create a new annotation..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
 msgid "Create a new schema..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
 msgid "Create a new query..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
 msgid "Create a new folder..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
 msgid "Create a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
 msgid "Insert a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
 msgid "Insert a new resource directory..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
 msgid "Insert a soundclip..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
 msgid "Play sound"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
 msgid "Create a new annotation type..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
 msgid "Create a new relation type..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
 msgid "Select a color"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
 #, python-format
 msgid "A caption dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
 #, fuzzy, python-format
 msgid "Caption %s annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
 msgid "Caption the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
 #, fuzzy
 msgid "Create a comment view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/popup.py:740
+#: ../lib/advene/gui/popup.py:739
 #, fuzzy
-msgid "Generate a caption dynamic view"
+msgid "Generate a caption dynamic view..."
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
 msgid "Display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
 #, fuzzy
 msgid "Display annotations in table"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
 #, fuzzy
 msgid "Export to another format..."
 msgstr "Importi datumo de alia ???"
 
-#: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
-msgstr ""
+#: ../lib/advene/gui/popup.py:748
+#, fuzzy
+msgid "Delete all annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:750
+#: ../lib/advene/gui/popup.py:749
 #, fuzzy
-msgid "Renumber annotations"
+msgid "Renumber annotations..."
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:751
+#: ../lib/advene/gui/popup.py:750
 #, fuzzy
-msgid "Adjust annotation bounds"
+msgid "Adjust annotation bounds..."
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
 #, python-format
 msgid "A follow dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
 #, fuzzy, python-format
 msgid "Follow %s relation-type"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
 #, fuzzy
 msgid "Follow the relation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
 msgid "Delete all relations..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
 #, fuzzy
 msgid "Create montage from related annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
 #, fuzzy
 msgid "Create dynamic view following relations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
 #, python-format
 msgid "Exception in query: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
 msgid "Apply query on..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
 #, fuzzy
 msgid "the package"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
 #, fuzzy
 msgid "all annotations of the package"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
 #, fuzzy
 msgid "the first annotation of the package"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
 msgid "Activate view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
 #, fuzzy
 msgid "Open adhoc view"
 msgstr "Defauxlta regularo"
@@ -2312,31 +2382,31 @@ msgid "Cannot remove this widget, it is essential."
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
 msgid "...in its own window"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:125
 #: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
 msgid "...embedded east of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:126
 #: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
 msgid "...embedded west of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:127
 #: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
 msgid "...embedded south of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:128
 #: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
 msgid "...embedded at the right of the window"
 msgstr ""
 
@@ -2418,7 +2488,7 @@ msgid "to create a new static view"
 msgstr "Arbvido"
 
 #: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
 #, fuzzy
 msgid "as a transcription"
 msgstr "Vidi komentajxojn sur templinio"
@@ -2556,8 +2626,8 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
 #: ../lib/advene/gui/edit/elements.py:508
 #: ../lib/advene/gui/edit/elements.py:557
 #: ../lib/advene/gui/edit/elements.py:657
@@ -2565,47 +2635,70 @@ msgid "Type"
 msgstr ""
 
 #: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
 msgid "Value"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+#, fuzzy
+msgid "Check various package properties"
+msgstr "Redakti komentarajn attributojn"
+
+#: ../lib/advene/gui/views/checker.py:90
+#, fuzzy
+msgid "List of possible issues in the current package"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:55
 #, fuzzy
 msgid "Annotation table view"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
 #, fuzzy
 msgid "Display annotations in a table"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
 #, fuzzy
 msgid "Snapshot"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
 #: ../lib/advene/gui/edit/elements.py:675
 #: ../lib/advene/gui/edit/elements.py:717
 #: ../lib/advene/gui/edit/elements.py:1108
 msgid "Content"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
 msgid "Begin"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
 msgid "End"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
 msgid "Duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
 #: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
 #: ../lib/advene/gui/edit/elements.py:507
 #: ../lib/advene/gui/edit/elements.py:556
@@ -2619,58 +2712,58 @@ msgstr ""
 msgid "Id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
 msgid "Export data to file..."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
 #, python-format
 msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "begin"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "end"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 #, fuzzy
 msgid "content"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
 msgid "Generic table view"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
 msgid "Display Advene elements in a table."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element title"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 #, fuzzy
 msgid "Element id"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
 #: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
 #: ../lib/advene/gui/edit/imports.py:331
 #: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2713,14 +2806,14 @@ msgstr "Defauxlta regularo"
 msgid "Adhoc views"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
 #, fuzzy
 msgid "Tree view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
 msgid "Refresh"
 msgstr ""
 
@@ -2728,29 +2821,82 @@ msgstr ""
 msgid "Package View"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, fuzzy, python-format
+msgid "Duplicate selection to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, fuzzy, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, fuzzy, python-format
+msgid "Move annotation to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+#, fuzzy
+msgid "Duplicate and create a relation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+#, fuzzy
+msgid "Create a new relation-type."
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
 #, fuzzy
 msgid "AnnotationDisplay"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
 #, fuzzy
 msgid "Display the contents of an annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
 #, fuzzy
 msgid "No annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
 #, fuzzy
 msgid "Current time"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
 #, python-format
 msgid ""
 "Schema %(schema)s\n"
@@ -2759,16 +2905,22 @@ msgid ""
 "Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
 msgid "Screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
 #: ../lib/advene/gui/views/relationdisplay.py:104
 #, fuzzy
 msgid "Contents"
 msgstr "Defauxlta regularo"
 
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+#, fuzzy
+msgid "Validate"
+msgstr "Vido"
+
 #: ../lib/advene/gui/views/__init__.py:193
 msgid "Invalid view id"
 msgstr ""
@@ -2792,7 +2944,7 @@ msgstr ""
 msgid "Enter a view name to save this parametered view"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
 #, python-format
 msgid "Error: the identifier %s contains invalid characters."
 msgstr ""
@@ -2826,7 +2978,7 @@ msgstr ""
 msgid "Click or drag-and-drop to reattach view"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
 msgid "Caption"
 msgstr ""
 
@@ -2845,137 +2997,117 @@ msgstr ""
 msgid "Navigation popup"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
 msgid "Transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
 #, fuzzy
 msgid "Display annotations as a text transcription"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
 #: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
 #: ../lib/advene/gui/edit/montage.py:54
 #: ../lib/advene/gui/edit/transcribe.py:85
 #, fuzzy
 msgid "Save view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
 #: ../lib/advene/gui/views/interactivequery.py:60
 #: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
 #: ../lib/advene/gui/edit/transcribe.py:86
 msgid "Save default options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
 #, python-format
 msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
 #, fuzzy
 msgid "Transcription options"
 msgstr "Importi transkribon"
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 #, fuzzy
 msgid "Default representation"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Use the default representation for annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 #: ../lib/advene/gui/edit/elements.py:962
 msgid "Representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 msgid ""
 "If default representation is unchecked,\n"
 "this TALES expression that will be used to format the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
 msgid "Separator"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
 msgid "This separator will be inserted between the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
 msgid "Whitespace"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
 #, fuzzy
 msgid "Newline"
 msgstr "Templinio"
 
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
 #, fuzzy
 msgid "Tabulation"
 msgstr "Vido"
 
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
 msgid "Dash"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
 msgid "User defined"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid "User-defined separator"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid ""
 "Separator used if user-defined is selected.Use \\n for a newline and \\t for "
 "a tabulation."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Display timestamps"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Insert timestsamp values"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
 msgid "Display annotation bounds"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-#, fuzzy
-msgid "Updating modified annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
 #, python-format
 msgid ""
 "Cannot convert the following annotations,\n"
@@ -2983,56 +3115,56 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
 msgid ""
 "Cannot validate the update.\n"
 "The representation pattern is too complex."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
 #, fuzzy
 msgid "Save transcription to a text file"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
 msgid "Apply the modifications"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
 msgid "Find text"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
 msgid "Quickly switch display options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
 #, fuzzy
 msgid "Refresh the transcription"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
 #, fuzzy
 msgid "Edit preferences"
 msgstr "Preferoj"
 
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
 #, python-format
 msgid "Annotation %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
 msgid "Play"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
 #, python-format
 msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
 #: ../lib/advene/gui/edit/transcribe.py:884
 #, python-format
 msgid "Transcription saved to %s"
@@ -3194,7 +3326,7 @@ msgstr ""
 msgid "Convert bookmarks to annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
 #, fuzzy
 msgid "Comment here"
 msgstr "Arbvido"
@@ -3264,7 +3396,7 @@ msgid "Result of a query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
 #, python-format
 msgid "'%s'"
 msgstr ""
@@ -3289,7 +3421,7 @@ msgid "Search/replace content in %d elements"
 msgstr "Arbvido"
 
 #: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
 msgid "Empty quicksearch string"
 msgstr ""
 
@@ -3303,7 +3435,7 @@ msgid "Edit query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
 msgid "String to search"
 msgstr ""
 
@@ -3454,7 +3586,7 @@ msgstr ""
 msgid "Edit resource"
 msgstr "Preferoj"
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
 #, fuzzy
 msgid "Package finder"
 msgstr "Komentaraj attributoj"
@@ -3468,7 +3600,7 @@ msgstr "Komentaraj attributoj"
 msgid "Tag Bag"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
 msgid "Bag of tags"
 msgstr ""
 
@@ -3477,8 +3609,8 @@ msgid "New tag"
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
 #: ../lib/advene/gui/edit/properties.py:46
 #: ../lib/advene/gui/edit/transcribe.py:147
 #: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3494,7 +3626,7 @@ msgid "Enter a new tag name and select its color."
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
 msgid "Name"
 msgstr ""
 
@@ -3502,13 +3634,13 @@ msgstr ""
 #: ../lib/advene/gui/edit/elements.py:871
 #: ../lib/advene/gui/edit/elements.py:951
 #: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
 #: ../lib/advene/rules/actions.py:133
 msgid "Color"
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
 msgid "The tag contains invalid characters"
 msgstr ""
 
@@ -3562,63 +3694,58 @@ msgstr "Krei komentajxojn de DVD cxapitroj"
 msgid "EditAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#, fuzzy
-msgid "Validate"
-msgstr "Vido"
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
 msgid "Timeline"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
 msgid "Display annotations on a timeline"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
 #, fuzzy
 msgid "Limit display to current area"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
 #, fuzzy
 msgid "Display whole movie"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
 #, fuzzy, python-format
 msgid "Cannot find annotation type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
 msgid "No scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
 msgid "Continuous scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
 msgid "Discrete scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
 #, fuzzy
 msgid "Annotation scrolling"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
 #, fuzzy, python-format
 msgid "%d annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
 #, fuzzy
 msgid "Display all types"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
 #, python-format
 msgid ""
 "There are %d annotations.\n"
@@ -3628,438 +3755,435 @@ msgid ""
 "click on the 'Display all types' button below."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
 #, fuzzy
 msgid "Split at current player position"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
 msgid "Center and zoom"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
 #: ../lib/advene/rules/elements.py:1000
 msgid "Creation of a new annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1066
-#, fuzzy
-msgid "Create a new relation-type."
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
 #, fuzzy
 msgid "Merge with this annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
 msgid "Align both begin times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
 msgid "Align both end times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
 msgid "Align end time to selected begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
 msgid "Align begin time to selected end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
 msgid "Align all times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
 #, fuzzy
 msgid "Select the appropriate relation type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1237
-#, fuzzy, python-format
-msgid "Duplicate selection to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, fuzzy, python-format
-msgid "Move selection to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, fuzzy, python-format
-msgid "Duplicate annotation to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, fuzzy, python-format
-msgid "Move annotation to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
 #, fuzzy, python-format
 msgid "Duplicate to type %(type)s at %(position)s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
 #, python-format
 msgid "Move to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1276
-#, fuzzy
-msgid "Duplicate and create a relation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
 #, fuzzy, python-format
 msgid "Duplicate at %s and create a relation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
 #, fuzzy
 msgid "Annotation filter"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
 msgid "Enter the searched string"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
 #, fuzzy, python-format
 msgid "Duplicate all annotations to type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
 #, fuzzy, python-format
 msgid "Move all annotations to type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
 #, fuzzy, python-format
 msgid "Duplicate all annotations matching a string to type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
 #, fuzzy, python-format
 msgid "Move all annotations matching a string to type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
 #, python-format
 msgid "Align all annotation time codes using %s as reference."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
 #, python-format
 msgid "Align all annotation contents using %s as reference"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/timeline.py:1946
+#, fuzzy
+msgid "Displaying done."
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/gui/views/timeline.py:2438
 #, fuzzy
 msgid "Create a new annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
 #, fuzzy
 msgid "Zoom on region"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
 #, fuzzy
 msgid "Restrict display to region"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
 #: ../lib/advene/gui/edit/transcribe.py:496
 #, python-format
 msgid "Position %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
 #, fuzzy
 msgid "New annotation at player time"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
 #, fuzzy
 msgid "New annotation at mouse position"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
 msgid "Selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
 msgid "Cannot zoom more"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
 #, python-format
 msgid "From schema %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
 #, fuzzy
 msgid "Restrict playing to this annotation-type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
 #, fuzzy
 msgid "Goto previous annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
 #, fuzzy
 msgid "Goto next annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
 msgid "+"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
 #: ../lib/advene/gui/edit/transcribe.py:1027
 msgid "Create a new annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
 #, fuzzy
 msgid "Open an annotation display view"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
 msgid "Open a slave montage view (coordinated zoom level)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
 #, fuzzy
 msgid "No selected annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
 #, fuzzy, python-format
 msgid "%d selected annotation(s)"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
 #, fuzzy
 msgid "Unselect all annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
 #, fuzzy
 msgid "Create a static view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
 msgid "Highlight selection in other views"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
 #, fuzzy
 msgid "Tag selection"
 msgstr "Vido"
 
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
 #, fuzzy
 msgid "Delete selected annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
 #, fuzzy
 msgid "Display selection in a table"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
 msgid "Center and zoom on selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
 #, fuzzy
 msgid "Edit selected annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
 #, fuzzy
 msgid "Merge annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+#, fuzzy
+msgid "Display statistics"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/timeline.py:3254
 #, fuzzy
 msgid "Goto previous page"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
 #, fuzzy
 msgid "Goto next page"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
 #: ../lib/advene/gui/edit/montage.py:535
 msgid "Inspector"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
 #, fuzzy
 msgid ""
 "Delete the selected annotations or drop an annotation here to delete it."
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
 msgid ""
 "Drag an annotation type here to remove it from display.\n"
 "Click to edit all displayed types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
 #, fuzzy
 msgid "Selection actions"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
 msgid "Display relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
 #, fuzzy
 msgid "Display all relations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
 #: ../lib/advene/gui/plugins/tracetimeline.py:421
 #: ../lib/advene/gui/edit/montage.py:439
 msgid "Zoom out"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
 #: ../lib/advene/gui/plugins/tracetimeline.py:426
 #: ../lib/advene/gui/edit/montage.py:444
 msgid "Zoom in"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
 msgid "Center on current player position."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
 msgid "Automatically activate loop when clicking on an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
 msgid "Displayed"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
 #, fuzzy
 msgid "Not displayed"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
 msgid "< All <"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
 msgid "> All >"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
 #, fuzzy
 msgid "Displayed annotation types"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 #, fuzzy
 msgid "Relation type"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 #, fuzzy
 msgid "Display relation types"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 #, fuzzy
 msgid "Relation content"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 #, fuzzy
 msgid "Display relation content"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight active annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
 msgid "Enter the tag for the selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
 msgid "Scroller"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
 #, fuzzy, python-format
 msgid "Set of %s annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
 #, fuzzy
 msgid "Refresh snapshot"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+#, fuzzy
+msgid "Save as..."
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/widget.py:1072
 #, fuzzy
 msgid "Use current player position"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+#, fuzzy
+msgid "Adjust timestamp"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
 #, fuzzy
 msgid "Video player"
 msgstr "Vido"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
 msgid "Complementary video player"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
 #, fuzzy
 msgid "Select video file"
 msgstr "Vido"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
 #, fuzzy
 msgid "Select a video file"
 msgstr "Vido"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
 msgid "Synchronize"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
 msgid "Offset in ms"
 msgstr ""
 
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+#, fuzzy
+msgid "Drag and drop to get player time"
+msgstr "Vidi komentajxojn sur templinio"
+
 #: ../lib/advene/gui/plugins/actions.py:52
 msgid "Display a popup"
 msgstr ""
@@ -4326,139 +4450,139 @@ msgstr "Defauxlta regularo"
 msgid "New bookmark"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
 #, fuzzy, python-format
 msgid "Rendering type %(type)s as %(presentation)s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
 msgid "Snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
 msgid "Overlayed snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
 msgid "Timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
 msgid "Snapshot+timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
 #, fuzzy
 msgid "Annotation content"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
 msgid "as a list"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
 msgid "as a table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
 msgid "Play video"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
 msgid "Show timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
 #, fuzzy
 msgid "Show content only"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
 #, fuzzy
 msgid "Show snapshot only"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
 #, fuzzy
 msgid "Show overlayed timestamp"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
 #, fuzzy
 msgid "Show overlayed content"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
 #, fuzzy, python-format
 msgid "Annotation type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
 #, fuzzy
 msgid "display as list"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
 #, fuzzy
 msgid "display as table"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
 #, fuzzy
 msgid "display as transcription"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
 #, fuzzy
 msgid "Open link"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
 #, fuzzy, python-format
 msgid "HTML editor: cannot parse content (%s)"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
 #, fuzzy, python-format
 msgid "Heading %d"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
 msgid "Bold"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
 msgid "Italic"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
 msgid "Header"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
 msgid "Copy"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
 msgid "Cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
 msgid "Paste"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
 msgid "Undo"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
 msgid "WYSIWYG editor"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
 #, fuzzy
 msgid "Edit HTML source"
 msgstr "Preferoj"
@@ -4473,99 +4597,99 @@ msgstr "Defauxlta regularo"
 msgid "Display shot validation interface"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
 #, python-format
 msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
 msgid "Last action undone"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
 #, python-format
 msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
 #, python-format
 msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
 #, python-format
 msgid "Changed cut between #%(first)d and %(second)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
 #, fuzzy
 msgid "Changed begin time for first annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
 #, fuzzy
 msgid "No annotations to adjust"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
 msgid ""
 "Click on the frame just after the cut to adjust the cut time.\n"
 "Control-click on a frame to indicate a missing cut."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
 #, python-format
 msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
 msgid "< Previous cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
 #, fuzzy
 msgid "Display previous cut"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
 msgid "Next cut >"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
 #, fuzzy
 msgid "Display next cut"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
 #, fuzzy
 msgid "Go to annotation containing current player time."
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
 #: ../lib/advene/gui/edit/frameselector.py:192
 #, fuzzy
 msgid "Refresh snapshots"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
 #: ../lib/advene/gui/edit/frameselector.py:193
 msgid "Refresh missing snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
 #, fuzzy
 msgid "Undo last modification"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
 msgid "Merge with previous"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
 msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
 #, fuzzy
 msgid "Close view."
 msgstr "Defauxlta regularo"
@@ -4613,7 +4737,7 @@ msgid " Filters"
 msgstr "Dosiero"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Reset"
 msgstr ""
 
@@ -4651,56 +4775,56 @@ msgstr "Dosiero"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:559
 #: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
 #, fuzzy, python-format
 msgid "of an annotation (%s)"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:561
 #: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
 #, fuzzy, python-format
 msgid "of a relation (%s)"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:563
 #: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
 #, fuzzy, python-format
 msgid "of an annotation type (%s)"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:565
 #: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
 #, fuzzy, python-format
 msgid "of a relation type (%s)"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:567
 #: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
 #, fuzzy, python-format
 msgid "of a schema (%s)"
 msgstr "Komentaraj attributoj"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:569
 #: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
 #, fuzzy, python-format
 msgid "of a view (%s)"
 msgstr "Arbvido"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:571
 #: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
 #, fuzzy, python-format
 msgid "of a package (%s)"
 msgstr "Komentaraj attributoj"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:573
 #: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
 #, fuzzy, python-format
 msgid "of an unknown item (%s)"
 msgstr "Krei komentajxojn de DVD cxapitroj"
@@ -4747,7 +4871,7 @@ msgid "Search"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
 #, python-format
 msgid "%(name)s (%(index)s)"
 msgstr ""
@@ -4806,30 +4930,30 @@ msgstr ""
 msgid "Zoom on action"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
 msgid "Item Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
 msgid "Item name or class"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
 #, fuzzy
 msgid "Type or schema"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
 #, fuzzy
 msgid "Operations"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
 #, fuzzy
 msgid "Comment"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
 #: ../lib/advene/gui/edit/merge.py:191
 msgid "Action"
 msgstr ""
@@ -4874,20 +4998,25 @@ msgstr ""
 msgid "Log Messages"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
 #, fuzzy
 msgid "_Select player"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
 msgid "_View"
 msgstr "Vido"
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
 #, fuzzy
 msgid "Packages"
 msgstr "Komentaraj attributoj"
 
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+#, fuzzy
+msgid "Open recent"
+msgstr "Defauxlta regularo"
+
 #: ../lib/advene/gui/main.py:239
 msgid "Input from the keyboard (function keys)"
 msgstr ""
@@ -4918,137 +5047,143 @@ msgstr "Komentaraj attributoj"
 
 #: ../lib/advene/gui/main.py:246
 #, fuzzy
+msgid "Show recently opened packages"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:247
+#, fuzzy
 msgid "_Save package"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
 #, fuzzy
 msgid "Save the package"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 #, fuzzy
 msgid "Save package as..."
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 #, fuzzy
 msgid "Save the package as..."
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 #, fuzzy
 msgid "Close package"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 #, fuzzy
 msgid "Close the package"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save session"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 #, fuzzy
 msgid "Save the current session (list of opened packages)"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
 msgid "Save workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
 msgid "...as package view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "...as standard workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "Use the current layout as standard workspace in the future"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 msgid "Associate a video _File"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 msgid "Associate a video file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 msgid "Associate a _DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 msgid "Associate a chapter from a DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 msgid "Associate a _Video stream"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 msgid "Enter a video stream address"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "_Import File"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "Import data from an external source"
 msgstr "Importi datumo de alia ???"
 
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr ""
+#: ../lib/advene/gui/main.py:261
+#, fuzzy
+msgid "_Process video"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
 #, fuzzy
 msgid "Import data from video processing algorithms"
 msgstr "Importi datumo de alia ???"
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 #, fuzzy
 msgid "Merge elements from another package"
 msgstr "Redakti importitaj elementojn de aliaj komentaroj"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Import _DVD chapters"
 msgstr "Importi DVD cxapitrojn"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Create annotations based on DVD chapters"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 #, fuzzy
 msgid "_Export..."
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 #, fuzzy
 msgid "Export data to another format"
 msgstr "Importi datumo de alia ???"
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "_Website export..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 #, fuzzy
 msgid "Export views to a website"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
 #, fuzzy
 msgid "_Quit"
 msgstr "Redakti"
@@ -5075,14 +5210,6 @@ msgstr ""
 msgid "Create"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr "Komentara importitoj"
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Redakti importitaj elementojn de aliaj komentaroj"
-
 #: ../lib/advene/gui/main.py:284
 msgid "P_ackage properties"
 msgstr "Komentaraj attributoj"
@@ -5124,18 +5251,10 @@ msgstr ""
 msgid "Open python evaluator window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
 msgid "Webserver log"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:296
 msgid "_Player"
 msgstr ""
@@ -5172,14 +5291,6 @@ msgstr ""
 msgid "Restart the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:302
 #, fuzzy
 msgid "Update annotation screenshots"
@@ -5251,262 +5362,273 @@ msgstr ""
 msgid "_About"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
 msgid "Open a package file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
 msgid "Save the current package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
 msgid "Save the package with a new name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
 msgid "Select movie file..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
 msgid "Select DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
 #, fuzzy
 msgid "Create a text annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
 #, fuzzy
 msgid "Create a graphical annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
 #, fuzzy
 msgid "Snapshotter activity"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
 #, python-format
 msgid "%d queued requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
 msgid "Cancel all requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
 #, fuzzy
 msgid "No snapshotter"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
 msgid "No snapshotting activity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
 #, fuzzy
 msgid "Snapshotting"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
 #, fuzzy
 msgid "Display application log messages"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
 msgid "Quicksearch lists"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
 msgid "Please specify the lists of elements to be searched."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:498
+#: ../lib/advene/gui/main.py:507
 #, python-format
 msgid ""
 "Searching on %s.\n"
 "Left click to launch the search, right-click to set the quicksearch options"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:499
+#: ../lib/advene/gui/main.py:508
 #, python-format
 msgid "String to search in %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:523
-#, fuzzy
-msgid "Open this view..."
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:540
-#, fuzzy
-msgid "All available views"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:559
-#, fuzzy
-msgid "Transcription of annotations"
-msgstr "Importi transkribon"
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-msgid "Schema editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-#, fuzzy
-msgid "Dynamic montage"
-msgstr "Importi transkribon"
-
-#: ../lib/advene/gui/main.py:573
-#, fuzzy
-msgid "Open a comment view in the web browser"
-msgstr "Komentaraj attributoj"
-
-#: ../lib/advene/gui/main.py:574
-#, fuzzy
-msgid "Create or open a comment view"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-#, fuzzy
-msgid "Display edition history"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:579
-msgid "Visualise the activity trace preview"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:580
-msgid "Visualise the activity trace as a timeline"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
 msgid "Tracing : "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
 msgid "off"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
 msgid "on"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
 msgid "Launch search"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
 msgid "Ignore case"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
 #, fuzzy
 msgid "Searched elements"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
 msgid "Playing"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
 msgid "Pause"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
 msgid "Init"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
 msgid "Undefined"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
 msgid "Enter the new time value"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
 #, fuzzy, python-format
 msgid "Replace content in %d elements"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
 #, fuzzy
 msgid "Find word"
 msgstr "Dosiero"
 
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
 msgid "Replace by"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
 #, python-format
 msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
 msgid "The video extracting feature is not available."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
 #, fuzzy
 msgid "Video export"
 msgstr "Vido"
 
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
 #, python-format
 msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
 #, fuzzy
 msgid "Please choose a destination filename"
 msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
 msgid ""
 "No media association is defined in the package. Please use the 'File/"
 "Associate a video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
 #, python-format
 msgid ""
 "The associated media %s could not be found. Please use the 'File/Associate a "
 "video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
 #, python-format
 msgid ""
 "You are now working with the following video:\n"
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+#, fuzzy
+msgid "Open this view..."
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:1205
+#, fuzzy
+msgid "_All available views"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:1224
+#, fuzzy
+msgid "Transcription of annotations"
+msgstr "Importi transkribon"
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+msgid "Schema editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+#, fuzzy
+msgid "Dynamic montage"
+msgstr "Importi transkribon"
+
+#: ../lib/advene/gui/main.py:1238
+#, fuzzy
+msgid "Open a comment view in the web browser"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:1239
+#, fuzzy
+msgid "Create or open a comment view"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+#, fuzzy
+msgid "Display edition history"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:1244
+msgid "Visualise the activity trace preview"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1245
+msgid "Visualise the activity trace as a timeline"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
 #, python-format
 msgid ""
 "<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5515,453 +5637,484 @@ msgid ""
 "cnrs.fr/advene/</span>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
 #, fuzzy
 msgid "Go to the website"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
 #, fuzzy
 msgid "Advene release"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 #, python-format
 msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 msgid "Advene is up-to-date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
 #, fuzzy
 msgid "Choose a color"
 msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
 #, fuzzy
 msgid "Select an annotation to loop on it"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
 #, python-format
 msgid "Looping on %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
 #, fuzzy
 msgid "No active dynamic view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
 #, fuzzy
 msgid "Create a new dynamic view."
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:1471
+#: ../lib/advene/gui/main.py:1502
 #, fuzzy
-msgid "No dynamic view"
+msgid "Edit the current dynamic view."
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:1473
+#: ../lib/advene/gui/main.py:1514
 #, fuzzy
-msgid "Edit the current dynamic view."
+msgid "No dynamic view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
 msgid "Playing rate"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
 msgid "History"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
 msgid "Popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid ""
 "You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid "Information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
 msgid "Cannot create annotation. There is no schema to put it in."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
 #, fuzzy
 msgid "Default annotation type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
 #, fuzzy
 msgid "Annotation created"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
 msgid "Play/Pause [Control-Tab / Control-Space]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
 #, python-format
 msgid "Rewind (%.02f s) [Control-Left]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
 #, python-format
 msgid "Forward (%.02f s) [Control-Right]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
 msgid "Previous frame [Control-Down]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
 msgid "Next frame [Control-Up]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
 msgid "Fullscreen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2214
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:2222
+msgid "Save screenshot to..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
 #, fuzzy
 msgid "Export package data"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
 #, fuzzy, python-format
 msgid "Export annotation type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
 #, fuzzy, python-format
 msgid "Export element %s"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
 #, fuzzy
 msgid "Export format"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
 #, fuzzy
 msgid " (modified)"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
 #, python-format
 msgid "Activate %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
 msgid "Saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
 msgid "Restoring workspace..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
 #, python-format
 msgid "Do you wish to restore the %s workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
 #, fuzzy
 msgid "Clear the current workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
 #, python-format
 msgid "View %s is not an adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
 #, python-format
 msgid "Cannot identify the adhoc view %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
 msgid "Choose the annotation type to display as transcription."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
 #, python-format
 msgid ""
 "Error: unable to find an edit popup for %(element)s:\n"
 "%(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
 #, fuzzy, python-format
 msgid "Editing %s"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
 #, fuzzy, python-format
 msgid "Comment view (%s)"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
 #, python-format
 msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
 #, python-format
 msgid "Activating package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
 #, python-format
 msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
 msgid "Do you want to restore the saved workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
 msgid "Advene"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
 #, python-format
 msgid "Got exception %s. Trying to continue."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
 #, fuzzy
 msgid "Unknown"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
 #, python-format
 msgid ""
 "The package(s) %s are modified.\n"
 "Save them now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
 msgid "Choose an annotation type."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
 msgid "No annotation type is defined."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
 #, fuzzy
 msgid "Creating a new type."
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
 #, fuzzy
 msgid "Title of the new type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
 msgid ""
 "Id of the new type. It is generated from the title, but you may change it if "
 "necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
 #, fuzzy
 msgid "Specify the content-type for the annotation type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
 #, fuzzy
 msgid "Content type"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
 msgid "Create a new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
 msgid "Choose an existing schema for the new type, or create a new one"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
 msgid "Specify the schema title"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
 msgid "Title of the new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
 msgid ""
 "Id of the new schema. It is generated from the title, but you may change it "
 "if necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
 msgid ""
 "You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
 msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
 msgid ""
 "You specified an existing identifier that does not reference a schema. "
 "Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
 msgid "Choose a schema."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
 msgid "You specified an existing identifier. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
 #, fuzzy, python-format
 msgid "Package %s modified"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
 #, python-format
 msgid ""
 "The package %s has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
 #, python-format
 msgid "%s snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
 #, python-format
 msgid "Do you want to save the snapshots for media %s?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
 #, python-format
 msgid "Cannot save imagecache for %(media)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
 msgid "first frame"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
 msgid "last frame"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
 #, fuzzy, python-format
 msgid "Click on %(bound)s of %(annotation)s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
 #, fuzzy, python-format
 msgid "Update %(bound)s of %(annotation)s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+#, fuzzy
+msgid "Set new timestamp value"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:3523
+#, fuzzy
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:3602
 #, fuzzy
 msgid "Text annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
 #, fuzzy
 msgid "Cannot find an appropriate annotation type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
 #, fuzzy
 msgid "Graphical annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
 msgid ""
 "An unsaved template package exists\n"
 "Save it first."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
 msgid "Package modified"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
 msgid ""
 "The package that you want to close has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
 msgid "Load a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
 msgid ""
 "A video file was selected. Pretend that the user selected 'Select a video "
 "file'..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
 #, python-format
 msgid ""
 "The file %s does not look like a valid Advene package. It should have a .azp "
 "or .xml extension. Try to open anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
 msgid ""
 "You are trying to load a session file, but there are unsaved packages. "
 "Proceed anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
 #, fuzzy
 msgid "Do you want to save the current workspace ?"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
 #, fuzzy, python-format
 msgid "Could not save the package: %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
 #, python-format
 msgid "Save the package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
 msgid "Invalid file extension"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
 #, python-format
 msgid ""
 "Your package contains resources,\n"
@@ -5969,91 +6122,91 @@ msgid ""
 "Should I put the correct extension?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
 msgid "OK, the resources will be lost."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
 msgid "Aborting package saving"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
 msgid "Save the session in..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
 #, python-format
 msgid "Session saved in %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
 msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
 msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
 msgid "The associated media is not a DVD."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
 #, fuzzy, python-format
 msgid "Processing %s video"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
 #, fuzzy
 msgid "No associated video file"
 msgstr "Vido"
 
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
 msgid "Standard RuleSet"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
 #, python-format
 msgid ""
 "Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
 msgid ""
 "GNU General Public License\n"
 "See http://www.gnu.org/copyleft/gpl.html for more details"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
 msgid "Visit the Advene web site for examples and documentation."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
 msgid "Select a movie file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
 msgid "Title/Chapter selection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
 msgid "Select a video stream"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
 msgid "Enter the address of a video stream"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
 #, python-format
 msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
 msgid "Package properties"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
 #: ../lib/advene/gui/edit/elements.py:559
 #: ../lib/advene/gui/edit/elements.py:644
 #: ../lib/advene/gui/edit/elements.py:706
@@ -6065,11 +6218,11 @@ msgstr ""
 msgid "Author"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
 msgid "Author name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
 #: ../lib/advene/gui/edit/elements.py:560
 #: ../lib/advene/gui/edit/elements.py:645
 #: ../lib/advene/gui/edit/elements.py:707
@@ -6081,802 +6234,804 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
 #, fuzzy
 msgid "Package creation date"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
 #, fuzzy
 msgid "Package title"
 msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
 msgid "Associated media"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Media duration in ms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
 msgid "Paths"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Data"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Standard directory for data files"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 msgid "Movie path"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 #, python-format
 msgid ""
 "List of directories (separated by %s) to search for movie files (_ means "
 "package directory)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Imagecache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Directory for storing the snapshot cache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Directory of the video player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 #, fuzzy
 msgid "Shotdetect"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 #, fuzzy
 msgid "Shotdetect application"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
 msgid "GUI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid "Interface language (after restart)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid ""
 "Language used for the interface (necessitates to restart the application)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
 #, fuzzy
 msgid "System default"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
 msgid "Record activity trace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Expert mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Offer advanced possibilities"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Prefer WYSIWYG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Use WYSIWYG editors when possible (HTML, SVG)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid "Player control in edit popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid ""
 "Enable generic player controls in edit windows. This may be undesirable "
 "since it overloads some standard text-edition behaviours (esp. control-left/"
 "right)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
 msgid "Open popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
 msgid "Where should we open adhoc views?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
 msgid "as a popup window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
 msgid "embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
 msgid "embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
 msgid "embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
 msgid "embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History filelist size limit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember window size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember the size of opened windows"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Bookmark snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Width of the snapshots representing bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Bookmark snapshot precision"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Precision (in ms) of the displayed bookmark snapshots."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
 msgid "General"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
 msgid "Weekly update check"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
 msgid "Weekly check for updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
 msgid "On exit,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
 msgid "How to handle screenshots on exit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
 msgid "never save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
 msgid "always save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
 msgid "ask before saving screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
 msgid "Auto-save"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
 msgid "Data auto-save functionality"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
 msgid "is desactivated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
 msgid "is done automatically"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
 msgid "is done after confirmation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Auto-save interval (in s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Interval (in seconds) between package auto-saves"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
 #, fuzzy
 msgid "Workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
 msgid "On package saving,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
 msgid "Do you wish to save the default workspace with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
 #, fuzzy
 msgid "never save the current workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
 #, fuzzy
 msgid "always save the current workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
 #, fuzzy
 msgid "ask before saving the current workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
 msgid "On package load,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
 msgid "Do you wish to load the workspace saved with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
 #, fuzzy
 msgid "never load the saved workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
 #, fuzzy
 msgid "always load the saved workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
 #, fuzzy
 msgid "ask before loading the saved workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
 #, fuzzy
 msgid "Video Player"
 msgstr "Vido"
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid "Autostart"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid ""
 "Automatically start the player when loading a media file (either directly or "
 "through a package)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 #, fuzzy
 msgid "Fulscreen timestamp"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 #, fuzzy
 msgid "Enable captions"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 #, fuzzy
 msgid "Enable captions over the video"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 #, fuzzy
 msgid "Caption font"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "TrueType font for captions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG captions over the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
 msgid "Enable snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width in pixels."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity level. -1 for no messages."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
 msgid "Devices"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
 msgid "Standard"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "DVD drive"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "Drive letter for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
 msgid "GDI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
 msgid "Direct X"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "DVD device"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "Device for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
 msgid "X11"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
 #, fuzzy
 msgid "XVideo"
 msgstr "Vido"
 
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
 msgid "GL"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output module"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
 #, fuzzy
 msgid "Recorder options"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 #, fuzzy
 msgid "Audio input"
 msgstr "Vido"
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record both video and audio"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
 msgid "<i>Experimental</i>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
 msgid "Embed the caption scroller below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
 msgid "Embed the caption view below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
 msgid "Time-related"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 #, fuzzy
 msgid "Time format"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 msgid "Format used to display timecodes"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
 #, fuzzy
 msgid "Default FPS"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
 msgid ""
 "Default FPS (frame-per-second) value, when entering or displaying timestamps "
 "with frame numbers."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 #, fuzzy
 msgid "Time increment"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid ""
 "Skip duration, when using control-left/right or forward/rewind buttons (in "
 "ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 #, fuzzy
 msgid "Second time increment"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 #, fuzzy
 msgid "Third time increment"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid "Custom Up/Down"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid ""
 "Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid "Scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid ""
 "On most annotations, control+scrollwheel will increment/decrement their "
 "bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid "Second scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid ""
 "On most annotations, control+shift+scrollwheel will increment/decrement "
 "their bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid "Player sync"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid ""
 "Interval (in ms) with which we synchronize slave players. Setting a too-low "
 "value could render the application unusable. Use 0 to disable continuous "
 "synchronization."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
 msgid "Timeline parameters"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
 msgid "Font size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
 msgid "Font size for annotation widgets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Button height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 #, fuzzy
 msgid "Height of annotation widgets"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Interline height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Height of interlines"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
 #, fuzzy
 msgid "Text content"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 #, fuzzy
 msgid "Completion mode"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 #, fuzzy
 msgid "Enable dynamic completion mode"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 msgid "Abbreviation mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 #, fuzzy
 msgid "Enable abbreviation mode"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 #, fuzzy
 msgid "Abbreviations"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 msgid ""
 "Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
 "followed by its replacement."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
 msgid "Text-To-Speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
 #, fuzzy
 msgid "TTS language"
 msgstr "Interfacaj preferoj"
 
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
 msgid "What language settings should be used for text-to-speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
 msgid "English"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
 msgid "French"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
 msgid "Spanish"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
 msgid "TTS Encoding"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
 msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
 #, fuzzy
 msgid "TTS Engine"
 msgstr "Interfacaj preferoj"
 
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
 msgid ""
 "Which TTS engine should be used (modification requires restarting Advene to "
 "take into account)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
 msgid "Automatic"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
 msgid "eSpeak"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
 msgid "Custom script with standard input"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
 msgid "Custom script with arguments"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
 msgid "SAPI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
 msgid "MacOS X say"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
 msgid "Generic (text output)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
 msgid "You should restart Advene to take some options into account."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
 #, python-format
 msgid "Imagecache saved to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
 msgid "Restarting player..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
 #, fuzzy
 msgid "Advene log"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
 #, fuzzy
 msgid "Select the package to merge"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
 msgid "Saving workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
 msgid "Enter a view name to save the workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
 #, fuzzy
 msgid "Default workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
 msgid "Open this workspace when opening the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
 #, python-format
 msgid "Error: the view %s exists and is not a workspace view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
 #, fuzzy, python-format
 msgid "Cannot save default workspace: %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
 msgid "Standard workspace has been saved"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
 msgid "Website export"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
 msgid "Exporting views to a website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
 msgid "Output directory"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
 msgid "Specify the output directory"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
 msgid "Maximum recursion depth"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
 #, fuzzy
 msgid "Video URL"
 msgstr "Vido"
 
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
 msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
 #, fuzzy
 msgid "Could not export data: "
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
 #, fuzzy, python-format
 msgid "Website export to %s completed"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
 msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
 #, fuzzy, python-format
 msgid "Updating %d snapshots"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
 msgid "No snapshot to update"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
 msgid "You first must load a movie into Advene"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
 #, fuzzy, python-format
 msgid "The movie %s does not seem to exist."
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
 msgid "Generating screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
 msgid ""
 "<b>Screenshot generation</b>\n"
 "\n"
@@ -6888,43 +7043,43 @@ msgid ""
 "open."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
 msgid ""
 "The <b>shotdetect</b> application does not seem to be installed. Please "
 "check that it is present and that its path is correctly specified in "
 "preferences."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
 msgid ""
 "Cannot import shotdetect output. Did you install the shotdetect software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
 msgid "Incomplete shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
 #, python-format
 msgid "Detected %s shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
 #, fuzzy, python-format
 msgid "Could not run shotdetect: %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
 #, python-format
 msgid "Detecting shots from %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
 #, fuzzy
 msgid "Shot detection"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
 msgid ""
 "<b>Shot detection</b>\n"
 "\n"
@@ -6934,13 +7089,13 @@ msgid ""
 "to augment its value."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
 msgid "Sensitivity"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
 msgid "Plain text content"
 msgstr ""
 
@@ -6950,8 +7105,8 @@ msgid "HTML content"
 msgstr "Defauxlta regularo"
 
 #: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
 msgid "Simple-structured content"
 msgstr ""
 
@@ -6960,8 +7115,8 @@ msgid "List of numeric values"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
 msgid "SVG graphics content"
 msgstr ""
 
@@ -7258,51 +7413,42 @@ msgstr ""
 msgid "Importer"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
 #, fuzzy
 msgid "Advene package importer"
 msgstr "Redakti komentarajn attributojn"
 
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
 #, fuzzy
 msgid "Not likely"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
 #, python-format
 msgid "Completed conversion: %(statistics)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
 #: ../lib/advene/gui/edit/dvdselect.py:73
 msgid "Stop"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:141
-#, fuzzy, python-format
-msgid "Importing %s"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
 msgid "Choose the file to import"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:253
-#, fuzzy
-msgid "Filename"
-msgstr "Dosiero"
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
 #, fuzzy
 msgid "Filter"
 msgstr "Dosiero"
 
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
 #, fuzzy
 msgid "Options"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
 msgid "Start"
 msgstr ""
 
@@ -7369,8 +7515,8 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
 msgid "Rectangular zone content"
 msgstr ""
 
@@ -7434,7 +7580,7 @@ msgid "New resource data"
 msgstr ""
 
 #: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
 #, fuzzy
 msgid "Properties"
 msgstr "Komentaraj attributoj"
@@ -7687,7 +7833,7 @@ msgid "Error: cannot find a content handler for %s"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
 #, python-format
 msgid ""
 "Cannot read the data:\n"
@@ -7695,12 +7841,12 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
 msgid "Save content to..."
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
 #, python-format
 msgid ""
 "Cannot save the data:\n"
@@ -7708,17 +7854,17 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
 msgid "Open a file (C-o)"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
 msgid "Save to a file (C-s)"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
 msgid "Reload the file (C-r)"
 msgstr ""
 
@@ -7726,15 +7872,15 @@ msgstr ""
 msgid "Insert a value from the browser (C-i)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
 msgid "Begin time is greater than end time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
 msgid "Expecting an integer."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
 #, python-format
 msgid ""
 "The %(attribute)s attribute could not be updated:\n"
@@ -7744,7 +7890,7 @@ msgid ""
 "Resetting to the original value."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
 #, python-format
 msgid ""
 "The following attributes cannot be updated:\n"
@@ -7752,7 +7898,7 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
 #, python-format
 msgid ""
 "The following attributes could not be updated:\n"
@@ -7760,25 +7906,25 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
 msgid "Attribute"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
 msgid "Insert an element"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
 msgid "Choose the element to insert."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
 #, python-format
 msgid "Some tags contain invalid characters: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
 msgid "Tags:"
 msgstr ""
 
@@ -7897,7 +8043,7 @@ msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:765
 #, fuzzy
-msgid "The id of the annotation type"
+msgid "The annotation type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
 #: ../lib/advene/gui/edit/rules.py:768
@@ -7967,8 +8113,8 @@ msgstr "Arbvido"
 
 #: ../lib/advene/gui/edit/rules.py:793
 #, fuzzy
-msgid "The id of the element type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "The element type"
+msgstr "Arbvido"
 
 #: ../lib/advene/gui/edit/rules.py:794
 #, fuzzy
@@ -7990,6 +8136,16 @@ msgstr "Defauxlta regularo"
 msgid "The context fragment"
 msgstr "Arbvido"
 
+#: ../lib/advene/gui/edit/rules.py:809
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
 #: ../lib/advene/gui/edit/rules.py:834
 msgid "Select a condition"
 msgstr ""
@@ -8007,58 +8163,58 @@ msgstr ""
 msgid "Activate?"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
 msgid "Schema Editor"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
 #, fuzzy
 msgid "Display"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
 #, fuzzy
 msgid "Remove relation type"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
 #, fuzzy
 msgid "Create HTML view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
 #, fuzzy
 msgid "Remove annotation type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
 msgid "Create relation type between this one and..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
 msgid "New schema"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
 #, fuzzy
 msgid "New annotation type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
 #, fuzzy
 msgid "New relation type"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
 msgid "Hide this schema"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
 msgid "Export drawing to pdf"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
 #, fuzzy
 msgid "Choose a filename to export the schema as PDF"
 msgstr "Arbvido"
@@ -8362,103 +8518,103 @@ msgstr "Krei komentajxojn de DVD cxapitroj"
 msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
 msgid "Generic shape"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
 #, python-format
 msgid "Link to %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
 msgid "Link"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
 msgid "Link label"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
 msgid "Linewidth"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
 #, fuzzy
 msgid "Filled"
 msgstr "Dosiero"
 
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
 #, python-format
 msgid "Properties of %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
 msgid "Rectangle"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
 msgid "Text"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
 msgid "Textsize"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
 msgid "Image"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
 msgid "Href"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
 msgid "Line"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
 msgid "Draw an arrow"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
 msgid "Arrow size"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
 msgid "Circle"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
 msgid "Ellipse"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
 msgid "SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
 msgid "Load SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
 msgid "Save SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
 #, python-format
 msgid "Decrement value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
 #, python-format
 msgid "Increment value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
 msgid ""
 "Click to play\n"
 "Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8466,7 +8622,7 @@ msgid ""
 "Right-click to invalidate screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
 msgid ""
 "Enter a timecode.\n"
 "An integer value will be considered as milliseconds.\n"
@@ -8474,7 +8630,7 @@ msgid ""
 "HH:MM:SS.sss values are possible."
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
 msgid "Set to current player position"
 msgstr ""
 
@@ -9125,6 +9281,36 @@ msgid "Directory %s is not an extracted Advene zip package."
 msgstr ""
 
 #, fuzzy
+#~ msgid "Importing %s"
+#~ msgstr "Importi dosieron"
+
+#, fuzzy
+#~ msgid "Aiff importer"
+#~ msgstr "Importi dosieron"
+
+#, fuzzy
+#~ msgid "Updating modified annotations"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#~ msgid "Package _Imports"
+#~ msgstr "Komentara importitoj"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Redakti importitaj elementojn de aliaj komentaroj"
+
+#, fuzzy
+#~ msgid "Filename"
+#~ msgstr "Dosiero"
+
+#, fuzzy
+#~ msgid "The id of the annotation type"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#, fuzzy
+#~ msgid "The id of the element type"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#, fuzzy
 #~ msgid "Import filter"
 #~ msgstr "Importi dosieron"
 
@@ -9145,10 +9331,6 @@ msgstr ""
 #~ msgstr "Krei komentajxojn de DVD cxapitroj"
 
 #, fuzzy
-#~ msgid "Display snapshot"
-#~ msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#, fuzzy
 #~ msgid "Replace a string by another in the selected annotations.\n"
 #~ msgstr "Krei komentajxojn de DVD cxapitroj"
 
diff --git a/po/es.po b/po/es.po
index 379c467..a6e5c15 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 0.32\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
 "PO-Revision-Date: 2008-07-07 19:21+0200\n"
 "Last-Translator: Emmanuel Ayala Mexicano <amarrextro at yahoo.com>\n"
 "Language-Team: advene at liris.cnrs.fr\n"
@@ -82,57 +82,62 @@ msgid ""
 "The following processes seem to use the %(port)s port: %(processes)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
 #, python-format
 msgid "Loaded %(uri)s as %(alias)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
 #, python-format
 msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
 #, python-format
 msgid "Cannot get audio volume: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
 msgid "None"
 msgstr "Ninguno"
 
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
 #, python-format
 msgid "Found matching video file in moviepath: %s"
 msgstr "Encontre video concordante en la ruta: %s"
 
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
 msgid "Analysis of "
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
 msgid "Cannot split the annotation: the given position is outside."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
 #, python-format
 msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
 #, python-format
 msgid "Cannot read the imported package %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
 msgid "Package URI has changed. Reloading package with new URI."
 msgstr "El paquete URI ha cambiado. Recargando el paquete con un nuevo URI"
 
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
 msgid ""
 "Cannot load package: the following annotations do not have Millisecond "
 "fragments:"
@@ -140,55 +145,55 @@ msgstr ""
 "No puedo cargar el paquete: las anotaciones siguientes no tienen fragmentos "
 "de milisegundos:"
 
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
 #, python-format
 msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
 #, python-format
 msgid "Checking master package %s for not yet imported elements."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
 msgid "Standard summary"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
 msgid "Default view"
 msgstr "Vista por omision"
 
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
 #, python-format
 msgid ""
 "Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
 #, python-format
 msgid "Got exception %s when stopping player."
 msgstr "Hubo excepcion %s cuando se detuvo el reproductor."
 
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
 #, python-format
 msgid "Raised exception in update_status: %s"
 msgstr "Excepcion levantada en update_status: %s"
 
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
 msgid "Unable to start the player."
 msgstr "Incapaz de inicializar el reproductor."
 
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
 #, fuzzy, python-format
 msgid "Comment on set of %d annotations"
 msgstr "Creacion de una nueva anotacion"
 
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
 #, fuzzy, python-format
 msgid "Comment on %s"
 msgstr "Creacion: %s"
 
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
 #, python-format
 msgid ""
 "<h1>Comment on %(title)s</h1>\n"
@@ -200,23 +205,23 @@ msgid ""
 "\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
 #, fuzzy, python-format
 msgid "List of %s annotations"
 msgstr "anotaciones"
 
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
 #, fuzzy, python-format
 msgid "Cannot export to %(filename)s: %(e)s"
 msgstr "No se puede guardar el archivo: %s"
 
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
 #, fuzzy, python-format
 msgid "Error when exporting: %s"
 msgstr "<p>Error mientras se creaba la vista %s</p>"
 
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
 #, python-format
 msgid "Data exported to %s"
 msgstr ""
@@ -1041,11 +1046,15 @@ msgstr ""
 "<hr><p align=\"right\"><em>Documento generado por <a href=\"http://liris."
 "cnrs.fr/advene/\">Advene</a> v. %s.</em></p>"
 
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
 #, python-format
 msgid "Cannot start HTTP server: %s"
 msgstr ""
 
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
 #: ../lib/advene/plugins/featuredetect.py:42
 msgid "Feature detection (face...)"
 msgstr ""
@@ -1090,7 +1099,7 @@ msgstr ""
 msgid "Anvil importer"
 msgstr "Importador Anvil"
 
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
 #, fuzzy
 msgid "TED importer"
 msgstr "Importador de texto"
@@ -1161,11 +1170,72 @@ msgid ""
 "too many shots are detected, try to increase its value."
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
 #, python-format
 msgid "Detected shot #%(num)d at %(pos)s "
 msgstr ""
 
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+#, fuzzy
+msgid "Generating annotations"
+msgstr "anotaciones"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, fuzzy, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr "Selecciona un elemento"
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
 #: ../lib/advene/plugins/tts.py:77
 msgid "Pronounce a text"
 msgstr ""
@@ -1185,12 +1255,12 @@ msgstr ""
 msgid "The annotation content"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
 #: ../lib/advene/gui/plugins/actions.py:234
 msgid "Unknown rule"
 msgstr "Regla desconocida"
 
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
 #: ../lib/advene/gui/plugins/actions.py:235
 #, python-format
 msgid ""
@@ -1212,6 +1282,28 @@ msgstr ""
 msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "_Importar Archivo"
+
+#: ../lib/advene/plugins/fcp.py:90
+#, fuzzy
+msgid "Importing clips"
+msgstr "Excepcion :"
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
 #: ../lib/advene/plugins/mpeg7.py:54
 msgid "MPEG7 importer"
 msgstr "Importador MPEG7"
@@ -1241,29 +1333,6 @@ msgstr "Creacion de una nueva vista"
 msgid "Importing annotations"
 msgstr "anotaciones"
 
-#: ../lib/advene/plugins/aiff.py:35
-#, fuzzy
-msgid "Aiff importer"
-msgstr "Importador Xi"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "_Importar Archivo"
-
-#: ../lib/advene/plugins/aiff.py:92
-#, fuzzy
-msgid "Importing clips"
-msgstr "Excepcion :"
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
 #: ../lib/advene/plugins/dcp.py:65
 #, fuzzy
 msgid "DCP importer"
@@ -1274,11 +1343,11 @@ msgstr "Importador de texto"
 msgid "Converting #%(num)d / %(count)d"
 msgstr "Convertido de %s"
 
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
 msgid "Input from the braille table."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
 msgid "BrlTTY not installed. There will be no braille support."
 msgstr ""
 
@@ -1294,16 +1363,16 @@ msgstr "Muestra un mensaje en Braille"
 msgid "Message to display."
 msgstr "Mensaje a mostrar"
 
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
 msgid "BrlTTY connection error: %s"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
 msgid "Braille display: "
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
 msgid "No message"
 msgstr "Sin mensaje"
 
@@ -1349,17 +1418,17 @@ msgid "Parsing section information"
 msgstr "Informacion de aplicacion"
 
 #: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
 msgid "Creating package"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
 msgid "Creating annotation types"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
 msgid "Parsing header information"
 msgstr ""
 
@@ -1388,11 +1457,6 @@ msgstr "Creacion de una nueva anotacion"
 msgid "Channel selection."
 msgstr "Selección de Titulo/Capitulo"
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#, fuzzy
-msgid "Generating annotations"
-msgstr "anotaciones"
-
 #: ../lib/advene/plugins/soundenveloppe.py:115
 #, fuzzy, python-format
 msgid "At %s"
@@ -1432,7 +1496,7 @@ msgstr ""
 msgid "Starting silence detection"
 msgstr "Inicio de la aplicacion"
 
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
 #, fuzzy
 msgid "Aeidon (subtitles) importer"
 msgstr "Importador de subtítulos (SRT)"
@@ -1473,225 +1537,225 @@ msgstr ""
 msgid "Converted from %s"
 msgstr "Convertido de %s"
 
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
 #, fuzzy
 msgid "ExternalApp importer"
 msgstr "Importador de texto"
 
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
 #, python-format
 msgid ""
 "The <b>%s</b> application does not seem to be installed. Please check that "
 "it is present and that its path is correctly specified in preferences."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
 #, fuzzy, python-format
 msgid "The file %s does not seem to exist."
 msgstr "<p>La vista GUI %s no existe.</p>"
 
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
 #, fuzzy, python-format
 msgid "Could not run %(appname)s: %(msg)s"
 msgstr "No se puede guardar el archivo: %s"
 
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
 #, fuzzy, python-format
 msgid "Processing %s"
 msgstr "Editar %s"
 
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
 msgid "Cleaning up..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
 msgid "Text importer"
 msgstr "Importador de texto"
 
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
 msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
 msgid "lsdvd importer"
 msgstr "Importador lsdvd"
 
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
 msgid "Processing data"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
 #, fuzzy
 msgid "DVD Chapter"
 msgstr "Capitulo"
 
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
 msgid "Launching lsdvd..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
 msgid "chaplin importer"
 msgstr "Importador chaplin"
 
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
 msgid "Xi importer"
 msgstr "Importador Xi"
 
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
 msgid "ELAN importer"
 msgstr "Importador ELAN"
 
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
 #, python-format
 msgid "Converting tier %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
 msgid "Processing time slots"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
 msgid "Fixing forward references"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
 msgid "Creating relations"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
 msgid "Subtitle (SRT) importer"
 msgstr "Importador de subtítulos (SRT)"
 
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
 #, python-format
 msgid "Subtitles from %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
 msgid "PRAAT importer"
 msgstr "Importador PRAAT"
 
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
 msgid "CMML importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
 msgid "Parsing clip information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
 msgid "Creating CMML schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
 msgid "Parsing stream information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
 msgid "IRI importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
 msgid "Generate one type per view"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
 #, python-format
 msgid "Parsing ensemble %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
 #, python-format
 msgid "Parsing decoupage %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
 msgid "Parsing views"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
 msgid "Initializing package"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
 msgid "IRIData importer"
 msgstr "Importador IRIData"
 
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
 msgid "Parsing sound values"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
 msgid "Creating annotations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
 msgid "Package"
 msgstr "Paquete"
 
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
 msgid "Annotation"
 msgstr "Anotacion"
 
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
 msgid "Relation"
 msgstr "Relacion"
 
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
 msgid "Schema"
 msgstr "Esquema"
 
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
 msgid "Annotation Type"
 msgstr "Tipo de anotacion"
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
 msgid "Relation Type"
 msgstr "Tipo de relacion"
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
 #: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
 msgid "View"
 msgstr "Vista"
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
 #: ../lib/advene/gui/main.py:278
 msgid "Query"
 msgstr "Busqueda"
 
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
 msgid "Resource Folder"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
 msgid "Resource File"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
 msgid "---- Elements ----"
 msgstr "---- Elementos ----"
 
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
 msgid "---- Attributes ----"
 msgstr "---- Atributos ----"
 
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
 msgid "---- Methods ----"
 msgstr "---- Metodos ----"
 
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
 #, python-format
 msgid "Cannot read %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
 #: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
 #, python-format
 msgid "File %s is not an Advene zip package."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
 #, python-format
 msgid ""
 "Error:\n"
@@ -1700,7 +1764,7 @@ msgstr ""
 "Error:\n"
 "%s"
 
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
 #, python-format
 msgid ""
 "Package %(title)s:\n"
@@ -1714,81 +1778,81 @@ msgid ""
 "%(description)s\n"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schema"
 msgstr "esquema"
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schemas"
 msgstr "esquemas"
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotation"
 msgstr "anotacion"
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotations"
 msgstr "anotaciones"
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation type"
 msgstr "tipo de anotacion"
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation types"
 msgstr "tipos de anotaciones"
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relation"
 msgstr "relacion"
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relations"
 msgstr "relaciones"
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation type"
 msgstr "tipos de relacion"
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation types"
 msgstr "tipos de relaciones"
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "query"
 msgstr "busqueda"
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "queries"
 msgstr "busquedas"
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "view"
 msgstr "vista"
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "views"
 msgstr "vistas"
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "package"
 msgstr "paquete"
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "packages"
 msgstr "paquetes"
 
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
 #, python-format
 msgid "No %s"
 msgstr "No %s"
 
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
 #, python-format
 msgid "1 %s"
 msgstr "1 %s"
 
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
 #, python-format
 msgid "%(count)d %(plural)s"
 msgstr ""
@@ -1803,32 +1867,32 @@ msgstr ""
 msgid "%s does not exist"
 msgstr "<p>La vista GUI %s no existe.</p>"
 
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
 msgid "Starting export"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
 #, python-format
 msgid "Depth %d"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
 #, python-format
 msgid "Depth %(depth)d: processing %(url)s"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
 msgid "Finalizing"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
 #, python-format
 msgid ""
 "<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
 "strong></p>"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
 #, fuzzy
 msgid "Export complete"
 msgstr "Importar datos de una fuente externa"
@@ -1897,12 +1961,12 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
 #, python-format
 msgid "Renumbering annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
 msgid ""
 "<b>Renumber all annotations according to their order.</b>\n"
 "\n"
@@ -1916,26 +1980,26 @@ msgid ""
 "The offset parameter allows you to renumber from a given annotation."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
 msgid "Offset"
 msgstr "Compensar"
 
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
 #, fuzzy, python-format
 msgid "Renumbering %d annotations"
 msgstr "anotaciones"
 
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
 #, fuzzy, python-format
 msgid "Annotation #%d"
 msgstr "Anotación %s"
 
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
 #, fuzzy, python-format
 msgid "Extracting %s"
 msgstr "Editar %s"
 
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
 #, python-format
 msgid ""
 "Exporting annotation %(title)s\n"
@@ -1943,269 +2007,277 @@ msgid ""
 "to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
 msgid "Edit"
 msgstr "Editar"
 
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
 msgid "Browse"
 msgstr "Navegar"
 
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
 msgid "Open in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
 msgid "Delete"
 msgstr "Borrar"
 
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
 msgid "Search/replace content"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
 msgid "Activate"
 msgstr "Activar"
 
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
 msgid "Desactivate"
 msgstr "Desactivar"
 
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
 #: ../lib/advene/gui/plugins/tracetimeline.py:980
 #: ../lib/advene/gui/plugins/tracetimeline.py:1001
 #: ../lib/advene/gui/edit/transcribe.py:502
 msgid "Go to..."
 msgstr "Ir a..."
 
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
 msgid "Loop"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
 msgid "Duplicate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight"
 msgstr "Marcar"
 
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+#, fuzzy
+msgid "Save snapshot..."
+msgstr "Toma una fotografia"
+
+#: ../lib/advene/gui/popup.py:519
 msgid "Extract video fragment"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
 msgid "Incoming"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
 msgid "Outgoing"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
 msgid "Related annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
 msgid "Incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
 msgid "Outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
 #, python-format
 msgid "Begin: %s"
 msgstr "Inicio: %s"
 
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
 #, python-format
 msgid "End: %s"
 msgstr "Final: %s"
 
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
 #, fuzzy, python-format
 msgid "Duration: %s"
 msgstr "relaciones"
 
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
 msgid "Members:"
 msgstr "Miembros:"
 
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
 msgid "Edit package properties..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
 #, fuzzy, python-format
 msgid "%d annotations(s) - statistics"
 msgstr "Muestra las anotaciones como subtitulos"
 
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
 msgid "Create a new static view..."
 msgstr "Crear una nueva vista..."
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
 msgid "Create a new dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
 msgid "Create a new annotation..."
 msgstr "Crear una nueva anotacion"
 
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
 msgid "Create a new schema..."
 msgstr "Crear un nuevo esquema..."
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
 msgid "Create a new query..."
 msgstr "Crear una nueva busqueda..."
 
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
 msgid "Create a new folder..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
 msgid "Create a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
 msgid "Insert a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
 msgid "Insert a new resource directory..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
 msgid "Insert a soundclip..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
 #, fuzzy
 msgid "Play sound"
 msgstr "Reproductor detiene"
 
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
 msgid "Create a new annotation type..."
 msgstr "Crear un nuevo tipo de anotacion..."
 
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
 msgid "Create a new relation type..."
 msgstr "Crear un nuevo tipo de relacion..."
 
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
 msgid "Select a color"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
 #, python-format
 msgid "A caption dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
 #, python-format
 msgid "Caption %s annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
 msgid "Caption the annotation"
 msgstr "Subtitular la anotación"
 
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
 #, fuzzy
 msgid "Create a comment view"
 msgstr "Crear una nueva vista..."
 
-#: ../lib/advene/gui/popup.py:740
-msgid "Generate a caption dynamic view"
-msgstr ""
+#: ../lib/advene/gui/popup.py:739
+#, fuzzy
+msgid "Generate a caption dynamic view..."
+msgstr "Crear una nueva vista..."
 
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
 msgid "Display as transcription"
 msgstr "Muestra como transcripcion"
 
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
 msgid "Display annotations in table"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
 #, fuzzy
 msgid "Export to another format..."
 msgstr "Importar datos de una fuente externa"
 
-#: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
+#: ../lib/advene/gui/popup.py:748
+#, fuzzy
+msgid "Delete all annotations"
 msgstr "Borrar todas las anotaciones..."
 
-#: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
-msgstr ""
+#: ../lib/advene/gui/popup.py:749
+#, fuzzy
+msgid "Renumber annotations..."
+msgstr "anotaciones"
 
-#: ../lib/advene/gui/popup.py:751
+#: ../lib/advene/gui/popup.py:750
 #, fuzzy
-msgid "Adjust annotation bounds"
+msgid "Adjust annotation bounds..."
 msgstr "Muestra los limites de la anotacion"
 
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
 #, python-format
 msgid "A follow dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
 #, fuzzy, python-format
 msgid "Follow %s relation-type"
 msgstr "tipos de relacion"
 
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
 #, fuzzy
 msgid "Follow the relation"
 msgstr "Relaciones Allen"
 
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
 msgid "Delete all relations..."
 msgstr "Borrar todas las relaciones..."
 
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
 #, fuzzy
 msgid "Create montage from related annotations"
 msgstr "Crear una nueva anotacion"
 
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
 #, fuzzy
 msgid "Create dynamic view following relations"
 msgstr "Crear una relacion"
 
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
 #, python-format
 msgid "Exception in query: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
 msgid "Apply query on..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
 msgid "the package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
 msgid "all annotations of the package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
 msgid "the first annotation of the package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
 msgid "Activate view"
 msgstr "Activar vista"
 
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
 msgid "Open adhoc view"
 msgstr ""
 
@@ -2368,31 +2440,31 @@ msgid "Cannot remove this widget, it is essential."
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
 msgid "...in its own window"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:125
 #: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
 msgid "...embedded east of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:126
 #: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
 msgid "...embedded west of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:127
 #: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
 msgid "...embedded south of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:128
 #: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
 msgid "...embedded at the right of the window"
 msgstr ""
 
@@ -2470,7 +2542,7 @@ msgid "to create a new static view"
 msgstr "Crear una nueva vista..."
 
 #: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
 msgid "as a transcription"
 msgstr ""
 
@@ -2602,8 +2674,8 @@ msgstr ""
 msgid "Path"
 msgstr "Ruta"
 
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
 #: ../lib/advene/gui/edit/elements.py:508
 #: ../lib/advene/gui/edit/elements.py:557
 #: ../lib/advene/gui/edit/elements.py:657
@@ -2611,45 +2683,70 @@ msgid "Type"
 msgstr "Tipo"
 
 #: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
 msgid "Value"
 msgstr "Valor"
 
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+#, fuzzy
+msgid "Check various package properties"
+msgstr "Editar las propiedades del paquete"
+
+#: ../lib/advene/gui/views/checker.py:90
+#, fuzzy
+msgid "List of possible issues in the current package"
+msgstr "Guarda el paquete actual"
+
+#: ../lib/advene/gui/views/checker.py:108
+#, fuzzy
+msgid "Overlapping"
+msgstr "traslapa"
+
+#: ../lib/advene/gui/views/table.py:55
 msgid "Annotation table view"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
 msgid "Display annotations in a table"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
 #, fuzzy
 msgid "Snapshot"
 msgstr "Fotografias actualizadas"
 
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+#, fuzzy
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr "No puedo borrar la anotación: tiene relaciones."
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
 #: ../lib/advene/gui/edit/elements.py:675
 #: ../lib/advene/gui/edit/elements.py:717
 #: ../lib/advene/gui/edit/elements.py:1108
 msgid "Content"
 msgstr "Contenido"
 
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
 msgid "Begin"
 msgstr "Inicio"
 
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
 msgid "End"
 msgstr "Final"
 
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
 msgid "Duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
 #: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
 #: ../lib/advene/gui/edit/elements.py:507
 #: ../lib/advene/gui/edit/elements.py:556
@@ -2663,56 +2760,56 @@ msgstr ""
 msgid "Id"
 msgstr "Id"
 
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
 msgid "Export data to file..."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
 #, python-format
 msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "begin"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "end"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "content"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
 msgid "Generic table view"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
 msgid "Display Advene elements in a table."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element title"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
 #: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
 #: ../lib/advene/gui/edit/imports.py:331
 #: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2751,13 +2848,13 @@ msgstr ""
 msgid "Adhoc views"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
 msgid "Tree view"
 msgstr "Vista de arbol"
 
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
 msgid "Refresh"
 msgstr ""
 
@@ -2765,25 +2862,76 @@ msgstr ""
 msgid "Package View"
 msgstr "VIsta de paquete"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr "No puedo borrar la anotación: tiene relaciones."
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "tipos de relaciones"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, python-format
+msgid "Move annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr "Crear una relacion"
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr ""
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
 msgid "AnnotationDisplay"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
 msgid "Display the contents of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
 msgid "No annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
 msgid "Current time"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
 #, python-format
 msgid ""
 "Schema %(schema)s\n"
@@ -2792,15 +2940,21 @@ msgid ""
 "Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
 msgid "Screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
 #: ../lib/advene/gui/views/relationdisplay.py:104
 msgid "Contents"
 msgstr ""
 
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+#, fuzzy
+msgid "Validate"
+msgstr "Valor"
+
 #: ../lib/advene/gui/views/__init__.py:193
 msgid "Invalid view id"
 msgstr ""
@@ -2824,7 +2978,7 @@ msgstr ""
 msgid "Enter a view name to save this parametered view"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
 #, python-format
 msgid "Error: the identifier %s contains invalid characters."
 msgstr ""
@@ -2857,7 +3011,7 @@ msgstr ""
 msgid "Click or drag-and-drop to reattach view"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
 msgid "Caption"
 msgstr ""
 
@@ -2875,131 +3029,112 @@ msgstr ""
 msgid "Navigation popup"
 msgstr "Popup de navegación"
 
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
 msgid "Transcription"
 msgstr "Transcripcion"
 
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
 #, fuzzy
 msgid "Display annotations as a text transcription"
 msgstr "Muestra las anotaciones como transcripcion"
 
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
 #: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
 #: ../lib/advene/gui/edit/montage.py:54
 #: ../lib/advene/gui/edit/transcribe.py:85
 msgid "Save view"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
 #: ../lib/advene/gui/views/interactivequery.py:60
 #: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
 #: ../lib/advene/gui/edit/transcribe.py:86
 msgid "Save default options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
 #, python-format
 msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
 msgid "Transcription options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Default representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Use the default representation for annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 #: ../lib/advene/gui/edit/elements.py:962
 msgid "Representation"
 msgstr "Representacion"
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 msgid ""
 "If default representation is unchecked,\n"
 "this TALES expression that will be used to format the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
 msgid "Separator"
 msgstr "Separador"
 
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
 msgid "This separator will be inserted between the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
 msgid "Whitespace"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
 msgid "Newline"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
 msgid "Tabulation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
 msgid "Dash"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
 msgid "User defined"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid "User-defined separator"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid ""
 "Separator used if user-defined is selected.Use \\n for a newline and \\t for "
 "a tabulation."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Display timestamps"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Insert timestsamp values"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
 msgid "Display annotation bounds"
 msgstr "Muestra los limites de la anotacion"
 
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
 #, python-format
 msgid ""
 "Cannot convert the following annotations,\n"
@@ -3007,53 +3142,53 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
 msgid ""
 "Cannot validate the update.\n"
 "The representation pattern is too complex."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
 msgid "Save transcription to a text file"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
 msgid "Apply the modifications"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
 msgid "Find text"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
 msgid "Quickly switch display options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
 msgid "Refresh the transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
 msgid "Edit preferences"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
 #, python-format
 msgid "Annotation %s"
 msgstr "Anotación %s"
 
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
 msgid "Play"
 msgstr "Reproducir"
 
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
 #, python-format
 msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
 #: ../lib/advene/gui/edit/transcribe.py:884
 #, python-format
 msgid "Transcription saved to %s"
@@ -3208,7 +3343,7 @@ msgstr ""
 msgid "Convert bookmarks to annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
 msgid "Comment here"
 msgstr ""
 
@@ -3276,7 +3411,7 @@ msgid "Result of a query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
 #, python-format
 msgid "'%s'"
 msgstr ""
@@ -3301,7 +3436,7 @@ msgid "Search/replace content in %d elements"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
 msgid "Empty quicksearch string"
 msgstr ""
 
@@ -3315,7 +3450,7 @@ msgid "Edit query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
 msgid "String to search"
 msgstr ""
 
@@ -3455,7 +3590,7 @@ msgstr ""
 msgid "Edit resource"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
 msgid "Package finder"
 msgstr ""
 
@@ -3467,7 +3602,7 @@ msgstr ""
 msgid "Tag Bag"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
 msgid "Bag of tags"
 msgstr ""
 
@@ -3476,8 +3611,8 @@ msgid "New tag"
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
 #: ../lib/advene/gui/edit/properties.py:46
 #: ../lib/advene/gui/edit/transcribe.py:147
 #: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3493,7 +3628,7 @@ msgid "Enter a new tag name and select its color."
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
 msgid "Name"
 msgstr "Nombre"
 
@@ -3501,13 +3636,13 @@ msgstr "Nombre"
 #: ../lib/advene/gui/edit/elements.py:871
 #: ../lib/advene/gui/edit/elements.py:951
 #: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
 #: ../lib/advene/rules/actions.py:133
 msgid "Color"
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
 msgid "The tag contains invalid characters"
 msgstr ""
 
@@ -3558,61 +3693,56 @@ msgstr "Muestra un mensaje"
 msgid "EditAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#, fuzzy
-msgid "Validate"
-msgstr "Valor"
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
 msgid "Timeline"
 msgstr "Linea de tiempo"
 
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
 msgid "Display annotations on a timeline"
 msgstr "Muestra las anotaciones en una linea de tiempo"
 
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
 msgid "Limit display to current area"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
 #, fuzzy
 msgid "Display whole movie"
 msgstr "Muestra un marcador"
 
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
 #, python-format
 msgid "Cannot find annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
 msgid "No scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
 msgid "Continuous scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
 msgid "Discrete scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
 msgid "Annotation scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
 #, fuzzy, python-format
 msgid "%d annotations"
 msgstr "anotaciones"
 
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
 #, fuzzy
 msgid "Display all types"
 msgstr "Muestra %s"
 
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
 #, python-format
 msgid ""
 "There are %d annotations.\n"
@@ -3622,413 +3752,412 @@ msgid ""
 "click on the 'Display all types' button below."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
 #, fuzzy
 msgid "Split at current player position"
 msgstr "Detener el reproductor"
 
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
 msgid "Center and zoom"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
 #: ../lib/advene/rules/elements.py:1000
 msgid "Creation of a new annotation type"
 msgstr "Creación de un nuevo tipo de anotacion"
 
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr "Crear una relacion"
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
 msgid "Merge with this annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
 msgid "Align both begin times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
 msgid "Align both end times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
 msgid "Align end time to selected begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
 msgid "Align begin time to selected end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
 msgid "Align all times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr "No puedo borrar la anotación: tiene relaciones."
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
 msgid "Select the appropriate relation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, fuzzy, python-format
-msgid "Move selection to type %s"
-msgstr "tipos de relaciones"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, python-format
-msgid "Move annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
 #, python-format
 msgid "Duplicate to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
 #, python-format
 msgid "Move to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
 #, python-format
 msgid "Duplicate at %s and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
 msgid "Annotation filter"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
 msgid "Enter the searched string"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
 #, python-format
 msgid "Duplicate all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
 #, python-format
 msgid "Move all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
 #, python-format
 msgid "Duplicate all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
 #, python-format
 msgid "Move all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
 #, python-format
 msgid "Align all annotation time codes using %s as reference."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
 #, python-format
 msgid "Align all annotation contents using %s as reference"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Creacion de una nueva anotacion"
+
+#: ../lib/advene/gui/views/timeline.py:1946
+#, fuzzy
+msgid "Displaying done."
+msgstr "Muestra un popup"
+
+#: ../lib/advene/gui/views/timeline.py:2438
 msgid "Create a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
 #, fuzzy
 msgid "Zoom on region"
 msgstr "Selecciona una accion"
 
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
 #, fuzzy
 msgid "Restrict display to region"
 msgstr "No muestra las relaciones"
 
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
 #: ../lib/advene/gui/edit/transcribe.py:496
 #, python-format
 msgid "Position %s"
 msgstr "Posicion %s"
 
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
 #, fuzzy
 msgid "New annotation at player time"
 msgstr "tipo de anotacion"
 
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
 #, fuzzy
 msgid "New annotation at mouse position"
 msgstr "Nueva anotacion: %s"
 
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
 msgid "Selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
 msgid "Cannot zoom more"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
 #, python-format
 msgid "From schema %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
 msgid "Restrict playing to this annotation-type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
 msgid "Goto previous annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
 msgid "Goto next annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
 msgid "+"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
 #: ../lib/advene/gui/edit/transcribe.py:1027
 msgid "Create a new annotation type"
 msgstr "Crea un nuevo tipo de anotacion"
 
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
 msgid "Open an annotation display view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
 msgid "Open a slave montage view (coordinated zoom level)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
 msgid "No selected annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
 #, python-format
 msgid "%d selected annotation(s)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
 msgid "Unselect all annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
 #, fuzzy
 msgid "Create a static view"
 msgstr "Crear una nueva vista..."
 
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
 msgid "Highlight selection in other views"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
 msgid "Tag selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
 msgid "Delete selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
 msgid "Display selection in a table"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
 msgid "Center and zoom on selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
 msgid "Edit selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
 msgid "Merge annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+#, fuzzy
+msgid "Display statistics"
+msgstr "Muestra un popup"
+
+#: ../lib/advene/gui/views/timeline.py:3254
 msgid "Goto previous page"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
 msgid "Goto next page"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
 #: ../lib/advene/gui/edit/montage.py:535
 msgid "Inspector"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
 msgid ""
 "Delete the selected annotations or drop an annotation here to delete it."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
 msgid ""
 "Drag an annotation type here to remove it from display.\n"
 "Click to edit all displayed types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
 msgid "Selection actions"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
 msgid "Display relations"
 msgstr "Muestra las relaciones"
 
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
 #, fuzzy
 msgid "Display all relations"
 msgstr "Muestra las relaciones"
 
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
 #: ../lib/advene/gui/plugins/tracetimeline.py:421
 #: ../lib/advene/gui/edit/montage.py:439
 msgid "Zoom out"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
 #: ../lib/advene/gui/plugins/tracetimeline.py:426
 #: ../lib/advene/gui/edit/montage.py:444
 msgid "Zoom in"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
 msgid "Center on current player position."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
 msgid "Automatically activate loop when clicking on an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
 msgid "Displayed"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
 msgid "Not displayed"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
 msgid "< All <"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
 msgid "> All >"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
 msgid "Displayed annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Relation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Display relation types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Relation content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Display relation content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight active annotations"
 msgstr "Realzar las anotaciones activas"
 
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
 msgid "Enter the tag for the selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
 msgid "Scroller"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
 #, fuzzy, python-format
 msgid "Set of %s annotations"
 msgstr "anotaciones"
 
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
 #, fuzzy
 msgid "Refresh snapshot"
 msgstr "Toma una fotografia"
 
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+#, fuzzy
+msgid "Save as..."
+msgstr "Guardando el paquete"
+
+#: ../lib/advene/gui/widget.py:1072
 #, fuzzy
 msgid "Use current player position"
 msgstr "Detener el reproductor"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+#, fuzzy
+msgid "Adjust timestamp"
+msgstr "Timestamp no valida"
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
 #, fuzzy
 msgid "Video player"
 msgstr "_Configura reproductor"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
 #, fuzzy
 msgid "Complementary video player"
 msgstr "Error interno en el reproductor de video"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
 #, fuzzy
 msgid "Select video file"
 msgstr "Selecciona un archivo de pelicula"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
 #, fuzzy
 msgid "Select a video file"
 msgstr "Selecciona un archivo de pelicula"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
 msgid "Synchronize"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
 #, fuzzy
 msgid "Offset in ms"
 msgstr "Compensar"
 
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+#, fuzzy
+msgid "Drag and drop to get player time"
+msgstr "tipo de anotacion"
+
 #: ../lib/advene/gui/plugins/actions.py:52
 msgid "Display a popup"
 msgstr "Muestra un popup"
@@ -4281,145 +4410,145 @@ msgstr ""
 msgid "New bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
 #, python-format
 msgid "Rendering type %(type)s as %(presentation)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
 #, fuzzy
 msgid "Snapshot only"
 msgstr "Fotografias actualizadas"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
 #, fuzzy
 msgid "Overlayed snapshot only"
 msgstr "Fotografias actualizadas"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
 #, fuzzy
 msgid "Timestamp only"
 msgstr "Solo texto"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
 #, fuzzy
 msgid "Snapshot+timestamp"
 msgstr "Timestamp no valida"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
 #, fuzzy
 msgid "Annotation content"
 msgstr "Tipo de anotacion"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
 msgid "as a list"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
 msgid "as a table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
 msgid "Play video"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
 #, fuzzy
 msgid "Show timestamp only"
 msgstr "Solo texto"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
 #, fuzzy
 msgid "Show content only"
 msgstr "Contenido"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
 #, fuzzy
 msgid "Show snapshot only"
 msgstr "Fotografias actualizadas"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
 #, fuzzy
 msgid "Show overlayed timestamp"
 msgstr "Timestamp no valida"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
 msgid "Show overlayed content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
 #, fuzzy, python-format
 msgid "Annotation type %s"
 msgstr "tipos de anotaciones"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
 #, fuzzy
 msgid "display as list"
 msgstr "Muestra las relaciones"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
 #, fuzzy
 msgid "display as table"
 msgstr "Muestra un marcador"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
 #, fuzzy
 msgid "display as transcription"
 msgstr "Muestra como transcripcion"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
 #, fuzzy
 msgid "Open link"
 msgstr "Abrir %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
 #, fuzzy, python-format
 msgid "HTML editor: cannot parse content (%s)"
 msgstr "Elige un tipo de anotacion"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
 #, fuzzy, python-format
 msgid "Heading %d"
 msgstr "Editar %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
 msgid "Bold"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
 msgid "Italic"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
 msgid "Header"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
 msgid "Copy"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
 #, fuzzy
 msgid "Cut"
 msgstr "Actual"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
 #, fuzzy
 msgid "Paste"
 msgstr "Pausar"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
 msgid "Undo"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
 msgid "WYSIWYG editor"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
 #, fuzzy
 msgid "Edit HTML source"
 msgstr "Editar %s"
@@ -4434,98 +4563,98 @@ msgstr "Vista de relaciones"
 msgid "Display shot validation interface"
 msgstr "Muestra el historial de navegacion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
 #, python-format
 msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
 msgid "Last action undone"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
 #, python-format
 msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
 #, fuzzy, python-format
 msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr "No puedo borrar la anotación: tiene relaciones."
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
 #, python-format
 msgid "Changed cut between #%(first)d and %(second)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
 #, fuzzy
 msgid "Changed begin time for first annotation"
 msgstr "Finalizando la edicion de una anotacion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
 #, fuzzy
 msgid "No annotations to adjust"
 msgstr "Nueva anotacion: %s"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
 msgid ""
 "Click on the frame just after the cut to adjust the cut time.\n"
 "Control-click on a frame to indicate a missing cut."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
 #, python-format
 msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
 msgid "< Previous cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
 #, fuzzy
 msgid "Display previous cut"
 msgstr "Muestra los limites de la anotacion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
 msgid "Next cut >"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
 #, fuzzy
 msgid "Display next cut"
 msgstr "Muestra los limites de la anotacion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
 #, fuzzy
 msgid "Go to annotation containing current player time."
 msgstr "tipo de anotacion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
 #: ../lib/advene/gui/edit/frameselector.py:192
 #, fuzzy
 msgid "Refresh snapshots"
 msgstr "Toma una fotografia"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
 #: ../lib/advene/gui/edit/frameselector.py:193
 msgid "Refresh missing snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
 msgid "Undo last modification"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
 msgid "Merge with previous"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
 msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
 #, fuzzy
 msgid "Close view."
 msgstr "Cerrar"
@@ -4576,7 +4705,7 @@ msgid " Filters"
 msgstr "Concordar filtro"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Reset"
 msgstr ""
 
@@ -4614,56 +4743,56 @@ msgstr "Concordar filtro"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:559
 #: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
 #, fuzzy, python-format
 msgid "of an annotation (%s)"
 msgstr "anotacion"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:561
 #: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
 #, fuzzy, python-format
 msgid "of a relation (%s)"
 msgstr "relacion"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:563
 #: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
 #, fuzzy, python-format
 msgid "of an annotation type (%s)"
 msgstr "tipos de anotaciones"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:565
 #: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
 #, fuzzy, python-format
 msgid "of a relation type (%s)"
 msgstr "tipos de relaciones"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:567
 #: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
 #, fuzzy, python-format
 msgid "of a schema (%s)"
 msgstr "esquemas"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:569
 #: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
 #, fuzzy, python-format
 msgid "of a view (%s)"
 msgstr "vistas"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:571
 #: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
 #, fuzzy, python-format
 msgid "of a package (%s)"
 msgstr "Paquete(s) cargados"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:573
 #: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
 #, fuzzy, python-format
 msgid "of an unknown item (%s)"
 msgstr "tipos de anotaciones"
@@ -4712,7 +4841,7 @@ msgid "Search"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
 #, python-format
 msgid "%(name)s (%(index)s)"
 msgstr ""
@@ -4770,30 +4899,30 @@ msgstr ""
 msgid "Zoom on action"
 msgstr "Selecciona una accion"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
 msgid "Item Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
 msgid "Item name or class"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
 #, fuzzy
 msgid "Type or schema"
 msgstr "Esquema"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
 #, fuzzy
 msgid "Operations"
 msgstr "Acciones genericas"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
 #, fuzzy
 msgid "Comment"
 msgstr "Contenido"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
 #: ../lib/advene/gui/edit/merge.py:191
 msgid "Action"
 msgstr ""
@@ -4842,19 +4971,24 @@ msgstr ""
 msgid "Log Messages"
 msgstr "Sin mensaje"
 
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
 #, fuzzy
 msgid "_Select player"
 msgstr "_Reinicia reproductor"
 
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
 msgid "_View"
 msgstr "_Vista"
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
 msgid "Packages"
 msgstr "Paquetes"
 
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+#, fuzzy
+msgid "Open recent"
+msgstr "Abrir %s"
+
 #: ../lib/advene/gui/main.py:239
 msgid "Input from the keyboard (function keys)"
 msgstr ""
@@ -4883,138 +5017,143 @@ msgid "Open a package"
 msgstr "Abre un archivo de paquete"
 
 #: ../lib/advene/gui/main.py:246
+msgid "Show recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:247
 #, fuzzy
 msgid "_Save package"
 msgstr "Guardando el paquete"
 
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
 #, fuzzy
 msgid "Save the package"
 msgstr "Guardando el paquete"
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 #, fuzzy
 msgid "Save package as..."
 msgstr "Guardando el paquete"
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 #, fuzzy
 msgid "Save the package as..."
 msgstr "Guardando el paquete"
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 #, fuzzy
 msgid "Close package"
 msgstr "No paquete"
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 #, fuzzy
 msgid "Close the package"
 msgstr "Guardando el paquete"
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save session"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save the current session (list of opened packages)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
 msgid "Save workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
 msgid "...as package view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "...as standard workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "Use the current layout as standard workspace in the future"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 #, fuzzy
 msgid "Associate a video _File"
 msgstr "Selecciona un archivo de pelicula"
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 #, fuzzy
 msgid "Associate a video file"
 msgstr "Selecciona un archivo de pelicula"
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 #, fuzzy
 msgid "Associate a _DVD"
 msgstr "Media asociada"
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 msgid "Associate a chapter from a DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 #, fuzzy
 msgid "Associate a _Video stream"
 msgstr "Selecciona un archivo de pelicula"
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 msgid "Enter a video stream address"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "_Import File"
 msgstr "_Importar Archivo"
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "Import data from an external source"
 msgstr "Importar datos de una fuente externa"
 
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr ""
+#: ../lib/advene/gui/main.py:261
+#, fuzzy
+msgid "_Process video"
+msgstr "Editar %s"
 
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
 #, fuzzy
 msgid "Import data from video processing algorithms"
 msgstr "Importar datos de una fuente externa"
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge elements from another package"
 msgstr "Editar elementos importados de otros paquetes"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Import _DVD chapters"
 msgstr "Importar capitulos del DVD"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Create annotations based on DVD chapters"
 msgstr "Crear anotaciones basadas en los capitulos del DVD"
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 #, fuzzy
 msgid "_Export..."
 msgstr "Importar datos de una fuente externa"
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 msgid "Export data to another format"
 msgstr "Importar datos de una fuente externa"
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "_Website export..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "Export views to a website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
 #, fuzzy
 msgid "_Quit"
 msgstr "_Editar"
@@ -5041,14 +5180,6 @@ msgstr "Borrar"
 msgid "Create"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr "Importar_Paquetes"
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Editar elementos importados de otros paquetes"
-
 #: ../lib/advene/gui/main.py:284
 msgid "P_ackage properties"
 msgstr "P_ropiedades del paquete"
@@ -5090,18 +5221,10 @@ msgstr "Evaluador"
 msgid "Open python evaluator window"
 msgstr "Abre la ventana del evaluador de Python"
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
 msgid "Webserver log"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr "_InformacionMedia"
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr "Muestra información acerca de la media"
-
 #: ../lib/advene/gui/main.py:296
 msgid "_Player"
 msgstr "_Reproductor"
@@ -5142,14 +5265,6 @@ msgstr "_Reinicia reproductor"
 msgid "Restart the player"
 msgstr "Iniciar el reproductor"
 
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr "Fotografias actualizadas"
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:302
 #, fuzzy
 msgid "Update annotation screenshots"
@@ -5223,261 +5338,272 @@ msgstr ""
 msgid "_About"
 msgstr "_Acerca"
 
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
 msgid "Open a package file"
 msgstr "Abre un archivo de paquete"
 
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
 msgid "Save the current package"
 msgstr "Guarda el paquete actual"
 
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
 msgid "Save the package with a new name"
 msgstr "Guarda el paquete actual con un nuevo nombre"
 
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
 msgid "Select movie file..."
 msgstr "Seleccionar archivo de pelicula"
 
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
 msgid "Select DVD"
 msgstr "Selecciona DVD"
 
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
 #, fuzzy
 msgid "Create a text annotation"
 msgstr "Crear una nueva anotacion"
 
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
 #, fuzzy
 msgid "Create a graphical annotation"
 msgstr "Crear una nueva anotacion"
 
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
 #, fuzzy
 msgid "Snapshotter activity"
 msgstr "Fotografias actualizadas"
 
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
 #, python-format
 msgid "%d queued requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
 msgid "Cancel all requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
 #, fuzzy
 msgid "No snapshotter"
 msgstr "Todas las fotografias estan actualizadas."
 
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
 #, fuzzy
 msgid "No snapshotting activity"
 msgstr "Todas las fotografias estan actualizadas."
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
 #, fuzzy
 msgid "Snapshotting"
 msgstr "Fotografias actualizadas"
 
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
 #, fuzzy
 msgid "Display application log messages"
 msgstr "Muestra un mensaje"
 
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
 msgid "Quicksearch lists"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
 msgid "Please specify the lists of elements to be searched."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:498
+#: ../lib/advene/gui/main.py:507
 #, python-format
 msgid ""
 "Searching on %s.\n"
 "Left click to launch the search, right-click to set the quicksearch options"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:499
-#, fuzzy, python-format
-msgid "String to search in %s"
-msgstr "Cadena a mostrar"
-
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:540
-#, fuzzy
-msgid "All available views"
-msgstr "Archivos disponibles"
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-msgid "Schema editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:573
-#, fuzzy
-msgid "Open a comment view in the web browser"
-msgstr "Abrir un URL en un navegador web"
-
-#: ../lib/advene/gui/main.py:574
-#, fuzzy
-msgid "Create or open a comment view"
-msgstr "Creacion de una nueva vista"
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-#, fuzzy
-msgid "Display edition history"
-msgstr "Muestra el historial de navegacion"
-
-#: ../lib/advene/gui/main.py:579
-#, fuzzy
-msgid "Visualise the activity trace preview"
-msgstr "Activar relacionados"
-
-#: ../lib/advene/gui/main.py:580
-#, fuzzy
-msgid "Visualise the activity trace as a timeline"
-msgstr "Activar relacionados"
+#: ../lib/advene/gui/main.py:508
+#, fuzzy, python-format
+msgid "String to search in %s"
+msgstr "Cadena a mostrar"
 
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
 #, fuzzy
 msgid "Tracing : "
 msgstr "Acciones GUI"
 
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
 msgid "off"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
 #, fuzzy
 msgid "on"
 msgstr "Hecho"
 
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
 msgid "Launch search"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
 msgid "Ignore case"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
 msgid "Searched elements"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
 msgid "Playing"
 msgstr "Reproduciendo"
 
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
 msgid "Pause"
 msgstr "Pausar"
 
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
 msgid "Init"
 msgstr "Inicio"
 
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
 msgid "Undefined"
 msgstr "Sin definir"
 
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
 msgid "Enter the new time value"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
 #, fuzzy, python-format
 msgid "Replace content in %d elements"
 msgstr "Selecciona un elemento"
 
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
 msgid "Find word"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
 msgid "Replace by"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
 #, python-format
 msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
 msgid "The video extracting feature is not available."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
 #, fuzzy
 msgid "Video export"
 msgstr "_Configura reproductor"
 
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
 #, python-format
 msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
 msgid "Please choose a destination filename"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
 msgid ""
 "No media association is defined in the package. Please use the 'File/"
 "Associate a video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
 #, python-format
 msgid ""
 "The associated media %s could not be found. Please use the 'File/Associate a "
 "video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
 #, python-format
 msgid ""
 "You are now working with the following video:\n"
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1205
+#, fuzzy
+msgid "_All available views"
+msgstr "Archivos disponibles"
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+msgid "Schema editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1238
+#, fuzzy
+msgid "Open a comment view in the web browser"
+msgstr "Abrir un URL en un navegador web"
+
+#: ../lib/advene/gui/main.py:1239
+#, fuzzy
+msgid "Create or open a comment view"
+msgstr "Creacion de una nueva vista"
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+#, fuzzy
+msgid "Display edition history"
+msgstr "Muestra el historial de navegacion"
+
+#: ../lib/advene/gui/main.py:1244
+#, fuzzy
+msgid "Visualise the activity trace preview"
+msgstr "Activar relacionados"
+
+#: ../lib/advene/gui/main.py:1245
+#, fuzzy
+msgid "Visualise the activity trace as a timeline"
+msgstr "Activar relacionados"
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
 #, python-format
 msgid ""
 "<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5486,442 +5612,474 @@ msgid ""
 "cnrs.fr/advene/</span>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
 msgid "Go to the website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
 msgid "Advene release"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 #, python-format
 msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 msgid "Advene is up-to-date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
 msgid "Choose a color"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
 msgid "Select an annotation to loop on it"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
 #, python-format
 msgid "Looping on %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
 msgid "No active dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
 msgid "Create a new dynamic view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1471
+#: ../lib/advene/gui/main.py:1502
+msgid "Edit the current dynamic view."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1514
 #, fuzzy
 msgid "No dynamic view"
 msgstr "Vista dinamica"
 
-#: ../lib/advene/gui/main.py:1473
-msgid "Edit the current dynamic view."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
 #, fuzzy
 msgid "Playing rate"
 msgstr "Reproduciendo"
 
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
 msgid "History"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
 msgid "Popups"
 msgstr "Popups"
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid ""
 "You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid "Information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
 #, fuzzy
 msgid "Cannot create annotation. There is no schema to put it in."
 msgstr "No puedo borrar la anotación: tiene relaciones."
 
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
 #, fuzzy
 msgid "Default annotation type"
 msgstr "tipo de anotacion"
 
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
 #, fuzzy
 msgid "Annotation created"
 msgstr "Tipo de anotacion"
 
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
 msgid "Play/Pause [Control-Tab / Control-Space]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
 #, python-format
 msgid "Rewind (%.02f s) [Control-Left]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
 #, python-format
 msgid "Forward (%.02f s) [Control-Right]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
 msgid "Previous frame [Control-Down]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
 msgid "Next frame [Control-Up]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
 msgid "Fullscreen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, fuzzy, python-format
+msgid "Screenshot saved to %s"
+msgstr "Transcripción guardada a %s"
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2214
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "Fotografias actualizadas"
+
+#: ../lib/advene/gui/main.py:2222
+#, fuzzy
+msgid "Save screenshot to..."
+msgstr "Fotografias actualizadas"
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
 #, fuzzy
 msgid "Export package data"
 msgstr "Explora la informacion del paquete"
 
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
 #, fuzzy, python-format
 msgid "Export annotation type %s"
 msgstr "tipos de anotaciones"
 
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
 #, fuzzy, python-format
 msgid "Export element %s"
 msgstr "Elemento de busqueda %s"
 
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
 #, fuzzy
 msgid "Export format"
 msgstr "Importar datos de una fuente externa"
 
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
 msgid " (modified)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
 #, python-format
 msgid "Activate %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr "Abrir %s"
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
 msgid "Saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
 msgid "Restoring workspace..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
 #, python-format
 msgid "Do you wish to restore the %s workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
 msgid "Clear the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
 #, python-format
 msgid "View %s is not an adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
 #, python-format
 msgid "Cannot identify the adhoc view %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
 msgid "Choose the annotation type to display as transcription."
 msgstr "Elige el tipo de anotacion para mostrarlo como transcripcion."
 
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
 #, python-format
 msgid ""
 "Error: unable to find an edit popup for %(element)s:\n"
 "%(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
 #, fuzzy, python-format
 msgid "Editing %s"
 msgstr "Editar %s"
 
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
 #, fuzzy, python-format
 msgid "Comment view (%s)"
 msgstr "Creacion: %s"
 
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
 #, python-format
 msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
 #, python-format
 msgid "Activating package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
 #, python-format
 msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
 msgid "Do you want to restore the saved workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
 msgid "Advene"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
 #, python-format
 msgid "Got exception %s. Trying to continue."
 msgstr "Hubo excepción %s. Tratando de continuar. "
 
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
 #, fuzzy
 msgid "Unknown"
 msgstr "Regla desconocida"
 
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
 #, python-format
 msgid ""
 "The package(s) %s are modified.\n"
 "Save them now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
 msgid "Choose an annotation type."
 msgstr "Elige un tipo de anotacion."
 
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
 msgid "No annotation type is defined."
 msgstr "No hay tipo de anotacion definido."
 
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
 msgid "Creating a new type."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
 msgid "Title of the new type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
 msgid ""
 "Id of the new type. It is generated from the title, but you may change it if "
 "necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
 msgid "Specify the content-type for the annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
 msgid "Content type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
 msgid "Create a new schema"
 msgstr "Crea un nuevo esquema."
 
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
 msgid "Choose an existing schema for the new type, or create a new one"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
 msgid "Specify the schema title"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
 msgid "Title of the new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
 msgid ""
 "Id of the new schema. It is generated from the title, but you may change it "
 "if necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
 msgid ""
 "You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
 msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
 msgid ""
 "You specified an existing identifier that does not reference a schema. "
 "Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
 msgid "Choose a schema."
 msgstr "Elige un esquema."
 
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
 msgid "You specified an existing identifier. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
 #, python-format
 msgid "Package %s modified"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
 #, python-format
 msgid ""
 "The package %s has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
 #, python-format
 msgid "%s snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
 #, python-format
 msgid "Do you want to save the snapshots for media %s?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
 #, fuzzy, python-format
 msgid "Cannot save imagecache for %(media)s: %(e)s"
 msgstr "No se puede guardar el archivo: %s"
 
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
 #, fuzzy
 msgid "first frame"
 msgstr "esta antes"
 
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
 msgid "last frame"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
 #, fuzzy, python-format
 msgid "Click on %(bound)s of %(annotation)s"
 msgstr "Creacion de una nueva anotacion"
 
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
 #, fuzzy, python-format
 msgid "Update %(bound)s of %(annotation)s"
 msgstr "Creacion de una nueva anotacion"
 
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+#, fuzzy
+msgid "Set new timestamp value"
+msgstr "Solo texto"
+
+#: ../lib/advene/gui/main.py:3523
+#, fuzzy
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr "Muestra las anotaciones como subtitulos"
+
+#: ../lib/advene/gui/main.py:3602
 #, fuzzy
 msgid "Text annotation"
 msgstr "anotacion"
 
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
 #, fuzzy
 msgid "Cannot find an appropriate annotation type"
 msgstr "Crea un nuevo tipo de anotacion"
 
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
 #, fuzzy
 msgid "Graphical annotation"
 msgstr "Creacion de una nueva anotacion"
 
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
 msgid ""
 "An unsaved template package exists\n"
 "Save it first."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
 msgid "Package modified"
 msgstr "Paquete modificado. "
 
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
 msgid ""
 "The package that you want to close has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
 msgid "Load a package"
 msgstr "Cargar un paquete."
 
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
 msgid ""
 "A video file was selected. Pretend that the user selected 'Select a video "
 "file'..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
 #, python-format
 msgid ""
 "The file %s does not look like a valid Advene package. It should have a .azp "
 "or .xml extension. Try to open anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
 msgid ""
 "You are trying to load a session file, but there are unsaved packages. "
 "Proceed anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
 msgid "Do you want to save the current workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
 #, python-format
 msgid "Could not save the package: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
 #, python-format
 msgid "Save the package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
 msgid "Invalid file extension"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
 #, python-format
 msgid ""
 "Your package contains resources,\n"
@@ -5929,93 +6087,93 @@ msgid ""
 "Should I put the correct extension?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
 msgid "OK, the resources will be lost."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
 msgid "Aborting package saving"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
 msgid "Save the session in..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
 #, python-format
 msgid "Session saved in %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
 msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 "¿Confirmas la creacion de anotaciones concordando con los capitulos del DVD?"
 
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
 msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
 msgid "The associated media is not a DVD."
 msgstr "El medio asociado no es un DVD. "
 
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
 #, fuzzy, python-format
 msgid "Processing %s video"
 msgstr "Editar %s"
 
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
 #, fuzzy
 msgid "No associated video file"
 msgstr "Selecciona un archivo de pelicula"
 
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
 msgid "Standard RuleSet"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
 #, python-format
 msgid ""
 "Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
 msgid ""
 "GNU General Public License\n"
 "See http://www.gnu.org/copyleft/gpl.html for more details"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
 msgid "Visit the Advene web site for examples and documentation."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
 msgid "Select a movie file"
 msgstr "Selecciona un archivo de pelicula"
 
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
 msgid "Title/Chapter selection"
 msgstr "Selección de Titulo/Capitulo"
 
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
 #, fuzzy
 msgid "Select a video stream"
 msgstr "Selecciona un archivo de pelicula"
 
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
 msgid "Enter the address of a video stream"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
 #, python-format
 msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
 msgid "Package properties"
 msgstr "Propiedades de paquete"
 
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
 #: ../lib/advene/gui/edit/elements.py:559
 #: ../lib/advene/gui/edit/elements.py:644
 #: ../lib/advene/gui/edit/elements.py:706
@@ -6027,11 +6185,11 @@ msgstr "Propiedades de paquete"
 msgid "Author"
 msgstr "Autor"
 
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
 msgid "Author name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
 #: ../lib/advene/gui/edit/elements.py:560
 #: ../lib/advene/gui/edit/elements.py:645
 #: ../lib/advene/gui/edit/elements.py:707
@@ -6043,790 +6201,792 @@ msgstr ""
 msgid "Date"
 msgstr "Fecha"
 
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
 msgid "Package creation date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
 msgid "Package title"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
 msgid "Associated media"
 msgstr "Media asociada"
 
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Media duration in ms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
 msgid "Paths"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Data"
 msgstr "Data"
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Standard directory for data files"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 msgid "Movie path"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 #, python-format
 msgid ""
 "List of directories (separated by %s) to search for movie files (_ means "
 "package directory)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Imagecache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Directory for storing the snapshot cache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Directory of the video player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 #, fuzzy
 msgid "Shotdetect"
 msgstr "Importador de shotdetect"
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 #, fuzzy
 msgid "Shotdetect application"
 msgstr "Importador de shotdetect"
 
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
 msgid "GUI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid "Interface language (after restart)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid ""
 "Language used for the interface (necessitates to restart the application)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
 msgid "System default"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
 msgid "Record activity trace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Expert mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Offer advanced possibilities"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Prefer WYSIWYG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Use WYSIWYG editors when possible (HTML, SVG)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid "Player control in edit popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid ""
 "Enable generic player controls in edit windows. This may be undesirable "
 "since it overloads some standard text-edition behaviours (esp. control-left/"
 "right)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
 #, fuzzy
 msgid "Open popups"
 msgstr "Abrir %s"
 
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
 msgid "Where should we open adhoc views?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
 msgid "as a popup window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
 msgid "embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
 msgid "embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
 msgid "embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
 msgid "embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History filelist size limit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember window size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember the size of opened windows"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Bookmark snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Width of the snapshots representing bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Bookmark snapshot precision"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Precision (in ms) of the displayed bookmark snapshots."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
 msgid "General"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
 msgid "Weekly update check"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
 msgid "Weekly check for updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
 msgid "On exit,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
 msgid "How to handle screenshots on exit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
 msgid "never save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
 msgid "always save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
 msgid "ask before saving screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
 msgid "Auto-save"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
 msgid "Data auto-save functionality"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
 msgid "is desactivated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
 msgid "is done automatically"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
 msgid "is done after confirmation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Auto-save interval (in s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Interval (in seconds) between package auto-saves"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
 #, fuzzy
 msgid "Workspace"
 msgstr "Vista estatica predefinida"
 
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
 msgid "On package saving,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
 msgid "Do you wish to save the default workspace with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
 msgid "never save the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
 msgid "always save the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
 msgid "ask before saving the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
 msgid "On package load,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
 msgid "Do you wish to load the workspace saved with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
 msgid "never load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
 msgid "always load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
 msgid "ask before loading the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
 #, fuzzy
 msgid "Video Player"
 msgstr "_Configura reproductor"
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 #, fuzzy
 msgid "Autostart"
 msgstr "Autor"
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid ""
 "Automatically start the player when loading a media file (either directly or "
 "through a package)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 #, fuzzy
 msgid "Fulscreen timestamp"
 msgstr "Timestamp no valida"
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 #, fuzzy
 msgid "Enable captions"
 msgstr "Acciones genericas"
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 msgid "Enable captions over the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "Caption font"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "TrueType font for captions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG captions over the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
 msgid "Enable snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width in pixels."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity level. -1 for no messages."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
 msgid "Devices"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
 msgid "Standard"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "DVD drive"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "Drive letter for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
 msgid "GDI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
 msgid "Direct X"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "DVD device"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "Device for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
 msgid "X11"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
 msgid "XVideo"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
 msgid "GL"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output module"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
 #, fuzzy
 msgid "Recorder options"
 msgstr "Segunda posicion"
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 #, fuzzy
 msgid "Audio input"
 msgstr "Anadir archivo"
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record both video and audio"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
 msgid "<i>Experimental</i>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
 msgid "Embed the caption scroller below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
 msgid "Embed the caption view below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
 msgid "Time-related"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 msgid "Time format"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 #, fuzzy
 msgid "Format used to display timecodes"
 msgstr "Modo de visualizacion por omision"
 
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
 #, fuzzy
 msgid "Default FPS"
 msgstr "Vista por omision"
 
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
 msgid ""
 "Default FPS (frame-per-second) value, when entering or displaying timestamps "
 "with frame numbers."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid "Time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid ""
 "Skip duration, when using control-left/right or forward/rewind buttons (in "
 "ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Second time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Third time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid "Custom Up/Down"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid ""
 "Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid "Scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid ""
 "On most annotations, control+scrollwheel will increment/decrement their "
 "bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid "Second scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid ""
 "On most annotations, control+shift+scrollwheel will increment/decrement "
 "their bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 #, fuzzy
 msgid "Player sync"
 msgstr "Reproductor detiene"
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid ""
 "Interval (in ms) with which we synchronize slave players. Setting a too-low "
 "value could render the application unusable. Use 0 to disable continuous "
 "synchronization."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
 msgid "Timeline parameters"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
 msgid "Font size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
 msgid "Font size for annotation widgets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Button height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Height of annotation widgets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Interline height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Height of interlines"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
 #, fuzzy
 msgid "Text content"
 msgstr "Plantilla HTML"
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 #, fuzzy
 msgid "Completion mode"
 msgstr "Creacion: %s"
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 #, fuzzy
 msgid "Enable dynamic completion mode"
 msgstr "Acciones genericas"
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 #, fuzzy
 msgid "Abbreviation mode"
 msgstr "tipos de relacion"
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 #, fuzzy
 msgid "Enable abbreviation mode"
 msgstr "Acciones genericas"
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 #, fuzzy
 msgid "Abbreviations"
 msgstr "relaciones"
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 msgid ""
 "Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
 "followed by its replacement."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
 msgid "Text-To-Speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
 msgid "TTS language"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
 msgid "What language settings should be used for text-to-speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
 msgid "English"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
 msgid "French"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
 msgid "Spanish"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
 msgid "TTS Encoding"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
 msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
 msgid "TTS Engine"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
 msgid ""
 "Which TTS engine should be used (modification requires restarting Advene to "
 "take into account)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
 #, fuzzy
 msgid "Automatic"
 msgstr "Autor"
 
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
 msgid "eSpeak"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
 msgid "Custom script with standard input"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
 msgid "Custom script with arguments"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
 msgid "SAPI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
 msgid "MacOS X say"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
 #, fuzzy
 msgid "Generic (text output)"
 msgstr "Plugin de vista generica"
 
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
 msgid "You should restart Advene to take some options into account."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
 #, python-format
 msgid "Imagecache saved to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
 msgid "Restarting player..."
 msgstr "Reiniciando el reproductor..."
 
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
 #, fuzzy
 msgid "Advene log"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
 msgid "Select the package to merge"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
 msgid "Saving workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
 msgid "Enter a view name to save the workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
 #, fuzzy
 msgid "Default workspace"
 msgstr "Vista estatica predefinida"
 
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
 msgid "Open this workspace when opening the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
 #, python-format
 msgid "Error: the view %s exists and is not a workspace view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
 #, python-format
 msgid "Cannot save default workspace: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
 msgid "Standard workspace has been saved"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
 msgid "Website export"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
 msgid "Exporting views to a website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
 msgid "Output directory"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
 #, fuzzy
 msgid "Specify the output directory"
 msgstr "Especificar la compensacion en ms"
 
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
 msgid "Maximum recursion depth"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
 msgid "Video URL"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
 msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
 #, fuzzy
 msgid "Could not export data: "
 msgstr "No se puede guardar el archivo: %s"
 
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
 #, fuzzy, python-format
 msgid "Website export to %s completed"
 msgstr "Importar datos de una fuente externa"
 
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
 msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
 #, fuzzy, python-format
 msgid "Updating %d snapshots"
 msgstr "_Actualiza Fotografias"
 
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
 #, fuzzy
 msgid "No snapshot to update"
 msgstr "Todas las fotografias estan actualizadas."
 
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
 msgid "You first must load a movie into Advene"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
 #, fuzzy, python-format
 msgid "The movie %s does not seem to exist."
 msgstr "<p>La vista GUI %s no existe.</p>"
 
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
 msgid "Generating screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
 msgid ""
 "<b>Screenshot generation</b>\n"
 "\n"
@@ -6838,43 +6998,43 @@ msgid ""
 "open."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
 msgid ""
 "The <b>shotdetect</b> application does not seem to be installed. Please "
 "check that it is present and that its path is correctly specified in "
 "preferences."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
 msgid ""
 "Cannot import shotdetect output. Did you install the shotdetect software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
 msgid "Incomplete shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
 #, python-format
 msgid "Detected %s shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
 #, python-format
 msgid "Could not run shotdetect: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
 #, python-format
 msgid "Detecting shots from %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
 #, fuzzy
 msgid "Shot detection"
 msgstr "Importador de shotdetect"
 
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
 msgid ""
 "<b>Shot detection</b>\n"
 "\n"
@@ -6884,14 +7044,14 @@ msgid ""
 "to augment its value."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
 #, fuzzy
 msgid "Sensitivity"
 msgstr "Desactivar"
 
 #: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
 msgid "Plain text content"
 msgstr ""
 
@@ -6901,8 +7061,8 @@ msgid "HTML content"
 msgstr "Plantilla HTML"
 
 #: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
 msgid "Simple-structured content"
 msgstr ""
 
@@ -6911,8 +7071,8 @@ msgid "List of numeric values"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
 msgid "SVG graphics content"
 msgstr ""
 
@@ -7196,49 +7356,41 @@ msgstr ""
 msgid "Importer"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
 msgid "Advene package importer"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
 #, fuzzy
 msgid "Not likely"
 msgstr "Sin mostrar"
 
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
 #, python-format
 msgid "Completed conversion: %(statistics)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
 #: ../lib/advene/gui/edit/dvdselect.py:73
 msgid "Stop"
 msgstr "Detener"
 
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
 msgid "Choose the file to import"
 msgstr "Elige el archivo a importar"
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
 #, fuzzy
 msgid "Filter"
 msgstr "Concordar filtro"
 
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
 #, fuzzy
 msgid "Options"
 msgstr "Acciones genericas"
 
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
 #, fuzzy
 msgid "Start"
 msgstr "inicia"
@@ -7311,8 +7463,8 @@ msgstr ""
 "debes de dar la siguiente informacion."
 
 #: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
 msgid "Rectangular zone content"
 msgstr ""
 
@@ -7378,7 +7530,7 @@ msgid "New resource data"
 msgstr ""
 
 #: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
 msgid "Properties"
 msgstr ""
 
@@ -7624,7 +7776,7 @@ msgid "Error: cannot find a content handler for %s"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
 #, python-format
 msgid ""
 "Cannot read the data:\n"
@@ -7632,12 +7784,12 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
 msgid "Save content to..."
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
 #, python-format
 msgid ""
 "Cannot save the data:\n"
@@ -7645,17 +7797,17 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
 msgid "Open a file (C-o)"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
 msgid "Save to a file (C-s)"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
 msgid "Reload the file (C-r)"
 msgstr ""
 
@@ -7663,15 +7815,15 @@ msgstr ""
 msgid "Insert a value from the browser (C-i)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
 msgid "Begin time is greater than end time"
 msgstr "Tiempo de inicio es mayor que el tiempo final"
 
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
 msgid "Expecting an integer."
 msgstr "Esperando entero"
 
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
 #, python-format
 msgid ""
 "The %(attribute)s attribute could not be updated:\n"
@@ -7681,7 +7833,7 @@ msgid ""
 "Resetting to the original value."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
 #, python-format
 msgid ""
 "The following attributes cannot be updated:\n"
@@ -7692,7 +7844,7 @@ msgstr ""
 "\n"
 "%s"
 
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
 #, python-format
 msgid ""
 "The following attributes could not be updated:\n"
@@ -7703,25 +7855,25 @@ msgstr ""
 "\n"
 "%s"
 
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
 msgid "Attribute"
 msgstr "Atributo"
 
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
 msgid "Insert an element"
 msgstr "Insertar un elemento"
 
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
 msgid "Choose the element to insert."
 msgstr "Elegir elemento a insertar"
 
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
 #, python-format
 msgid "Some tags contain invalid characters: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
 msgid "Tags:"
 msgstr ""
 
@@ -7833,8 +7985,9 @@ msgid "Condition expression: %s"
 msgstr "Expresión condicional: %s"
 
 #: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
-msgstr ""
+#, fuzzy
+msgid "The annotation type"
+msgstr "tipo de anotacion"
 
 #: ../lib/advene/gui/edit/rules.py:768
 #, python-format
@@ -7892,8 +8045,9 @@ msgid "The element duration"
 msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
-msgstr ""
+#, fuzzy
+msgid "The element type"
+msgstr "Si el elemento concuerda"
 
 #: ../lib/advene/gui/edit/rules.py:794
 msgid "The element's incoming relations"
@@ -7911,6 +8065,16 @@ msgstr ""
 msgid "The context fragment"
 msgstr ""
 
+#: ../lib/advene/gui/edit/rules.py:809
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "tipos de anotaciones"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "tipos de relaciones"
+
 #: ../lib/advene/gui/edit/rules.py:834
 msgid "Select a condition"
 msgstr "Selecciona una condicion"
@@ -7928,59 +8092,59 @@ msgstr "Selecciona una accion"
 msgid "Activate?"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
 msgid "Schema Editor"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
 #, fuzzy
 msgid "Display"
 msgstr "Muestra %s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
 #, fuzzy
 msgid "Remove relation type"
 msgstr "tipos de relacion"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
 msgid "Create HTML view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
 #, fuzzy
 msgid "Remove annotation type"
 msgstr "tipo de anotacion"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
 #, fuzzy
 msgid "Create relation type between this one and..."
 msgstr "Crear un nuevo tipo de relacion..."
 
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
 #, fuzzy
 msgid "New schema"
 msgstr "Esquema"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
 #, fuzzy
 msgid "New annotation type"
 msgstr "tipo de anotacion"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
 #, fuzzy
 msgid "New relation type"
 msgstr "tipos de relacion"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
 msgid "Hide this schema"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
 msgid "Export drawing to pdf"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
 msgid "Choose a filename to export the schema as PDF"
 msgstr ""
 
@@ -8267,104 +8431,104 @@ msgstr ""
 msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
 msgid "Generic shape"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
 #, python-format
 msgid "Link to %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
 msgid "Link"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
 msgid "Link label"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
 msgid "Linewidth"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
 msgid "Filled"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
 #, python-format
 msgid "Properties of %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
 msgid "Rectangle"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
 msgid "Text"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
 msgid "Textsize"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
 msgid "Image"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
 msgid "Href"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
 msgid "Line"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
 msgid "Draw an arrow"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
 #, fuzzy
 msgid "Arrow size"
 msgstr "Navegar"
 
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
 msgid "Circle"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
 msgid "Ellipse"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
 msgid "SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
 msgid "Load SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
 #, fuzzy
 msgid "Save SVG"
 msgstr "Guardar"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
 #, python-format
 msgid "Decrement value by %.2f s"
 msgstr "Disminuye el valor por %.2f s"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
 #, python-format
 msgid "Increment value by %.2f s"
 msgstr "Aumenta el valor por %.2f s"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
 msgid ""
 "Click to play\n"
 "Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8372,7 +8536,7 @@ msgid ""
 "Right-click to invalidate screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
 msgid ""
 "Enter a timecode.\n"
 "An integer value will be considered as milliseconds.\n"
@@ -8380,7 +8544,7 @@ msgid ""
 "HH:MM:SS.sss values are possible."
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
 msgid "Set to current player position"
 msgstr ""
 
@@ -9026,6 +9190,25 @@ msgstr ""
 msgid "Directory %s is not an extracted Advene zip package."
 msgstr ""
 
+#, fuzzy
+#~ msgid "Aiff importer"
+#~ msgstr "Importador Xi"
+
+#~ msgid "Package _Imports"
+#~ msgstr "Importar_Paquetes"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Editar elementos importados de otros paquetes"
+
+#~ msgid "_MediaInformation"
+#~ msgstr "_InformacionMedia"
+
+#~ msgid "Display information about the media"
+#~ msgstr "Muestra información acerca de la media"
+
+#~ msgid "Open %s"
+#~ msgstr "Abrir %s"
+
 #~ msgid "Specify the regexp used to parse data"
 #~ msgstr "Especifica la regexp utilizada para analizar la informacion "
 
@@ -9043,10 +9226,6 @@ msgstr ""
 #~ msgstr "Muestra las relaciones"
 
 #, fuzzy
-#~ msgid "Display snapshot"
-#~ msgstr "Muestra un popup"
-
-#, fuzzy
 #~ msgid "Exporter"
 #~ msgstr "Importar datos de una fuente externa"
 
diff --git a/po/fr.po b/po/fr.po
index bc662f0..842ecc9 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,8 +5,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
-"PO-Revision-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
+"PO-Revision-Date: 2011-12-14 15:36+0100\n"
 "Last-Translator: Olivier Aubert <olivier.aubert at liris.cnrs.fr>\n"
 "Language-Team: advene at liris.cnrs.fr\n"
 "Language: \n"
@@ -81,58 +81,63 @@ msgstr ""
 "Impossible de démarrer le serveur web.\n"
 "Les processus suivants semblent utiliser le port %(port)s: %(processes)s"
 
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr "Désactivation du serveur web"
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
 #, python-format
 msgid "Loaded %(uri)s as %(alias)s"
 msgstr "Chargé %(uri)s sous %(alias)s"
 
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
 #, python-format
 msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr "Impossible de charger le fichier %(uri)s : %(error)s"
 
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr "Désactivation du serveur web"
+
+#: ../lib/advene/core/controller.py:966
 #, python-format
 msgid "Cannot get audio volume: %s"
 msgstr "Impossible d'obtenir le volume: %s"
 
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr "Impossible d'ouvrir l'URL Advene %s: le serveur web n'est pas actif."
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
 msgid "None"
 msgstr "Aucun"
 
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
 #, python-format
 msgid "Found matching video file in moviepath: %s"
 msgstr "Trouvé fichier vidéo correspondant dans le chemin de recherche : %s"
 
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
 msgid "Analysis of "
 msgstr "Analyse de "
 
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
 msgid "Cannot split the annotation: the given position is outside."
 msgstr ""
 "Impossible de supprimer l'annotation : la position indiquée est en dehors"
 
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
 #, python-format
 msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr "Impossible de trouver le recueil modèle %(filename)s : %(error)s"
 
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
 #, python-format
 msgid "Cannot read the imported package %(uri)s: %(error)s"
 msgstr "Impossible de lire le recueil importé %(uri)s : %(error)s"
 
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
 msgid "Package URI has changed. Reloading package with new URI."
 msgstr "L'URI du recueil a changé. Rechargement du recueil."
 
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
 msgid ""
 "Cannot load package: the following annotations do not have Millisecond "
 "fragments:"
@@ -140,26 +145,26 @@ msgstr ""
 "Impossible de charger le recueil: les annotations suivantes\n"
 "n'ont pas de fragment de type Milliseconde :"
 
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
 #, python-format
 msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
 "Impossible de gérer l'attribut master, le recueil %s n'est pas importé."
 
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
 #, python-format
 msgid "Checking master package %s for not yet imported elements."
 msgstr "Vérification des éléments à importer depuis le recueil maître %s."
 
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
 msgid "Standard summary"
 msgstr "Index standard"
 
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
 msgid "Default view"
 msgstr "Vue statique par défaut"
 
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
 #, python-format
 msgid ""
 "Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
@@ -167,31 +172,31 @@ msgstr ""
 "Boucle infinie dans la vue dynamique %(name)s : la vue %(imp)s est invoquée "
 "plusieurs fois."
 
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
 #, python-format
 msgid "Got exception %s when stopping player."
 msgstr "Reçu l'exception %s à l'arrêt du lecteur"
 
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
 #, python-format
 msgid "Raised exception in update_status: %s"
 msgstr "Exception dans update_status: %s"
 
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
 msgid "Unable to start the player."
 msgstr "Impossible de lancer le lecteur."
 
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
 #, python-format
 msgid "Comment on set of %d annotations"
 msgstr "Commentaire sur %d annotations"
 
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
 #, python-format
 msgid "Comment on %s"
 msgstr "Commentaire sur %s"
 
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
 #, python-format
 msgid ""
 "<h1>Comment on %(title)s</h1>\n"
@@ -210,23 +215,23 @@ msgstr ""
 "tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
 "\"%(imgurl)s\" ></img></a></span>"
 
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
 #, python-format
 msgid "List of %s annotations"
 msgstr "Ensemble de %s annotations"
 
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
 #, python-format
 msgid "Cannot export to %(filename)s: %(e)s"
 msgstr "Impossible d'exporter vers %(filename)s: %(e)s"
 
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
 #, python-format
 msgid "Error when exporting: %s"
 msgstr "Erreur lors de l'export de %s"
 
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
 #, python-format
 msgid "Data exported to %s"
 msgstr "Données exportées vers %s"
@@ -1146,11 +1151,17 @@ msgstr ""
 "<hr><p align=\"right\"><em>Document généré par <a href=\"http://liris.cnrs."
 "fr/advene/\">Advene</a> v. %s.</em></p>"
 
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
 #, python-format
 msgid "Cannot start HTTP server: %s"
 msgstr "Impossible de lancer le serveur HTTP : %s"
 
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+"Impossible de faire la capture en pleine résolution, une autre capture\n"
+"est en cours."
+
 #: ../lib/advene/plugins/featuredetect.py:42
 msgid "Feature detection (face...)"
 msgstr "Reconnaissance de formes"
@@ -1194,7 +1205,7 @@ msgstr "%(count)d objet(s) détectés jusqu'à %(time)s"
 msgid "Anvil importer"
 msgstr "Importateur Anvil"
 
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
 msgid "TED importer"
 msgstr "Importateur TED"
 
@@ -1267,11 +1278,78 @@ msgstr ""
 "La sensibilité de l'algorithme devrait typiquement être entre 50 et\n"
 "80. Si trop de plans sont détectés, essayez d'augmenter sa valeur."
 
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
 #, python-format
 msgid "Detected shot #%(num)d at %(pos)s "
 msgstr "Plan #%(num)d détecté à %(pos)s "
 
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+"Impossible d'activer la reconnaissance de la parole: les modules\n"
+"PocketSphinx ne sont pas présents. Voir\n"
+"http://cmusphinx.sourceforge.net/wiki/gstreamer pour plus d'informations."
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr "Reconnaissance vocale (PocketSphinx)"
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr "Niveau de filtrage du bruit [0..1]"
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+"Temps minimum (en millisecondes) de silence requis pour terminer\n"
+"l'annotation et en commencer une nouvelle. Diminuer cette durée\n"
+"produira beaucoup de petites annotations, l'augmenter donnera quelques\n"
+"longues annotations."
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr "Utiliser les modèles acoustiques et de langage standard."
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr "Modèle acoustique (répertoire)"
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr "Dictionnaire phonétique (fichier .dic)"
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr "Modèle de langage (fichier .dmp)"
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+msgid "Generating annotations"
+msgstr "Création des annotations"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr "%(count)d paroles jusqu'à %(time)s"
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr "Parole"
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr "Parole reconnue"
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr "Reconnaissance en cours"
+
 #: ../lib/advene/plugins/tts.py:77
 msgid "Pronounce a text"
 msgstr "Prononcer un texte"
@@ -1291,12 +1369,12 @@ msgstr "Chaîne à prononcer"
 msgid "The annotation content"
 msgstr "Le contenu de l'annotation"
 
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
 #: ../lib/advene/gui/plugins/actions.py:234
 msgid "Unknown rule"
 msgstr "Règle inconnue"
 
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
 #: ../lib/advene/gui/plugins/actions.py:235
 #, python-format
 msgid ""
@@ -1321,6 +1399,26 @@ msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 "Synthèse vocale désactivée. Impossible de trouver l'application 'aplay'"
 
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr "Importateur Final Cut Pro XML"
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr "FCP clipitem"
+
+#: ../lib/advene/plugins/fcp.py:75
+msgid "Importing subtitles"
+msgstr "Import des sous-titres"
+
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
+msgstr "Import des clips"
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr "Pas de clip"
+
 #: ../lib/advene/plugins/mpeg7.py:54
 msgid "MPEG7 importer"
 msgstr "Importateur MPEG7"
@@ -1346,26 +1444,6 @@ msgstr "Conversion des vues"
 msgid "Importing annotations"
 msgstr "Import des annotations"
 
-#: ../lib/advene/plugins/aiff.py:35
-msgid "Aiff importer"
-msgstr "Importateur Aiff"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr "AIFF clipitem"
-
-#: ../lib/advene/plugins/aiff.py:77
-msgid "Importing subtitles"
-msgstr "Import des sous-titres"
-
-#: ../lib/advene/plugins/aiff.py:92
-msgid "Importing clips"
-msgstr "Import des clips"
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr "Pas de clip"
-
 #: ../lib/advene/plugins/dcp.py:65
 msgid "DCP importer"
 msgstr "Importateur DCP"
@@ -1375,11 +1453,11 @@ msgstr "Importateur DCP"
 msgid "Converting #%(num)d / %(count)d"
 msgstr "Conversion #%(num)d / %(count)d"
 
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
 msgid "Input from the braille table."
 msgstr "Entrée depuis la plage Braille"
 
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
 msgid "BrlTTY not installed. There will be no braille support."
 msgstr "BrlTTY n'est pas installé. Il n'y aura pas de support Braille."
 
@@ -1395,16 +1473,16 @@ msgstr "Afficher un message en Braille"
 msgid "Message to display."
 msgstr "Message à afficher"
 
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
 msgid "BrlTTY connection error: %s"
 msgstr "BrlTTY - erreur de connexion: %s"
 
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
 msgid "Braille display: "
 msgstr "Affichage braille :"
 
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
 msgid "No message"
 msgstr "Pas de message"
 
@@ -1448,17 +1526,17 @@ msgid "Parsing section information"
 msgstr "Traitement des informations de section"
 
 #: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
 msgid "Creating package"
 msgstr "Création du recueil"
 
 #: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
 msgid "Creating annotation types"
 msgstr "Création des types d'annotation"
 
 #: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
 msgid "Parsing header information"
 msgstr "Traitement de l'entête"
 
@@ -1485,10 +1563,6 @@ msgstr "Nombre maximum d'échantillons par annotation"
 msgid "Channel selection."
 msgstr "Choix du canal"
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-msgid "Generating annotations"
-msgstr "Création des annotations"
-
 #: ../lib/advene/plugins/soundenveloppe.py:115
 #, python-format
 msgid "At %s"
@@ -1528,7 +1602,7 @@ msgstr ""
 msgid "Starting silence detection"
 msgstr "Démarrage de la détection audio"
 
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
 msgid "Aeidon (subtitles) importer"
 msgstr "Importateur sous-titres (Aeidon)"
 
@@ -1572,11 +1646,11 @@ msgstr ""
 msgid "Converted from %s"
 msgstr "Converti depuis %s"
 
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
 msgid "ExternalApp importer"
 msgstr "Importateur d'application externe"
 
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
 #, python-format
 msgid ""
 "The <b>%s</b> application does not seem to be installed. Please check that "
@@ -1586,213 +1660,213 @@ msgstr ""
 "est bien présente et que son chemin est correctement spécifié dans les "
 "préférences."
 
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
 #, python-format
 msgid "The file %s does not seem to exist."
 msgstr "Le fichier %s semble ne pas exister."
 
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
 #, python-format
 msgid "Could not run %(appname)s: %(msg)s"
 msgstr "Impossible d'exécuter %(appname)s: %(msg)s"
 
 # Traitement de %s
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
 #, python-format
 msgid "Processing %s"
 msgstr "Traitement de %s"
 
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
 msgid "Cleaning up..."
 msgstr "Nettoyage..."
 
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
 msgid "Text importer"
 msgstr "Importateur texte"
 
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
 msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr "Spécifiez l'encodage du fichier d'entrée (latin, utf8...)"
 
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
 msgid "lsdvd importer"
 msgstr "Importateur lsdvd"
 
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
 msgid "Processing data"
 msgstr "Traitement des données"
 
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
 msgid "DVD Chapter"
 msgstr "Chapitre DVD"
 
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
 msgid "Launching lsdvd..."
 msgstr "Lancement de lsdvd"
 
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
 msgid "chaplin importer"
 msgstr "Importateur chaplin"
 
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
 msgid "Xi importer"
 msgstr "Importateur Xi"
 
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
 msgid "ELAN importer"
 msgstr "Importateur ELAN"
 
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
 #, python-format
 msgid "Converting tier %s"
 msgstr "Conversion du tier %s"
 
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
 msgid "Processing time slots"
 msgstr "Traitement des bornes temporelles"
 
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
 msgid "Fixing forward references"
 msgstr "Correction des références"
 
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
 msgid "Creating relations"
 msgstr "Création des relations"
 
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
 msgid "Subtitle (SRT) importer"
 msgstr "Importateur sous-titres (SRT)"
 
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
 #, python-format
 msgid "Subtitles from %s"
 msgstr "Sous-titres de %s"
 
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
 msgid "PRAAT importer"
 msgstr "Importateur PRAAT"
 
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
 msgid "CMML importer"
 msgstr "Importateur CMML"
 
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
 msgid "Parsing clip information"
 msgstr "Traitement des informations de clip"
 
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
 msgid "Creating CMML schema"
 msgstr "Création du schéma CMML"
 
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
 msgid "Parsing stream information"
 msgstr "Traitement des informations sur le média"
 
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
 msgid "IRI importer"
 msgstr "Importateur IRI"
 
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
 msgid "Generate one type per view"
 msgstr "Générer un type par vue"
 
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
 #, python-format
 msgid "Parsing ensemble %s"
 msgstr "Traitement de l'ensemble %s"
 
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
 #, python-format
 msgid "Parsing decoupage %s"
 msgstr "Traitement du découpage %s"
 
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
 msgid "Parsing views"
 msgstr "Traitement des vues"
 
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
 msgid "Initializing package"
 msgstr "Initialisation du recueil"
 
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
 msgid "IRIData importer"
 msgstr "Importateur IRIData"
 
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
 msgid "Parsing sound values"
 msgstr "Traitement des valeurs d'échantillons de son"
 
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
 msgid "Creating annotations"
 msgstr "Création des annotations"
 
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
 msgid "Package"
 msgstr "Recueil"
 
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
 msgid "Annotation"
 msgstr "Annotation"
 
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
 msgid "Relation"
 msgstr "Relation"
 
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
 msgid "Schema"
 msgstr "Schéma"
 
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
 msgid "Annotation Type"
 msgstr "Type d'Annotation"
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
 msgid "Relation Type"
 msgstr "Type de Relation"
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
 #: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
 msgid "View"
 msgstr "Vue"
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
 #: ../lib/advene/gui/main.py:278
 msgid "Query"
 msgstr "Requête"
 
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
 msgid "Resource Folder"
 msgstr "Répertoire de ressources"
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
 msgid "Resource File"
 msgstr "Fichier de ressource"
 
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
 msgid "---- Elements ----"
 msgstr "---- Éléments ----"
 
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
 msgid "---- Attributes ----"
 msgstr "---- Attributs ----"
 
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
 msgid "---- Methods ----"
 msgstr "---- Méthodes ----"
 
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
 #, python-format
 msgid "Cannot read %(filename)s: %(error)s"
 msgstr "Impossible de lire %(filename)s : %(error)s"
 
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
 #: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
 #, python-format
 msgid "File %s is not an Advene zip package."
 msgstr "Le fichier %s n'est pas un recueil Advene compressé."
 
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
 #, python-format
 msgid ""
 "Error:\n"
@@ -1801,7 +1875,7 @@ msgstr ""
 "Erreur :\n"
 "%s"
 
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
 #, python-format
 msgid ""
 "Package %(title)s:\n"
@@ -1824,81 +1898,81 @@ msgstr ""
 "Description:\n"
 "%(description)s\n"
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schema"
 msgstr "schéma"
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schemas"
 msgstr "schémas"
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotation"
 msgstr "annotation"
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotations"
 msgstr "annotations"
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation type"
 msgstr "type d'annotation"
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation types"
 msgstr "types d'annotation"
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relation"
 msgstr "relation"
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relations"
 msgstr "relations"
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation type"
 msgstr "type de relation"
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation types"
 msgstr "types de relation"
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "query"
 msgstr "requête"
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "queries"
 msgstr "requêtes"
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "view"
 msgstr "vue"
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "views"
 msgstr "vues"
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "package"
 msgstr "recueil"
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "packages"
 msgstr "recueils"
 
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
 #, python-format
 msgid "No %s"
 msgstr "Pas de %s"
 
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
 #, python-format
 msgid "1 %s"
 msgstr "1 %s"
 
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
 #, python-format
 msgid "%(count)d %(plural)s"
 msgstr "%(count)d %(plural)s"
@@ -1913,25 +1987,25 @@ msgstr "%s existe mais n'est pas un répertoire. Abandon de l'export."
 msgid "%s does not exist"
 msgstr "%s n'existe pas"
 
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
 msgid "Starting export"
 msgstr "Début de l'export"
 
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
 #, python-format
 msgid "Depth %d"
 msgstr "Profondeur %d"
 
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
 #, python-format
 msgid "Depth %(depth)d: processing %(url)s"
 msgstr "Profondeur %(depth)d: traitement de %(url)s"
 
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
 msgid "Finalizing"
 msgstr "Finalisation"
 
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
 #, python-format
 msgid ""
 "<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
@@ -1940,7 +2014,7 @@ msgstr ""
 "<p><strong>Vous devriez probablement commencer à <a href=\"%(href)s\">"
 "%(title)s</a>.</strong></p>"
 
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
 msgid "Export complete"
 msgstr "Export terminé"
 
@@ -2012,12 +2086,12 @@ msgstr ""
 "<b>Statistiques sur %s</b>\n"
 "\n"
 
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
 #, python-format
 msgid "Renumbering annotations of type %s"
 msgstr "Renumérotation des annotations de type %s"
 
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
 msgid ""
 "<b>Renumber all annotations according to their order.</b>\n"
 "\n"
@@ -2042,26 +2116,26 @@ msgstr ""
 "Le paramètre offset permet de commencer la numérotation à partir de "
 "l'annotation offset."
 
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
 msgid "Offset"
 msgstr "Offset"
 
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
 #, python-format
 msgid "Renumbering %d annotations"
 msgstr "Renumérotation de %d annotations"
 
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
 #, python-format
 msgid "Annotation #%d"
 msgstr "Annotation #%d"
 
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
 #, python-format
 msgid "Extracting %s"
 msgstr "Extraction de %s"
 
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
 #, python-format
 msgid ""
 "Exporting annotation %(title)s\n"
@@ -2072,262 +2146,266 @@ msgstr ""
 "depuis %(begin)s à %(end)s\n"
 "to %%(filename)s"
 
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
 msgid "Edit"
 msgstr "Éditer"
 
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
 msgid "Browse"
 msgstr "Explorateur TALES"
 
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
 msgid "Open in web browser"
 msgstr "Afficher dans un navigateur web"
 
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
 msgid "Delete"
 msgstr "Supprimer"
 
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
 msgid "Search/replace content"
 msgstr "Rechercher/remplacer"
 
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
 msgid "Activate"
 msgstr "Activer"
 
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
 msgid "Desactivate"
 msgstr "Désactiver"
 
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
 #: ../lib/advene/gui/plugins/tracetimeline.py:980
 #: ../lib/advene/gui/plugins/tracetimeline.py:1001
 #: ../lib/advene/gui/edit/transcribe.py:502
 msgid "Go to..."
 msgstr "Aller à..."
 
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
 msgid "Loop"
 msgstr "Boucler"
 
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
 msgid "Duplicate"
 msgstr "Dupliquer"
 
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight"
 msgstr "Mise en valeur"
 
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+msgid "Save snapshot..."
+msgstr "Prendre une capture d'écran"
+
+#: ../lib/advene/gui/popup.py:519
 msgid "Extract video fragment"
 msgstr "Extraire un fragment vidéo"
 
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
 msgid "Incoming"
 msgstr "Entrantes"
 
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
 msgid "Outgoing"
 msgstr "Sortantes"
 
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
 msgid "Related annotations"
 msgstr "Annotations liées"
 
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
 msgid "Incoming relations"
 msgstr "Relations entrantes"
 
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
 msgid "Outgoing relations"
 msgstr "Relations sortantes"
 
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
 #, python-format
 msgid "Begin: %s"
 msgstr "Début : %s"
 
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
 #, python-format
 msgid "End: %s"
 msgstr "Fin : %s"
 
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
 #, python-format
 msgid "Duration: %s"
 msgstr "Durée : %s"
 
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
 msgid "Members:"
 msgstr "Membres:"
 
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
 msgid "Edit package properties..."
 msgstr "Éditer les propriétés du recueil..."
 
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
 #, python-format
 msgid "%d annotations(s) - statistics"
 msgstr "%d annotation(s) - statistiques"
 
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
 msgid "Create a new static view..."
 msgstr "Créer une nouvelle vue statique..."
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
 msgid "Create a new dynamic view..."
 msgstr "Créer une nouvelle vue dynamique..."
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
 msgid "Create a new annotation..."
 msgstr "Créer une nouvelle annotation..."
 
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
 msgid "Create a new schema..."
 msgstr "Créer un nouveau schéma"
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
 msgid "Create a new query..."
 msgstr "Créer une nouvelle requête"
 
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
 msgid "Create a new folder..."
 msgstr "Créer un nouveau répertoire..."
 
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
 msgid "Create a new resource file..."
 msgstr "Créer une nouvelle ressource"
 
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
 msgid "Insert a new resource file..."
 msgstr "Insérer un nouveau fichier ressource..."
 
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
 msgid "Insert a new resource directory..."
 msgstr "Insérer un nouveau répertoire ressource..."
 
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
 msgid "Insert a soundclip..."
 msgstr "Insérer un fichier son..."
 
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
 msgid "Play sound"
 msgstr "Jouer un son"
 
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
 msgid "Create a new annotation type..."
 msgstr "Créer un nouveau type d'annotation..."
 
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
 msgid "Create a new relation type..."
 msgstr "Créer un nouveau type de relation..."
 
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
 msgid "Select a color"
 msgstr "Choisissez une couleur"
 
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
 #, python-format
 msgid "A caption dynamic view for %s already seems to exist."
 msgstr "Il semble qu'une vue de sous-titrage pour le type %s existe déjà."
 
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
 #, python-format
 msgid "Caption %s annotations"
 msgstr "Sous-titrer les annotations de type %s"
 
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
 msgid "Caption the annotation"
 msgstr "Sous-titrer l'annotation"
 
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
 msgid "Create a comment view"
 msgstr "Créer une nouvelle vue commentaire"
 
-#: ../lib/advene/gui/popup.py:740
-msgid "Generate a caption dynamic view"
-msgstr "Créer une vue dynamique de sous-titrage."
+#: ../lib/advene/gui/popup.py:739
+msgid "Generate a caption dynamic view..."
+msgstr "Créer une vue dynamique de sous-titrage..."
 
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
 msgid "Display as transcription"
 msgstr "Afficher en transcription"
 
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
 msgid "Display annotations in table"
 msgstr "Afficher les annotations dans un tableau"
 
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
 msgid "Export to another format..."
 msgstr "Exporter dans un autre format..."
 
+#: ../lib/advene/gui/popup.py:748
+msgid "Delete all annotations"
+msgstr "Supprimer toutes les annotations"
+
 #: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
-msgstr "Supprimer toutes les annotations..."
+msgid "Renumber annotations..."
+msgstr "Renuméroter les annotations..."
 
 #: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
-msgstr "Renuméroter les annotations"
+msgid "Adjust annotation bounds..."
+msgstr "Ajuster les bornes des annotations..."
 
-#: ../lib/advene/gui/popup.py:751
-msgid "Adjust annotation bounds"
-msgstr "Ajuster les bornes des annotations"
-
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
 #, python-format
 msgid "A follow dynamic view for %s already seems to exist."
 msgstr "Il semble qu'une vue de suivi pour le type %s existe déjà."
 
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
 #, python-format
 msgid "Follow %s relation-type"
 msgstr "Suivre le type de relation %s"
 
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
 msgid "Follow the relation"
 msgstr "Suivre la relation"
 
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
 msgid "Delete all relations..."
 msgstr "Supprimer toutes les relations..."
 
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
 msgid "Create montage from related annotations"
 msgstr "Créer un montage suivant les relations"
 
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
 msgid "Create dynamic view following relations"
 msgstr "Créer une vue dynamique suivant les relations"
 
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
 #, python-format
 msgid "Exception in query: %s"
 msgstr "Exception dans la requête : %s"
 
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
 msgid "Apply query on..."
 msgstr "Appliquer la requête sur..."
 
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
 msgid "the package"
 msgstr "le recueil"
 
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
 msgid "all annotations of the package"
 msgstr "toutes les annotations du recueil"
 
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
 msgid "the first annotation of the package"
 msgstr "la première annotation du recueil"
 
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
 msgid "Activate view"
 msgstr "Activation d'une vue"
 
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
 msgid "Open adhoc view"
 msgstr "Ouvrir une vue adhoc"
 
@@ -2493,31 +2571,31 @@ msgid "Cannot remove this widget, it is essential."
 msgstr "Impossible de supprimer ce composant, il est essentiel."
 
 #: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
 msgid "...in its own window"
 msgstr "...dans sa propre fenêtre"
 
 #: ../lib/advene/gui/views/viewbook.py:125
 #: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
 msgid "...embedded east of the video"
 msgstr "...intégrée à l'est de la vidéo"
 
 #: ../lib/advene/gui/views/viewbook.py:126
 #: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
 msgid "...embedded west of the video"
 msgstr "...intégrée à l'ouest de la vidéo"
 
 #: ../lib/advene/gui/views/viewbook.py:127
 #: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
 msgid "...embedded south of the video"
 msgstr "...intégrée au sud de la vidéo"
 
 #: ../lib/advene/gui/views/viewbook.py:128
 #: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
 msgid "...embedded at the right of the window"
 msgstr "...intégrée à droite de la vidéo"
 
@@ -2594,7 +2672,7 @@ msgid "to create a new static view"
 msgstr "pour créer une nouvelle vue statique"
 
 #: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
 msgid "as a transcription"
 msgstr "comme une transcription"
 
@@ -2720,8 +2798,8 @@ msgstr "Le résultat n'est pas une liste"
 msgid "Path"
 msgstr "Chemin"
 
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
 #: ../lib/advene/gui/edit/elements.py:508
 #: ../lib/advene/gui/edit/elements.py:557
 #: ../lib/advene/gui/edit/elements.py:657
@@ -2729,44 +2807,65 @@ msgid "Type"
 msgstr "Type"
 
 #: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
 msgid "Value"
 msgstr "Valeur"
 
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr "Vérificateur"
+
+#: ../lib/advene/gui/views/checker.py:39
+msgid "Check various package properties"
+msgstr "Vérifier diverses propriétés du recueil"
+
+#: ../lib/advene/gui/views/checker.py:90
+msgid "List of possible issues in the current package"
+msgstr "Liste des problèmes possibles dans le recueil."
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr "Recouvrement"
+
+#: ../lib/advene/gui/views/table.py:55
 msgid "Annotation table view"
 msgstr "Tableau d'annotations"
 
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
 msgid "Display annotations in a table"
 msgstr "Affiche les annotations dans un tableau"
 
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
 msgid "Snapshot"
 msgstr "Copie d'écran"
 
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr "Impossible de l'annotation, sa représentation est trop complexe."
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
 #: ../lib/advene/gui/edit/elements.py:675
 #: ../lib/advene/gui/edit/elements.py:717
 #: ../lib/advene/gui/edit/elements.py:1108
 msgid "Content"
 msgstr "Contenu"
 
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
 msgid "Begin"
 msgstr "Début"
 
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
 msgid "End"
 msgstr "Fin"
 
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
 msgid "Duration"
 msgstr "Durée"
 
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
 #: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
 #: ../lib/advene/gui/edit/elements.py:507
 #: ../lib/advene/gui/edit/elements.py:556
@@ -2780,56 +2879,56 @@ msgstr "Durée"
 msgid "Id"
 msgstr "Id"
 
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
 msgid "Export data to file..."
 msgstr "Exporter les données vers le fichier..."
 
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
 #, python-format
 msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr "Impossible d'exporter dans %(filename)s : %(error)s"
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "id"
 msgstr "id"
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "type"
 msgstr "type"
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "begin"
 msgstr "début"
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "end"
 msgstr "fin"
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "content"
 msgstr "contenu"
 
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
 msgid "Generic table view"
 msgstr "Tableau d'éléments"
 
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
 msgid "Display Advene elements in a table."
 msgstr "Affiche des éléments Advene dans un tableau"
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element title"
 msgstr "Titre de l'élément"
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element type"
 msgstr "Type de l'élément"
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element id"
 msgstr "Identificateur de l'élément"
 
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
 #: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
 #: ../lib/advene/gui/edit/imports.py:331
 #: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2868,13 +2967,13 @@ msgstr "Vues administratives"
 msgid "Adhoc views"
 msgstr "Vues adhoc"
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
 msgid "Tree view"
 msgstr "Vue en arbre"
 
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
 msgid "Refresh"
 msgstr "Rafraîchir"
 
@@ -2882,25 +2981,80 @@ msgstr "Rafraîchir"
 msgid "Package View"
 msgstr "Vue du recueil"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+"Impossible de supprimer l'annotation :\n"
+"elle fait partie de relations."
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr "Dupliquer la sélection vers le type %s"
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, python-format
+msgid "Move selection to type %s"
+msgstr "Déplacer la sélection vers le type %s"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "Dupliquer l'annotation vers le type %s"
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, python-format
+msgid "Move annotation to type %s"
+msgstr "Déplacer l'annotation vers le type %s"
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr "Dupliquer et créer une relation"
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+"Sélectionnez le schéma où vous désirez\n"
+"créer le nouveau type de relation."
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr "Créer une relation"
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr "Créer un nouveau type de relation"
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
 msgid "AnnotationDisplay"
 msgstr "AfficheAnnotation"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
 msgid "Display the contents of an annotation"
 msgstr "Affiche le contenu d'une annotation"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
 msgid "No annotation"
 msgstr "Pas d'annotation"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
 msgid "Current time"
 msgstr "Temps courant"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
 #, python-format
 msgid ""
 "Schema %(schema)s\n"
@@ -2913,15 +3067,20 @@ msgstr ""
 "%(total)s\n"
 "Id: %(id)s"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
 msgid "Screenshot"
 msgstr "Aperçu"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
 #: ../lib/advene/gui/views/relationdisplay.py:104
 msgid "Contents"
 msgstr "Contenu"
 
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+msgid "Validate"
+msgstr "Valider"
+
 #: ../lib/advene/gui/views/__init__.py:193
 msgid "Invalid view id"
 msgstr "Identificateur de vue invalide"
@@ -2945,7 +3104,7 @@ msgstr "Sauver %s"
 msgid "Enter a view name to save this parametered view"
 msgstr "Entrez un nom de vue pour sauvegarder cette vue paramétrée"
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
 #, python-format
 msgid "Error: the identifier %s contains invalid characters."
 msgstr "Erreur : l'identifiant %s contient des caractères non valides."
@@ -2980,7 +3139,7 @@ msgstr "Actions"
 msgid "Click or drag-and-drop to reattach view"
 msgstr "Cliquer ou glisser-déposer pour réattacher la vue"
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
 msgid "Caption"
 msgstr "Sous-titreur"
 
@@ -2998,55 +3157,55 @@ msgstr "Fenêtre singleton"
 msgid "Navigation popup"
 msgstr "Fenêtre de navigation"
 
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
 msgid "Transcription"
 msgstr "Transcription"
 
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
 msgid "Display annotations as a text transcription"
 msgstr "Afficher les annotations sous forme de transcription"
 
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
 #: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
 #: ../lib/advene/gui/edit/montage.py:54
 #: ../lib/advene/gui/edit/transcribe.py:85
 msgid "Save view"
 msgstr "Sauvegarder la vue"
 
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
 #: ../lib/advene/gui/views/interactivequery.py:60
 #: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
 #: ../lib/advene/gui/edit/transcribe.py:86
 msgid "Save default options"
 msgstr "Sauver les options par défaut"
 
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
 #, python-format
 msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr "Erreur dans l'évaluation de l'expression %(source)s: %(error)s"
 
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
 msgid "Transcription options"
 msgstr "Options de transcription"
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Default representation"
 msgstr "Représentation par défaut"
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Use the default representation for annotations"
 msgstr "Utiliser la représentation par défaut des annotations"
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 #: ../lib/advene/gui/edit/elements.py:962
 msgid "Representation"
 msgstr "Représentation"
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 msgid ""
 "If default representation is unchecked,\n"
 "this TALES expression that will be used to format the annotations."
@@ -3054,39 +3213,39 @@ msgstr ""
 "Si la représentation par défaut n'est pas utilisée,\n"
 "cette expression TALES sera utilisée pour formatter les annotations."
 
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
 msgid "Separator"
 msgstr "Séparateur"
 
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
 msgid "This separator will be inserted between the annotations."
 msgstr "Ce séparateur sera inséré entre les annotations."
 
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
 msgid "Whitespace"
 msgstr "Espace"
 
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
 msgid "Newline"
 msgstr "Retour à la ligne"
 
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
 msgid "Tabulation"
 msgstr "Tabulation"
 
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
 msgid "Dash"
 msgstr "Tiret"
 
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
 msgid "User defined"
 msgstr "Défini par l'utilisateur"
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid "User-defined separator"
 msgstr "Séparateur défini par l'utilisateur"
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid ""
 "Separator used if user-defined is selected.Use \\n for a newline and \\t for "
 "a tabulation."
@@ -3094,43 +3253,19 @@ msgstr ""
 "Séparateur défini par l'utilisateur.\n"
 "Utilisez \\\\n pour un retour à la ligne et \\\\t pour une tabulation."
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Display timestamps"
 msgstr "Afficher les marques de temps"
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Insert timestsamp values"
 msgstr "Insérer les marques de temps"
 
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
 msgid "Display annotation bounds"
 msgstr "Afficher les bornes des annotations"
 
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-"%d annotation(s) ont été modifiée(s)\n"
-"mais les modifications ne peuvent pas être propagées\n"
-"car un paramètre de représentation est utilisé."
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr "Mise à jour des annotations modifiées"
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-"%d annotation(s) ont été modifiée(s).\n"
-"Voulez-vous mettre leur contenu à jour ?"
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
 #, python-format
 msgid ""
 "Cannot convert the following annotations,\n"
@@ -3141,7 +3276,7 @@ msgstr ""
 "L'expression de représentation est trop complexe.\n"
 "%s"
 
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
 msgid ""
 "Cannot validate the update.\n"
 "The representation pattern is too complex."
@@ -3149,47 +3284,47 @@ msgstr ""
 "Impossible de valider la mise à jour.\n"
 "L'expression de représentation est trop complexe."
 
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
 msgid "Save transcription to a text file"
 msgstr "Sauvegarder la transcription dans un fichier texte"
 
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
 msgid "Apply the modifications"
 msgstr "Valider les modifications"
 
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
 msgid "Find text"
 msgstr "Chercher dans le texte"
 
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
 msgid "Quickly switch display options"
 msgstr "Modification rapide des options d'affichage"
 
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
 msgid "Refresh the transcription"
 msgstr "Rafraîchir la transcription"
 
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
 msgid "Edit preferences"
 msgstr "Éditer les préférences"
 
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
 #, python-format
 msgid "Annotation %s"
 msgstr "Annotation %s"
 
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
 msgid "Play"
 msgstr "Lecture"
 
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
 #, python-format
 msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr "Impossible d'écrire dans %(filename)s : %(error)s"
 
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
 #: ../lib/advene/gui/edit/transcribe.py:884
 #, python-format
 msgid "Transcription saved to %s"
@@ -3345,7 +3480,7 @@ msgstr "Déposez une position ici pour l'enlever de la liste"
 msgid "Convert bookmarks to annotations"
 msgstr "Convertir les signets en annotations"
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
 msgid "Comment here"
 msgstr "Commentez ici"
 
@@ -3415,7 +3550,7 @@ msgid "Result of a query"
 msgstr "Résultat d'une requête"
 
 #: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
 #, python-format
 msgid "'%s'"
 msgstr "'%s'"
@@ -3440,7 +3575,7 @@ msgid "Search/replace content in %d elements"
 msgstr "Rechercher/remplacer dans %d éléments"
 
 #: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
 msgid "Empty quicksearch string"
 msgstr "Chaîne de recherche vide"
 
@@ -3454,7 +3589,7 @@ msgid "Edit query"
 msgstr "Éditer la requête"
 
 #: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
 msgid "String to search"
 msgstr "Chaîne à rechercher"
 
@@ -3597,7 +3732,7 @@ msgstr "Essayer d'appliquer la requête sur..."
 msgid "Edit resource"
 msgstr "Éditer la ressource"
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
 msgid "Package finder"
 msgstr "Navigateur de recueil"
 
@@ -3609,7 +3744,7 @@ msgstr "Afficher un navigateur en colonnes du recueil"
 msgid "Tag Bag"
 msgstr "Sac à tags"
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
 msgid "Bag of tags"
 msgstr "Sac à tags"
 
@@ -3618,8 +3753,8 @@ msgid "New tag"
 msgstr "Nouveau tag"
 
 #: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
 #: ../lib/advene/gui/edit/properties.py:46
 #: ../lib/advene/gui/edit/transcribe.py:147
 #: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3635,7 +3770,7 @@ msgid "Enter a new tag name and select its color."
 msgstr "Entrez un nouveau tag et sélectionnez sa couleur."
 
 #: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
 msgid "Name"
 msgstr "Nom"
 
@@ -3643,13 +3778,13 @@ msgstr "Nom"
 #: ../lib/advene/gui/edit/elements.py:871
 #: ../lib/advene/gui/edit/elements.py:951
 #: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
 #: ../lib/advene/rules/actions.py:133
 msgid "Color"
 msgstr "Couleur"
 
 #: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
 msgid "The tag contains invalid characters"
 msgstr "Ce tag contient des caractères non valides."
 
@@ -3698,58 +3833,54 @@ msgstr "Afficher tous les tags"
 msgid "EditAccumulator"
 msgstr "Accumulateur d'édition"
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-msgid "Validate"
-msgstr "Valider"
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
 msgid "Timeline"
 msgstr "Ligne de Temps"
 
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
 msgid "Display annotations on a timeline"
 msgstr "Vue en ligne de temps"
 
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
 msgid "Limit display to current area"
 msgstr "Limiter l'affichage à la zone courante"
 
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
 msgid "Display whole movie"
 msgstr "Afficher tout le film"
 
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
 #, python-format
 msgid "Cannot find annotation type %s"
 msgstr "Impossible de trouver le type d'annotation %s"
 
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
 msgid "No scrolling"
 msgstr "Pas de défilement"
 
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
 msgid "Continuous scrolling"
 msgstr "Défilement continu"
 
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
 msgid "Discrete scrolling"
 msgstr "Défilement discret"
 
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
 msgid "Annotation scrolling"
 msgstr "Défilement sur annotation"
 
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
 #, python-format
 msgid "%d annotations"
 msgstr "%d annotations"
 
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
 msgid "Display all types"
 msgstr "Afficher tous les types"
 
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
 #, python-format
 msgid ""
 "There are %d annotations.\n"
@@ -3764,286 +3895,268 @@ msgstr ""
 "sélecteur de type (deuxième bouton dans la timeline) pour choisir d'autres "
 "types à afficher, ou cliquer sur \"Afficher tous les types\" ci-dessous."
 
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
 msgid "Split at current player position"
 msgstr "Couper à la valeur de la position courante"
 
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
 msgid "Center and zoom"
 msgstr "Centrer et zoomer"
 
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
 #: ../lib/advene/rules/elements.py:1000
 msgid "Creation of a new annotation type"
 msgstr "Création d'un nouveau type d'annotation"
 
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-"Sélectionnez le schéma où vous désirez\n"
-"créer le nouveau type de relation."
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr "Créer une relation"
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr "Créer un nouveau type de relation"
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
 msgid "Merge with this annotation"
 msgstr "Fusionner avec cette annotation"
 
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
 msgid "Align both begin times"
 msgstr "Aligner les temps de début"
 
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
 msgid "Align both end times"
 msgstr "Aligner les temps de fin"
 
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
 msgid "Align end time to selected begin time"
 msgstr "Aligner le temps de fin sur le temps de début sélectionné"
 
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
 msgid "Align begin time to selected end time"
 msgstr "Aligner le temps de début sur le temps de fin sélectionné"
 
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
 msgid "Align all times"
 msgstr "Aligner tous les temps"
 
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-"Impossible de supprimer l'annotation :\n"
-"elle fait partie de relations."
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
 msgid "Select the appropriate relation type"
 msgstr "Sélectionnez le type de relation"
 
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr "Dupliquer la sélection vers le type %s"
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, python-format
-msgid "Move selection to type %s"
-msgstr "Déplacer la sélection vers le type %s"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr "Dupliquer l'annotation vers le type %s"
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, python-format
-msgid "Move annotation to type %s"
-msgstr "Déplacer l'annotation vers le type %s"
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
 #, python-format
 msgid "Duplicate to type %(type)s at %(position)s"
 msgstr "Dupliquer vers le type %(type)s à %(position)s"
 
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
 #, python-format
 msgid "Move to type %(type)s at %(position)s"
 msgstr "Déplacer vers le type %(type)s à %(position)s"
 
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr "Dupliquer et créer une relation"
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
 #, python-format
 msgid "Duplicate at %s and create a relation"
 msgstr "Dupliquer vers %s et créer une relation"
 
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
 msgid "Annotation filter"
 msgstr "Filtre d'annotations "
 
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
 msgid "Enter the searched string"
 msgstr "Entrez la chaîne recherchée"
 
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
 #, python-format
 msgid "Duplicate all annotations to type %s"
 msgstr "Dupliquer toutes les annotations vers le type %s"
 
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
 #, python-format
 msgid "Move all annotations to type %s"
 msgstr "Déplacer toutes les annotations vers le type %s"
 
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
 #, python-format
 msgid "Duplicate all annotations matching a string to type %s"
 msgstr ""
 "Dupliquer toutes les annotations contenant une chaîne de caractères vers le "
 "type %s"
 
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
 #, python-format
 msgid "Move all annotations matching a string to type %s"
 msgstr ""
 "Déplacer toutes les annotations contenant une chaîne de caractères vers le "
 "type %s"
 
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
 #, python-format
 msgid "Align all annotation time codes using %s as reference."
 msgstr "Aligner les temps pour toutes les annotations sur la base de %s"
 
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
 #, python-format
 msgid "Align all annotation contents using %s as reference"
 msgstr "Copier les contenus pour toutes annotations sur la base de %s"
 
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Affichage de %(count)d / %(total)d annotations..."
+
+#: ../lib/advene/gui/views/timeline.py:1946
+msgid "Displaying done."
+msgstr "Affichage terminé."
+
+#: ../lib/advene/gui/views/timeline.py:2438
 msgid "Create a new annotation"
 msgstr "Créer une nouvelle annotation"
 
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
 msgid "Zoom on region"
 msgstr "Zoom sur la zone"
 
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
 msgid "Restrict display to region"
 msgstr "Limiter l'affichage à la zone sélectionnée"
 
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
 #: ../lib/advene/gui/edit/transcribe.py:496
 #, python-format
 msgid "Position %s"
 msgstr "Position %s"
 
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
 msgid "New annotation at player time"
 msgstr "Nouvelle annotation au temps du lecteur"
 
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
 msgid "New annotation at mouse position"
 msgstr "Nouvelle annotation à la position de la souris"
 
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
 msgid "Selection"
 msgstr "Sélection"
 
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
 msgid "Cannot zoom more"
 msgstr "Impossible de zoomer plus"
 
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
 #, python-format
 msgid "From schema %s"
 msgstr "Schéma %s"
 
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
 msgid "Restrict playing to this annotation-type"
 msgstr "Restreindre le jeu à ce type d'annotation"
 
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
 msgid "Goto previous annotation"
 msgstr "Aller à l'annotation précédente"
 
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
 msgid "Goto next annotation"
 msgstr "Aller à l'annotation suivante"
 
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
 msgid "+"
 msgstr "+"
 
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
 #: ../lib/advene/gui/edit/transcribe.py:1027
 msgid "Create a new annotation type"
 msgstr "Créer un nouveau type d'annotation"
 
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
 msgid "Open an annotation display view"
 msgstr "Ouvrir une vue d'affichage de l'annotation"
 
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
 msgid "Open a slave montage view (coordinated zoom level)"
 msgstr "Ouvrir une vue montage escale (avec zoom coordonné)"
 
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+"<b>Statistiques sur la sélection</b>\n"
+"\n"
+
+#: ../lib/advene/gui/views/timeline.py:3109
 msgid "No selected annotation"
 msgstr "Pas d'annotation sélectionnée"
 
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
 #, python-format
 msgid "%d selected annotation(s)"
 msgstr "%d annotation(s) sélectionnée(s)"
 
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
 msgid "Unselect all annotations"
 msgstr "Déselectionner toutes les annotations"
 
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
 msgid "Create a static view"
 msgstr "Créer une vue statique"
 
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
 msgid "Highlight selection in other views"
 msgstr "Signaler les annotations actives dans les autres vues"
 
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
 msgid "Tag selection"
 msgstr "Taguer la sélection"
 
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
 msgid "Delete selected annotations"
 msgstr "Supprimer les annotations sélectionnées"
 
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
 msgid "Display selection in a table"
 msgstr "Affiche la sélection dans un tableau"
 
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
 msgid "Center and zoom on selection"
 msgstr "Centrer et zoomer sur la sélection"
 
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
 msgid "Edit selected annotations"
 msgstr "Éditer les annotations sélectionnées"
 
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
 msgid "Merge annotations"
 msgstr "Fusionner les annotations"
 
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+msgid "Display statistics"
+msgstr "Afficher les statistiques"
+
+#: ../lib/advene/gui/views/timeline.py:3254
 msgid "Goto previous page"
 msgstr "Aller à la page précédente"
 
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
 msgid "Goto next page"
 msgstr "Aller à la page suivante"
 
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
 #: ../lib/advene/gui/edit/montage.py:535
 msgid "Inspector"
 msgstr "Inspecteur"
 
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+"Inspecteur verrouillé. Cliquez ici ou dans le fond de la timeline pour\n"
+"déverrouiller."
+
+#: ../lib/advene/gui/views/timeline.py:3348
 msgid ""
 "Delete the selected annotations or drop an annotation here to delete it."
 msgstr ""
 "Supprimer les annotations sélectionnée ou déposer une annotation ici pour la "
 "supprimer."
 
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
 msgid ""
 "Drag an annotation type here to remove it from display.\n"
 "Click to edit all displayed types"
@@ -4051,124 +4164,136 @@ msgstr ""
 "Déposez un type d'annotation ici pour l'enlever de l'affichage.\n"
 "Cliquez pour éditer l'ensemble des types affichés."
 
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
 msgid "Selection actions"
 msgstr "Actions sur la sélection"
 
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
 msgid "Display relations"
 msgstr "Afficher les relations"
 
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
 msgid "Display all relations"
 msgstr "Afficher toutes les relations"
 
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
 #: ../lib/advene/gui/plugins/tracetimeline.py:421
 #: ../lib/advene/gui/edit/montage.py:439
 msgid "Zoom out"
 msgstr "Dézoomer"
 
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
 #: ../lib/advene/gui/plugins/tracetimeline.py:426
 #: ../lib/advene/gui/edit/montage.py:444
 msgid "Zoom in"
 msgstr "Zoomer"
 
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
 msgid "Center on current player position."
 msgstr "Centrer sur la position courante"
 
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
 msgid "Automatically activate loop when clicking on an annotation"
 msgstr "Activer la boucle automatiquement lors du clic sur une annotation"
 
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
 msgid "Displayed"
 msgstr "Affichés"
 
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
 msgid "Not displayed"
 msgstr "Pas affichés"
 
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
 msgid "< All <"
 msgstr "< Tout <"
 
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
 msgid "> All >"
 msgstr "> Tout >"
 
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
 msgid "Displayed annotation types"
 msgstr "Types d'annotations affichés"
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Relation type"
 msgstr "Type de relation"
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Display relation types"
 msgstr "Afficher les types de relation"
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Relation content"
 msgstr "Contenu de relation"
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Display relation content"
 msgstr "Afficher le contenu des relations"
 
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight active annotations"
 msgstr "Signaler les annotations actives"
 
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
 msgid "Enter the tag for the selection"
 msgstr "Entrez le tag pour la sélection"
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
 msgid "Scroller"
 msgstr "Défileur"
 
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
 #, python-format
 msgid "Set of %s annotations"
 msgstr "Ensemble de %s annotations"
 
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
 msgid "Refresh snapshot"
 msgstr "Rafraîchir la capture d'écran"
 
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+msgid "Save as..."
+msgstr "Sauvegarder sous..."
+
+#: ../lib/advene/gui/widget.py:1072
 msgid "Use current player position"
 msgstr "Utiliser la position courante du lecteur"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+msgid "Adjust timestamp"
+msgstr "Ajuster le timecode"
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
 msgid "Video player"
 msgstr "Lecteur vidéo"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
 msgid "Complementary video player"
 msgstr "Lecteur vidéo supplémentaire"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
 msgid "Select video file"
 msgstr "Choisir un fichier vidéo"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
 msgid "Select a video file"
 msgstr "Choisir un fichier vidéo"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
 msgid "Synchronize"
 msgstr "Synchroniser"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
 msgid "Offset in ms"
 msgstr "Offset en ms"
 
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+msgid "Drag and drop to get player time"
+msgstr "Glisser/déposer pour obtenir le temps du lecteur"
+
 #: ../lib/advene/gui/plugins/actions.py:52
 msgid "Display a popup"
 msgstr "Afficher une popup"
@@ -4423,130 +4548,130 @@ msgstr "Navigation de relation"
 msgid "New bookmark"
 msgstr "Nouveau signet"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
 #, python-format
 msgid "Rendering type %(type)s as %(presentation)s"
 msgstr "Rendu du type %(type)s sous forme de %(presentation)s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
 msgid "Snapshot only"
 msgstr "Vignette seulement"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
 msgid "Overlayed snapshot only"
 msgstr "Vignette enrichiee seulement"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
 msgid "Timestamp only"
 msgstr "Temps seulement"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
 msgid "Snapshot+timestamp"
 msgstr "Vignette+temps"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
 msgid "Annotation content"
 msgstr "Le contenu de l'annotation"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
 msgid "as a list"
 msgstr "comme une liste"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
 msgid "as a table"
 msgstr "comme une table"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
 msgid "Play video"
 msgstr "Jouer la vidéo"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
 msgid "Show timestamp only"
 msgstr "Temps seulement"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
 msgid "Show content only"
 msgstr "Contenu seulement"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
 msgid "Show snapshot only"
 msgstr "Vignette seulement"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
 msgid "Show overlayed timestamp"
 msgstr "Vignette + timecode surimprimé"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
 msgid "Show overlayed content"
 msgstr "Vignette + contenu surimprimé"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
 #, python-format
 msgid "Annotation type %s"
 msgstr "Type d'annotations %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
 msgid "display as list"
 msgstr "afficher comme une liste"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
 msgid "display as table"
 msgstr "afficher comme une table"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
 msgid "display as transcription"
 msgstr "afficher comme une transcription"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
 msgid "Open link"
 msgstr "Ouvrir le lien"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
 #, python-format
 msgid "HTML editor: cannot parse content (%s)"
 msgstr "Éditeur HTML: impossible de traiter le contenu (%s)"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
 #, python-format
 msgid "Heading %d"
 msgstr "Titre %d"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
 msgid "Bold"
 msgstr "Gras"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
 msgid "Italic"
 msgstr "Italique"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
 msgid "Header"
 msgstr "Titre"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
 msgid "Copy"
 msgstr "Copier"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
 msgid "Cut"
 msgstr "Couper"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
 msgid "Paste"
 msgstr "Coller"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
 msgid "Undo"
 msgstr "Undo"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
 msgid "WYSIWYG editor"
 msgstr "Éditeur WYSIWYG"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
 msgid "Edit HTML source"
 msgstr "Éditer le source HTML"
 
@@ -4558,39 +4683,39 @@ msgstr "Vue de validation de plans"
 msgid "Display shot validation interface"
 msgstr "Afficher l'interface de validation de plans"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
 #, python-format
 msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr "Fusionné #%(first)d-#%(second)d dans #%(first)d"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
 msgid "Last action undone"
 msgstr "Annulé la dernière action"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
 #, python-format
 msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr "Coupé l'annotation #%(current)d en #%(current)d et #%(next)d"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
 #, python-format
 msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr "Impossible de couper l'annotation #%(current)d: en dehors des bornes."
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
 #, python-format
 msgid "Changed cut between #%(first)d and %(second)d"
 msgstr "Changé le cut entre #%(first)d et %(second)d"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
 msgid "Changed begin time for first annotation"
 msgstr "Changé la borne de début pour la première annotation"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
 msgid "No annotations to adjust"
 msgstr "Aucune annotation à ajuster"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
 msgid ""
 "Click on the frame just after the cut to adjust the cut time.\n"
 "Control-click on a frame to indicate a missing cut."
@@ -4598,54 +4723,54 @@ msgstr ""
 "Cliquez sur l'image juste après le cut pour ajuster le moment du cut.\n"
 "Contrôle-clique sur une image indique un cut manquant."
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
 #, python-format
 msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr "Début de #%(index)d (titre: %(content)s)"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
 msgid "< Previous cut"
 msgstr "< Cut précédent"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
 msgid "Display previous cut"
 msgstr "Afficher le cut précédent"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
 msgid "Next cut >"
 msgstr "Cut suivant >"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
 msgid "Display next cut"
 msgstr "Afficher le cut suivant"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
 msgid "Go to annotation containing current player time."
 msgstr "Aller à l'annotation contenant le temps courant du lecteur"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
 #: ../lib/advene/gui/edit/frameselector.py:192
 msgid "Refresh snapshots"
 msgstr "Rafraîchir les captures d'écran"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
 #: ../lib/advene/gui/edit/frameselector.py:193
 msgid "Refresh missing snapshots"
 msgstr "Rafraîchir les captures d'écran"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
 msgid "Undo last modification"
 msgstr "Annuler la dernière modification"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
 msgid "Merge with previous"
 msgstr "Fusionner avec la précédente"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
 msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr "Fusionner avec la précédente annotation, i.e. supprimer cette borne."
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
 msgid "Close view."
 msgstr "Fermer la vue"
 
@@ -4689,7 +4814,7 @@ msgid " Filters"
 msgstr "Filtres"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Reset"
 msgstr "Reset"
 
@@ -4726,56 +4851,56 @@ msgstr "Définition de filtres"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:559
 #: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
 #, python-format
 msgid "of an annotation (%s)"
 msgstr "d'une annotation (%s)"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:561
 #: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
 #, python-format
 msgid "of a relation (%s)"
 msgstr "d'une relation (%s)"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:563
 #: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
 #, python-format
 msgid "of an annotation type (%s)"
 msgstr "d'un type d'annotation (%s)"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:565
 #: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
 #, python-format
 msgid "of a relation type (%s)"
 msgstr "d'un type de relation (%s)"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:567
 #: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
 #, python-format
 msgid "of a schema (%s)"
 msgstr "d'un schéma (%s)"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:569
 #: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
 #, python-format
 msgid "of a view (%s)"
 msgstr "d'une vue (%s)"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:571
 #: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
 #, python-format
 msgid "of a package (%s)"
 msgstr "d'un recueil (%s)"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:573
 #: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
 #, python-format
 msgid "of an unknown item (%s)"
 msgstr "d'un élément inconnu (%s)"
@@ -4819,7 +4944,7 @@ msgid "Search"
 msgstr "Chercher"
 
 #: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
 #, python-format
 msgid "%(name)s (%(index)s)"
 msgstr "%(name)s (%(index)s)"
@@ -4872,27 +4997,27 @@ msgstr "Recréer l'élément"
 msgid "Zoom on action"
 msgstr "Zoom sur l'action"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
 msgid "Item Id"
 msgstr "Id de l'élément"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
 msgid "Item name or class"
 msgstr "Nom ou classe de l'élément"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
 msgid "Type or schema"
 msgstr "Type ou schéma"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
 msgid "Operations"
 msgstr "Opérations"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
 msgid "Comment"
 msgstr "Commentaire"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
 #: ../lib/advene/gui/edit/merge.py:191
 msgid "Action"
 msgstr "Action"
@@ -4943,18 +5068,22 @@ msgstr ""
 msgid "Log Messages"
 msgstr "Messages d'information"
 
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
 msgid "_Select player"
 msgstr "Sélection du lecteur"
 
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
 msgid "_View"
 msgstr "_Vues"
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
 msgid "Packages"
 msgstr "Recueils"
 
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+msgid "Open recent"
+msgstr "Recueils récents"
+
 #: ../lib/advene/gui/main.py:239
 msgid "Input from the keyboard (function keys)"
 msgstr "Entrée depuis le clavier (touches de fonction)"
@@ -4980,126 +5109,130 @@ msgid "Open a package"
 msgstr "Ouvrir un recueil"
 
 #: ../lib/advene/gui/main.py:246
+msgid "Show recently opened packages"
+msgstr "Recueils ouverts récemments"
+
+#: ../lib/advene/gui/main.py:247
 msgid "_Save package"
 msgstr "_Sauvegarder recueil"
 
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
 msgid "Save the package"
 msgstr "Sauvegarder le recueil %s"
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 msgid "Save package as..."
 msgstr "Sauvegarder sous..."
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 msgid "Save the package as..."
 msgstr "Sauvegarder le recueil sous..."
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 msgid "Close package"
 msgstr "Fermer recueil"
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 msgid "Close the package"
 msgstr "Fermer le recueil"
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save session"
 msgstr "Sauver la session"
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save the current session (list of opened packages)"
 msgstr "Sauvegarder la session en cours (liste des recueils ouverts)"
 
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
 msgid "Save workspace"
 msgstr "Sauver l'environnement"
 
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
 msgid "...as package view"
 msgstr "...comme une vue du recueil"
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "...as standard workspace"
 msgstr "... comme environnement standard"
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "Use the current layout as standard workspace in the future"
 msgstr "Utiliser l'environnement courant comme environnement standard"
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 msgid "Associate a video _File"
 msgstr "Associer un _Fichier vidéo"
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 msgid "Associate a video file"
 msgstr "Associer un fichier vidéo"
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 msgid "Associate a _DVD"
 msgstr "Associer un _DVD"
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 msgid "Associate a chapter from a DVD"
 msgstr "Associer un chapitre de DVD"
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 msgid "Associate a _Video stream"
 msgstr "Associer un flux _Vidéo"
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 msgid "Enter a video stream address"
 msgstr "Entrer une adresse de flux vidéo"
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "_Import File"
 msgstr "_Importer un fichier"
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "Import data from an external source"
 msgstr "Importer des données depuis une source externe"
 
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr "Traitement de la vidéo"
+#: ../lib/advene/gui/main.py:261
+msgid "_Process video"
+msgstr "_Traitement de la vidéo"
 
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
 msgid "Import data from video processing algorithms"
 msgstr "Extraire automatiquement des données depuis la vidéo"
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge package"
 msgstr "Fusionner un recueil"
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge elements from another package"
 msgstr "Fusionner les éléments d'un autres recueil"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Import _DVD chapters"
 msgstr "Importer les chapitres du _DVD"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Create annotations based on DVD chapters"
 msgstr "Créer des annotations correspondant aux chapitres du DVD"
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 msgid "_Export..."
 msgstr "Exporter..."
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 msgid "Export data to another format"
 msgstr "Exporter les données dans un autre format"
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "_Website export..."
 msgstr "Exporter vers un site _Web..."
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "Export views to a website"
 msgstr "Exporter les vues vers un site web"
 
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
 msgid "_Quit"
 msgstr "_Quitter"
 
@@ -5123,14 +5256,6 @@ msgstr "_Supprimer"
 msgid "Create"
 msgstr "Créer"
 
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr "Éléments _Importés"
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Éditer les éléments importés d'autres recueils"
-
 #: ../lib/advene/gui/main.py:284
 msgid "P_ackage properties"
 msgstr "_Propriétés du recueil"
@@ -5171,18 +5296,10 @@ msgstr "Évaluateur"
 msgid "Open python evaluator window"
 msgstr "Ouvrir l'évaluateur python"
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
 msgid "Webserver log"
 msgstr "Statistiques du serveur web"
 
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr "Informations _Média"
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr "Informations sur le média"
-
 #: ../lib/advene/gui/main.py:296
 msgid "_Player"
 msgstr "_Lecteur"
@@ -5219,14 +5336,6 @@ msgstr "_Redémarrer le lecteur"
 msgid "Restart the player"
 msgstr "Redémarrer le lecteur"
 
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr "Capturer les vignettes"
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr "Générer les captures d'écran pour la vidéo courante"
-
 #: ../lib/advene/gui/main.py:302
 msgid "Update annotation screenshots"
 msgstr "Captures d'écran pour les annotations"
@@ -5295,76 +5404,85 @@ msgstr ""
 msgid "_About"
 msgstr "À _Propos"
 
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+"Impossible de charger le recueil %(filename)s :\n"
+"%(error)s"
+
+#: ../lib/advene/gui/main.py:344
 msgid "Open a package file"
 msgstr "Ouvrir un recueil"
 
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
 msgid "Save the current package"
 msgstr "Sauvegarder le recueil courant"
 
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
 msgid "Save the package with a new name"
 msgstr "Sauvegarder le recueil sous un nouveau nom"
 
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
 msgid "Select movie file..."
 msgstr "Sélectionner un fichier vidéo"
 
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
 msgid "Select DVD"
 msgstr "Sélectionner un DVD"
 
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr "Quitter"
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
 msgid "Create a text annotation"
 msgstr "Créer une annotation textuelle"
 
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
 msgid "Create a graphical annotation"
 msgstr "Créer une annotation graphique"
 
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr "Recueils récemment ouverts"
+
+#: ../lib/advene/gui/main.py:389
 msgid "Snapshotter activity"
 msgstr "Activité de prise de capture d'écran"
 
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
 #, python-format
 msgid "%d queued requests"
 msgstr "%d requêtes en attente"
 
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
 msgid "Cancel all requests"
 msgstr "Annuler toutes les requêtes"
 
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
 msgid "No snapshotter"
 msgstr "Aucun composant de capture d'écran"
 
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
 msgid "No snapshotting activity"
 msgstr "Aucune requête de capture d'écran en cours"
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
 msgid "Snapshotting"
 msgstr "En cours de capture d'écran"
 
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
 msgid "Display application log messages"
 msgstr "Afficher les messages d'information de l'application"
 
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
 msgid "Quicksearch lists"
 msgstr "Listes de recherche"
 
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
 msgid "Please specify the lists of elements to be searched."
 msgstr "Spécifiez les listes d'éléments à rechercher."
 
-#: ../lib/advene/gui/main.py:498
+#: ../lib/advene/gui/main.py:507
 #, python-format
 msgid ""
 "Searching on %s.\n"
@@ -5374,151 +5492,91 @@ msgstr ""
 "Clic gauche pour lancer la recherche, click droit pour régler les options de "
 "recherche"
 
-#: ../lib/advene/gui/main.py:499
+#: ../lib/advene/gui/main.py:508
 #, python-format
 msgid "String to search in %s"
 msgstr "Chaîne à rechercher dans %s"
 
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr "Ouvrir cette vue..."
-
-#: ../lib/advene/gui/main.py:540
-msgid "All available views"
-msgstr "Toutes les vues disponibles"
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr "Transcription d'annotations"
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr "Éditeur de prise de notes"
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr "Signets actifs"
-
-#: ../lib/advene/gui/main.py:564
-msgid "Schema editor"
-msgstr "Éditeur de schéma"
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr "Explorateur TALES"
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr "Montage dynamique"
-
-#: ../lib/advene/gui/main.py:573
-msgid "Open a comment view in the web browser"
-msgstr "Ouvrir une vue de commentaire dans le navigateur web"
-
-#: ../lib/advene/gui/main.py:574
-msgid "Create or open a comment view"
-msgstr "Créer ou éditer une vue de commentaire"
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-"Emplacement de fenêtres d'édition (les fenêtres d'édition d'annotations et "
-"relations seront placées ici)"
-
-#: ../lib/advene/gui/main.py:578
-msgid "Display edition history"
-msgstr "Afficher l'historique d'édition"
-
-#: ../lib/advene/gui/main.py:579
-msgid "Visualise the activity trace preview"
-msgstr "Prévisualiser la trace d'activité"
-
-#: ../lib/advene/gui/main.py:580
-msgid "Visualise the activity trace as a timeline"
-msgstr "Visualiser la trace d'activité sous forme de ligne de temps"
-
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
 msgid "Tracing : "
 msgstr "Trace : "
 
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
 msgid "off"
 msgstr "off"
 
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
 msgid "on"
 msgstr "on"
 
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
 msgid "Launch search"
 msgstr "Lancer la recherche"
 
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
 msgid "Ignore case"
 msgstr "Ignorer la casse"
 
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
 msgid "Searched elements"
 msgstr "Éléments recherchés"
 
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
 msgid "Playing"
 msgstr "Lecture"
 
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
 msgid "Pause"
 msgstr "Pause"
 
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
 msgid "Init"
 msgstr "Initialisation"
 
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
 msgid "Undefined"
 msgstr "Indéfini"
 
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
 msgid "Enter the new time value"
 msgstr "Entrez le nouveau temps"
 
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
 #, python-format
 msgid "Replace content in %d elements"
 msgstr "Remplacer du texte dans %d elements"
 
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
 msgid "Find word"
 msgstr "Trouver le mot"
 
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
 msgid "Replace by"
 msgstr "Remplacer par"
 
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
 #, python-format
 msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr "%(search)s a été remplacé par %(replace)s dans %(count)d éléments(s)."
 
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
 msgid "The video extracting feature is not available."
 msgstr "La fonctionnalité d'extraction de vidéo n'est pas disponible"
 
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
 msgid "Video export"
 msgstr "Export vidéo"
 
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
 #, python-format
 msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr "Export du fragment/montage vidéo vers %%(filename)s"
 
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
 msgid "Please choose a destination filename"
 msgstr "Choisissez le fichier destination"
 
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
 msgid ""
 "No media association is defined in the package. Please use the 'File/"
 "Associate a video file' menu item to associate a media file."
@@ -5526,7 +5584,7 @@ msgstr ""
 "Aucun fichier vidéo n'est défini dans le recueil. Utilisez le menu 'Fichier/"
 "Associer un fichier vidéo' pour associer un fichier vidéo"
 
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
 #, python-format
 msgid ""
 "The associated media %s could not be found. Please use the 'File/Associate a "
@@ -5535,7 +5593,7 @@ msgstr ""
 "La vidéo associée %s est introuvable. Utilisez le menu 'Fichier/Associer un "
 "fichier vidéo' pour associer un fichier vidéo."
 
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
 #, python-format
 msgid ""
 "You are now working with the following video:\n"
@@ -5544,7 +5602,73 @@ msgstr ""
 "Vous travaillez maintenant avec la vidéo suivante :\\n\n"
 "%s"
 
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr "Ouvrir cette vue..."
+
+#: ../lib/advene/gui/main.py:1205
+msgid "_All available views"
+msgstr "_Toutes les vues disponibles"
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr "Transcription d'annotations"
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr "Éditeur de prise de notes"
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr "Signets actifs"
+
+#: ../lib/advene/gui/main.py:1229
+msgid "Schema editor"
+msgstr "Éditeur de schéma"
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr "Explorateur TALES"
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr "Montage dynamique"
+
+#: ../lib/advene/gui/main.py:1238
+msgid "Open a comment view in the web browser"
+msgstr "Ouvrir une vue de commentaire dans le navigateur web"
+
+#: ../lib/advene/gui/main.py:1239
+msgid "Create or open a comment view"
+msgstr "Créer ou éditer une vue de commentaire"
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+"Emplacement de fenêtres d'édition (les fenêtres d'édition d'annotations et "
+"relations seront placées ici)"
+
+#: ../lib/advene/gui/main.py:1243
+msgid "Display edition history"
+msgstr "Afficher l'historique d'édition"
+
+#: ../lib/advene/gui/main.py:1244
+msgid "Visualise the activity trace preview"
+msgstr "Prévisualiser la trace d'activité"
+
+#: ../lib/advene/gui/main.py:1245
+msgid "Visualise the activity trace as a timeline"
+msgstr "Visualiser la trace d'activité sous forme de ligne de temps"
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+"Le serveur web n'est pas lancé. Vous ne pouvez pas accéder aux vues "
+"statiques."
+
+#: ../lib/advene/gui/main.py:1348
 #, python-format
 msgid ""
 "<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5558,190 +5682,207 @@ msgstr ""
 "Vous pouvez télécharger la dernière version depuis le site web d'Advene: "
 "http://liris.cnrs.fr/advene/</span>"
 
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
 msgid "Go to the website"
 msgstr "Aller sur le site web"
 
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
 msgid "Advene release"
 msgstr "Nouvelle version d'Advene"
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 #, python-format
 msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr "Vous utilisez une version à jour d'Advene (%(current)s)."
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 msgid "Advene is up-to-date"
 msgstr "Advene est à jour"
 
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
 msgid "Choose a color"
 msgstr "Choisissez une couleur"
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
 msgid "Select an annotation to loop on it"
 msgstr "Sélectionnez l'annotation sur laquelle boucler"
 
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
 #, python-format
 msgid "Looping on %s"
 msgstr "Boucler sur %s"
 
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
 msgid "No active dynamic view"
 msgstr "Aucune vue dynamique active"
 
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
 msgid "Create a new dynamic view."
 msgstr "Créer une nouvelle vue dynamique."
 
-#: ../lib/advene/gui/main.py:1471
-msgid "No dynamic view"
-msgstr "Pas de vue dynamique"
-
-#: ../lib/advene/gui/main.py:1473
+#: ../lib/advene/gui/main.py:1502
 msgid "Edit the current dynamic view."
 msgstr "Éditer la vue dynamique courante"
 
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1514
+msgid "No dynamic view"
+msgstr "Pas de vue dynamique"
+
+#: ../lib/advene/gui/main.py:1546
 msgid "Playing rate"
 msgstr "Vitesse de lecture"
 
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
 msgid "History"
 msgstr "Historique"
 
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
 msgid "Popups"
 msgstr "Popups"
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid ""
 "You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
 msgstr ""
-"Vous pouvez glisser-déposer les icônes des vues (ligne de temps, arbre, etc) "
-"dans cette fenêtre pour les y intégrer."
+"Vous pouvez glisser-déposer les icônes des vues (ligne de temps,\n"
+"arbre, etc) dans les zones d'onglets pour les y intégrer."
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid "Information"
 msgstr "Information"
 
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
 msgid "Cannot create annotation. There is no schema to put it in."
 msgstr ""
 "Impossible de créer l'annotation : il n'y a pas de schéma pour la contenir."
 
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
 msgid "Default annotation type"
 msgstr "Type d'annotation par défaut"
 
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
 msgid "Annotation created"
 msgstr "Annotation créée"
 
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
 msgid "Play/Pause [Control-Tab / Control-Space]"
 msgstr "Lecture/Pause [Contrôle-Tab / Contrôle-Espace]"
 
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
 #, python-format
 msgid "Rewind (%.02f s) [Control-Left]"
 msgstr "Reculer (%.02f s) [Contrôle-gauche]"
 
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
 #, python-format
 msgid "Forward (%.02f s) [Control-Right]"
 msgstr "Avancer (%.02f s) [Contrôle-droite]"
 
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
 msgid "Previous frame [Control-Down]"
 msgstr "Image précédente [Contrôle-bas]"
 
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
 msgid "Next frame [Control-Up]"
 msgstr "Image suivante [Contrôle-haut]"
 
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
 msgid "Fullscreen"
 msgstr "Plein écran"
 
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
+msgstr "Capture sauvegardée dans %s"
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+"Capture sauvegardée dans\n"
+" %s"
+
+#: ../lib/advene/gui/main.py:2214
+#, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr ""
+"Impossible de sauvegarder la capture:\n"
+" %s"
+
+#: ../lib/advene/gui/main.py:2222
+msgid "Save screenshot to..."
+msgstr "Sauver la capture d'écran sous..."
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr "Impossible de faire une capture avec suffisamment de précision"
+
+#: ../lib/advene/gui/main.py:2278
 msgid "Export package data"
 msgstr "Exporter les données du recueil"
 
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
 #, python-format
 msgid "Export annotation type %s"
 msgstr "Exporter le type d'annotation %s"
 
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
 #, python-format
 msgid "Export element %s"
 msgstr "Exporter l'élément %s"
 
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
 msgid "Export format"
 msgstr "Format d'export"
 
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
 msgid " (modified)"
 msgstr " (modifié)"
 
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
 #, python-format
 msgid "Activate %s"
 msgstr "Activer %s"
 
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-"Impossible de charger le recueil %(filename)s :\n"
-"%(error)s"
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr "Ouvrir %s"
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
 msgid "Saved workspace"
 msgstr "Environnement sauvegardé"
 
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
 msgid "Restoring workspace..."
 msgstr "Restauration de l'environnement"
 
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
 #, python-format
 msgid "Do you wish to restore the %s workspace ?"
 msgstr "Voulez-vous restaurer l'environnement %s ?"
 
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
 msgid "Clear the current workspace"
 msgstr "Vider l'environnement courant"
 
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
 #, python-format
 msgid "View %s is not an adhoc view"
 msgstr "La vue %s n'est pas une vue adhoc"
 
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
 #, python-format
 msgid "Cannot identify the adhoc view %s"
 msgstr "Impossible de trouver la vue adhoc %s"
 
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
 msgid "Choose the annotation type to display as transcription."
 msgstr ""
 "Choisissez le type d'annotation\n"
 "à afficher sous forme de transcription."
 
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
 #, python-format
 msgid ""
 "Error: unable to find an edit popup for %(element)s:\n"
@@ -5750,50 +5891,50 @@ msgstr ""
 "Erreur : impossible d'ouvrir une fenêtre d'édition pour %(element)s:\n"
 "%(error)s"
 
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
 #, python-format
 msgid "Editing %s"
 msgstr "Édition de %s"
 
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
 #, python-format
 msgid "Comment view (%s)"
 msgstr "Vue de commentaire (%s)"
 
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
 #, python-format
 msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr "Recueil %(uri)s sauvé. %(annotations)s et %(relations)s."
 
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
 #, python-format
 msgid "Activating package %s"
 msgstr "Activation du recueil %s"
 
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
 #, python-format
 msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr "Recueil %(uri)s chargé. %(annotations)s et %(relations)s."
 
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
 msgid "Do you want to restore the saved workspace ?"
 msgstr "Voulez-vous restaurer l'environnement sauvegardé ?"
 
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
 msgid "Advene"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
 #, python-format
 msgid "Got exception %s. Trying to continue."
 msgstr "Reçu l'exception %s. On continue tout de même."
 
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
 msgid "Unknown"
 msgstr "Inconnu"
 
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
 #, python-format
 msgid ""
 "The package(s) %s are modified.\n"
@@ -5802,23 +5943,23 @@ msgstr ""
 "Le(s) recueil(s) %s a été modifié mais pas sauvegardé.\n"
 "Sauvegarder maintenant ?"
 
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
 msgid "Choose an annotation type."
 msgstr "Choisissez un type d'annotation"
 
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
 msgid "No annotation type is defined."
 msgstr "Aucun type d'annotation n'est défini."
 
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
 msgid "Creating a new type."
 msgstr "Création d'un nouveau type."
 
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
 msgid "Title of the new type"
 msgstr "Titre du nouveau type"
 
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
 msgid ""
 "Id of the new type. It is generated from the title, but you may change it if "
 "necessary."
@@ -5826,33 +5967,33 @@ msgstr ""
 "Identifiant du nouveau type. Il est généré à partir du titre, mais vous "
 "pouvez le changer si nécessaire."
 
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
 msgid "Specify the content-type for the annotation type"
 msgstr "Spécifiez le type de contenu pour le type d'annotation"
 
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
 msgid "Content type"
 msgstr "Type de contenu"
 
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
 msgid "Create a new schema"
 msgstr "Créer un nouveau schéma"
 
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
 msgid "Choose an existing schema for the new type, or create a new one"
 msgstr ""
 "Choisissez un schéma existant pour le nouveau type, ou créez un nouveau "
 "schéma."
 
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
 msgid "Specify the schema title"
 msgstr "Spécifiez le titre du schéma"
 
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
 msgid "Title of the new schema"
 msgstr "Titre du nouveau schéma"
 
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
 msgid ""
 "Id of the new schema. It is generated from the title, but you may change it "
 "if necessary."
@@ -5860,19 +6001,19 @@ msgstr ""
 "Identifiant du nouveau schéma. Il est généré à partir du titre, mais vous "
 "pouvez le changer si nécessaire."
 
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
 msgid ""
 "You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 "Vous avez spécifié un identifiant déjà existant. Annulation de l'opération."
 
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
 msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 "Vous avez spécifié un identifiant de schéma déjà existant. Ce dernier sera "
 "utilisé."
 
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
 msgid ""
 "You specified an existing identifier that does not reference a schema. "
 "Aborting."
@@ -5880,21 +6021,21 @@ msgstr ""
 "Vous avez spécifié un identifiant déjà existant qui ne désigne pas un "
 "schéma. Annulation de l'opération."
 
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
 msgid "Choose a schema."
 msgstr "Choisissez un schéma"
 
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
 msgid "You specified an existing identifier. Aborting."
 msgstr ""
 "Vous avez spécifié un identifiant déjà existant. Annulation de l'opération."
 
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
 #, python-format
 msgid "Package %s modified"
 msgstr "Recueil %s modifié"
 
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
 #, python-format
 msgid ""
 "The package %s has been modified but not saved.\n"
@@ -5903,53 +6044,69 @@ msgstr ""
 "Le recueil %s a été modifié mais pas sauvegardé.\n"
 "Sauvegarder maintenant ?"
 
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
 #, python-format
 msgid "%s snapshots"
 msgstr "%s captures d'écran"
 
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
 #, python-format
 msgid "Do you want to save the snapshots for media %s?"
 msgstr "Voulez-vous sauvegarder les captures d'écran pour la vidéo %s ?"
 
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
 #, python-format
 msgid "Cannot save imagecache for %(media)s: %(e)s"
 msgstr "Impossible de sauvegarder le cache pour %(media)s : %(e)s"
 
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
 msgid "first frame"
 msgstr "première image"
 
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
 msgid "last frame"
 msgstr "dernière image"
 
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
 #, python-format
 msgid "Click on %(bound)s of %(annotation)s"
 msgstr "Cliquer sur %(bound)s de %(annotation)s"
 
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
 #, python-format
 msgid "Update %(bound)s of %(annotation)s"
 msgstr "Éditer %(bound)s de %(annotation)s"
 
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr "Cliquez sur l'image correspondant au temps désiré"
+
+#: ../lib/advene/gui/main.py:3516
+msgid "Set new timestamp value"
+msgstr "Fixer le nouveau timecode"
+
+#: ../lib/advene/gui/main.py:3523
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+"<b>Statistiques d'annotations</b>\n"
+"\n"
+
+#: ../lib/advene/gui/main.py:3602
 msgid "Text annotation"
 msgstr "Annotation textuelle"
 
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
 msgid "Cannot find an appropriate annotation type"
 msgstr "Impossible de trouver un type d'annotation approprié"
 
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
 msgid "Graphical annotation"
 msgstr "Annotation graphique"
 
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
 msgid ""
 "An unsaved template package exists\n"
 "Save it first."
@@ -5957,11 +6114,11 @@ msgstr ""
 "Un recueil modèle non sauvegardé existe.\n"
 "Sauvegardez-le avant d'essayer d'en créer un nouveau."
 
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
 msgid "Package modified"
 msgstr "Recueil modifié"
 
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
 msgid ""
 "The package that you want to close has been modified but not saved.\n"
 "Save it now?"
@@ -5969,11 +6126,11 @@ msgstr ""
 "Le recueil que vous souhaitez fermer a été modifié mais pas sauvegardé.\n"
 "Sauvegarder maintenant ?"
 
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
 msgid "Load a package"
 msgstr "Charger un recueil"
 
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
 msgid ""
 "A video file was selected. Pretend that the user selected 'Select a video "
 "file'..."
@@ -5981,7 +6138,7 @@ msgstr ""
 "Un fichier vidéo a été sélectionné. On fait comme si l'utilisateur est passé "
 "par \"Sélectionner un fichier vidéo...\""
 
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
 #, python-format
 msgid ""
 "The file %s does not look like a valid Advene package. It should have a .azp "
@@ -5990,7 +6147,7 @@ msgstr ""
 "Le fichier %s ne ressemble pas à un recueil Advene valide. Il devrait avoir "
 "une extension .azp ou .xml. Voulez-vous essayer tout de même de l'ouvrir ?"
 
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
 msgid ""
 "You are trying to load a session file, but there are unsaved packages. "
 "Proceed anyway?"
@@ -5998,25 +6155,25 @@ msgstr ""
 "Vous essayez de charger un fichier de session, mais il existe des recueil "
 "non sauvegardés. Continuer tout de même ?"
 
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
 msgid "Do you want to save the current workspace ?"
 msgstr "Voulez-vous sauvegarder l'environnement en cours ?"
 
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
 #, python-format
 msgid "Could not save the package: %s"
 msgstr "Impossible de sauvegarder le recueil: %s"
 
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
 #, python-format
 msgid "Save the package %s"
 msgstr "Sauvegarde du recueil %s"
 
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
 msgid "Invalid file extension"
 msgstr "Extension de fichier invalide"
 
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
 #, python-format
 msgid ""
 "Your package contains resources,\n"
@@ -6027,59 +6184,59 @@ msgstr ""
 "le nom de fichier (%s) devrait avoir l'extension .azp.\n"
 "Corriger le nom de fichier ?"
 
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
 msgid "OK, the resources will be lost."
 msgstr "OK, les ressources seront perdues."
 
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
 msgid "Aborting package saving"
 msgstr "Abandon de la sauvegarde"
 
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
 msgid "Save the session in..."
 msgstr "Sauver la session dans..."
 
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
 #, python-format
 msgid "Session saved in %s"
 msgstr "Session sauvegardée dans %s"
 
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
 msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 "Confirmez-vous la création d'annotations correspondant aux chapitres du DVD ?"
 
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
 msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 "Impossible d'importer les chapitres du DVD. Avez-vous installé l'application "
 "lsdvd ?"
 
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
 msgid "The associated media is not a DVD."
 msgstr "Le média associé n'est pas un DVD."
 
 # Traitement de %s
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
 #, python-format
 msgid "Processing %s video"
 msgstr "Traitement de la vidéo %s"
 
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
 msgid "No associated video file"
 msgstr "Aucun fichier vidéo associé"
 
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
 msgid "Standard RuleSet"
 msgstr "Ensemble de règles standard"
 
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
 #, python-format
 msgid ""
 "Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
 msgstr "Lecteur inactif - Durée cachée   : %(duration)s (%(durationms)d ms)"
 
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
 msgid ""
 "GNU General Public License\n"
 "See http://www.gnu.org/copyleft/gpl.html for more details"
@@ -6087,37 +6244,37 @@ msgstr ""
 "GNU General Public License\n"
 "Voir http://www.gnu.org/copyleft/gpl.html pour plus d'informations"
 
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
 msgid "Visit the Advene web site for examples and documentation."
 msgstr "Consultez le site web d'Advene pour les exemples et la documentation."
 
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
 msgid "Select a movie file"
 msgstr "Choisissez un fichier vidéo"
 
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
 msgid "Title/Chapter selection"
 msgstr "Sélection du titre/chapître"
 
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
 msgid "Select a video stream"
 msgstr "Choisir un flux vidéo"
 
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
 msgid "Enter the address of a video stream"
 msgstr "Entrer l'adresse d'un flux vidéo"
 
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
 #, python-format
 msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 "L'adresse du flux vidéo (%s) a été extraite avec succès de l'URL donnée.\n"
 
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
 msgid "Package properties"
 msgstr "Proprietes du recueil"
 
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
 #: ../lib/advene/gui/edit/elements.py:559
 #: ../lib/advene/gui/edit/elements.py:644
 #: ../lib/advene/gui/edit/elements.py:706
@@ -6129,11 +6286,11 @@ msgstr "Proprietes du recueil"
 msgid "Author"
 msgstr "Auteur"
 
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
 msgid "Author name"
 msgstr "Auteur"
 
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
 #: ../lib/advene/gui/edit/elements.py:560
 #: ../lib/advene/gui/edit/elements.py:645
 #: ../lib/advene/gui/edit/elements.py:707
@@ -6145,39 +6302,39 @@ msgstr "Auteur"
 msgid "Date"
 msgstr "Date"
 
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
 msgid "Package creation date"
 msgstr "Date de création du recueil"
 
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
 msgid "Package title"
 msgstr "Titre du recueil"
 
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
 msgid "Associated media"
 msgstr "Media associe"
 
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Media duration in ms"
 msgstr "Durée du média en ms"
 
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
 msgid "Paths"
 msgstr "Chemins"
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Data"
 msgstr "Contenu"
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Standard directory for data files"
 msgstr "Répertoire standard pour les fichiers de données"
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 msgid "Movie path"
 msgstr "Chemin de recherche pour les fichiers vidéo"
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 #, python-format
 msgid ""
 "List of directories (separated by %s) to search for movie files (_ means "
@@ -6186,74 +6343,74 @@ msgstr ""
 "Liste de répertoires (séparés par %s) où chercher les vidéos (_ signifie le "
 "même répertoire que le recueil)"
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Imagecache"
 msgstr "Cache d'images"
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Directory for storing the snapshot cache"
 msgstr "Répertoire où sauvegarder le cache de captures d'écran"
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Player"
 msgstr "Lecteur"
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Directory of the video player"
 msgstr "Répertoire du lecteur vidéo"
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 msgid "Shotdetect"
 msgstr "Détection de plans"
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 msgid "Shotdetect application"
 msgstr "Application de détection de plans"
 
 # Interface
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
 msgid "GUI"
 msgstr "Interface"
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid "Interface language (after restart)"
 msgstr "Langage de l'interface (après redémarrage)"
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid ""
 "Language used for the interface (necessitates to restart the application)"
 msgstr ""
 "Langage utilisé pour l'interface (nécessite de redémarrer l'application)"
 
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
 msgid "System default"
 msgstr "La valeur du système"
 
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
 msgid "Record activity trace"
 msgstr "Enregistrer la trace d'activité"
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Expert mode"
 msgstr "Mode expert"
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Offer advanced possibilities"
 msgstr "Afficher les fonctionnalités avancées"
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Prefer WYSIWYG"
 msgstr "WYSIWYG préféré"
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Use WYSIWYG editors when possible (HTML, SVG)"
 msgstr "Utiliser un éditeur WYSIWYG quand c'est possible (HTML, SVG)"
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid "Player control in edit popups"
 msgstr "Contrôle du lecteur dans les fenêtres d'édition"
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid ""
 "Enable generic player controls in edit windows. This may be undesirable "
 "since it overloads some standard text-edition behaviours (esp. control-left/"
@@ -6263,180 +6420,180 @@ msgstr ""
 "fenêtres d'édition. Ce comportement peut être indésirable car il\n"
 "surcharge des raccourcis clavier standard comme contrôle-gauche/droite"
 
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
 msgid "Open popups"
 msgstr "Ouvrir les vues"
 
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
 msgid "Where should we open adhoc views?"
 msgstr "Où doit-on ouvrir les vues adhoc ?"
 
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
 msgid "as a popup window"
 msgstr "dans des fenêtres indépendantes"
 
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
 msgid "embedded east of the video"
 msgstr "intégrée à l'est de la vidéo"
 
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
 msgid "embedded west of the video"
 msgstr "intégrée à l'ouest de la vidéo"
 
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
 msgid "embedded south of the video"
 msgstr "intégrée au sud de la vidéo"
 
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
 msgid "embedded at the right of the window"
 msgstr "intégrée à droite de la fenêtre"
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History size"
 msgstr "Taille de l'historique"
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History filelist size limit"
 msgstr "Taille limite de la liste des fichiers"
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember window size"
 msgstr "Mémoriser les tailles des fenêtres"
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember the size of opened windows"
 msgstr "Mémoriser la taille des fenêtres"
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Bookmark snapshot width"
 msgstr "Largeur des copies d'écran de signets"
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Width of the snapshots representing bookmarks"
 msgstr "Largeur des captures d'écran représentant les signets"
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Bookmark snapshot precision"
 msgstr "Précision des captures d'écran pour les signets"
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Precision (in ms) of the displayed bookmark snapshots."
 msgstr "Précision (en ms) des captures d'écran pour les signets."
 
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
 msgid "General"
 msgstr "Générales"
 
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
 msgid "Weekly update check"
 msgstr "Vérification hebdomadaire des mises à jour"
 
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
 msgid "Weekly check for updates on the Advene website"
 msgstr ""
 "Vérifier hebdomadairement si des mises à jour d'Advene sont disponibles"
 
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
 msgid "On exit,"
 msgstr "À la fin, "
 
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
 msgid "How to handle screenshots on exit"
 msgstr "Comment gérer les captures d'écran à la fin de l'application"
 
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
 msgid "never save screenshots"
 msgstr "ne jamais sauvegarder les captures d'écran"
 
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
 msgid "always save screenshots"
 msgstr "toujours sauvegarder les captures d'écran"
 
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
 msgid "ask before saving screenshots"
 msgstr "demander avant de sauvegarder les captures d'écran"
 
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
 msgid "Auto-save"
 msgstr "La sauvegarde automatique"
 
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
 msgid "Data auto-save functionality"
 msgstr "Sauvegarde automatique des recueils"
 
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
 msgid "is desactivated"
 msgstr "est désactivée"
 
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
 msgid "is done automatically"
 msgstr "est activée"
 
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
 msgid "is done after confirmation"
 msgstr "est activée avec confirmation"
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Auto-save interval (in s)"
 msgstr "Intervalle de sauvegarde automatique (en s)"
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Interval (in seconds) between package auto-saves"
 msgstr "Durée (en secondes) entre deux sauvegardes automatiques"
 
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
 msgid "Workspace"
 msgstr "Environnement"
 
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
 msgid "On package saving,"
 msgstr "Lors de la sauvegarde du recueil,"
 
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
 msgid "Do you wish to save the default workspace with the package?"
 msgstr "Voulez-vous sauvegarder l'environnement avec le recueil ?"
 
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
 msgid "never save the current workspace"
 msgstr "ne jamais sauvegarder l'environnement courant"
 
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
 msgid "always save the current workspace"
 msgstr "toujours sauvegarder l'environnement courant"
 
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
 msgid "ask before saving the current workspace"
 msgstr "demander avant de sauvegarder l'environnement courant"
 
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
 msgid "On package load,"
 msgstr "Lors du chargement du recueil,"
 
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
 msgid "Do you wish to load the workspace saved with the package?"
 msgstr "Voulez-vous restaurer l'environnement sauvegardé avec le recueil ?"
 
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
 msgid "never load the saved workspace"
 msgstr "ne jamais restaurer l'environnement sauvegardé"
 
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
 msgid "always load the saved workspace"
 msgstr "toujours restaurer l'environnement sauvegardé"
 
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
 msgid "ask before loading the saved workspace"
 msgstr "demander avant de restaurer l'environnement sauvegardé"
 
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
 msgid "Video Player"
 msgstr "Lecteur Vidéo"
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid "Autostart"
 msgstr "Démarrage automatique"
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid ""
 "Automatically start the player when loading a media file (either directly or "
 "through a package)"
@@ -6444,161 +6601,161 @@ msgstr ""
 "Lancer automatiquement le lecteur lors du chargement d'une vidéo (soit "
 "directement, soit via un recueil)"
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Fulscreen timestamp"
 msgstr "Timestamp plein-écran"
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr "Afficher le temps sur la vidéo en mode plein écran"
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 msgid "Enable captions"
 msgstr "Activer le sous-titrage externe"
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 msgid "Enable captions over the video"
 msgstr ""
 "Activer le sous-titrage par le biais d'un composant d'affichage sous le "
 "lecteur vidéo"
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "Caption font"
 msgstr "Police de sous-titrage"
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "TrueType font for captions"
 msgstr "Police TrueType pour les sous-titres"
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG"
 msgstr "Activer le SVG"
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG captions over the video"
 msgstr "Activer l'affichage de graphiques SVG sur la vidéo"
 
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
 msgid "Enable snapshots"
 msgstr "Activer les copies d'écran"
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width"
 msgstr "Largeur des copies d'écran"
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width in pixels."
 msgstr "Largeur (en pixels) des copies d'écran"
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity"
 msgstr "Verbosité"
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity level. -1 for no messages."
 msgstr "Niveau de verbosité. -1 pour pas de messages."
 
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
 msgid "Devices"
 msgstr "Périphériques"
 
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
 msgid "Standard"
 msgstr "Standard"
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "DVD drive"
 msgstr "Lecteur DVD"
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "Drive letter for the DVD"
 msgstr "Lettre du lecteur DVD"
 
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
 msgid "GDI"
 msgstr "GDI"
 
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
 msgid "Direct X"
 msgstr "Direct X"
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "DVD device"
 msgstr "Périphérique DVD"
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "Device for the DVD"
 msgstr "Device du DVD"
 
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
 msgid "X11"
 msgstr "X11"
 
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
 msgid "XVideo"
 msgstr "XVideo"
 
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
 msgid "GL"
 msgstr "GL"
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output"
 msgstr "Sortie vidéo"
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output module"
 msgstr "Module de sortie vidéo"
 
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
 msgid "Recorder options"
 msgstr "Options d'enregistrement"
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 msgid "Audio input"
 msgstr "Entrée audio"
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr "Nom du périphérique pour l'entrée audio (pour le plugin gstrecorder)"
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record video"
 msgstr "Enregistrement vidéo"
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record both video and audio"
 msgstr "Enregistrer audio et vidéo"
 
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
 msgid "<i>Experimental</i>"
 msgstr "Expérimental"
 
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
 msgid "Embed the caption scroller below the video"
 msgstr "Intégrer le dérouleur sous la vidéo"
 
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
 msgid "Embed the caption view below the video"
 msgstr "Intégrer la visuablisation de sous-titres sous la vidéo"
 
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
 msgid "Time-related"
 msgstr "Relatives au temps"
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 msgid "Time format"
 msgstr "Format des temps"
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 msgid "Format used to display timecodes"
 msgstr "Format utilisé pour afficher les timecodes"
 
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
 msgid "Default FPS"
 msgstr "FPS par défaut"
 
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
 msgid ""
 "Default FPS (frame-per-second) value, when entering or displaying timestamps "
 "with frame numbers."
@@ -6606,11 +6763,11 @@ msgstr ""
 "Valeur FPS (image par seconde) par défaut, lors de la saisie ou de\n"
 "l'affichage de timecodes avec des numéros d'image."
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid "Time increment"
 msgstr "Durée pour navigation"
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid ""
 "Skip duration, when using control-left/right or forward/rewind buttons (in "
 "ms)."
@@ -6618,40 +6775,40 @@ msgstr ""
 "Réglage de la durée (en ms) utilisée avec contrôle-flèche ou les boutons "
 "avance/retour rapide"
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Second time increment"
 msgstr "Seconde durée pour navigation"
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 "Réglage de la durée (en ms) utilisée avec contrôle-shift-flèche ou les "
 "boutons avance/retour rapide"
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Third time increment"
 msgstr "Troisième durée pour navigation"
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr "Réglage de la durée (en ms) utilisée avec contrôle-shift-haut/bas."
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid "Custom Up/Down"
 msgstr "Haut/Bas personnalisés"
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid ""
 "Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 "Utiliser la troisième durée pour naviguer avec Haut/Bas sans avoir à "
 "utiliser Shift."
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid "Scroll increment"
 msgstr "Incrément de temps"
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid ""
 "On most annotations, control+scrollwheel will increment/decrement their "
 "bounds by this value (in ms)."
@@ -6659,11 +6816,11 @@ msgstr ""
 "Sur les annotations, contrôle + molette permet d'incrémenter/décrémenter "
 "leurs bornes de cette valeur (en ms)."
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid "Second scroll increment"
 msgstr "Second incrément de scroll"
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid ""
 "On most annotations, control+shift+scrollwheel will increment/decrement "
 "their bounds by this value (in ms)."
@@ -6671,11 +6828,11 @@ msgstr ""
 "Sur les annotations, contrôle + shift + molette permet d'incrémenter/"
 "décrémenter leurs bornes de cette valeur (en ms)."
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid "Player sync"
 msgstr "Synchro des lecteurs"
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid ""
 "Interval (in ms) with which we synchronize slave players. Setting a too-low "
 "value could render the application unusable. Use 0 to disable continuous "
@@ -6685,59 +6842,59 @@ msgstr ""
 "valeur trop basse peut rendre l'application inutilisable. Entrez 0 pour "
 "désactiver la synchronisation continue."
 
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
 msgid "Timeline parameters"
 msgstr "Paramètres de la ligne de temps"
 
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
 msgid "Font size"
 msgstr "Taille de la police"
 
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
 msgid "Font size for annotation widgets"
 msgstr "Taille de la police pour les représentations d'annotations"
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Button height"
 msgstr "Hauteur des boutons"
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Height of annotation widgets"
 msgstr "Hauteur des représentations d'annotations"
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Interline height"
 msgstr "Taille des interlignes"
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Height of interlines"
 msgstr "Taille des interlignes"
 
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
 msgid "Text content"
 msgstr "Contenu textuel"
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 msgid "Completion mode"
 msgstr "Mode de complétion"
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 msgid "Enable dynamic completion mode"
 msgstr "Activer la complétion dynamique"
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 msgid "Abbreviation mode"
 msgstr "Mode abbréviation"
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 msgid "Enable abbreviation mode"
 msgstr "Activer l'expansion des abbréviations"
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 msgid "Abbreviations"
 msgstr "Abbréviations"
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 msgid ""
 "Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
 "followed by its replacement."
@@ -6745,45 +6902,45 @@ msgstr ""
 "Abbréviations textuelles. Une entrée par ligne. Chaque ligne contient "
 "l'abbréviation suivie par son remplacement."
 
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
 msgid "Text-To-Speech"
 msgstr "Synthèse vocale"
 
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
 msgid "TTS language"
 msgstr "Langue de la synthèse vocale"
 
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
 msgid "What language settings should be used for text-to-speech"
 msgstr "Quelle langue doit être utilisée pour la synthèse vocale"
 
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
 msgid "English"
 msgstr "Anglais"
 
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
 msgid "French"
 msgstr "Français"
 
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
 msgid "Spanish"
 msgstr "Espagnol"
 
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
 msgid "TTS Encoding"
 msgstr "Encodage TTS"
 
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
 msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 "Quel encodage de caractères doit être utilisé pour communiquer avec le "
 "moteur de synthèse vocale"
 
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
 msgid "TTS Engine"
 msgstr "Moteur de synthèse vocale"
 
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
 msgid ""
 "Which TTS engine should be used (modification requires restarting Advene to "
 "take into account)"
@@ -6791,155 +6948,159 @@ msgstr ""
 "Quel moteur de synthèse vocale doit être utilisé (le changement requiert le "
 "redémarrage de l'application pour être pris en compte)"
 
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
 msgid "Automatic"
 msgstr "Automatique"
 
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
 msgid "eSpeak"
 msgstr "eSpeak"
 
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
 msgid "Custom script with standard input"
 msgstr "Script personnel via l'entrée standard"
 
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
 msgid "Custom script with arguments"
 msgstr "Script personnel via les arguments"
 
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
 msgid "SAPI"
 msgstr "SAPI"
 
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
 msgid "MacOS X say"
 msgstr "Commande \"say\" de MacOS X"
 
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
 msgid "Generic (text output)"
 msgstr "Générique (affichage du texte)"
 
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
 msgid "You should restart Advene to take some options into account."
 msgstr "Vous devez redémarrer Advene pour prendre certaines options en compte."
 
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
 #, python-format
 msgid "Imagecache saved to %s"
 msgstr "Cache d'image sauvé dans %s"
 
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
 msgid "Restarting player..."
 msgstr "Redémarrage du lecteur multimédia..."
 
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
 msgid "Advene log"
 msgstr "Advene log"
 
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
 msgid "Select the package to merge"
 msgstr "Sélectionnez le recueil à fusionner"
 
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
 msgid "Saving workspace"
 msgstr "Sauvegarde de l'environnement"
 
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
 msgid "Enter a view name to save the workspace"
 msgstr "Entrez un nom de vue pour sauvegarder cet environnement"
 
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
 msgid "Default workspace"
 msgstr "Environnement standard"
 
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
 msgid "Open this workspace when opening the package"
 msgstr "Ouvrir cet environnement lors du chargement du recueil"
 
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
 #, python-format
 msgid "Error: the view %s exists and is not a workspace view."
 msgstr "Erreur : la vue %s existe mais n'est pas une vue d'environnement"
 
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
 #, python-format
 msgid "Cannot save default workspace: %s"
 msgstr "Impossible de sauvegarder l'environnement par défaut : %s"
 
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
 msgid "Standard workspace has been saved"
 msgstr "L'environnement standard a été sauvé"
 
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
 msgid "Website export"
 msgstr "Export de site web"
 
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
 msgid "Exporting views to a website"
 msgstr "Exporter les vues vers un site web"
 
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
 msgid "Output directory"
 msgstr "Répertoire destination"
 
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
 msgid "Specify the output directory"
 msgstr "Précisez le répertoire de destination"
 
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
 msgid "Maximum recursion depth"
 msgstr "Niveau maximal de récursivité"
 
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
 msgid "Video URL"
 msgstr "URL de la vidéo"
 
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
 msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
 msgstr ""
-"URL de la vidéo si elle est disponible en ligne.\n"
-"YouTube et GoogleVideo seulement pour le moment."
+"URL pour la vidéo, si elle est disponible en ligne (youtube seulement\n"
+" pour le moment).\n"
+"Ce peut aussi être un fichier h264 ou ogg, qui sera dans ce cas\n"
+" intégré via un player HTML5."
 
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
 msgid "Could not export data: "
 msgstr "Impossible d'exporter les données : "
 
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
 #, python-format
 msgid "Website export to %s completed"
 msgstr "Export de site web vers %s terminé"
 
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
 msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 "Ce lecteur vidéo n'est pas capable de faire des captures d'écran à des "
 "moments précis."
 
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
 #, python-format
 msgid "Updating %d snapshots"
 msgstr "Mise-à-jour de %d vignette(s)"
 
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
 msgid "No snapshot to update"
 msgstr "Aucune capture d'écran à mettre à jour"
 
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
 msgid "You first must load a movie into Advene"
 msgstr "Vous devez d'abord charger un fichier vidéo dans Advene"
 
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
 #, python-format
 msgid "The movie %s does not seem to exist."
 msgstr "Le fichier vidéo %s ne semble pas exister."
 
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
 msgid "Generating screenshots"
 msgstr "Génération des vignettes"
 
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
 msgid ""
 "<b>Screenshot generation</b>\n"
 "\n"
@@ -6959,7 +7120,7 @@ msgstr ""
 "Notez que l'interface d'Advene ne sera pas mise à jour tant que cette "
 "fenêtre est ouverte."
 
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
 msgid ""
 "The <b>shotdetect</b> application does not seem to be installed. Please "
 "check that it is present and that its path is correctly specified in "
@@ -6969,37 +7130,37 @@ msgstr ""
 "qu'elle est bien présente et que son chemin est correctement spécifié dans "
 "les préférences."
 
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
 msgid ""
 "Cannot import shotdetect output. Did you install the shotdetect software?"
 msgstr ""
 "Impossible d'importer le résultat de shotdetect. Avez-vous bien installé le "
 "logiciel shotdetect ?"
 
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
 msgid "Incomplete shots"
 msgstr "Plans incomplets"
 
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
 #, python-format
 msgid "Detected %s shots"
 msgstr "Détecté %s plans"
 
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
 #, python-format
 msgid "Could not run shotdetect: %s"
 msgstr "Impossible de lancer shotdetect : %s"
 
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
 #, python-format
 msgid "Detecting shots from %s"
 msgstr "Détection des plans de %s"
 
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
 msgid "Shot detection"
 msgstr "Détection de plans"
 
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
 msgid ""
 "<b>Shot detection</b>\n"
 "\n"
@@ -7015,13 +7176,13 @@ msgstr ""
 "l'algorithme, et doit typiquement être entre 50 et 80. Si trop de plans sont "
 "détectés, essayez d'augmenter cette valeur."
 
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
 msgid "Sensitivity"
 msgstr "Sensibilité"
 
 #: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
 msgid "Plain text content"
 msgstr "Contenu textuel"
 
@@ -7030,8 +7191,8 @@ msgid "HTML content"
 msgstr "Contenu HTML"
 
 #: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
 msgid "Simple-structured content"
 msgstr "Contenu simplement structuré"
 
@@ -7040,8 +7201,8 @@ msgid "List of numeric values"
 msgstr "Liste de valeurs numériques"
 
 #: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
 msgid "SVG graphics content"
 msgstr "Contenu graphique SVG"
 
@@ -7338,46 +7499,38 @@ msgstr "Tout"
 msgid "Importer"
 msgstr "Importateur"
 
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
 msgid "Advene package importer"
 msgstr "Importateur de recueil Advene"
 
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
 msgid "Not likely"
 msgstr "Non-pertinents"
 
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
 #, python-format
 msgid "Completed conversion: %(statistics)s"
 msgstr "Conversion terminée : %(statistics)s"
 
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
 #: ../lib/advene/gui/edit/dvdselect.py:73
 msgid "Stop"
 msgstr "Stop"
 
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr "Import de %s"
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
 msgid "Choose the file to import"
 msgstr "Choisissez le fichier à importer"
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr "Nom de fichier"
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
 msgid "Filter"
 msgstr "Filtre"
 
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
 msgid "Options"
 msgstr "Options"
 
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
 msgid "Start"
 msgstr "Lancer"
 
@@ -7449,8 +7602,8 @@ msgstr ""
 "vous devez fournir les informations suivantes."
 
 #: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
 msgid "Rectangular zone content"
 msgstr "Contenu de zone rectangulaire"
 
@@ -7516,7 +7669,7 @@ msgid "New resource data"
 msgstr "Nouvelle ressource"
 
 #: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
 msgid "Properties"
 msgstr "Propriétés"
 
@@ -7759,7 +7912,7 @@ msgid "Error: cannot find a content handler for %s"
 msgstr "Erreur : impossible d'ouvrir une fenêtre d'édition pour %s"
 
 #: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
 #, python-format
 msgid ""
 "Cannot read the data:\n"
@@ -7769,12 +7922,12 @@ msgstr ""
 "%s"
 
 #: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
 msgid "Save content to..."
 msgstr "Sauver le contenu..."
 
 #: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
 #, python-format
 msgid ""
 "Cannot save the data:\n"
@@ -7784,17 +7937,17 @@ msgstr ""
 "%s"
 
 #: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
 msgid "Open a file (C-o)"
 msgstr "Ouvrir un fichier (C-o)"
 
 #: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
 msgid "Save to a file (C-s)"
 msgstr "Sauvegarder dans un fichier (C-s)"
 
 #: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
 msgid "Reload the file (C-r)"
 msgstr "Recharger le fichier (C-r)"
 
@@ -7802,15 +7955,15 @@ msgstr "Recharger le fichier (C-r)"
 msgid "Insert a value from the browser (C-i)"
 msgstr "Insérer une valeur depuis le browser (C-i)"
 
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
 msgid "Begin time is greater than end time"
 msgstr "Le moment de début est plus grand que celui de fin"
 
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
 msgid "Expecting an integer."
 msgstr "Un entier est attendu."
 
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
 #, python-format
 msgid ""
 "The %(attribute)s attribute could not be updated:\n"
@@ -7825,7 +7978,7 @@ msgstr ""
 "\n"
 "Il est remis à son ancienne valeur."
 
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
 #, python-format
 msgid ""
 "The following attributes cannot be updated:\n"
@@ -7836,7 +7989,7 @@ msgstr ""
 "\n"
 "%s"
 
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
 #, python-format
 msgid ""
 "The following attributes could not be updated:\n"
@@ -7847,25 +8000,25 @@ msgstr ""
 "\n"
 "%s"
 
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
 msgid "Attribute"
 msgstr "Attribut"
 
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
 msgid "Insert an element"
 msgstr "Insérer un élément"
 
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
 msgid "Choose the element to insert."
 msgstr "Choisissez l'élément à insérer."
 
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
 #, python-format
 msgid "Some tags contain invalid characters: %s"
 msgstr "Certains tags contiennent des caractères non-valides: %s"
 
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
 msgid "Tags:"
 msgstr "Tags :"
 
@@ -7976,8 +8129,8 @@ msgid "Condition expression: %s"
 msgstr "Expression de condition : %s"
 
 #: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
-msgstr "L'id du type d'annotation"
+msgid "The annotation type"
+msgstr "Le type d'annotation"
 
 #: ../lib/advene/gui/edit/rules.py:768
 #, python-format
@@ -8035,8 +8188,8 @@ msgid "The element duration"
 msgstr "La durée de l'élément"
 
 #: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
-msgstr "L'id du type de l'élément"
+msgid "The element type"
+msgstr "Le type d'élément"
 
 #: ../lib/advene/gui/edit/rules.py:794
 msgid "The element's incoming relations"
@@ -8054,6 +8207,16 @@ msgstr "Le contexte"
 msgid "The context fragment"
 msgstr "Le fragment du contexte"
 
+#: ../lib/advene/gui/edit/rules.py:809
+#, python-format
+msgid "annotation-type %s"
+msgstr "Type d'annotation %s"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, python-format
+msgid "relation-type %s"
+msgstr "type de relation %s"
+
 #: ../lib/advene/gui/edit/rules.py:834
 msgid "Select a condition"
 msgstr "Sélectionnez une condition"
@@ -8071,52 +8234,52 @@ msgstr "Sélectionnez une action"
 msgid "Activate?"
 msgstr "Activer?"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
 msgid "Schema Editor"
 msgstr "Éditeur de schéma"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
 msgid "Display"
 msgstr "Afficher"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
 msgid "Remove relation type"
 msgstr "Supprimer le type de relation"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
 msgid "Create HTML view"
 msgstr "Créer une vue HTML"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
 msgid "Remove annotation type"
 msgstr "Supprimer le type d'annotation"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
 msgid "Create relation type between this one and..."
 msgstr "Créer un type de relation entre cet élément et ..."
 
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
 msgid "New schema"
 msgstr "Nouveau schéma"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
 msgid "New annotation type"
 msgstr "Nouveau type d'annotation"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
 msgid "New relation type"
 msgstr "Nouveau type de relation"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
 msgid "Hide this schema"
 msgstr "Cacher ce schéma"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
 msgid "Export drawing to pdf"
 msgstr "Exporter le schéma en pdf"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
 msgid "Choose a filename to export the schema as PDF"
 msgstr "Choisissez un nom pour l'export PDF"
 
@@ -8409,102 +8572,102 @@ msgstr "Sélectionnez l'image appropriée"
 msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr "Cliquez pour voir plus d'images, ou défilez avec la molette"
 
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
 msgid "Generic shape"
 msgstr "Forme générique"
 
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
 #, python-format
 msgid "Link to %s"
 msgstr "Lier à  %s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
 msgid "Link"
 msgstr "Lien"
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
 msgid "Link label"
 msgstr "Label du lien"
 
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
 msgid "Linewidth"
 msgstr "Largeur de trait"
 
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
 msgid "Filled"
 msgstr "Rempli"
 
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
 #, python-format
 msgid "Properties of %s"
 msgstr "Propriétés de %s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
 msgid "Rectangle"
 msgstr "Rectangle"
 
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
 msgid "Text"
 msgstr "Texte"
 
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
 msgid "Textsize"
 msgstr "Taille du texte"
 
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
 msgid "Image"
 msgstr "Image"
 
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
 msgid "Href"
 msgstr "Href"
 
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
 msgid "Line"
 msgstr "Ligne"
 
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
 msgid "Draw an arrow"
 msgstr "Dessiner une flêche"
 
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
 msgid "Arrow size"
 msgstr "Taille de la flêche"
 
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
 msgid "Circle"
 msgstr "Cercle"
 
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
 msgid "Ellipse"
 msgstr "Ellipse"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
 msgid "SVG"
 msgstr "SVG"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
 msgid "Load SVG"
 msgstr "Charger un fichier SVG"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
 msgid "Save SVG"
 msgstr "Sauver le SVG"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
 #, python-format
 msgid "Decrement value by %.2f s"
 msgstr "Décrémenter la valeur de %.2f s"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
 #, python-format
 msgid "Increment value by %.2f s"
 msgstr "Incrémenter la valeur de %.2f s"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
 msgid ""
 "Click to play\n"
 "Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8516,7 +8679,7 @@ msgstr ""
 "Scroll pour modifier la valeur (avec Contrôle/Shift)\n"
 "Clic droit pour invalider la capture d'écran"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
 msgid ""
 "Enter a timecode.\n"
 "An integer value will be considered as milliseconds.\n"
@@ -8528,7 +8691,7 @@ msgstr ""
 "Une valeur flottant (12.2) sera considérée comme des secondes.\n"
 "Il est possible d'utiliser le format HH:MM:SS.sss"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
 msgid "Set to current player position"
 msgstr "Fixer à la valeur de la position courante"
 
@@ -9161,6 +9324,74 @@ msgstr "Liste d'éléments de type %s"
 msgid "Directory %s is not an extracted Advene zip package."
 msgstr "Le répertoire %s n'est pas un recueil Advene décompressé."
 
+#~ msgid "locked"
+#~ msgstr "verr."
+
+#~ msgid ""
+#~ "URL for the video, if it is available on a sharing website.\n"
+#~ "Only for GoogleVideo and Youtube for the moment"
+#~ msgstr ""
+#~ "URL de la vidéo si elle est disponible en ligne.\n"
+#~ "YouTube et GoogleVideo seulement pour le moment."
+
+#~ msgid "Importing %s"
+#~ msgstr "Import de %s"
+
+#~ msgid "Aiff importer"
+#~ msgstr "Importateur Aiff"
+
+#~ msgid ""
+#~ "%d annotation(s) were modified\n"
+#~ "but we cannot propagate the modifications\n"
+#~ "since the representation parameter is used."
+#~ msgstr ""
+#~ "%d annotation(s) ont été modifiée(s)\n"
+#~ "mais les modifications ne peuvent pas être propagées\n"
+#~ "car un paramètre de représentation est utilisé."
+
+#~ msgid "Updating modified annotations"
+#~ msgstr "Mise à jour des annotations modifiées"
+
+#~ msgid ""
+#~ "%d annotations were modified.\n"
+#~ "Do you want to update their content?"
+#~ msgstr ""
+#~ "%d annotation(s) ont été modifiée(s).\n"
+#~ "Voulez-vous mettre leur contenu à jour ?"
+
+#~ msgid "Package _Imports"
+#~ msgstr "Éléments _Importés"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Éditer les éléments importés d'autres recueils"
+
+#~ msgid "_MediaInformation"
+#~ msgstr "Informations _Média"
+
+#~ msgid "Display information about the media"
+#~ msgstr "Informations sur le média"
+
+#~ msgid "Capture screenshots"
+#~ msgstr "Capturer les vignettes"
+
+#~ msgid "Generate screenshots for the current video"
+#~ msgstr "Générer les captures d'écran pour la vidéo courante"
+
+#~ msgid "Quit"
+#~ msgstr "Quitter"
+
+#~ msgid "Open %s"
+#~ msgstr "Ouvrir %s"
+
+#~ msgid "Filename"
+#~ msgstr "Nom de fichier"
+
+#~ msgid "The id of the annotation type"
+#~ msgstr "L'id du type d'annotation"
+
+#~ msgid "The id of the element type"
+#~ msgstr "L'id du type de l'élément"
+
 #~ msgid "SPARQL query"
 #~ msgstr "Requête SPARQL"
 
@@ -9241,9 +9472,6 @@ msgstr "Le répertoire %s n'est pas un recueil Advene décompressé."
 #~ "%(id)s: %(begin)s - %(end)s\n"
 #~ "%(content)s"
 
-#~ msgid "Click on the frame just after the cut"
-#~ msgstr "Cliquez sur l'image juste après le cut"
-
 #~ msgid "Exporter"
 #~ msgstr "Exporteur"
 
diff --git a/po/it.po b/po/it.po
index 9d40a4a..5e0fc78 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: advene\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
 "PO-Revision-Date: 2008-04-08 18:50+0000\n"
 "Last-Translator: Luca Livraghi <luca.91 at hotmail.it>\n"
 "Language-Team: Italian <it at li.org>\n"
@@ -83,111 +83,116 @@ msgid ""
 "The following processes seem to use the %(port)s port: %(processes)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
 #, python-format
 msgid "Loaded %(uri)s as %(alias)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
 #, python-format
 msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
 #, python-format
 msgid "Cannot get audio volume: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
 msgid "None"
 msgstr "Nessuno"
 
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
 #, python-format
 msgid "Found matching video file in moviepath: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
 msgid "Analysis of "
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
 msgid "Cannot split the annotation: the given position is outside."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
 #, python-format
 msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
 #, python-format
 msgid "Cannot read the imported package %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
 msgid "Package URI has changed. Reloading package with new URI."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
 msgid ""
 "Cannot load package: the following annotations do not have Millisecond "
 "fragments:"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
 #, python-format
 msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
 #, python-format
 msgid "Checking master package %s for not yet imported elements."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
 msgid "Standard summary"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
 msgid "Default view"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
 #, python-format
 msgid ""
 "Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
 #, python-format
 msgid "Got exception %s when stopping player."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
 #, python-format
 msgid "Raised exception in update_status: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
 msgid "Unable to start the player."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
 #, fuzzy, python-format
 msgid "Comment on set of %d annotations"
 msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
 #, python-format
 msgid "Comment on %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
 #, python-format
 msgid ""
 "<h1>Comment on %(title)s</h1>\n"
@@ -199,23 +204,23 @@ msgid ""
 "\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
 #, fuzzy, python-format
 msgid "List of %s annotations"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
 #, fuzzy, python-format
 msgid "Cannot export to %(filename)s: %(e)s"
 msgstr "Impossibile salvare il file: %s"
 
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
 #, python-format
 msgid "Error when exporting: %s"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
 #, python-format
 msgid "Data exported to %s"
 msgstr ""
@@ -951,11 +956,15 @@ msgid ""
 "fr/advene/\">Advene</a> v. %s.</em></p>"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
 #, python-format
 msgid "Cannot start HTTP server: %s"
 msgstr ""
 
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
 #: ../lib/advene/plugins/featuredetect.py:42
 msgid "Feature detection (face...)"
 msgstr ""
@@ -999,7 +1008,7 @@ msgstr ""
 msgid "Anvil importer"
 msgstr ""
 
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
 #, fuzzy
 msgid "TED importer"
 msgstr "Importatore"
@@ -1069,11 +1078,72 @@ msgid ""
 "too many shots are detected, try to increase its value."
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
 #, python-format
 msgid "Detected shot #%(num)d at %(pos)s "
 msgstr ""
 
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+#, fuzzy
+msgid "Generating annotations"
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
 #: ../lib/advene/plugins/tts.py:77
 msgid "Pronounce a text"
 msgstr ""
@@ -1093,12 +1163,12 @@ msgstr ""
 msgid "The annotation content"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
 #: ../lib/advene/gui/plugins/actions.py:234
 msgid "Unknown rule"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
 #: ../lib/advene/gui/plugins/actions.py:235
 #, python-format
 msgid ""
@@ -1120,6 +1190,27 @@ msgstr ""
 msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "_Importa file"
+
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
 #: ../lib/advene/plugins/mpeg7.py:54
 msgid "MPEG7 importer"
 msgstr ""
@@ -1149,28 +1240,6 @@ msgstr "Vista statica predefinita"
 msgid "Importing annotations"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/plugins/aiff.py:35
-#, fuzzy
-msgid "Aiff importer"
-msgstr "Importatore"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "_Importa file"
-
-#: ../lib/advene/plugins/aiff.py:92
-msgid "Importing clips"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
 #: ../lib/advene/plugins/dcp.py:65
 #, fuzzy
 msgid "DCP importer"
@@ -1181,11 +1250,11 @@ msgstr "Importatore"
 msgid "Converting #%(num)d / %(count)d"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
 msgid "Input from the braille table."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
 msgid "BrlTTY not installed. There will be no braille support."
 msgstr ""
 
@@ -1201,16 +1270,16 @@ msgstr ""
 msgid "Message to display."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
 msgid "BrlTTY connection error: %s"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
 msgid "Braille display: "
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
 msgid "No message"
 msgstr ""
 
@@ -1254,17 +1323,17 @@ msgid "Parsing section information"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
 msgid "Creating package"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
 msgid "Creating annotation types"
 msgstr ""
 
 #: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
 msgid "Parsing header information"
 msgstr ""
 
@@ -1291,11 +1360,6 @@ msgstr ""
 msgid "Channel selection."
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#, fuzzy
-msgid "Generating annotations"
-msgstr "Tutte le annotazioni"
-
 #: ../lib/advene/plugins/soundenveloppe.py:115
 #, fuzzy, python-format
 msgid "At %s"
@@ -1334,7 +1398,7 @@ msgstr ""
 msgid "Starting silence detection"
 msgstr ""
 
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
 msgid "Aeidon (subtitles) importer"
 msgstr ""
 
@@ -1374,232 +1438,232 @@ msgstr ""
 msgid "Converted from %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
 #, fuzzy
 msgid "ExternalApp importer"
 msgstr "Importatore"
 
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
 #, python-format
 msgid ""
 "The <b>%s</b> application does not seem to be installed. Please check that "
 "it is present and that its path is correctly specified in preferences."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
 #, python-format
 msgid "The file %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
 #, fuzzy, python-format
 msgid "Could not run %(appname)s: %(msg)s"
 msgstr "Impossibile salvare il file: %s"
 
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
 #, fuzzy, python-format
 msgid "Processing %s"
 msgstr "Modifica %s"
 
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
 msgid "Cleaning up..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
 msgid "Text importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
 msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
 msgid "lsdvd importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
 msgid "Processing data"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
 #, fuzzy
 msgid "DVD Chapter"
 msgstr "Capitolo"
 
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
 msgid "Launching lsdvd..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
 msgid "chaplin importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
 msgid "Xi importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
 msgid "ELAN importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
 #, python-format
 msgid "Converting tier %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
 msgid "Processing time slots"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
 msgid "Fixing forward references"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
 msgid "Creating relations"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
 msgid "Subtitle (SRT) importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
 #, python-format
 msgid "Subtitles from %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
 msgid "PRAAT importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
 msgid "CMML importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
 msgid "Parsing clip information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
 msgid "Creating CMML schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
 msgid "Parsing stream information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
 msgid "IRI importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
 msgid "Generate one type per view"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
 #, python-format
 msgid "Parsing ensemble %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
 #, python-format
 msgid "Parsing decoupage %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
 msgid "Parsing views"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
 msgid "Initializing package"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
 msgid "IRIData importer"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
 msgid "Parsing sound values"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
 msgid "Creating annotations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
 msgid "Package"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
 msgid "Annotation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
 msgid "Relation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
 msgid "Schema"
 msgstr "Schema"
 
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
 msgid "Annotation Type"
 msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
 msgid "Relation Type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
 #: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
 msgid "View"
 msgstr "Visualizza"
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
 #: ../lib/advene/gui/main.py:278
 msgid "Query"
 msgstr "Ricerca"
 
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
 msgid "Resource Folder"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
 msgid "Resource File"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
 msgid "---- Elements ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
 msgid "---- Attributes ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
 msgid "---- Methods ----"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
 #, python-format
 msgid "Cannot read %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
 #: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
 #, python-format
 msgid "File %s is not an Advene zip package."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
 #, python-format
 msgid ""
 "Error:\n"
 "%s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
 #, python-format
 msgid ""
 "Package %(title)s:\n"
@@ -1613,81 +1677,81 @@ msgid ""
 "%(description)s\n"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schema"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
 msgid "schemas"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
 msgid "annotations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
 msgid "annotation types"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
 msgid "relations"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
 msgid "relation types"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "query"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
 msgid "queries"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "view"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
 msgid "views"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "package"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
 msgid "packages"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
 #, python-format
 msgid "No %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
 #, python-format
 msgid "1 %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
 #, python-format
 msgid "%(count)d %(plural)s"
 msgstr ""
@@ -1702,32 +1766,32 @@ msgstr ""
 msgid "%s does not exist"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
 msgid "Starting export"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
 #, python-format
 msgid "Depth %d"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
 #, python-format
 msgid "Depth %(depth)d: processing %(url)s"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
 msgid "Finalizing"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
 #, python-format
 msgid ""
 "<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
 "strong></p>"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
 msgid "Export complete"
 msgstr ""
 
@@ -1791,12 +1855,12 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
 #, python-format
 msgid "Renumbering annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
 msgid ""
 "<b>Renumber all annotations according to their order.</b>\n"
 "\n"
@@ -1810,26 +1874,26 @@ msgid ""
 "The offset parameter allows you to renumber from a given annotation."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
 msgid "Offset"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
 #, fuzzy, python-format
 msgid "Renumbering %d annotations"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
 #, fuzzy, python-format
 msgid "Annotation #%d"
 msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
 #, fuzzy, python-format
 msgid "Extracting %s"
 msgstr "Modifica %s"
 
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
 #, python-format
 msgid ""
 "Exporting annotation %(title)s\n"
@@ -1837,268 +1901,275 @@ msgid ""
 "to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
 msgid "Edit"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
 msgid "Browse"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
 msgid "Open in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
 msgid "Delete"
 msgstr "Elimina"
 
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
 #, fuzzy
 msgid "Search/replace content"
 msgstr "Elementi cercati"
 
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
 msgid "Activate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
 msgid "Desactivate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
 #: ../lib/advene/gui/plugins/tracetimeline.py:980
 #: ../lib/advene/gui/plugins/tracetimeline.py:1001
 #: ../lib/advene/gui/edit/transcribe.py:502
 msgid "Go to..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
 msgid "Loop"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
 msgid "Duplicate"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+#, fuzzy
+msgid "Save snapshot..."
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/popup.py:519
 #, fuzzy
 msgid "Extract video fragment"
 msgstr "Inserisci un indirizzo di un video stream"
 
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
 msgid "Incoming"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
 msgid "Outgoing"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
 msgid "Related annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
 msgid "Incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
 msgid "Outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
 #, python-format
 msgid "Begin: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
 #, python-format
 msgid "End: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
 #, fuzzy, python-format
 msgid "Duration: %s"
 msgstr "Relazioni"
 
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
 msgid "Members:"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
 msgid "Edit package properties..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
 #, python-format
 msgid "%d annotations(s) - statistics"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
 msgid "Create a new static view..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
 msgid "Create a new dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
 msgid "Create a new annotation..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
 msgid "Create a new schema..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
 msgid "Create a new query..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
 msgid "Create a new folder..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
 msgid "Create a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
 msgid "Insert a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
 msgid "Insert a new resource directory..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
 msgid "Insert a soundclip..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
 msgid "Play sound"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
 msgid "Create a new annotation type..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
 msgid "Create a new relation type..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
 msgid "Select a color"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
 #, python-format
 msgid "A caption dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
 #, fuzzy, python-format
 msgid "Caption %s annotations"
 msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
 msgid "Caption the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
 #, fuzzy
 msgid "Create a comment view"
 msgstr "Vista statica predefinita"
 
-#: ../lib/advene/gui/popup.py:740
+#: ../lib/advene/gui/popup.py:739
 #, fuzzy
-msgid "Generate a caption dynamic view"
+msgid "Generate a caption dynamic view..."
 msgstr "Vista dinamica predefinita"
 
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
 msgid "Display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
 msgid "Display annotations in table"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
 msgid "Export to another format..."
 msgstr ""
 
+#: ../lib/advene/gui/popup.py:748
+#, fuzzy
+msgid "Delete all annotations"
+msgstr "Tutte le annotazioni"
+
 #: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
-msgstr ""
+#, fuzzy
+msgid "Renumber annotations..."
+msgstr "Tutte le annotazioni"
 
 #: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
-msgstr ""
-
-#: ../lib/advene/gui/popup.py:751
 #, fuzzy
-msgid "Adjust annotation bounds"
+msgid "Adjust annotation bounds..."
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
 #, python-format
 msgid "A follow dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
 #, fuzzy, python-format
 msgid "Follow %s relation-type"
 msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
 msgid "Follow the relation"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
 msgid "Delete all relations..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
 #, fuzzy
 msgid "Create montage from related annotations"
 msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
 msgid "Create dynamic view following relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
 #, python-format
 msgid "Exception in query: %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
 msgid "Apply query on..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
 msgid "the package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
 msgid "all annotations of the package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
 msgid "the first annotation of the package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
 msgid "Activate view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
 msgid "Open adhoc view"
 msgstr ""
 
@@ -2261,31 +2332,31 @@ msgid "Cannot remove this widget, it is essential."
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
 msgid "...in its own window"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:125
 #: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
 msgid "...embedded east of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:126
 #: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
 msgid "...embedded west of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:127
 #: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
 msgid "...embedded south of the video"
 msgstr ""
 
 #: ../lib/advene/gui/views/viewbook.py:128
 #: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
 msgid "...embedded at the right of the window"
 msgstr ""
 
@@ -2363,7 +2434,7 @@ msgid "to create a new static view"
 msgstr "Vista statica predefinita"
 
 #: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
 msgid "as a transcription"
 msgstr ""
 
@@ -2494,8 +2565,8 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
 #: ../lib/advene/gui/edit/elements.py:508
 #: ../lib/advene/gui/edit/elements.py:557
 #: ../lib/advene/gui/edit/elements.py:657
@@ -2503,44 +2574,67 @@ msgid "Type"
 msgstr ""
 
 #: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
 msgid "Value"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+#, fuzzy
+msgid "Check various package properties"
+msgstr "Modifica proprietà pacchetto"
+
+#: ../lib/advene/gui/views/checker.py:90
+#, fuzzy
+msgid "List of possible issues in the current package"
+msgstr "Salva il pacchetto attuale"
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:55
 msgid "Annotation table view"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
 msgid "Display annotations in a table"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
 msgid "Snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
 #: ../lib/advene/gui/edit/elements.py:675
 #: ../lib/advene/gui/edit/elements.py:717
 #: ../lib/advene/gui/edit/elements.py:1108
 msgid "Content"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
 msgid "Begin"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
 msgid "End"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
 msgid "Duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
 #: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
 #: ../lib/advene/gui/edit/elements.py:507
 #: ../lib/advene/gui/edit/elements.py:556
@@ -2554,56 +2648,56 @@ msgstr ""
 msgid "Id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
 msgid "Export data to file..."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
 #, python-format
 msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "begin"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "end"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
 msgid "content"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
 msgid "Generic table view"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
 msgid "Display Advene elements in a table."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element title"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element type"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
 msgid "Element id"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
 #: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
 #: ../lib/advene/gui/edit/imports.py:331
 #: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2642,13 +2736,13 @@ msgstr ""
 msgid "Adhoc views"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
 msgid "Tree view"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
 msgid "Refresh"
 msgstr ""
 
@@ -2656,25 +2750,76 @@ msgstr ""
 msgid "Package View"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "Tipo di Annotazione"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, python-format
+msgid "Move annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr ""
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
 msgid "AnnotationDisplay"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
 msgid "Display the contents of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
 msgid "No annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
 msgid "Current time"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
 #, python-format
 msgid ""
 "Schema %(schema)s\n"
@@ -2683,15 +2828,20 @@ msgid ""
 "Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
 msgid "Screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
 #: ../lib/advene/gui/views/relationdisplay.py:104
 msgid "Contents"
 msgstr ""
 
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+msgid "Validate"
+msgstr ""
+
 #: ../lib/advene/gui/views/__init__.py:193
 msgid "Invalid view id"
 msgstr ""
@@ -2715,7 +2865,7 @@ msgstr ""
 msgid "Enter a view name to save this parametered view"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
 #, python-format
 msgid "Error: the identifier %s contains invalid characters."
 msgstr ""
@@ -2748,7 +2898,7 @@ msgstr ""
 msgid "Click or drag-and-drop to reattach view"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
 msgid "Caption"
 msgstr ""
 
@@ -2766,131 +2916,112 @@ msgstr ""
 msgid "Navigation popup"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
 msgid "Transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
 #, fuzzy
 msgid "Display annotations as a text transcription"
 msgstr "Visualizza le annotazione come una trascrizione"
 
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
 #: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
 #: ../lib/advene/gui/edit/montage.py:54
 #: ../lib/advene/gui/edit/transcribe.py:85
 msgid "Save view"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
 #: ../lib/advene/gui/views/interactivequery.py:60
 #: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
 #: ../lib/advene/gui/edit/transcribe.py:86
 msgid "Save default options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
 #, python-format
 msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
 msgid "Transcription options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Default representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
 msgid "Use the default representation for annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 #: ../lib/advene/gui/edit/elements.py:962
 msgid "Representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
 msgid ""
 "If default representation is unchecked,\n"
 "this TALES expression that will be used to format the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
 msgid "Separator"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
 msgid "This separator will be inserted between the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
 msgid "Whitespace"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
 msgid "Newline"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
 msgid "Tabulation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
 msgid "Dash"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
 msgid "User defined"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid "User-defined separator"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
 msgid ""
 "Separator used if user-defined is selected.Use \\n for a newline and \\t for "
 "a tabulation."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Display timestamps"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
 msgid "Insert timestsamp values"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
 msgid "Display annotation bounds"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
 #, python-format
 msgid ""
 "Cannot convert the following annotations,\n"
@@ -2898,53 +3029,53 @@ msgid ""
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
 msgid ""
 "Cannot validate the update.\n"
 "The representation pattern is too complex."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
 msgid "Save transcription to a text file"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
 msgid "Apply the modifications"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
 msgid "Find text"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
 msgid "Quickly switch display options"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
 msgid "Refresh the transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
 msgid "Edit preferences"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
 #, python-format
 msgid "Annotation %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
 msgid "Play"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
 #, python-format
 msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
 #: ../lib/advene/gui/edit/transcribe.py:884
 #, python-format
 msgid "Transcription saved to %s"
@@ -3097,7 +3228,7 @@ msgstr ""
 msgid "Convert bookmarks to annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
 msgid "Comment here"
 msgstr ""
 
@@ -3162,7 +3293,7 @@ msgid "Result of a query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
 #, python-format
 msgid "'%s'"
 msgstr ""
@@ -3187,7 +3318,7 @@ msgid "Search/replace content in %d elements"
 msgstr "Elementi cercati"
 
 #: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
 msgid "Empty quicksearch string"
 msgstr ""
 
@@ -3201,7 +3332,7 @@ msgid "Edit query"
 msgstr ""
 
 #: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
 msgid "String to search"
 msgstr ""
 
@@ -3339,7 +3470,7 @@ msgstr ""
 msgid "Edit resource"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
 msgid "Package finder"
 msgstr ""
 
@@ -3351,7 +3482,7 @@ msgstr ""
 msgid "Tag Bag"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
 msgid "Bag of tags"
 msgstr "Raccolta di tag"
 
@@ -3360,8 +3491,8 @@ msgid "New tag"
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
 #: ../lib/advene/gui/edit/properties.py:46
 #: ../lib/advene/gui/edit/transcribe.py:147
 #: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3377,7 +3508,7 @@ msgid "Enter a new tag name and select its color."
 msgstr ""
 
 #: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
 msgid "Name"
 msgstr "Nome"
 
@@ -3385,13 +3516,13 @@ msgstr "Nome"
 #: ../lib/advene/gui/edit/elements.py:871
 #: ../lib/advene/gui/edit/elements.py:951
 #: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
 #: ../lib/advene/rules/actions.py:133
 msgid "Color"
 msgstr "Colore"
 
 #: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
 msgid "The tag contains invalid characters"
 msgstr ""
 
@@ -3441,60 +3572,56 @@ msgstr ""
 msgid "EditAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-msgid "Validate"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
 msgid "Timeline"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
 msgid "Display annotations on a timeline"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
 msgid "Limit display to current area"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
 msgid "Display whole movie"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
 #, python-format
 msgid "Cannot find annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
 msgid "No scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
 msgid "Continuous scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
 msgid "Discrete scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
 #, fuzzy
 msgid "Annotation scrolling"
 msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
 #, fuzzy, python-format
 msgid "%d annotations"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
 #, fuzzy
 msgid "Display all types"
 msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
 #, python-format
 msgid ""
 "There are %d annotations.\n"
@@ -3504,408 +3631,406 @@ msgid ""
 "click on the 'Display all types' button below."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
 msgid "Split at current player position"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
 msgid "Center and zoom"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
 #: ../lib/advene/rules/elements.py:1000
 msgid "Creation of a new annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
 msgid "Merge with this annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
 msgid "Align both begin times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
 msgid "Align both end times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
 msgid "Align end time to selected begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
 msgid "Align begin time to selected end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
 msgid "Align all times"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
 msgid "Select the appropriate relation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, fuzzy, python-format
-msgid "Move selection to type %s"
-msgstr "Tipo di Annotazione"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, python-format
-msgid "Move annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
 #, python-format
 msgid "Duplicate to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
 #, python-format
 msgid "Move to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
 #, python-format
 msgid "Duplicate at %s and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
 msgid "Annotation filter"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
 msgid "Enter the searched string"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
 #, python-format
 msgid "Duplicate all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
 #, python-format
 msgid "Move all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
 #, python-format
 msgid "Duplicate all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
 #, python-format
 msgid "Move all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
 #, python-format
 msgid "Align all annotation time codes using %s as reference."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
 #, python-format
 msgid "Align all annotation contents using %s as reference"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/views/timeline.py:1946
+#, fuzzy
+msgid "Displaying done."
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/views/timeline.py:2438
 msgid "Create a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
 #, fuzzy
 msgid "Zoom on region"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
 msgid "Restrict display to region"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
 #: ../lib/advene/gui/edit/transcribe.py:496
 #, python-format
 msgid "Position %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
 #, fuzzy
 msgid "New annotation at player time"
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
 #, fuzzy
 msgid "New annotation at mouse position"
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
 msgid "Selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
 msgid "Cannot zoom more"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
 #, python-format
 msgid "From schema %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
 msgid "Restrict playing to this annotation-type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
 msgid "Goto previous annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
 msgid "Goto next annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
 msgid "+"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
 #: ../lib/advene/gui/edit/transcribe.py:1027
 msgid "Create a new annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
 msgid "Open an annotation display view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
 msgid "Open a slave montage view (coordinated zoom level)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
 msgid "No selected annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
 #, python-format
 msgid "%d selected annotation(s)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
 msgid "Unselect all annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
 #, fuzzy
 msgid "Create a static view"
 msgstr "Vista statica predefinita"
 
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
 msgid "Highlight selection in other views"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
 msgid "Tag selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
 msgid "Delete selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
 msgid "Display selection in a table"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
 msgid "Center and zoom on selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
 msgid "Edit selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
 msgid "Merge annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+#, fuzzy
+msgid "Display statistics"
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/views/timeline.py:3254
 msgid "Goto previous page"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
 msgid "Goto next page"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
 #: ../lib/advene/gui/edit/montage.py:535
 msgid "Inspector"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
 msgid ""
 "Delete the selected annotations or drop an annotation here to delete it."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
 msgid ""
 "Drag an annotation type here to remove it from display.\n"
 "Click to edit all displayed types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
 msgid "Selection actions"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
 msgid "Display relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
 #, fuzzy
 msgid "Display all relations"
 msgstr "Visualizza cronologia di navigazione"
 
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
 #: ../lib/advene/gui/plugins/tracetimeline.py:421
 #: ../lib/advene/gui/edit/montage.py:439
 msgid "Zoom out"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
 #: ../lib/advene/gui/plugins/tracetimeline.py:426
 #: ../lib/advene/gui/edit/montage.py:444
 msgid "Zoom in"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
 msgid "Center on current player position."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
 msgid "Automatically activate loop when clicking on an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
 msgid "Displayed"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
 msgid "Not displayed"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
 msgid "< All <"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
 msgid "> All >"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
 msgid "Displayed annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Relation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
 msgid "Display relation types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Relation content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
 msgid "Display relation content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
 msgid "Highlight active annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
 msgid "Enter the tag for the selection"
 msgstr ""
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
 msgid "Scroller"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
 #, fuzzy, python-format
 msgid "Set of %s annotations"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
 #, fuzzy
 msgid "Refresh snapshot"
 msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+#, fuzzy
+msgid "Save as..."
+msgstr "Pacchetto %s"
+
+#: ../lib/advene/gui/widget.py:1072
 msgid "Use current player position"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+msgid "Adjust timestamp"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
 #, fuzzy
 msgid "Video player"
 msgstr "Seleziona un DVD"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
 msgid "Complementary video player"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
 #, fuzzy
 msgid "Select video file"
 msgstr "Seleziona un video stream"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
 #, fuzzy
 msgid "Select a video file"
 msgstr "Seleziona un video stream"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
 msgid "Synchronize"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
 msgid "Offset in ms"
 msgstr ""
 
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+#, fuzzy
+msgid "Drag and drop to get player time"
+msgstr "di un tipo di annotazione"
+
 #: ../lib/advene/gui/plugins/actions.py:52
 msgid "Display a popup"
 msgstr ""
@@ -4157,138 +4282,138 @@ msgstr ""
 msgid "New bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
 #, python-format
 msgid "Rendering type %(type)s as %(presentation)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
 msgid "Snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
 msgid "Overlayed snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
 msgid "Timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
 msgid "Snapshot+timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
 #, fuzzy
 msgid "Annotation content"
 msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
 msgid "as a list"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
 msgid "as a table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
 msgid "Play video"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
 msgid "Show timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
 #, fuzzy
 msgid "Show content only"
 msgstr "Salva contenuto in..."
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
 msgid "Show snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
 msgid "Show overlayed timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
 #, fuzzy
 msgid "Show overlayed content"
 msgstr "Elementi cercati"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
 #, fuzzy, python-format
 msgid "Annotation type %s"
 msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
 #, fuzzy
 msgid "display as list"
 msgstr "Visualizza cronologia di navigazione"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
 #, fuzzy
 msgid "display as table"
 msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
 #, fuzzy
 msgid "display as transcription"
 msgstr "Visualizza le annotazione come una trascrizione"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
 #, fuzzy
 msgid "Open link"
 msgstr "Apri"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
 #, python-format
 msgid "HTML editor: cannot parse content (%s)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
 #, fuzzy, python-format
 msgid "Heading %d"
 msgstr "Modifica %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
 msgid "Bold"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
 msgid "Italic"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
 msgid "Header"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
 msgid "Copy"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
 msgid "Cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
 #, fuzzy
 msgid "Paste"
 msgstr "Data"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
 msgid "Undo"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
 msgid "WYSIWYG editor"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
 #, fuzzy
 msgid "Edit HTML source"
 msgstr "Modifica %s"
@@ -4303,97 +4428,97 @@ msgstr "Seleziona un'azione"
 msgid "Display shot validation interface"
 msgstr "Visualizza cronologia di navigazione"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
 #, python-format
 msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
 msgid "Last action undone"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
 #, python-format
 msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
 #, python-format
 msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
 #, python-format
 msgid "Changed cut between #%(first)d and %(second)d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
 msgid "Changed begin time for first annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
 #, fuzzy
 msgid "No annotations to adjust"
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
 msgid ""
 "Click on the frame just after the cut to adjust the cut time.\n"
 "Control-click on a frame to indicate a missing cut."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
 #, python-format
 msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
 msgid "< Previous cut"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
 #, fuzzy
 msgid "Display previous cut"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
 msgid "Next cut >"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
 #, fuzzy
 msgid "Display next cut"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
 #, fuzzy
 msgid "Go to annotation containing current player time."
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
 #: ../lib/advene/gui/edit/frameselector.py:192
 #, fuzzy
 msgid "Refresh snapshots"
 msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
 #: ../lib/advene/gui/edit/frameselector.py:193
 msgid "Refresh missing snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
 msgid "Undo last modification"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
 msgid "Merge with previous"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
 msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
 #, fuzzy
 msgid "Close view."
 msgstr "Scegliere un file"
@@ -4439,7 +4564,7 @@ msgid " Filters"
 msgstr "_File"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Reset"
 msgstr ""
 
@@ -4476,56 +4601,56 @@ msgstr "_File"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:559
 #: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
 #, fuzzy, python-format
 msgid "of an annotation (%s)"
 msgstr "Tutte le annotazioni"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:561
 #: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
 #, fuzzy, python-format
 msgid "of a relation (%s)"
 msgstr "Relazioni"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:563
 #: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
 #, fuzzy, python-format
 msgid "of an annotation type (%s)"
 msgstr "di un tipo di annotazione"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:565
 #: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
 #, fuzzy, python-format
 msgid "of a relation type (%s)"
 msgstr "Tipo di Annotazione"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:567
 #: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
 #, fuzzy, python-format
 msgid "of a schema (%s)"
 msgstr "Schemi"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:569
 #: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
 #, python-format
 msgid "of a view (%s)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:571
 #: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
 #, fuzzy, python-format
 msgid "of a package (%s)"
 msgstr "Pacchetto %s"
 
 #: ../lib/advene/gui/plugins/eventaccumulator.py:573
 #: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
 #, fuzzy, python-format
 msgid "of an unknown item (%s)"
 msgstr "Parametro %s"
@@ -4572,7 +4697,7 @@ msgid "Search"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
 #, python-format
 msgid "%(name)s (%(index)s)"
 msgstr ""
@@ -4629,29 +4754,29 @@ msgstr ""
 msgid "Zoom on action"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
 msgid "Item Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
 msgid "Item name or class"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
 #, fuzzy
 msgid "Type or schema"
 msgstr "Schema"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
 #, fuzzy
 msgid "Operations"
 msgstr "Relazioni"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
 msgid "Comment"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
 #: ../lib/advene/gui/edit/merge.py:191
 msgid "Action"
 msgstr "Azione"
@@ -4695,19 +4820,24 @@ msgstr ""
 msgid "Log Messages"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
 #, fuzzy
 msgid "_Select player"
 msgstr "Seleziona un DVD"
 
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
 msgid "_View"
 msgstr "_Visualizza"
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
 msgid "Packages"
 msgstr "Pacchetti"
 
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+#, fuzzy
+msgid "Open recent"
+msgstr "Apri"
+
 #: ../lib/advene/gui/main.py:239
 msgid "Input from the keyboard (function keys)"
 msgstr ""
@@ -4736,139 +4866,144 @@ msgid "Open a package"
 msgstr "Apri un file pacchetto"
 
 #: ../lib/advene/gui/main.py:246
+msgid "Show recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:247
 #, fuzzy
 msgid "_Save package"
 msgstr "Nessun pacchetto"
 
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
 #, fuzzy
 msgid "Save the package"
 msgstr "Tutte le visualizzazioni del pacchetto"
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 #, fuzzy
 msgid "Save package as..."
 msgstr "Pacchetto %s"
 
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
 #, fuzzy
 msgid "Save the package as..."
 msgstr "Salva il pacchetto attuale"
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 #, fuzzy
 msgid "Close package"
 msgstr "Nessun pacchetto"
 
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
 #, fuzzy
 msgid "Close the package"
 msgstr "Tutte le visualizzazioni del pacchetto"
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save session"
 msgstr "Salva sessione"
 
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
 msgid "Save the current session (list of opened packages)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
 msgid "Save workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
 msgid "...as package view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "...as standard workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
 msgid "Use the current layout as standard workspace in the future"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 #, fuzzy
 msgid "Associate a video _File"
 msgstr "Seleziona un file video"
 
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
 #, fuzzy
 msgid "Associate a video file"
 msgstr "Seleziona un file video"
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 #, fuzzy
 msgid "Associate a _DVD"
 msgstr "Seleziona un capitolo da un DVD"
 
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
 #, fuzzy
 msgid "Associate a chapter from a DVD"
 msgstr "Seleziona un capitolo da un DVD"
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 #, fuzzy
 msgid "Associate a _Video stream"
 msgstr "Seleziona un video stream"
 
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
 msgid "Enter a video stream address"
 msgstr "Inserisci un indirizzo di un video stream"
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "_Import File"
 msgstr "_Importa file"
 
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
 msgid "Import data from an external source"
 msgstr "Importa dati da una sorgente esterna"
 
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr ""
+#: ../lib/advene/gui/main.py:261
+#, fuzzy
+msgid "_Process video"
+msgstr "Modifica %s"
 
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
 #, fuzzy
 msgid "Import data from video processing algorithms"
 msgstr "Importa dati da una sorgente esterna"
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge package"
 msgstr "Unisci pacchetto"
 
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
 msgid "Merge elements from another package"
 msgstr "Unisci elementi da un altro pacchetto"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Import _DVD chapters"
 msgstr "Importa capitoli _DVD"
 
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
 msgid "Create annotations based on DVD chapters"
 msgstr "Crea annotazioni basate sui capitoli DVD"
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 #, fuzzy
 msgid "_Export..."
 msgstr "Importatore"
 
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
 msgid "Export data to another format"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "_Website export..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
 msgid "Export views to a website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
 #, fuzzy
 msgid "_Quit"
 msgstr "_Modifica"
@@ -4895,14 +5030,6 @@ msgstr "Elimina"
 msgid "Create"
 msgstr "Crea"
 
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Modifica elementi importati da altri pacchetti"
-
 #: ../lib/advene/gui/main.py:284
 msgid "P_ackage properties"
 msgstr "Proprietà P_acchetto"
@@ -4944,18 +5071,10 @@ msgstr ""
 msgid "Open python evaluator window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
 msgid "Webserver log"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:296
 msgid "_Player"
 msgstr ""
@@ -4992,14 +5111,6 @@ msgstr ""
 msgid "Restart the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
 #: ../lib/advene/gui/main.py:302
 #, fuzzy
 msgid "Update annotation screenshots"
@@ -5071,255 +5182,266 @@ msgstr ""
 msgid "_About"
 msgstr "_Informazioni"
 
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
 msgid "Open a package file"
 msgstr "Apri un file pacchetto"
 
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
 msgid "Save the current package"
 msgstr "Salva il pacchetto attuale"
 
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
 msgid "Save the package with a new name"
 msgstr "Salva il pacchetto con un nuovo nome"
 
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
 msgid "Select movie file..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
 msgid "Select DVD"
 msgstr "Seleziona DVD"
 
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
 #, fuzzy
 msgid "Create a text annotation"
 msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
 #, fuzzy
 msgid "Create a graphical annotation"
 msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
 msgid "Snapshotter activity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
 #, python-format
 msgid "%d queued requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
 msgid "Cancel all requests"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
 #, fuzzy
 msgid "No snapshotter"
 msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
 msgid "No snapshotting activity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
 msgid "Snapshotting"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
 #, fuzzy
 msgid "Display application log messages"
 msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
 msgid "Quicksearch lists"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:479
-msgid "Please specify the lists of elements to be searched."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:498
-#, python-format
-msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:499
-#, python-format
-msgid "String to search in %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr "Apri questa vista..."
-
-#: ../lib/advene/gui/main.py:540
-#, fuzzy
-msgid "All available views"
-msgstr "Nessun tipo disponibile"
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr "Trascrizione delle annotazioni"
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-#, fuzzy
-msgid "Schema editor"
-msgstr "Schema"
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:573
-msgid "Open a comment view in the web browser"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:574
-#, fuzzy
-msgid "Create or open a comment view"
-msgstr "Vista statica predefinita"
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-#, fuzzy
-msgid "Display edition history"
-msgstr "Visualizza cronologia di navigazione"
-
-#: ../lib/advene/gui/main.py:579
-msgid "Visualise the activity trace preview"
+#: ../lib/advene/gui/main.py:488
+msgid "Please specify the lists of elements to be searched."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:580
-msgid "Visualise the activity trace as a timeline"
+#: ../lib/advene/gui/main.py:507
+#, python-format
+msgid ""
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:508
+#, python-format
+msgid "String to search in %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
 msgid "Tracing : "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
 msgid "off"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
 #, fuzzy
 msgid "on"
 msgstr "Nessuno"
 
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
 msgid "Launch search"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
 msgid "Ignore case"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
 msgid "Searched elements"
 msgstr "Elementi cercati"
 
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
 msgid "Playing"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
 msgid "Pause"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
 msgid "Init"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
 msgid "Undefined"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
 msgid "Enter the new time value"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
 #, python-format
 msgid "Replace content in %d elements"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
 msgid "Find word"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
 msgid "Replace by"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
 #, python-format
 msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
 msgid "The video extracting feature is not available."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
 #, fuzzy
 msgid "Video export"
 msgstr "Seleziona un DVD"
 
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
 #, python-format
 msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
 msgid "Please choose a destination filename"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
 msgid ""
 "No media association is defined in the package. Please use the 'File/"
 "Associate a video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
 #, python-format
 msgid ""
 "The associated media %s could not be found. Please use the 'File/Associate a "
 "video file' menu item to associate a media file."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
 #, python-format
 msgid ""
 "You are now working with the following video:\n"
 "%s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr "Apri questa vista..."
+
+#: ../lib/advene/gui/main.py:1205
+#, fuzzy
+msgid "_All available views"
+msgstr "Nessun tipo disponibile"
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+#, fuzzy
+msgid "Schema editor"
+msgstr "Schema"
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1238
+msgid "Open a comment view in the web browser"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1239
+#, fuzzy
+msgid "Create or open a comment view"
+msgstr "Vista statica predefinita"
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+#, fuzzy
+msgid "Display edition history"
+msgstr "Visualizza cronologia di navigazione"
+
+#: ../lib/advene/gui/main.py:1244
+msgid "Visualise the activity trace preview"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1245
+msgid "Visualise the activity trace as a timeline"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
 #, python-format
 msgid ""
 "<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5328,438 +5450,468 @@ msgid ""
 "cnrs.fr/advene/</span>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
 msgid "Go to the website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
 msgid "Advene release"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 #, python-format
 msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
 msgid "Advene is up-to-date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
 msgid "Choose a color"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
 msgid "Select an annotation to loop on it"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
 #, python-format
 msgid "Looping on %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
 msgid "No active dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
 msgid "Create a new dynamic view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1471
+#: ../lib/advene/gui/main.py:1502
+msgid "Edit the current dynamic view."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1514
 #, fuzzy
 msgid "No dynamic view"
 msgstr "Vista dinamica"
 
-#: ../lib/advene/gui/main.py:1473
-msgid "Edit the current dynamic view."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
 msgid "Playing rate"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
 msgid "History"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
 msgid "Popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid ""
 "You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
 msgid "Information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
 msgid "Cannot create annotation. There is no schema to put it in."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
 #, fuzzy
 msgid "Default annotation type"
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
 #, fuzzy
 msgid "Annotation created"
 msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
 msgid "Play/Pause [Control-Tab / Control-Space]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
 #, python-format
 msgid "Rewind (%.02f s) [Control-Left]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
 #, python-format
 msgid "Forward (%.02f s) [Control-Right]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
 msgid "Previous frame [Control-Down]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
 msgid "Next frame [Control-Up]"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
 msgid "Fullscreen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2214
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/gui/main.py:2222
+#, fuzzy
+msgid "Save screenshot to..."
+msgstr "Salva contenuto in..."
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
 #, fuzzy
 msgid "Export package data"
 msgstr "Nessun pacchetto"
 
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
 #, fuzzy, python-format
 msgid "Export annotation type %s"
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
 #, fuzzy, python-format
 msgid "Export element %s"
 msgstr "Crea elemento"
 
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
 msgid "Export format"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
 msgid " (modified)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
 #, python-format
 msgid "Activate %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
 msgid "Saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
 msgid "Restoring workspace..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
 #, python-format
 msgid "Do you wish to restore the %s workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
 msgid "Clear the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
 #, python-format
 msgid "View %s is not an adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
 #, python-format
 msgid "Cannot identify the adhoc view %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
 msgid "Choose the annotation type to display as transcription."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
 #, python-format
 msgid ""
 "Error: unable to find an edit popup for %(element)s:\n"
 "%(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
 #, fuzzy, python-format
 msgid "Editing %s"
 msgstr "Modifica %s"
 
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
 #, python-format
 msgid "Comment view (%s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
 #, python-format
 msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
 #, python-format
 msgid "Activating package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
 #, python-format
 msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
 msgid "Do you want to restore the saved workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
 msgid "Advene"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
 #, python-format
 msgid "Got exception %s. Trying to continue."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
 #, fuzzy
 msgid "Unknown"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
 #, python-format
 msgid ""
 "The package(s) %s are modified.\n"
 "Save them now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
 msgid "Choose an annotation type."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
 msgid "No annotation type is defined."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
 msgid "Creating a new type."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
 msgid "Title of the new type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
 msgid ""
 "Id of the new type. It is generated from the title, but you may change it if "
 "necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
 msgid "Specify the content-type for the annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
 msgid "Content type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
 msgid "Create a new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
 msgid "Choose an existing schema for the new type, or create a new one"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
 msgid "Specify the schema title"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
 msgid "Title of the new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
 msgid ""
 "Id of the new schema. It is generated from the title, but you may change it "
 "if necessary."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
 msgid ""
 "You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
 msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
 msgid ""
 "You specified an existing identifier that does not reference a schema. "
 "Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
 msgid "Choose a schema."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
 msgid "You specified an existing identifier. Aborting."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
 #, python-format
 msgid "Package %s modified"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
 #, python-format
 msgid ""
 "The package %s has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
 #, python-format
 msgid "%s snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
 #, python-format
 msgid "Do you want to save the snapshots for media %s?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
 #, fuzzy, python-format
 msgid "Cannot save imagecache for %(media)s: %(e)s"
 msgstr "Impossibile salvare il file: %s"
 
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
 msgid "first frame"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
 msgid "last frame"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
 #, fuzzy, python-format
 msgid "Click on %(bound)s of %(annotation)s"
 msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
 #, fuzzy, python-format
 msgid "Update %(bound)s of %(annotation)s"
 msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+msgid "Set new timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3523
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3602
 #, fuzzy
 msgid "Text annotation"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
 #, fuzzy
 msgid "Cannot find an appropriate annotation type"
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
 #, fuzzy
 msgid "Graphical annotation"
 msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
 msgid ""
 "An unsaved template package exists\n"
 "Save it first."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
 msgid "Package modified"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
 msgid ""
 "The package that you want to close has been modified but not saved.\n"
 "Save it now?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
 msgid "Load a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
 msgid ""
 "A video file was selected. Pretend that the user selected 'Select a video "
 "file'..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
 #, python-format
 msgid ""
 "The file %s does not look like a valid Advene package. It should have a .azp "
 "or .xml extension. Try to open anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
 msgid ""
 "You are trying to load a session file, but there are unsaved packages. "
 "Proceed anyway?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
 msgid "Do you want to save the current workspace ?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
 #, python-format
 msgid "Could not save the package: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
 #, python-format
 msgid "Save the package %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
 msgid "Invalid file extension"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
 #, python-format
 msgid ""
 "Your package contains resources,\n"
@@ -5767,91 +5919,91 @@ msgid ""
 "Should I put the correct extension?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
 msgid "OK, the resources will be lost."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
 msgid "Aborting package saving"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
 msgid "Save the session in..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
 #, python-format
 msgid "Session saved in %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
 msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
 msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
 msgid "The associated media is not a DVD."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
 #, fuzzy, python-format
 msgid "Processing %s video"
 msgstr "Modifica %s"
 
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
 #, fuzzy
 msgid "No associated video file"
 msgstr "Seleziona un file video"
 
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
 msgid "Standard RuleSet"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
 #, python-format
 msgid ""
 "Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
 msgid ""
 "GNU General Public License\n"
 "See http://www.gnu.org/copyleft/gpl.html for more details"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
 msgid "Visit the Advene web site for examples and documentation."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
 msgid "Select a movie file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
 msgid "Title/Chapter selection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
 msgid "Select a video stream"
 msgstr "Seleziona un video stream"
 
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
 msgid "Enter the address of a video stream"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
 #, python-format
 msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
 msgid "Package properties"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
 #: ../lib/advene/gui/edit/elements.py:559
 #: ../lib/advene/gui/edit/elements.py:644
 #: ../lib/advene/gui/edit/elements.py:706
@@ -5863,11 +6015,11 @@ msgstr ""
 msgid "Author"
 msgstr "Autore"
 
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
 msgid "Author name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
 #: ../lib/advene/gui/edit/elements.py:560
 #: ../lib/advene/gui/edit/elements.py:645
 #: ../lib/advene/gui/edit/elements.py:707
@@ -5879,782 +6031,784 @@ msgstr ""
 msgid "Date"
 msgstr "Data"
 
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
 msgid "Package creation date"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
 msgid "Package title"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
 msgid "Associated media"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
 msgid "Media duration in ms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
 msgid "Paths"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Data"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
 msgid "Standard directory for data files"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 msgid "Movie path"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
 #, python-format
 msgid ""
 "List of directories (separated by %s) to search for movie files (_ means "
 "package directory)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Imagecache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
 msgid "Directory for storing the snapshot cache"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
 msgid "Directory of the video player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 msgid "Shotdetect"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
 #, fuzzy
 msgid "Shotdetect application"
 msgstr "Seleziona un'azione"
 
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
 msgid "GUI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid "Interface language (after restart)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
 msgid ""
 "Language used for the interface (necessitates to restart the application)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
 msgid "System default"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
 msgid "Record activity trace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Expert mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
 msgid "Offer advanced possibilities"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Prefer WYSIWYG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
 msgid "Use WYSIWYG editors when possible (HTML, SVG)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid "Player control in edit popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
 msgid ""
 "Enable generic player controls in edit windows. This may be undesirable "
 "since it overloads some standard text-edition behaviours (esp. control-left/"
 "right)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
 msgid "Open popups"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
 msgid "Where should we open adhoc views?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
 msgid "as a popup window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
 msgid "embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
 msgid "embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
 msgid "embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
 msgid "embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
 msgid "History filelist size limit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember window size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
 msgid "Remember the size of opened windows"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Bookmark snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
 msgid "Width of the snapshots representing bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Bookmark snapshot precision"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
 msgid "Precision (in ms) of the displayed bookmark snapshots."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
 msgid "General"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
 msgid "Weekly update check"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
 msgid "Weekly check for updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
 msgid "On exit,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
 msgid "How to handle screenshots on exit"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
 msgid "never save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
 msgid "always save screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
 msgid "ask before saving screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
 msgid "Auto-save"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
 msgid "Data auto-save functionality"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
 msgid "is desactivated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
 msgid "is done automatically"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
 msgid "is done after confirmation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Auto-save interval (in s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
 msgid "Interval (in seconds) between package auto-saves"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
 #, fuzzy
 msgid "Workspace"
 msgstr "Vista statica predefinita"
 
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
 msgid "On package saving,"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
 msgid "Do you wish to save the default workspace with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
 msgid "never save the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
 msgid "always save the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
 msgid "ask before saving the current workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
 #, fuzzy
 msgid "On package load,"
 msgstr "Apri un file pacchetto"
 
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
 msgid "Do you wish to load the workspace saved with the package?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
 msgid "never load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
 msgid "always load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
 msgid "ask before loading the saved workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
 #, fuzzy
 msgid "Video Player"
 msgstr "Seleziona un DVD"
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 #, fuzzy
 msgid "Autostart"
 msgstr "Autore"
 
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
 msgid ""
 "Automatically start the player when loading a media file (either directly or "
 "through a package)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Fulscreen timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
 msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 #, fuzzy
 msgid "Enable captions"
 msgstr "Relazioni"
 
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
 msgid "Enable captions over the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "Caption font"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
 msgid "TrueType font for captions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
 msgid "Enable SVG captions over the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
 msgid "Enable snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
 msgid "Snapshot width in pixels."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
 msgid "Verbosity level. -1 for no messages."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
 msgid "Devices"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
 msgid "Standard"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "DVD drive"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
 msgid "Drive letter for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
 msgid "GDI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
 msgid "Direct X"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "DVD device"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
 msgid "Device for the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
 msgid "X11"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
 msgid "XVideo"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
 msgid "GL"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
 msgid "Video output module"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
 msgid "Recorder options"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 #, fuzzy
 msgid "Audio input"
 msgstr "Aggiungi file..."
 
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
 msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
 msgid "Record both video and audio"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
 msgid "<i>Experimental</i>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
 msgid "Embed the caption scroller below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
 msgid "Embed the caption view below the video"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
 msgid "Time-related"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 msgid "Time format"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
 msgid "Format used to display timecodes"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
 msgid "Default FPS"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
 msgid ""
 "Default FPS (frame-per-second) value, when entering or displaying timestamps "
 "with frame numbers."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid "Time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
 msgid ""
 "Skip duration, when using control-left/right or forward/rewind buttons (in "
 "ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Second time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
 msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Third time increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
 msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid "Custom Up/Down"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
 msgid ""
 "Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid "Scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
 msgid ""
 "On most annotations, control+scrollwheel will increment/decrement their "
 "bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid "Second scroll increment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
 msgid ""
 "On most annotations, control+shift+scrollwheel will increment/decrement "
 "their bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid "Player sync"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
 msgid ""
 "Interval (in ms) with which we synchronize slave players. Setting a too-low "
 "value could render the application unusable. Use 0 to disable continuous "
 "synchronization."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
 msgid "Timeline parameters"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
 msgid "Font size"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
 msgid "Font size for annotation widgets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Button height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
 msgid "Height of annotation widgets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Interline height"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
 msgid "Height of interlines"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
 #, fuzzy
 msgid "Text content"
 msgstr "template HTML"
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 #, fuzzy
 msgid "Completion mode"
 msgstr "Relazioni"
 
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
 #, fuzzy
 msgid "Enable dynamic completion mode"
 msgstr "Relazioni"
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 #, fuzzy
 msgid "Abbreviation mode"
 msgstr "Tempo di reazione"
 
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
 #, fuzzy
 msgid "Enable abbreviation mode"
 msgstr "Relazioni"
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 #, fuzzy
 msgid "Abbreviations"
 msgstr "Relazioni"
 
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
 msgid ""
 "Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
 "followed by its replacement."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
 msgid "Text-To-Speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
 msgid "TTS language"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
 msgid "What language settings should be used for text-to-speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
 msgid "English"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
 msgid "French"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
 msgid "Spanish"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
 msgid "TTS Encoding"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
 msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
 msgid "TTS Engine"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
 msgid ""
 "Which TTS engine should be used (modification requires restarting Advene to "
 "take into account)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
 #, fuzzy
 msgid "Automatic"
 msgstr "Autore"
 
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
 msgid "eSpeak"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
 msgid "Custom script with standard input"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
 msgid "Custom script with arguments"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
 msgid "SAPI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
 msgid "MacOS X say"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
 msgid "Generic (text output)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
 msgid "You should restart Advene to take some options into account."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
 #, python-format
 msgid "Imagecache saved to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
 msgid "Restarting player..."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
 #, fuzzy
 msgid "Advene log"
 msgstr "Advene"
 
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
 msgid "Select the package to merge"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
 msgid "Saving workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
 msgid "Enter a view name to save the workspace"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
 #, fuzzy
 msgid "Default workspace"
 msgstr "Vista statica predefinita"
 
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
 msgid "Open this workspace when opening the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
 #, python-format
 msgid "Error: the view %s exists and is not a workspace view."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
 #, python-format
 msgid "Cannot save default workspace: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
 msgid "Standard workspace has been saved"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
 msgid "Website export"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
 msgid "Exporting views to a website"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
 #, fuzzy
 msgid "Output directory"
 msgstr "Cartella"
 
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
 msgid "Specify the output directory"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
 msgid "Maximum recursion depth"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
 msgid "Video URL"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
 msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
 #, fuzzy
 msgid "Could not export data: "
 msgstr "Impossibile salvare il file: %s"
 
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
 #, python-format
 msgid "Website export to %s completed"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
 msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
 #, python-format
 msgid "Updating %d snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
 msgid "No snapshot to update"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
 msgid "You first must load a movie into Advene"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
 #, python-format
 msgid "The movie %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
 msgid "Generating screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
 msgid ""
 "<b>Screenshot generation</b>\n"
 "\n"
@@ -6666,42 +6820,42 @@ msgid ""
 "open."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
 msgid ""
 "The <b>shotdetect</b> application does not seem to be installed. Please "
 "check that it is present and that its path is correctly specified in "
 "preferences."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
 msgid ""
 "Cannot import shotdetect output. Did you install the shotdetect software?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
 msgid "Incomplete shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
 #, python-format
 msgid "Detected %s shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
 #, python-format
 msgid "Could not run shotdetect: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
 #, python-format
 msgid "Detecting shots from %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
 msgid "Shot detection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
 msgid ""
 "<b>Shot detection</b>\n"
 "\n"
@@ -6711,13 +6865,13 @@ msgid ""
 "to augment its value."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
 msgid "Sensitivity"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
 msgid "Plain text content"
 msgstr ""
 
@@ -6727,8 +6881,8 @@ msgid "HTML content"
 msgstr "template HTML"
 
 #: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
 msgid "Simple-structured content"
 msgstr ""
 
@@ -6737,8 +6891,8 @@ msgid "List of numeric values"
 msgstr ""
 
 #: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
 msgid "SVG graphics content"
 msgstr ""
 
@@ -7019,49 +7173,41 @@ msgstr "Tutto"
 msgid "Importer"
 msgstr "Importatore"
 
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
 #, fuzzy
 msgid "Advene package importer"
 msgstr "Modifica proprietà pacchetto"
 
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
 msgid "Not likely"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
 #, python-format
 msgid "Completed conversion: %(statistics)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
 #: ../lib/advene/gui/edit/dvdselect.py:73
 msgid "Stop"
 msgstr "Stop"
 
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
 msgid "Choose the file to import"
 msgstr "Scegli un file da importare"
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr "Nome file"
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
 #, fuzzy
 msgid "Filter"
 msgstr "_File"
 
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
 #, fuzzy
 msgid "Options"
 msgstr "Relazioni"
 
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
 msgid "Start"
 msgstr ""
 
@@ -7131,8 +7277,8 @@ msgid ""
 msgstr ""
 
 #: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
 msgid "Rectangular zone content"
 msgstr ""
 
@@ -7195,7 +7341,7 @@ msgid "New resource data"
 msgstr ""
 
 #: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
 msgid "Properties"
 msgstr "Proprietà"
 
@@ -7440,7 +7586,7 @@ msgid "Error: cannot find a content handler for %s"
 msgstr ""
 
 #: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
 #, python-format
 msgid ""
 "Cannot read the data:\n"
@@ -7450,12 +7596,12 @@ msgstr ""
 "%s"
 
 #: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
 msgid "Save content to..."
 msgstr "Salva contenuto in..."
 
 #: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
 #, python-format
 msgid ""
 "Cannot save the data:\n"
@@ -7465,17 +7611,17 @@ msgstr ""
 "%s"
 
 #: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
 msgid "Open a file (C-o)"
 msgstr "Apri un file (C-o)"
 
 #: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
 msgid "Save to a file (C-s)"
 msgstr "Salva in un file (C-s)"
 
 #: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
 msgid "Reload the file (C-r)"
 msgstr "Ricarica il file (C-r)"
 
@@ -7483,15 +7629,15 @@ msgstr "Ricarica il file (C-r)"
 msgid "Insert a value from the browser (C-i)"
 msgstr "Inserisci un valore dal browser (C-i)"
 
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
 msgid "Begin time is greater than end time"
 msgstr "Il tempo di inizio è più grande di quello finale"
 
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
 msgid "Expecting an integer."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
 #, python-format
 msgid ""
 "The %(attribute)s attribute could not be updated:\n"
@@ -7501,7 +7647,7 @@ msgid ""
 "Resetting to the original value."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
 #, python-format
 msgid ""
 "The following attributes cannot be updated:\n"
@@ -7512,7 +7658,7 @@ msgstr ""
 "\n"
 "%s"
 
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
 #, python-format
 msgid ""
 "The following attributes could not be updated:\n"
@@ -7523,25 +7669,25 @@ msgstr ""
 "\n"
 "%s"
 
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
 msgid "Attribute"
 msgstr "Attributo"
 
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
 msgid "Insert an element"
 msgstr "Inserisci un elemento"
 
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
 msgid "Choose the element to insert."
 msgstr "Scegli un elemento da inserire."
 
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
 #, python-format
 msgid "Some tags contain invalid characters: %s"
 msgstr "Qualche tag contiene caratteri invalidi: %s"
 
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
 msgid "Tags:"
 msgstr ""
 
@@ -7652,8 +7798,9 @@ msgid "Condition expression: %s"
 msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
-msgstr ""
+#, fuzzy
+msgid "The annotation type"
+msgstr "di un tipo di annotazione"
 
 #: ../lib/advene/gui/edit/rules.py:768
 #, python-format
@@ -7711,8 +7858,9 @@ msgid "The element duration"
 msgstr ""
 
 #: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
-msgstr ""
+#, fuzzy
+msgid "The element type"
+msgstr "L'elemento"
 
 #: ../lib/advene/gui/edit/rules.py:794
 msgid "The element's incoming relations"
@@ -7730,6 +7878,16 @@ msgstr ""
 msgid "The context fragment"
 msgstr ""
 
+#: ../lib/advene/gui/edit/rules.py:809
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "Tipo di Annotazione"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "Tipo di Annotazione"
+
 #: ../lib/advene/gui/edit/rules.py:834
 msgid "Select a condition"
 msgstr "Seleziona una condizione"
@@ -7747,58 +7905,58 @@ msgstr "Seleziona un'azione"
 msgid "Activate?"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
 msgid "Schema Editor"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
 #, fuzzy
 msgid "Display"
 msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
 #, fuzzy
 msgid "Remove relation type"
 msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
 msgid "Create HTML view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
 #, fuzzy
 msgid "Remove annotation type"
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
 msgid "Create relation type between this one and..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
 #, fuzzy
 msgid "New schema"
 msgstr "Schema"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
 #, fuzzy
 msgid "New annotation type"
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
 #, fuzzy
 msgid "New relation type"
 msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
 msgid "Hide this schema"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
 msgid "Export drawing to pdf"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
 msgid "Choose a filename to export the schema as PDF"
 msgstr ""
 
@@ -8085,103 +8243,103 @@ msgstr ""
 msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
 msgid "Generic shape"
 msgstr "Forma generica"
 
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
 #, python-format
 msgid "Link to %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
 msgid "Link"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
 msgid "Link label"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
 msgid "Linewidth"
 msgstr "LarghezzaLinea"
 
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
 msgid "Filled"
 msgstr "Riempito"
 
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
 #, python-format
 msgid "Properties of %s"
 msgstr "Proprietà di %s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
 msgid "Rectangle"
 msgstr "Rettangolo"
 
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
 msgid "Text"
 msgstr "Testo"
 
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
 msgid "Textsize"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
 msgid "Image"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
 msgid "Href"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
 msgid "Line"
 msgstr "Linea"
 
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
 msgid "Draw an arrow"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
 msgid "Arrow size"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
 msgid "Circle"
 msgstr "Cerchio"
 
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
 msgid "Ellipse"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
 msgid "SVG"
 msgstr "SVG"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
 msgid "Load SVG"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
 #, fuzzy
 msgid "Save SVG"
 msgstr "Salva"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
 #, python-format
 msgid "Decrement value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
 #, python-format
 msgid "Increment value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
 msgid ""
 "Click to play\n"
 "Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8189,7 +8347,7 @@ msgid ""
 "Right-click to invalidate screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
 msgid ""
 "Enter a timecode.\n"
 "An integer value will be considered as milliseconds.\n"
@@ -8197,7 +8355,7 @@ msgid ""
 "HH:MM:SS.sss values are possible."
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
 msgid "Set to current player position"
 msgstr ""
 
@@ -8834,6 +8992,16 @@ msgstr ""
 msgid "Directory %s is not an extracted Advene zip package."
 msgstr ""
 
+#, fuzzy
+#~ msgid "Aiff importer"
+#~ msgstr "Importatore"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Modifica elementi importati da altri pacchetti"
+
+#~ msgid "Filename"
+#~ msgstr "Nome file"
+
 #~ msgid "SPARQL query"
 #~ msgstr "Ricerca SPARQL"
 
@@ -8842,10 +9010,6 @@ msgstr ""
 #~ msgstr "Visualizza %s"
 
 #, fuzzy
-#~ msgid "Display snapshot"
-#~ msgstr "Visualizza %s"
-
-#, fuzzy
 #~ msgid "Exporter"
 #~ msgstr "Importatore"
 
diff --git a/scripts/package_sorter.py b/scripts/package_sorter.py
index 9bec72e..5299ddc 100755
--- a/scripts/package_sorter.py
+++ b/scripts/package_sorter.py
@@ -21,8 +21,8 @@ by timestamp, and all other elements ordered by id.
 """
 import sys
 
-import elementtree.ElementTree
-from elementtree.ElementTree import parse, Element, ElementTree, QName
+import xml.etree.ElementTree as ET
+from xml.etree.ElementTree import parse, Element, ElementTree, QName
 import string
 
 def tag(name):
@@ -89,9 +89,9 @@ def sort_time(source):
 
 # Namespace handling
 ns='http://experience.univ-lyon1.fr/advene/ns'
-elementtree.ElementTree._namespace_map[ns]=''
-elementtree.ElementTree._namespace_map['http://purl.org/dc/elements/1.1/']='dc'
-elementtree.ElementTree._namespace_map['http://experience.univ-lyon1.fr/advene/ns/advenetool']='advenetool'
+ET._namespace_map[ns]=''
+ET._namespace_map['http://purl.org/dc/elements/1.1/']='dc'
+ET._namespace_map['http://experience.univ-lyon1.fr/advene/ns/advenetool']='advenetool'
 
 # Hack into elementtree to generate a readable (namespace-prefix-wise)
 # Advene package
@@ -103,7 +103,7 @@ def my_fixtag(tag, namespaces):
     namespace_uri, tag = string.split(tag[1:], "}", 1)
     prefix = namespaces.get(namespace_uri)
     if prefix is None:
-        prefix = elementtree.ElementTree._namespace_map.get(namespace_uri)
+        prefix = ET._namespace_map.get(namespace_uri)
         if prefix is None:
             prefix = "ns%d" % len(namespaces)
         namespaces[namespace_uri] = prefix
@@ -123,7 +123,7 @@ def my_fixtag(tag, namespaces):
         return "%s:%s" % (prefix, tag), xmlns
 
 # Hook into elementtree
-elementtree.ElementTree.fixtag = my_fixtag
+ET.fixtag = my_fixtag
 
 tree = parse(sys.argv[1])
 source = tree.getroot()
diff --git a/setup.py b/setup.py
index 115565b..4dc0634 100755
--- a/setup.py
+++ b/setup.py
@@ -114,7 +114,7 @@ def get_packages_list():
     """
     l=[]
     def ispackage(pl, dirname, fnames):
-        if sys.platform == 'linux2' and ('cherrypy' in dirname or dirname.endswith('simpletal')):
+        if 'linux' in sys.platform and ('cherrypy' in dirname or dirname.endswith('simpletal')):
             # On linux (at least, Debian and Ubuntu), cherrypy and
             # simpletal are packaged. So do not consider them in the
             # packages list.
@@ -165,7 +165,7 @@ def generate_data_files():
     if os.path.isdir("locale"):
         r.extend(generate_data_dir("locale", prefix=prefix))
     else:
-        raise Exception("""**WARNING** You should generate the locales with "cd po; make mo".""")
+        print """**WARNING** You should generate the locales with "cd po; make mo"."""
     if sys.platform.startswith('linux'):
         # Install specific data files
         r.append( ( 'share/applications', [ 'debian/advene.desktop' ] ) )
diff --git a/share/exporters.xml b/share/exporters.xml
index 3bdc7d2..50ecaaa 100644
--- a/share/exporters.xml
+++ b/share/exporters.xml
@@ -359,7 +359,7 @@ div.${a/id} {
     <view dc:creator="oaubert" dc:date="2008-01-17" id="Advene2" viewable-class="package">
       <meta>
         <title xmlns="http://purl.org/dc/elements/1.1/">Advene2</title>
-	<extension xmlns="http://experience.univ-lyon1.fr/advene/ns/advenetool">advene2.xml</extension>
+	<extension xmlns="http://experience.univ-lyon1.fr/advene/ns/advenetool">cxp</extension>
       </meta>
       <content encoding="utf-8" mime-type="application/xml"><!-- Cinelab Advene XML exporter - v0.2 -->
 <package xmlns="http://advene.org/ns/cinelab/"
diff --git a/share/pixmaps/align.svg b/share/pixmaps/align.svg
index 27c2c45..3b612ba 100644
--- a/share/pixmaps/align.svg
+++ b/share/pixmaps/align.svg
@@ -1,121 +1,52 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 20010904//EN'  'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
 <!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
-<svg
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   height="60.0000000"
-   id="svg1"
-   inkscape:version="0.38.1"
-   sodipodi:docname="/home/oaubert/align.svg"
-   sodipodi:version="0.34"
-   version="1.0"
-   width="60.0000000"
-   x="0"
-   y="0"
-   sodipodi:docbase="/home/oaubert">
-  <metadata
-     id="metadata603">
-    <rdf:RDF
-       xmlns:cc="http://web.resource.org/cc/"
-       xmlns:dc="http://purl.org/dc/elements/1.1/"
-       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-      <cc:Work
-         rdf:about="">
-        <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
-        <dc:description />
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>hash</rdf:li>
-            <rdf:li />
-            <rdf:li>action</rdf:li>
-            <rdf:li>computer</rdf:li>
-            <rdf:li>icons</rdf:li>
-            <rdf:li>theme</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <dc:publisher>
-          <cc:Agent
-             rdf:about="http://www.openclipart.org">
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:publisher>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:rights>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:rights>
-        <dc:date />
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <cc:license
-           rdf:resource="http://web.resource.org/cc/PublicDomain" />
-        <dc:language>en</dc:language>
-      </cc:Work>
-      <cc:License
-         rdf:about="http://web.resource.org/cc/PublicDomain">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     bordercolor="#666666"
-     borderopacity="1.0"
-     id="base"
-     inkscape:cx="42.359450"
-     inkscape:cy="21.800884"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:window-height="685"
-     inkscape:window-width="1016"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:zoom="9.8238822"
-     pagecolor="#ffffff" />
-  <defs
-     id="defs3" />
-  <rect
-     height="19.5551453"
-     id="rect827"
-     rx="1.07113779"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="font-size:12;fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.684026;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.684 3.684 ;stroke-dashoffset:0;"
-     transform="scale(-1,1)"
-     width="27.1772994"
-     x="-46.2274172"
-     y="4.93179989" />
-  <rect
-     height="24.409506"
-     id="rect828"
-     rx="1.1264629"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
-     transform="scale(-1.000000,1.000000)"
-     width="28.581030"
-     x="-47.460871"
-     y="31.196968" />
-  <path
-     d="M 11.089338,3.8867457 L 11.089338,56.055531"
-     id="path829"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;" />
-  <path
-     d="M 54.08614 3.886746 L 54.08614 56.05553 "
-     id="path609"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;" />
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata id="metadata603">
+  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+   <cc:Work rdf:about="">
+    <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+    <dc:description/>
+    <dc:subject>
+     <rdf:Bag>
+      <rdf:li>hash</rdf:li>
+      <rdf:li/>
+      <rdf:li>action</rdf:li>
+      <rdf:li>computer</rdf:li>
+      <rdf:li>icons</rdf:li>
+      <rdf:li>theme</rdf:li>
+     </rdf:Bag>
+    </dc:subject>
+    <dc:publisher>
+     <cc:Agent rdf:about="http://www.openclipart.org">
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:publisher>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:creator>
+    <dc:rights>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:rights>
+    <dc:date/>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+    <dc:language>en</dc:language>
+   </cc:Work>
+   <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+    <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+   </cc:License>
+  </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx="1.0711" transform="scale(-1,1)" height="19.555" width="27.177" stroke="#333" stroke-linecap="round" stroke-dasharray="3.684 3.684" y="4.9318" x="-46.227" stroke-width="3.684" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1 1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-47.461" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m11.089 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
+ <path id="path609" stroke-linejoin="round" d="m54.086 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
 </svg>
diff --git a/share/pixmaps/begin-begin.svg b/share/pixmaps/begin-begin.svg
index f1caac4..0bb4472 100644
--- a/share/pixmaps/begin-begin.svg
+++ b/share/pixmaps/begin-begin.svg
@@ -1,53 +1,51 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="60.0000000" id="svg1" inkscape:version="0.38.1" sodipodi:docbase="/home/danny/flat/scalable/actions" sodipodi:docname="aoleft.svg" sodipodi:version="0.32" version="1.0" width="60.0000000" x="0" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" y="0">
-  <metadata>
-    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-      <cc:Work rdf:about="">
-        <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
-        <dc:description></dc:description>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>hash</rdf:li>
-            <rdf:li></rdf:li>
-            <rdf:li>action</rdf:li>
-            <rdf:li>computer</rdf:li>
-            <rdf:li>icons</rdf:li>
-            <rdf:li>theme</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <dc:publisher>
-          <cc:Agent rdf:about="http://www.openclipart.org">
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:publisher>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:rights>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:rights>
-        <dc:date></dc:date>
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
-        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
-        <dc:language>en</dc:language>
-      </cc:Work>
-      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
-        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
-        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
-        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:cx="42.359450" inkscape:cy="21.800884" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="685" inkscape:window-width="1016" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="9.8238822" pagecolor="#ffffff"/>
-  <defs id="defs3"/>
-  <rect height="19.555145" id="rect827" rx="0.77072614" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;" transform="scale(-1.000000,1.000000)" width="19.555145" x="-38.605261" y="4.9317999"/>
-  <rect height="24.409506" id="rect828" rx="1.1264629" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;" transform="scale(-1.000000,1.000000)" width="28.581030" x="-47.460871" y="31.196968"/>
-  <path d="M 11.089338,3.8867457 L 11.089338,56.055531" id="path829" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;"/>
+<!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 20010904//EN'  'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+   <cc:Work rdf:about="">
+    <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+    <dc:description/>
+    <dc:subject>
+     <rdf:Bag>
+      <rdf:li>hash</rdf:li>
+      <rdf:li/>
+      <rdf:li>action</rdf:li>
+      <rdf:li>computer</rdf:li>
+      <rdf:li>icons</rdf:li>
+      <rdf:li>theme</rdf:li>
+     </rdf:Bag>
+    </dc:subject>
+    <dc:publisher>
+     <cc:Agent rdf:about="http://www.openclipart.org">
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:publisher>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:creator>
+    <dc:rights>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:rights>
+    <dc:date/>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+    <dc:language>en</dc:language>
+   </cc:Work>
+   <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+    <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+   </cc:License>
+  </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" transform="scale(-1 1)" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="-38.605" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1 1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-47.461" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m11.089 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
 </svg>
diff --git a/share/pixmaps/begin-end.svg b/share/pixmaps/begin-end.svg
index ba3a377..5579fa7 100644
--- a/share/pixmaps/begin-end.svg
+++ b/share/pixmaps/begin-end.svg
@@ -1,116 +1,51 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 20010904//EN'  'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
 <!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
-<svg
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   height="60.0000000"
-   id="svg1"
-   inkscape:version="0.38.1"
-   sodipodi:docname="/home/oaubert/icons/begin-end.svg"
-   sodipodi:version="0.34"
-   version="1.0"
-   width="60.0000000"
-   x="0"
-   y="0"
-   sodipodi:docbase="/home/oaubert/icons">
-  <metadata
-     id="metadata603">
-    <rdf:RDF
-       xmlns:cc="http://web.resource.org/cc/"
-       xmlns:dc="http://purl.org/dc/elements/1.1/"
-       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-      <cc:Work
-         rdf:about="">
-        <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
-        <dc:description />
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>hash</rdf:li>
-            <rdf:li />
-            <rdf:li>action</rdf:li>
-            <rdf:li>computer</rdf:li>
-            <rdf:li>icons</rdf:li>
-            <rdf:li>theme</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <dc:publisher>
-          <cc:Agent
-             rdf:about="http://www.openclipart.org">
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:publisher>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:rights>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:rights>
-        <dc:date />
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <cc:license
-           rdf:resource="http://web.resource.org/cc/PublicDomain" />
-        <dc:language>en</dc:language>
-      </cc:Work>
-      <cc:License
-         rdf:about="http://web.resource.org/cc/PublicDomain">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     bordercolor="#666666"
-     borderopacity="1.0"
-     id="base"
-     inkscape:cx="42.359450"
-     inkscape:cy="21.800884"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:window-height="685"
-     inkscape:window-width="1016"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:zoom="9.8238822"
-     pagecolor="#ffffff" />
-  <defs
-     id="defs3" />
-  <rect
-     height="19.5551453"
-     id="rect827"
-     rx="0.77072614"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
-     transform="scale(-1,1)"
-     width="19.5551453"
-     x="-58.1492523"
-     y="4.93179989" />
-  <rect
-     height="24.4095058"
-     id="rect828"
-     rx="1.12646294"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
-     transform="scale(-1,1)"
-     width="28.5810299"
-     x="-29.8712841"
-     y="31.1969681" />
-  <path
-     d="M 34.54214 3.886746 L 34.54214 56.05553 "
-     id="path829"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;" />
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata id="metadata603">
+  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+   <cc:Work rdf:about="">
+    <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+    <dc:description/>
+    <dc:subject>
+     <rdf:Bag>
+      <rdf:li>hash</rdf:li>
+      <rdf:li/>
+      <rdf:li>action</rdf:li>
+      <rdf:li>computer</rdf:li>
+      <rdf:li>icons</rdf:li>
+      <rdf:li>theme</rdf:li>
+     </rdf:Bag>
+    </dc:subject>
+    <dc:publisher>
+     <cc:Agent rdf:about="http://www.openclipart.org">
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:publisher>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:creator>
+    <dc:rights>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:rights>
+    <dc:date/>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+    <dc:language>en</dc:language>
+   </cc:Work>
+   <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+    <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+   </cc:License>
+  </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" transform="scale(-1,1)" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="-58.149" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1,1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-29.871" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m34.542 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
 </svg>
diff --git a/share/pixmaps/create-relations.svg b/share/pixmaps/create-relations.svg
index 16c81b6..4a5938a 100644
--- a/share/pixmaps/create-relations.svg
+++ b/share/pixmaps/create-relations.svg
@@ -1,116 +1,51 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 20010904//EN'  'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
 <!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
-<svg
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   height="60.0000000"
-   id="svg1"
-   inkscape:version="0.38.1"
-   sodipodi:docname="create_relations.svg"
-   sodipodi:version="0.34"
-   version="1.0"
-   width="60.0000000"
-   x="0"
-   y="0">
-  <metadata
-     id="metadata603">
-    <rdf:RDF
-       xmlns:cc="http://web.resource.org/cc/"
-       xmlns:dc="http://purl.org/dc/elements/1.1/"
-       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-      <cc:Work
-         rdf:about="">
-        <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
-        <dc:description />
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>hash</rdf:li>
-            <rdf:li />
-            <rdf:li>action</rdf:li>
-            <rdf:li>computer</rdf:li>
-            <rdf:li>icons</rdf:li>
-            <rdf:li>theme</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <dc:publisher>
-          <cc:Agent
-             rdf:about="http://www.openclipart.org">
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:publisher>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:rights>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:rights>
-        <dc:date />
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <cc:license
-           rdf:resource="http://web.resource.org/cc/PublicDomain" />
-        <dc:language>en</dc:language>
-      </cc:Work>
-      <cc:License
-         rdf:about="http://web.resource.org/cc/PublicDomain">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     bordercolor="#666666"
-     borderopacity="1.0"
-     id="base"
-     inkscape:cx="42.359450"
-     inkscape:cy="21.800884"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:window-height="685"
-     inkscape:window-width="1016"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:zoom="9.8238822"
-     pagecolor="#ffffff" />
-  <defs
-     id="defs3" />
-  <rect
-     height="19.5551453"
-     id="rect827"
-     rx="0.77072614"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
-     transform="scale(-1,1)"
-     width="19.5551453"
-     x="-24.924477"
-     y="4.93179989" />
-  <rect
-     height="24.4095058"
-     id="rect828"
-     rx="1.12646294"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
-     transform="scale(-1,1)"
-     width="28.5810299"
-     x="-53.3240715"
-     y="31.1969681" />
-  <path
-     d="M 19.93695 13.62965 C 35.15077 21.16129 32.57066 33.91648 32.57066 34.03796 L 27.10415 34.03796 L 35.38843 41.12594 L 43.32147 33.97722 L 37.79422 33.97722 C 37.79422 33.97722 40.48656 16.30216 19.93695 13.62965 z "
-     id="path968"
-     sodipodi:nodetypes="ccccccc"
-     sodipodi:stroke-cmyk="(0 0 0 0.8)"
-     style="font-size:12;fill:#7f7f7f;fill-rule:evenodd;stroke:#333333;stroke-width:2.777366;stroke-linecap:round;stroke-linejoin:round;" />
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata id="metadata603">
+  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+   <cc:Work rdf:about="">
+    <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+    <dc:description/>
+    <dc:subject>
+     <rdf:Bag>
+      <rdf:li>hash</rdf:li>
+      <rdf:li/>
+      <rdf:li>action</rdf:li>
+      <rdf:li>computer</rdf:li>
+      <rdf:li>icons</rdf:li>
+      <rdf:li>theme</rdf:li>
+     </rdf:Bag>
+    </dc:subject>
+    <dc:publisher>
+     <cc:Agent rdf:about="http://www.openclipart.org">
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:publisher>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:creator>
+    <dc:rights>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:rights>
+    <dc:date/>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+    <dc:language>en</dc:language>
+   </cc:Work>
+   <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+    <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+   </cc:License>
+  </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" transform="scale(-1,1)" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="-24.924" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1,1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-53.324" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path968" stroke-linejoin="round" d="m19.937 13.63c15.214 7.531 12.634 20.286 12.634 20.408h-5.467l8.284 7.088 7.933-7.149h-5.527s2.693-17.675-17.857-20.347z" fill-rule="evenodd" stroke="#333" stroke-linecap="round" stroke-width="2.7774" fill="#7f7f7f"/>
 </svg>
diff --git a/share/pixmaps/end-begin.svg b/share/pixmaps/end-begin.svg
index e54b9f7..42236f6 100644
--- a/share/pixmaps/end-begin.svg
+++ b/share/pixmaps/end-begin.svg
@@ -1,116 +1,51 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 20010904//EN'  'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
 <!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
-<svg
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   height="60.0000000"
-   id="svg1"
-   inkscape:version="0.38.1"
-   sodipodi:docname="/home/oaubert/icons/end-begin.svg"
-   sodipodi:version="0.34"
-   version="1.0"
-   width="60.0000000"
-   x="0"
-   y="0"
-   sodipodi:docbase="/home/oaubert/icons">
-  <metadata
-     id="metadata603">
-    <rdf:RDF
-       xmlns:cc="http://web.resource.org/cc/"
-       xmlns:dc="http://purl.org/dc/elements/1.1/"
-       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-      <cc:Work
-         rdf:about="">
-        <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
-        <dc:description />
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>hash</rdf:li>
-            <rdf:li />
-            <rdf:li>action</rdf:li>
-            <rdf:li>computer</rdf:li>
-            <rdf:li>icons</rdf:li>
-            <rdf:li>theme</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <dc:publisher>
-          <cc:Agent
-             rdf:about="http://www.openclipart.org">
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:publisher>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:rights>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:rights>
-        <dc:date />
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <cc:license
-           rdf:resource="http://web.resource.org/cc/PublicDomain" />
-        <dc:language>en</dc:language>
-      </cc:Work>
-      <cc:License
-         rdf:about="http://web.resource.org/cc/PublicDomain">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     bordercolor="#666666"
-     borderopacity="1.0"
-     id="base"
-     inkscape:cx="42.359450"
-     inkscape:cy="21.800884"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:window-height="685"
-     inkscape:window-width="1016"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:zoom="9.8238822"
-     pagecolor="#ffffff" />
-  <defs
-     id="defs3" />
-  <rect
-     height="19.5551453"
-     id="rect827"
-     rx="0.77072614"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
-     transform="scale(-1,1)"
-     width="19.5551453"
-     x="-21.0156819"
-     y="4.93179989" />
-  <rect
-     height="24.4095058"
-     id="rect828"
-     rx="1.12646294"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
-     transform="scale(-1,1)"
-     width="28.5810299"
-     x="-57.2328666"
-     y="31.1969681" />
-  <path
-     d="M 24.77014 3.886746 L 24.77014 56.05553 "
-     id="path829"
-     sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
-     style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;" />
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata id="metadata603">
+  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+   <cc:Work rdf:about="">
+    <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+    <dc:description/>
+    <dc:subject>
+     <rdf:Bag>
+      <rdf:li>hash</rdf:li>
+      <rdf:li/>
+      <rdf:li>action</rdf:li>
+      <rdf:li>computer</rdf:li>
+      <rdf:li>icons</rdf:li>
+      <rdf:li>theme</rdf:li>
+     </rdf:Bag>
+    </dc:subject>
+    <dc:publisher>
+     <cc:Agent rdf:about="http://www.openclipart.org">
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:publisher>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:creator>
+    <dc:rights>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:rights>
+    <dc:date/>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+    <dc:language>en</dc:language>
+   </cc:Work>
+   <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+    <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+   </cc:License>
+  </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" transform="scale(-1,1)" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="-21.016" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1,1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-57.233" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m24.77 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
 </svg>
diff --git a/share/pixmaps/end-end.svg b/share/pixmaps/end-end.svg
index 2e2cb0b..53ee559 100644
--- a/share/pixmaps/end-end.svg
+++ b/share/pixmaps/end-end.svg
@@ -1,53 +1,51 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="60.0000000" id="svg1" inkscape:version="0.38.1" sodipodi:docbase="/home/danny/flat/scalable/actions" sodipodi:docname="aoright.svg" sodipodi:version="0.32" version="1.0" width="60.0000000" x="0" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" y="0">
-  <metadata>
-    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-      <cc:Work rdf:about="">
-        <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
-        <dc:description></dc:description>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>hash</rdf:li>
-            <rdf:li></rdf:li>
-            <rdf:li>action</rdf:li>
-            <rdf:li>computer</rdf:li>
-            <rdf:li>icons</rdf:li>
-            <rdf:li>theme</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <dc:publisher>
-          <cc:Agent rdf:about="http://www.openclipart.org">
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:publisher>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:rights>
-          <cc:Agent>
-            <dc:title>Danny Allen</dc:title>
-          </cc:Agent>
-        </dc:rights>
-        <dc:date></dc:date>
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
-        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
-        <dc:language>en</dc:language>
-      </cc:Work>
-      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
-        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
-        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
-        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:cx="42.359450" inkscape:cy="21.800884" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="685" inkscape:window-width="1016" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="9.8238822" pagecolor="#ffffff"/>
-  <defs id="defs3"/>
-  <rect height="19.555145" id="rect827" rx="0.77072614" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;" width="19.555145" x="19.944946" y="4.9317999"/>
-  <rect height="24.409506" id="rect828" rx="1.1264629" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;" width="28.581030" x="11.089336" y="31.196968"/>
-  <path d="M 47.460870,3.8867457 L 47.460870,56.055531" id="path829" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;"/>
+<!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 20010904//EN'  'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+   <cc:Work rdf:about="">
+    <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+    <dc:description/>
+    <dc:subject>
+     <rdf:Bag>
+      <rdf:li>hash</rdf:li>
+      <rdf:li/>
+      <rdf:li>action</rdf:li>
+      <rdf:li>computer</rdf:li>
+      <rdf:li>icons</rdf:li>
+      <rdf:li>theme</rdf:li>
+     </rdf:Bag>
+    </dc:subject>
+    <dc:publisher>
+     <cc:Agent rdf:about="http://www.openclipart.org">
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:publisher>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:creator>
+    <dc:rights>
+     <cc:Agent>
+      <dc:title>Danny Allen</dc:title>
+     </cc:Agent>
+    </dc:rights>
+    <dc:date/>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+    <dc:language>en</dc:language>
+   </cc:Work>
+   <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+    <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+    <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+   </cc:License>
+  </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="19.945" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="11.089" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m47.461 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
 </svg>
diff --git a/share/pixmaps/notavailable.svg b/share/pixmaps/notavailable.svg
index 88f690a..16a70f5 100644
--- a/share/pixmaps/notavailable.svg
+++ b/share/pixmaps/notavailable.svg
@@ -1,231 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.47 r22583"
-   sodipodi:docname="New document 1">
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective10" />
-    <linearGradient
-       xlink:href="#linearGradient584"
-       id="linearGradient713" />
-    <linearGradient
-       xlink:href="#linearGradient584"
-       id="linearGradient655" />
-    <linearGradient
-       y2="27.92713"
-       y1="27.300219"
-       xlink:href="#linearGradient584"
-       x2="82.883222"
-       x1="8.6040409"
-       id="linearGradient654"
-       gradientTransform="scale(0.98641893,1.0137681)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       y2="0.97656250"
-       y1="0.00000000"
-       xlink:href="#linearGradient584"
-       x2="0.99264705"
-       x1="-0.00000000"
-       id="linearGradient583" />
-    <linearGradient
-       y2="0.30468750"
-       y1="0.29687500"
-       xlink:href="#linearGradient584"
-       x2="1.7348485"
-       x1="0.11363637"
-       id="linearGradient581" />
-    <linearGradient
-       id="linearGradient578">
-      <stop
-         style="stop-color:#faf8fd;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop579" />
-      <stop
-         style="stop-color:#e7e7ec;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop580" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient584">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0.00000000"
-         id="stop585" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1.00000000"
-         id="stop586" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective3813"
-       inkscape:persp3d-origin="30 : 20 : 1"
-       inkscape:vp_z="60 : 30 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 30 : 1"
-       sodipodi:type="inkscape:persp3d" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="219.58823"
-     inkscape:cy="825.15838"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1185"
-     inkscape:window-height="956"
-     inkscape:window-x="436"
-     inkscape:window-y="85"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       id="g3827"
-       transform="translate(95.645286,66.733254)">
-      <path
-         transform="matrix(1.361979,0,0,1.312826,-11.00257,-10.33036)"
-         style="fill:#040000;fill-opacity:0.38709675;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-dasharray:none"
-         sodipodi:type="arc"
-         sodipodi:ry="19.581497"
-         sodipodi:rx="19.033215"
-         sodipodi:cy="31.489342"
-         sodipodi:cx="32.505283"
-         id="path868"
-         d="m 51.538498,31.489342 c 0,10.814562 -8.52146,19.581497 -19.033215,19.581497 -10.511754,0 -19.033214,-8.766935 -19.033214,-19.581497 0,-10.814563 8.52146,-19.581497 19.033214,-19.581497 10.511755,0 19.033215,8.766934 19.033215,19.581497 z" />
-      <path
-         transform="matrix(1.361979,0,0,1.312826,-14.98163,-11.82263)"
-         style="fill:url(#linearGradient654);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.48410451;stroke-dasharray:none"
-         sodipodi:type="arc"
-         sodipodi:ry="19.581497"
-         sodipodi:rx="19.033215"
-         sodipodi:cy="31.489342"
-         sodipodi:cx="32.505283"
-         id="path867"
-         d="m 51.538498,31.489342 c 0,10.814562 -8.52146,19.581497 -19.033215,19.581497 -10.511754,0 -19.033214,-8.766935 -19.033214,-19.581497 0,-10.814563 8.52146,-19.581497 19.033214,-19.581497 10.511755,0 19.033215,8.766934 19.033215,19.581497 z" />
-      <rect
-         y="-10.326379"
-         x="27.806158"
-         width="2.2618494"
-         transform="matrix(0.00954856,0.999954,-0.999954,0.00954856,0,0)"
-         style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128801"
-         ry="0.44765007"
-         id="rect867"
-         height="4.5154271" />
-      <rect
-         y="-10.326379"
-         x="31.252497"
-         width="2.2618494"
-         transform="matrix(0.00954856,0.999954,-0.999954,0.00954856,0,0)"
-         style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128801"
-         ry="0.44765007"
-         id="rect869"
-         height="4.5154271" />
-      <rect
-         y="8.7426128"
-         x="25.558443"
-         width="2.2618504"
-         style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128816"
-         ry="0.44765025"
-         id="rect870"
-         height="4.515429" />
-      <rect
-         y="8.7426128"
-         x="29.004787"
-         width="2.2618504"
-         style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128816"
-         ry="0.44765025"
-         id="rect871"
-         height="4.515429" />
-      <rect
-         y="46.965694"
-         x="26.341703"
-         width="2.2618504"
-         style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128816"
-         ry="0.44765025"
-         id="rect872"
-         height="4.515429" />
-      <rect
-         y="46.965694"
-         x="29.788048"
-         width="2.2618504"
-         style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128816"
-         ry="0.44765025"
-         id="rect873"
-         height="4.515429" />
-      <rect
-         y="-52.152042"
-         x="28.048891"
-         width="2.2618494"
-         transform="matrix(0.00954856,0.999954,-0.999954,0.00954856,0,0)"
-         style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128801"
-         ry="0.44765007"
-         id="rect874"
-         height="4.5154271" />
-      <rect
-         y="-52.152042"
-         x="31.495232"
-         width="2.2618494"
-         transform="matrix(0.00954856,0.999954,-0.999954,0.00954856,0,0)"
-         style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128801"
-         ry="0.44765007"
-         id="rect875"
-         height="4.5154271" />
-      <path
-         style="fill:#060000;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9311511pt"
-         sodipodi:nodetypes="ccccc"
-         id="path878"
-         d="M 44.363193,2.2659208 C 40.620747,6.212992 31.984577,19.003567 28.862911,24.185346 c -2.525545,4.7451 -4.25612,7.57534 -4.447045,12.371088 3.667771,-2.393283 5.423096,-4.408826 8.19705,-9.573844 C 35.436522,22.01915 42.880723,7.531867 44.363193,2.2659208 z" />
-      <path
-         style="fill:#060000;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.69347134pt"
-         sodipodi:nodetypes="ccccc"
-         id="path879"
-         d="m 48.606771,25.363257 c -4.154694,0.129301 -15.620391,2.325809 -20.049679,3.407639 -3.865456,1.160226 -6.299312,1.738104 -8.854761,4.113045 3.319414,0.633638 5.351872,0.488327 9.573655,-0.761892 4.147372,-1.121027 15.796492,-4.799024 19.330785,-6.758792 z" />
-    </g>
-    <rect
-       y="37.362183"
-       x="45.714287"
-       height="120"
-       width="160"
-       id="rect3590"
-       style="fill:#d8d8d8;fill-opacity:0.73305082;stroke:#bababa;stroke-width:3;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="1052.4" width="744.09" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <defs id="defs4">
+  <linearGradient id="linearGradient654" y2="27.927" gradientUnits="userSpaceOnUse" x2="82.883" gradientTransform="scale(.98642 1.0138)" y1="27.3" x1="8.604">
+   <stop id="stop585" stop-color="#fff" offset="0"/>
+   <stop id="stop586" stop-color="#fff" stop-opacity="0" offset="1"/>
+  </linearGradient>
+ </defs>
+ <metadata id="metadata7">
+  <rdf:RDF>
+   <cc:Work rdf:about="">
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:title/>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+  <g id="g3827" fill-rule="evenodd" transform="translate(95.645 66.733)">
+   <path id="path868" d="m51.538 31.489c0 10.815-8.5215 19.581-19.033 19.581s-19.033-8.7669-19.033-19.581c0-10.815 8.5215-19.581 19.033-19.581s19.033 8.7669 19.033 19.581z" fill-opacity=".38710" transform="matrix(1.362 0 0 1.3128 -11.003 -10.33)" stroke-width="0" fill="#040000"/>
+   <path id="path867" d="m51.538 31.489c0 10.815-8.5215 19.581-19.033 19.581s-19.033-8.7669-19.033-19.581c0-10.815 8.5215-19.581 19.033-19.581s19.033 8.7669 19.033 19.581z" transform="matrix(1.362 0 0 1.3128 -14.982 -11.823)" stroke="#000" stroke-width="1.4841" fill="url(#linearGradient654)"/>
+   <rect id="rect867" stroke-width=".36129" fill-opacity=".75" transform="matrix(.0095486 .99995 -.99995 .0095486 0 0)" ry=".44765" width="2.2618" stroke="#000" y="-10.326" x="27.806" height="4.5154" fill="#0a0608"/>
+   <rect id="rect869" stroke-width=".36129" fill-opacity=".75" transform="matrix(.0095486 .99995 -.99995 .0095486 0 0)" ry=".44765" width="2.2618" stroke="#000" y="-10.326" x="31.252" height="4.5154" fill="#0a0608"/>
+   <rect id="rect870" fill-opacity=".75" ry=".44765" height="4.5154" width="2.2619" stroke="#000" y="8.7426" x="25.558" stroke-width=".36129" fill="#0a0608"/>
+   <rect id="rect871" fill-opacity=".75" ry=".44765" height="4.5154" width="2.2619" stroke="#000" y="8.7426" x="29.005" stroke-width=".36129" fill="#0a0608"/>
+   <rect id="rect872" fill-opacity=".75" ry=".44765" height="4.5154" width="2.2619" stroke="#000" y="46.966" x="26.342" stroke-width=".36129" fill="#0a0608"/>
+   <rect id="rect873" fill-opacity=".75" ry=".44765" height="4.5154" width="2.2619" stroke="#000" y="46.966" x="29.788" stroke-width=".36129" fill="#0a0608"/>
+   <rect id="rect874" stroke-width=".36129" fill-opacity=".75" transform="matrix(.0095486 .99995 -.99995 .0095486 0 0)" ry=".44765" width="2.2618" stroke="#000" y="-52.152" x="28.049" height="4.5154" fill="#0a0608"/>
+   <rect id="rect875" stroke-width=".36129" fill-opacity=".75" transform="matrix(.0095486 .99995 -.99995 .0095486 0 0)" ry=".44765" width="2.2618" stroke="#000" y="-52.152" x="31.495" height="4.5154" fill="#0a0608"/>
+   <path id="path878" d="m44.363 2.2659c-3.742 3.9471-12.378 16.738-15.5 21.919-2.5255 4.7451-4.2561 7.5753-4.447 12.371 3.6678-2.3933 5.4231-4.4088 8.197-9.5738 2.824-4.963 10.268-19.45 11.75-24.716z" fill-opacity=".75" stroke="#000" stroke-width=".93115pt" fill="#060000"/>
+   <path id="path879" d="m48.607 25.363c-4.1547 0.1293-15.62 2.3258-20.05 3.4076-3.8655 1.1602-6.2993 1.7381-8.8548 4.113 3.3194 0.63364 5.3519 0.48833 9.5737-0.76189 4.1474-1.121 15.796-4.799 19.331-6.7588z" fill-opacity=".75" stroke="#000" stroke-width=".69347pt" fill="#060000"/>
   </g>
+  <rect id="rect3590" stroke-linejoin="round" fill-opacity=".73305" height="120" width="160" stroke="#bababa" y="37.362" x="45.714" stroke-width="3" fill="#d8d8d8"/>
+ </g>
 </svg>
diff --git a/share/pixmaps/small_locked.png b/share/pixmaps/small_locked.png
new file mode 100644
index 0000000..b1fb09d
Binary files /dev/null and b/share/pixmaps/small_locked.png differ
diff --git a/share/pixmaps/snapshotter-running.png b/share/pixmaps/snapshotter-running.png
index a8b75f5..9931b10 100644
Binary files a/share/pixmaps/snapshotter-running.png and b/share/pixmaps/snapshotter-running.png differ
diff --git a/share/web/HTML5/advene.js b/share/web/HTML5/advene.js
index 6689df1..4524476 100644
--- a/share/web/HTML5/advene.js
+++ b/share/web/HTML5/advene.js
@@ -97,6 +97,7 @@ $.widget("ui.video", {
             "error",
             "loadedfirstframe",
             "loadedmetadata",
+            "loadeddata",
             "loadstart",
             "pause",
             "play",
@@ -330,7 +331,6 @@ $.widget("ui.video", {
     _stop: function() {
         var self = this;
         self.stop();
-        $(".activeTranscript").each( $(this).removeClass("activeTranscript") );
     },
     _tooglePlayLoop: function() {
         var self = this;
@@ -403,13 +403,28 @@ $.widget("ui.video", {
     // Event handling
     _event_progress: function(e) {
         var self = this;
-        var lengthComputable = e.originalEvent.lengthComputable,
-        loaded = e.originalEvent.loaded,
-        total = e.originalEvent.total;
 
-        if( lengthComputable ) {
-            var fraction = Math.max(Math.min(loaded / total,1),0);
-            this._bufferStatus.width(Math.max(fraction * self._timeLinerSliderAbsoluteWidth));
+        // Cf https://github.com/aFarkas/jMediaelement/blob/1.1.3/src/mm.base-api.js#L312 for more complete implementation
+        if (this.buffered && this.buffered.length) {
+            // current w3 spec using buffered TimeRange
+            fraction = this.buffered.end(0) / this.duration;
+            this._bufferStatus.width(fraction * self._timeLinerSliderAbsoluteWidth);
+            self._waiting.text("Loaded " + str(fraction*100) + "%...");
+        } else if (e.originalEvent && 'lengthComputable' in e.originalEvent && e.originalEvent.loaded) {
+            // Firefox/old webkits
+            var lengthComputable = e.originalEvent.lengthComputable,
+                loaded = e.originalEvent.loaded,
+                total = e.originalEvent.total;
+            if( total && lengthComputable ) {
+                var fraction = Math.max(Math.min(loaded / total, 1), 0);
+            
+                this._bufferStatus.width(fraction * self._timeLinerSliderAbsoluteWidth);
+                self._waiting.text("Loaded " + str(fraction*100) + "%...");
+            }
+            else
+            {
+                self._waiting.text("Loaded " + (loaded / 1024) + " Kbytes...");
+            }
         }
     },
     _event_seeked: function() {
@@ -420,6 +435,14 @@ $.widget("ui.video", {
         var self = this;
         self._hideWaiting();
     },
+    _event_loadeddata: function() {
+        var self = this;
+        self._hideWaiting();
+    },
+    _event_canplaythrough: function() {
+        var self = this;
+        self._hideWaiting();
+    },
     _event_loadstart: function() {
         var self = this;
         self._showWaiting("Loading...");
@@ -458,6 +481,11 @@ $.widget("ui.video", {
             var duration = self.element[0].duration;
             var currentTime = self.element[0].currentTime;
 
+            if( self._waitingId ) {
+                // Should not be "Waiting"
+                self._hideWaiting();
+            }
+
             if (self.options.fragmentPlay) {
                 if (currentTime < self.options.startPoint) {
                     self.element[0].currentTime = self.options.startPoint
@@ -599,12 +627,9 @@ $.widget("ui.video", {
 
     _event_keydown: function(e) {
         var self = this;
+        var handled_event = true;
         if (!e)
-            var e = window.event
-        // handle event and stop propagating it!
-        e.cancelBubble = true;
-        if (e.preventDefault) e.preventDefault();
-        if (e.stopPropagation) e.stopPropagation();
+            var e = window.event;
 
         switch (e.keyCode){
             case 32:  // Space
@@ -628,6 +653,17 @@ $.widget("ui.video", {
             case 27: // Escape
                 self.stop();
                 break;
+            default: 
+                handled_event = false;
+        }
+        if (! handled_event) {
+            // handled event, stop propagating it!
+            e.cancelBubble = true;
+            if (e.preventDefault) e.preventDefault();
+            if (e.stopPropagation) e.stopPropagation();
+            return false;
+        } else {
+            return true;
         }
      },
 
@@ -643,8 +679,8 @@ $.widget("ui.video", {
 
     // Trigger Events manually
     triggerKeyBoardEvent: function(e) {
-       var self = this;
-       self._event_keydown(e);
+        var self = this;
+        return self._event_keydown(e);
     },
 
     getIntrinsicWidth: function() {
@@ -672,7 +708,7 @@ $.widget("ui.video", {
         self._timeLinerSlider.slider('value', 0);
         self._currentProgressSpan.text(_formatTime(0));
 
-        $(".activeTranscript").each( $(this).removeClass("activeTranscript") );
+        $(".activeTranscript").each( function() { $(this).removeClass("activeTranscript") } );
     },
     mute: function() {
         var self = this;
@@ -972,9 +1008,8 @@ $.widget("ui.video", {
 
     // Capture CTRL + KEY events and forward them to the video widget of the main player
     document.onkeydown = function(e) {
-        if (event.ctrlKey == 1) {
+        if (e.ctrlKey == 1) {
             uiPlayer.find('video', this).video('triggerKeyBoardEvent', e);
-            return false;
         }
     }
 
@@ -1031,7 +1066,7 @@ $.widget("ui.video", {
                         begin = $(self).attr('data-begin');
                         end = $(self).attr('data-end');
                         $(".transcript[data-begin]", $(document)).each( function() {
-                            if (Math.max(begin, $(this).attr('data-begin')) <= Math.min(end, $(this).attr('data-end'))) {
+                            if (Math.max(begin, $(this).attr('data-begin')) < Math.min(end, $(this).attr('data-end'))) {
                                 $(this).addClass('relatedTranscript');
                             }
                         });
@@ -1043,7 +1078,7 @@ $.widget("ui.video", {
             }
 
             $("body").append("<div class='player_container' style='position:relative; overflow:visible; '>" +
-                             "<video preload='auto' autoplay='true' style='overflow:visible; width:100%; height:auto; border:thick #00FF00; top:10; bottom:10;right:10;left:10; ' src='" + video_url + "'>" +
+                             "<video preload='auto' style='overflow:visible; width:100%; height:auto; border:thick #00FF00; top:10; bottom:10;right:10;left:10; ' src='" + video_url + "'>" +
                              "</video></div>");
 
             playerOptions =  { title:'Advene main player',
@@ -1053,6 +1088,30 @@ $.widget("ui.video", {
                 for (key in options)
                     playerOptions[key] = options[key];
             $('.player_container').player( playerOptions );
+
+            check_hash = function () {
+                // Check location.hash. If it is set, we look for the
+                // first child containing a time reference and start
+                // playing from this position.
+                if (window.location.hash.length) {
+                    hash = window.location.hash.substr(1);
+                    nodes = $("[name="+hash+"]").find('[data-begin]:first');
+                    if (! nodes.length) {
+                        // Not found in children. Try in the siblings.
+                        nodes = $("[name="+hash+"]").siblings().find('[data-begin]:first');
+                    }
+                    if (nodes.length) {
+                    //console.log("Playing directly at " + nodes.attr('data-begin'));
+                        $('.player_container').player('fragmentPlay',
+                                                      nodes.attr('data-begin'),
+                                                      nodes.attr('data-end'));
+                    }
+                }
+            }
+            // For initial document loading
+            check_hash();
+            // When following links inside the same document
+            window.onhashchange = function () { check_hash() };
         },
 
         'overlay': function() {
@@ -1198,7 +1257,7 @@ $.widget("ui.video", {
                                  'startPoint': self.options.start_point,
                                  'endPoint': self.options.end_point,
                                  'poster':'resources/HTML5/advene_logo.png',
-                                 'autoPlay': true
+                                 'autoPlay': false
                                  });
 
                 parentC = $(self).parent();
diff --git a/share/web/HTML5/style.css b/share/web/HTML5/style.css
index 811028a..0da575f 100644
--- a/share/web/HTML5/style.css
+++ b/share/web/HTML5/style.css
@@ -27,8 +27,7 @@
 	position: absolute;
 	right: 10px;
 	top: 4px;
-	font:caption;
-	font:bolder;
+	font-style:bold;
 	color:white;
 	background-color:#333333
 }
@@ -243,8 +242,8 @@
 	overflow:visible;
 	text-align:center;
 	margin: 0;
-	padding: 5;
-	border: 2;
+	padding: 5 5;
+	border: 2 2;
 }
 
 .ui-video-widget {
@@ -255,10 +254,10 @@
     text-align: center;
 }
 
-.ui-dialog .ui-dialog-content { border: 0; padding: 0 !important;margin:0% !important;  overflow: auto; zoom: 1;background-color: #C1CDCD ;}
+.ui-dialog .ui-dialog-content { border: 0; padding: 0 !important;margin:0% !important;  overflow: auto; background-color: #C1CDCD ;}
 
 .ui-dialog .ui-dialog-titlebar { padding: .3em .0em .0em 0em; position: relative; height:10 !important; text-align:left;background-image: none;background-color: #B9D3EE ;border-color:#42426F}
-.ui-dialog .ui-dialog-title { float: right; margin-top:-5; font-size:12px; color:#2F4F4F; font-style: bolder;font-variant: small-caps; }
+.ui-dialog .ui-dialog-title { float: right; margin-top:-5; font-size:12px; color:#2F4F4F; font-style: bold;font-variant: small-caps; }
 
 
 
@@ -282,7 +281,7 @@
 .ui-dialog .ui-dialog-titlebar-nostickonwindow{float: left; left:.83em; top: 50%; width: 19px; margin: -6px 0 0 0; padding: 1px; height: 18px; }
 .ui-dialog .ui-dialog-titlebar-nostickonwindow span { display: block; margin: 1px; }
 .ui-dialog .ui-dialog-titlebar-nostickonwindow:hover, .ui-dialog .ui-dialog-titlebar-nostickonwindow:focus { padding: 0; }
-.ui-dialog-fragment-title{position:absolute; top:30; left:10;width:auto;height:auto;font-size:12; color:white;oveflow:visible;}
+.ui-dialog-fragment-title{position:absolute; top:30; left:10;width:auto;height:auto;font-size:12; color:white;overflow:visible;}
 
 /* SCREENSHOT OVERLAY */
 .image-overlay { list-style: none; text-align: left; }

-- 
advene packaging



More information about the pkg-multimedia-commits mailing list